fleetio_spark 0.2.28 → 0.2.29

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["node_modules/browser-pack/_prelude.js","app/assets/javascripts/spark/_cookie.js","app/assets/javascripts/spark/_esvg.js","app/assets/javascripts/spark/_icons.js","app/assets/javascripts/spark/_menu.js","app/assets/javascripts/spark/_modal.js","app/assets/javascripts/spark/_search.js","app/assets/javascripts/spark/_stack.js","app/assets/javascripts/spark/components/app/sidebar/_toggle.js","app/assets/javascripts/spark/components/nav/_tabs.js","app/assets/javascripts/spark/components/nav/_toggle.js","app/assets/javascripts/spark/components/nav/_tree.js","app/assets/javascripts/spark/components/ui/_sticky_panel.js","app/assets/javascripts/spark/form/_input-status.js","app/assets/javascripts/spark/form/_set-input.js","app/assets/javascripts/spark/form/_sync-select.js","app/assets/javascripts/spark/shims/_scroll-detect.js","app/assets/javascripts/spark/spark.js","node_modules/@spark-engine/bean/bean.js","node_modules/@spark-engine/event/index.js","node_modules/@spark-engine/event/lib/after-animation.js","node_modules/@spark-engine/event/lib/bubble-form-events.js","node_modules/@spark-engine/event/lib/callback-manager.js","node_modules/@spark-engine/event/lib/debounce.js","node_modules/@spark-engine/event/lib/delay.js","node_modules/@spark-engine/event/lib/event-manager.js","node_modules/@spark-engine/event/lib/media.js","node_modules/@spark-engine/event/lib/page.js","node_modules/@spark-engine/event/lib/repeat.js","node_modules/@spark-engine/event/lib/resize.js","node_modules/@spark-engine/event/lib/scroll.js","node_modules/@spark-engine/event/lib/shims/custom-event.js","node_modules/@spark-engine/event/lib/submit.js","node_modules/@spark-engine/event/lib/tap-events.js","node_modules/@spark-engine/event/lib/throttle.js","node_modules/@spark-engine/toggler/index.js","node_modules/@spark-engine/toolbox/index.js","node_modules/@spark-engine/toolbox/lib/dom.js","node_modules/@spark-engine/toolbox/lib/ease.js","node_modules/@spark-engine/toolbox/lib/fromtop.js","node_modules/@spark-engine/toolbox/lib/object.js","node_modules/@spark-engine/toolbox/lib/scrollto.js","node_modules/@spark-engine/toolbox/lib/shims/_classlist.js","node_modules/@spark-engine/toolbox/lib/shims/_element.closest.js","node_modules/@spark-engine/toolbox/lib/shims/_element.matches.js","node_modules/@spark-engine/toolbox/lib/shims/_object.assign.js","node_modules/cookie_js/cookie.js","node_modules/keymaster/keymaster.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","spark","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","toolbox","cookie","update","key","data","options","old_data","get","set","merge","JSON","parse","value","path","stringify","names","attr","source","name","getAttribute","dasherize","input","replace","svgName","use","id","symbol","svgs","parent","parentElement","prefix","dataset","base","symbolClass","svg","document","createRange","createContextualFragment","firstChild","setAttribute","class","trim","width","height","scale","console","error","symbols","Array","prototype","slice","querySelectorAll","forEach","esvg","Turbolinks","addEventListener","event","embed","body","requestAnimationFrame","querySelector","insertAdjacentHTML","Event","navigateMenu","link","activeEl","activeElement","isPressed","tagName","match","closest","preventDefault","stopImmediatePropagation","getNextLink","getPreviousLink","focus","items","links","pos","indexOf","el","menu","filter","offsetParent","setup","ready","on","EventManager","callbackManager","StackManager","initialized","Modals","Stack","FocusStack","style","Modal","new","type","trigger","m","getModal","triggers","push","modal","_modal","events","open","close","isOpen","modalId","classList","add","callback","start","stop","keyPress","removeAttribute","remove","afterAnimation","fire","pop","focusEl","dialog","off","activeModal","selector","activeClick","isWithinModal","target","panel","focused","modalClick","panelClick","activePanel","isElement","item","constructor","toString","search","forModal","init","each","triggerEl","modalEl","triggerEvent","currentTarget","toLowerCase","href","shift","focusNext","focusable","first","last","change","useCapture","debounce","leading","keyOn","modals","active","stack","q","autoClose","searchPanel","searchStack","searchModal","keyWatcher","result","currentPanel","resetScroll","root","nav","scrollTop","show","reset","Stacks","stackId","panels","current","panelEl","stackIndex","hideEl","hidePanels","isEmpty","showEl","updateWatchers","findPanel","enter","dismiss","direction","Number","lastFocus","back","next","index","panelIndex","watchers","activeStack","children","childElementCount","navClick","stackNav","getStack","navKey","prevPanel","stacks","toggle","tabRoot","tabGroup","group","size","tab","clientWidth","collapseAt","toggleTabCollapse","resize","click","contains","setScope","esc","setCookie","node","tree","toggleNode","expanded","toggleExpansion","setupItemTabIndex","restoreNav","Object","keys","nodeEl","navigateTree","matches","getNextItem","getUpwardItem","getPreviousItem","getFocusableItems","upward","stickyClass","stickyStateClass","stickySpacer","scrollPanels","els","scroll","startScrolling","whileScrolling","setupSticky","setStart","stick","setupPanels","appendSpacer","getEventPanel","position","scrollY","hasStickClass","stickable","isFixed","stickyStart","unstick","setSpacerStyle","getPanel","top","getPanelOffset","constraint","stickyConstrain","getSpacer","left","getOffset","clearStyle","spacer","nextSibling","clientHeight","margin","getComputedStyle","nextElementSibling","panelId","scrollPanelId","getPanelId","addPanel","addManager","eventManager","sticky","_x","_y","isNaN","offsetLeft","offsetTop","scrollLeft","label","clearBtn","disabled","watch","clearInput","split","setValue","setInput","apply","sync","select","syncSelected","innerHTML","selectedIndex","text","setMatchWidth","widthEl","matchWidth","icons","toggler","context","definition","win","old","namespaceRegex","nameRegex","addEvent","removeEvent","doc","documentElement","W3C_MODEL","eventSupport","ONE","str2arr","s","d","isString","isFunction","isObject","buildOptions","originalDefaults","maybeOptions","defaults","hasOwnProperty","standardNativeEvents","w3cNativeEvents","nativeEvents","hash","customEvents","isAncestor","element","container","compareDocumentPosition","nodeType","parentNode","check","related","relatedTarget","test","mouseenter","condition","mouseleave","mousewheel","navigator","userAgent","commonProps","mouseProps","concat","mouseWheelProps","keyProps","textProps","touchProps","messageProps","stateProps","overOutRegex","typeFixers","reg","fix","newEvent","keyCode","which","rightClick","button","x","y","pageX","pageY","clientX","clientY","typeFixerMap","isNative","arguments","ownerDocument","parentWindow","originalEvent","isBean","srcElement","l","props","fixer","returnValue","stopPropagation","cancelBubble","stopped","isImmediatePropagationStopped","clone","ne","targetElement","RegEntry","wrappedHandler","fn","args","eargs","findTarget","eventElement","__beanDel","ft","handler","original","namespaces","customType","once","removeListener","eventType","inNamespaces","checkNamespaces","j","checkElement","checkOriginal","checkHandler","registry","map","forAll","pfx","charAt","substr","list","all","has","entries","entry","put","del","splice","removed","selectorEngine","setSelectorEngine","rootListener","propertyName","listeners","listener","custom","attachEvent","detachEvent","rm","originalFn","orgType","handlers","delegate","array","fireListener","evt","createEvent","dispatchEvent","fireEvent","createEventObject","typeSpec","isTypeStr","defaultOpts","opts","k","types","undefined","delfn","one","from","beanDel","bean","noConflict","cleanup","CollectGarbage","page","tap","throttle","delay","repeat","bubbleFormEvents","submit","media","formBubbling","watchAnimation","keyOff","unbind","keyOne","scope","animationDuration","getPropertyValue","isAnimating","startTimeout","time","delayedEvent","watchEndEvent","formEls","fireBubble","detail","triggered","ev","CustomEvent","bubbles","cancelable","defaultPrevented","bubbleOn","bubbleOff","Manager","manager","callbacks","cb","bool","enabled","now","Date","pickFunction","found","candidate","wait","max","trailing","leadingFn","trailingFn","queued","handle","lastCalled","lastInvoked","leadingBlocked","invoke","callType","addToQueue","loop","removeFromQueue","cancelAnimationFrame","maxPassed","waitReached","debounced","argsStart","queueDelay","complete","Page","optimize","run","end","running","started","ended","parseQuery","query","dimension","min","num","limit","toPx","listen","minWidth","maxWidth","minHeight","maxHeight","matchMedia","addListener","readyAlready","changed","cancel","disableAnimation","head","disablePointer","pointerEvents","params","initCustomEvent","form","endEvents","Tap","timeout","e1","touches","timeout_id","setTimeout","done","e2","clearTimeout","removeEventListener","hiddenClass","hidingClass","showingClass","visibleClass","checkboxSelector","radioSelector","optionSelector","tabListSelector","tabSelector","lastHash","hashChange","location","anchor","checked","triggerToggling","firstTab","refresh","selectByUrl","toggleCheckboxes","setupSelects","setupRadios","setupTabs","actions","selectedOptions","selectTab","selectAmongOthers","action","dispatch","setClass","setState","selectors","sel","settings","classnames","getSelectFromOption","classname","method","triggerTogglerEventsOnChildren","state","toggleAction","hide","hidden","showNow","ranges","animate","hideNow","getLeafNodes","hasChildNodes","nodes","getElementsByTagName","elem","eventName","leafChildNodes","checkboxes","radio","togglerActive","radioName","radios","parentForm","hideOthers","removeClassOnOthers","option","selectToggler","tabList","tabs","selectedTab","getSiblingEls","elements","others","hideSelectors","showAttributes","showSelectors","join","other","addClass","siblings","groupAttributes","hiding","showing","visible","scrollTo","fromTop","ease","dom","obj","childOf","formData","rootEl","FormData","fields","fieldData","reverse","field","append","inOutQuad","b","inOutCubic","inOutQuint","ts","tc","inOutCirc","Math","sqrt","default","round","getBoundingClientRect","pageYOffset","count","collection","assign","duration","move","amount","scrollElement","to","currentTime","increment","animateScroll","val","String","checkIfValidClassListEntry","O","V","DOMException","wsI","wsRE","DOMTokenList","hasOwnProp","defineProperty","allowTokenListConstruction","skipPropChange","Element","TypeError","toLocaleString","v","argLen","ele","proto","Len","resStr","className","is","whenPropChanges","prop","protoObjProto","strval","tokens","resTokenList","oldLen","cI","cLen","sub","innerI","polyfillClassList","srcEle","protoObj","toks","enumerable","configurable","newVal","writeable","appendChild","createElement","styleSheet","cssText","DOMTokenListProto","testClass","NullCheck","oldValue","oldToken","newToken","tArg","nextIndex","that","values","msMatchesSelector","webkitMatchesSelector","output","nextKey","utils","isArray","isPlainObject","toArray","getKeys","encode","character","encodeURIComponent","decode","decodeURIComponent","retrieve","fallback","expiresMultiplier","expires","expiresType","toGMTString","domain","secure","setDefault","removeSpecific","empty","cookies","cookieEnabled","ret","_handlers","_mods","16","18","17","91","_scope","_MODIFIERS","⇧","⌥","alt","⌃","ctrl","control","⌘","command","_MAP","backspace","clear","return","escape","space","up","right","down","delete","home","pageup","pagedown",",",".","/","`","-","=",";","'","[","]","\\","toUpperCase","charCodeAt","_downKeys","compareArray","a1","a2","modifierMap","updateModifierKey","modifiersMatch","assignKey","getScope","mods","clearModifier","resetModifiers","getMods","shortcut","unbindKey","multipleKeys","getPressedKeyCodes","deleteScope","mi","object","previousKey"],"mappings":"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","file":"spark-0.2.29.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","var toolbox = require('@spark-engine/toolbox'),\n cookie = require('cookie_js').cookie\n\nfunction update (key, data, options) {\n var old_data = get(key)\n set(key, toolbox.merge(old_data, data), options)\n}\n\nfunction get (key) {\n var data = cookie.get(key)\n return data ? JSON.parse(data) : {}\n}\n\nfunction set (key, value, options) {\n options = toolbox.merge({ path: '/' }, options || {})\n cookie.set(key, JSON.stringify(value), options)\n}\n\nmodule.exports = {\n set: set,\n get: get,\n update: update\n}\n","(function(){\n var names\n\n function attr( source, name ){\n if (typeof source == 'object')\n return name+'=\"'+source.getAttribute(name)+'\" '\n else\n return name+'=\"'+source+'\" ' }\n\n function dasherize( input ) {\n return input.replace(/[\\\\W,_]/g, '-').replace(/-{2,}/g, '-')\n }\n\n function svgName( name ) {\n return \"svg-\"+dasherize( name )\n }\n\n function use( name, options ) {\n options = options || {}\n var id = dasherize( name )\n var symbol = svgs()[id]\n\n if ( symbol ) {\n var parent = symbol.parentElement\n var prefix = parent.dataset.prefix\n var base = parent.dataset.symbolClass\n\n var svg = document.createRange().createContextualFragment( '<svg><use xlink:href=\"#' + prefix + '-' + id + '\"/></svg>' ).firstChild;\n svg.setAttribute( 'class', base + ' ' + prefix + '-' + id + ' ' + ( options.class || '' ).trim() )\n svg.setAttribute( 'viewBox', symbol.getAttribute( 'viewBox' ) )\n\n if ( !( options.width || options.height || options.scale ) ) {\n\n svg.setAttribute('width', symbol.getAttribute('width'))\n svg.setAttribute('height', symbol.getAttribute('height'))\n\n } else {\n\n if ( options.width ) svg.setAttribute( 'width', options.width )\n if ( options.height ) svg.setAttribute( 'height', options.height )\n }\n\n return svg\n } else {\n console.error('Cannot find \"'+name+'\" svg symbol. Ensure that svg scripts are loaded')\n }\n }\n\n function svgs(){\n if ( !names ) {\n names = {}\n var symbols = Array.prototype.slice.call( document.querySelectorAll( 'svg[id^=esvg] symbol' ) )\n symbols.forEach( function( symbol ) {\n names[symbol.dataset.name] = symbol\n })\n }\n return names\n }\n\n var esvg = {\n svgs: svgs,\n use: use\n }\n\n // Handle Turbolinks page change events\n if ( window.Turbolinks ) {\n document.addEventListener( \"turbolinks:load\", function( event ) { names = null; esvg.svgs() })\n }\n\n if( typeof( module ) != 'undefined' ) { module.exports = esvg }\n else window.esvg = esvg\n\n})()\n","(function(){\n\n function embed() {\n if ( !document.body ) return requestAnimationFrame( embed )\n if (!document.querySelector('#esvg-svg-icons')) {\n document.querySelector('body').insertAdjacentHTML('afterbegin', '<svg id=\"esvg-svg-icons\" data-symbol-class=\"svg-symbol\" data-prefix=\"svg\" version=\"1.1\" style=\"height:0;position:absolute\" data-turbolinks-permanent><defs><clipPath id=\"def-svg-question-0\"><rect width=\"24\" height=\"24\" fill=\"white\"/></clipPath></defs><symbol id=\"svg-add\" data-name=\"add\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M0 12C0 12.3978 0.158035 12.7794 0.43934 13.0607C0.720644 13.342 1.10218 13.5 1.5 13.5H10.25C10.3163 13.5 10.3799 13.5263 10.4268 13.5732C10.4737 13.6201 10.5 13.6837 10.5 13.75V22.5C10.5 22.8978 10.658 23.2794 10.9393 23.5607C11.2206 23.842 11.6022 24 12 24C12.3978 24 12.7794 23.842 13.0607 23.5607C13.342 23.2794 13.5 22.8978 13.5 22.5V13.75C13.5 13.6837 13.5263 13.6201 13.5732 13.5732C13.6201 13.5263 13.6837 13.5 13.75 13.5H22.5C22.8978 13.5 23.2794 13.342 23.5607 13.0607C23.842 12.7794 24 12.3978 24 12C24 11.6022 23.842 11.2206 23.5607 10.9393C23.2794 10.658 22.8978 10.5 22.5 10.5H13.75C13.6837 10.5 13.6201 10.4737 13.5732 10.4268C13.5263 10.3799 13.5 10.3163 13.5 10.25V1.5C13.5 1.10218 13.342 0.720644 13.0607 0.43934C12.7794 0.158035 12.3978 0 12 0C11.6022 0 11.2206 0.158035 10.9393 0.43934C10.658 0.720644 10.5 1.10218 10.5 1.5V10.25C10.5 10.3163 10.4737 10.3799 10.4268 10.4268C10.3799 10.4737 10.3163 10.5 10.25 10.5H1.5C1.10218 10.5 0.720644 10.658 0.43934 10.9393C0.158035 11.2206 0 11.6022 0 12H0Z\"/></symbol><symbol id=\"svg-admin-user\" data-name=\"admin-user\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M13.019 16.5C13.019 16.2348 12.9136 15.9804 12.7261 15.7929C12.5386 15.6054 12.2842 15.5 12.019 15.5H8.105C8.04894 15.5006 7.99435 15.4821 7.95019 15.4476C7.90603 15.4131 7.87493 15.3645 7.862 15.31C7.62066 14.2233 7.50159 13.1131 7.507 12C7.50527 11.0608 7.59029 10.1235 7.761 9.2C7.77322 9.14295 7.80478 9.09188 7.85034 9.05543C7.8959 9.01898 7.95266 8.9994 8.011 9C18.884 9 21.566 9.008 22.291 8.982C22.4536 8.99166 22.6158 8.95874 22.7618 8.88649C22.9077 8.81425 23.0323 8.70518 23.1232 8.57006C23.214 8.43494 23.2681 8.27844 23.28 8.11604C23.2919 7.95363 23.2612 7.79092 23.191 7.644C22.3168 5.37744 20.7721 3.43142 18.763 2.06562C16.754 0.699831 14.3762 -0.0207647 11.947 1.65624e-06C8.82776 0.0742654 5.85467 1.33714 3.63553 3.53044C1.41638 5.72375 0.118784 8.68184 0.00799855 11.8C-0.0506557 14.9267 1.11632 17.9522 3.2594 20.2296C5.40247 22.5071 8.35154 23.8557 11.476 23.987H11.52C11.7618 23.9874 11.9955 23.9001 12.1779 23.7414C12.3603 23.5827 12.479 23.3633 12.5121 23.1238C12.5452 22.8842 12.4903 22.6409 12.3578 22.4387C12.2252 22.2365 12.0238 22.0892 11.791 22.024C11.594 21.9571 11.4246 21.827 11.309 21.654C10.3819 20.446 9.53287 19.1801 8.767 17.864C8.74682 17.8259 8.73684 17.7832 8.73802 17.7401C8.73921 17.697 8.75152 17.655 8.77376 17.618C8.79601 17.5811 8.82742 17.5505 8.86496 17.5293C8.9025 17.5081 8.94488 17.497 8.988 17.497H12.019C12.2837 17.497 12.5376 17.3921 12.725 17.2052C12.9125 17.0183 13.0182 16.7647 13.019 16.5ZM5.8 15.2C5.80761 15.2363 5.80699 15.2739 5.79818 15.31C5.78938 15.3461 5.77263 15.3797 5.74914 15.4085C5.72565 15.4373 5.69602 15.4604 5.66243 15.4762C5.62884 15.4921 5.59213 15.5002 5.555 15.5H2.818C2.76624 15.4999 2.71579 15.4838 2.67354 15.4539C2.63129 15.424 2.59932 15.3818 2.582 15.333C1.8781 13.3512 1.81895 11.1975 2.413 9.18C2.42829 9.12816 2.45991 9.08263 2.50315 9.0502C2.54639 9.01777 2.59895 9.00016 2.653 9H5.46C5.49593 9.00035 5.53137 9.00837 5.56395 9.02354C5.59652 9.0387 5.62548 9.06066 5.64887 9.08794C5.67226 9.11521 5.68955 9.14717 5.69958 9.18168C5.7096 9.21619 5.71213 9.25244 5.707 9.288C5.57163 10.1856 5.50477 11.0922 5.507 12C5.50419 13.0735 5.60229 14.1449 5.8 15.2V15.2ZM11.859 2.27C11.9015 2.23977 11.9523 2.22353 12.0045 2.22353C12.0566 2.22353 12.1075 2.23977 12.15 2.27C13.6529 3.39307 14.8158 4.91002 15.51 6.653C15.526 6.69105 15.5324 6.73248 15.5285 6.77358C15.5246 6.81468 15.5106 6.85417 15.4877 6.88854C15.4648 6.9229 15.4338 6.95107 15.3974 6.97052C15.3609 6.98997 15.3203 7.0001 15.279 7H8.729C8.68799 7.00014 8.6476 6.99006 8.61146 6.97068C8.57532 6.9513 8.54458 6.92323 8.522 6.889C8.49909 6.85455 8.48509 6.81496 8.48125 6.77377C8.47741 6.73259 8.48385 6.69109 8.5 6.653C9.1891 4.90739 10.3526 3.38924 11.859 2.27V2.27ZM20.44 6.614C20.4645 6.65183 20.4784 6.69559 20.4801 6.74064C20.4817 6.78569 20.4712 6.83036 20.4496 6.86992C20.428 6.90947 20.3961 6.94245 20.3572 6.96535C20.3184 6.98825 20.2741 7.00022 20.229 7H17.946C17.8934 7.00002 17.8422 6.98352 17.7994 6.95284C17.7567 6.92216 17.7248 6.87884 17.708 6.829C17.2966 5.57262 16.6979 4.38557 15.932 3.308C15.8999 3.26306 15.8835 3.20875 15.8855 3.15354C15.8875 3.09833 15.9077 3.04534 15.943 3.00284C15.9783 2.96035 16.0267 2.93074 16.0806 2.91865C16.1345 2.90655 16.1909 2.91266 16.241 2.936C17.9645 3.73386 19.4221 5.01062 20.44 6.614V6.614ZM7.74 2.968C7.79002 2.94415 7.84656 2.9376 7.90071 2.94938C7.95486 2.96116 8.00357 2.99059 8.03917 3.03307C8.07477 3.07554 8.09525 3.12863 8.09739 3.18401C8.09954 3.23939 8.08321 3.29391 8.051 3.339C7.29845 4.40818 6.70995 5.58383 6.305 6.827C6.28877 6.87714 6.25711 6.92086 6.21455 6.95193C6.17199 6.983 6.12069 6.99982 6.068 7H3.805C3.76016 6.99993 3.71616 6.98779 3.67762 6.96487C3.63908 6.94195 3.60741 6.90908 3.58594 6.86971C3.56447 6.83035 3.55398 6.78593 3.55557 6.74112C3.55717 6.6963 3.57078 6.65274 3.595 6.615C4.60943 5.0365 6.0452 3.77324 7.74 2.968V2.968ZM8.091 20.7C8.12313 20.7449 8.13948 20.7993 8.13748 20.8545C8.13548 20.9097 8.11525 20.9627 8.07995 21.0052C8.04465 21.0477 7.99627 21.0773 7.94237 21.0894C7.88846 21.1015 7.83207 21.0953 7.782 21.072C6.24716 20.3591 4.91885 19.2676 3.922 17.9C3.89414 17.8629 3.87718 17.8187 3.87301 17.7725C3.86884 17.7262 3.87763 17.6797 3.89839 17.6382C3.91915 17.5967 3.95107 17.5617 3.99057 17.5373C4.03006 17.5129 4.07557 17.5 4.122 17.5H6.246C6.29693 17.5002 6.3466 17.5159 6.3884 17.545C6.43019 17.5742 6.46214 17.6153 6.48 17.663C6.8817 18.7415 7.42333 19.7626 8.091 20.7V20.7Z\"/><path d=\"M18.769 17.7C19.4441 17.7002 20.1041 17.5002 20.6655 17.1252C21.227 16.7503 21.6646 16.2172 21.923 15.5936C22.1815 14.9699 22.2491 14.2836 22.1175 13.6214C21.9858 12.9593 21.6607 12.351 21.1834 11.8736C20.706 11.3963 20.0978 11.0712 19.4356 10.9395C18.7734 10.8079 18.0871 10.8755 17.4634 11.134C16.8398 11.3924 16.3067 11.83 15.9318 12.3915C15.5568 12.9529 15.3568 13.6129 15.357 14.288C15.357 15.1929 15.7165 16.0608 16.3564 16.7007C16.9962 17.3405 17.8641 17.7 18.769 17.7Z\"/><path d=\"M13.548 23.445C13.5405 23.515 13.5479 23.5857 13.5697 23.6526C13.5915 23.7196 13.6271 23.7811 13.6743 23.8333C13.7215 23.8855 13.7792 23.9272 13.8436 23.9556C13.908 23.9839 13.9776 23.9984 14.048 23.998H23.495C23.5654 23.9984 23.635 23.9839 23.6994 23.9556C23.7638 23.9272 23.8215 23.8855 23.8687 23.8333C23.9159 23.7811 23.9515 23.7196 23.9733 23.6526C23.9951 23.5857 24.0025 23.515 23.995 23.445C23.8589 22.1552 23.2501 20.9614 22.2861 20.0938C21.3221 19.2261 20.071 18.746 18.774 18.746C17.477 18.746 16.2259 19.2261 15.2619 20.0938C14.2979 20.9614 13.6891 22.1552 13.553 23.445H13.548Z\"/></symbol><symbol id=\"svg-alert-triangle\" data-name=\"alert-triangle\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M23.119 19L13.772 1.15C13.6026 0.826739 13.348 0.555993 13.0357 0.367088C12.7235 0.178184 12.3655 0.0783234 12.0005 0.0783234C11.6355 0.0783234 11.2775 0.178184 10.9653 0.367088C10.653 0.555993 10.3984 0.826739 10.229 1.15L0.881002 19C0.721322 19.3048 0.643006 19.6457 0.653624 19.9897C0.664243 20.3337 0.763438 20.6691 0.941617 20.9635C1.1198 21.2579 1.37093 21.5014 1.67073 21.6704C1.97054 21.8393 2.30887 21.9281 2.653 21.928H21.347C21.6911 21.9281 22.0295 21.8393 22.3293 21.6704C22.6291 21.5014 22.8802 21.2579 23.0584 20.9635C23.2366 20.6691 23.3358 20.3337 23.3464 19.9897C23.357 19.6457 23.2787 19.3048 23.119 19ZM11 7.423C11 7.15778 11.1054 6.90343 11.2929 6.71589C11.4804 6.52836 11.7348 6.423 12 6.423C12.2652 6.423 12.5196 6.52836 12.7071 6.71589C12.8946 6.90343 13 7.15778 13 7.423V13.423C13 13.6882 12.8946 13.9426 12.7071 14.1301C12.5196 14.3176 12.2652 14.423 12 14.423C11.7348 14.423 11.4804 14.3176 11.2929 14.1301C11.1054 13.9426 11 13.6882 11 13.423V7.423ZM12.05 18.933H12.022C11.6276 18.9317 11.249 18.778 10.9654 18.5041C10.6817 18.2301 10.515 17.8571 10.5 17.463C10.4928 17.267 10.5247 17.0715 10.5939 16.888C10.6631 16.7045 10.7682 16.5366 10.903 16.3942C11.0378 16.2517 11.1996 16.1376 11.3791 16.0584C11.5585 15.9792 11.7519 15.9366 11.948 15.933H11.976C12.3703 15.9335 12.7491 16.0864 13.0332 16.3599C13.3172 16.6333 13.4845 17.006 13.5 17.4C13.5078 17.5964 13.4762 17.7924 13.4071 17.9765C13.338 18.1605 13.2328 18.3289 13.0977 18.4718C12.9626 18.6146 12.8004 18.729 12.6204 18.8082C12.4405 18.8874 12.2466 18.9298 12.05 18.933Z\"/></symbol><symbol id=\"svg-chevron-down\" data-name=\"chevron-down\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M23.5033 7.21057L12.7494 19.672C12.652 19.7757 12.535 19.8582 12.4056 19.9146C12.2761 19.9709 12.1368 20 11.996 20C11.8553 20 11.7159 19.9709 11.5865 19.9146C11.457 19.8582 11.34 19.7757 11.2426 19.672L0.493617 7.21057C0.407647 7.11172 0.342023 6.99623 0.300646 6.87098C0.259269 6.74573 0.242983 6.61327 0.252755 6.48147C0.262527 6.34967 0.298159 6.22122 0.357532 6.10375C0.416905 5.98628 0.498809 5.88219 0.598376 5.79766L2.40962 4.24186C2.6116 4.06807 2.87243 3.9823 3.13582 4.00305C3.39921 4.0238 3.64405 4.14941 3.8175 4.35278L11.8115 13.7985C11.8344 13.8257 11.8629 13.8476 11.8949 13.8626C11.927 13.8776 11.9618 13.8854 11.997 13.8854C12.0322 13.8854 12.067 13.8776 12.0991 13.8626C12.1311 13.8476 12.1595 13.8257 12.1825 13.7985L20.1794 4.35577C20.2656 4.25453 20.3705 4.17161 20.4881 4.11177C20.6057 4.05193 20.7337 4.01634 20.8648 4.00704C20.9951 3.99518 21.1265 4.01011 21.2511 4.05096C21.3757 4.09181 21.491 4.15774 21.5902 4.24486L23.4025 5.80166C23.5018 5.88635 23.5835 5.9905 23.6427 6.10796C23.7019 6.22542 23.7375 6.35381 23.7472 6.48553C23.757 6.61726 23.7408 6.74964 23.6996 6.87486C23.6583 7.00008 23.5929 7.11559 23.5072 7.21457L23.5033 7.21057Z\"/></symbol><symbol id=\"svg-chevron-left\" data-name=\"chevron-left\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M16.7894 0.496688L4.32803 11.2506C4.22433 11.348 4.14181 11.465 4.08543 11.5944C4.02906 11.7239 4 11.8632 4 12.004C4 12.1447 4.02906 12.2841 4.08543 12.4135C4.14181 12.543 4.22433 12.66 4.32803 12.7574L16.7894 23.5064C16.8883 23.5924 17.0038 23.658 17.129 23.6994C17.2543 23.7407 17.3867 23.757 17.5185 23.7472C17.6503 23.7375 17.7788 23.7018 17.8963 23.6425C18.0137 23.5831 18.1178 23.5012 18.2023 23.4016L19.7581 21.5904C19.9319 21.3884 20.0177 21.1276 19.997 20.8642C19.9762 20.6008 19.8506 20.3559 19.6472 20.1825L10.2015 12.1885C10.1743 12.1656 10.1524 12.1371 10.1374 12.1051C10.1224 12.073 10.1146 12.0382 10.1146 12.003C10.1146 11.9678 10.1224 11.933 10.1374 11.9009C10.1524 11.8689 10.1743 11.8405 10.2015 11.8175L19.6442 3.82057C19.7455 3.7344 19.8284 3.62952 19.8882 3.51192C19.9481 3.39432 19.9837 3.26632 19.993 3.13523C20.0048 3.00487 19.9899 2.87351 19.949 2.7489C19.9082 2.62429 19.8423 2.50897 19.7551 2.40976L18.1983 0.59753C18.1137 0.498195 18.0095 0.416505 17.892 0.357287C17.7746 0.29807 17.6462 0.262526 17.5145 0.25276C17.3827 0.242994 17.2504 0.259203 17.1251 0.300427C16.9999 0.341651 16.8844 0.407055 16.7854 0.492772L16.7894 0.496688Z\"/></symbol><symbol id=\"svg-chevron-right\" data-name=\"chevron-right\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M7.21057 0.496688L19.672 11.2506C19.7757 11.348 19.8582 11.465 19.9146 11.5944C19.9709 11.7239 20 11.8632 20 12.004C20 12.1447 19.9709 12.2841 19.9146 12.4135C19.8582 12.543 19.7757 12.66 19.672 12.7574L7.21057 23.5064C7.11172 23.5924 6.99623 23.658 6.87098 23.6994C6.74573 23.7407 6.61327 23.757 6.48147 23.7472C6.34967 23.7375 6.22122 23.7018 6.10375 23.6425C5.98628 23.5831 5.88219 23.5012 5.79766 23.4016L4.24186 21.5904C4.06807 21.3884 3.9823 21.1276 4.00305 20.8642C4.0238 20.6008 4.14941 20.3559 4.35278 20.1825L13.7985 12.1885C13.8257 12.1656 13.8476 12.1371 13.8626 12.1051C13.8776 12.073 13.8854 12.0382 13.8854 12.003C13.8854 11.9678 13.8776 11.933 13.8626 11.9009C13.8476 11.8689 13.8257 11.8405 13.7985 11.8175L4.35577 3.82057C4.25453 3.7344 4.17161 3.62952 4.11177 3.51192C4.05193 3.39432 4.01634 3.26632 4.00704 3.13523C3.99518 3.00487 4.01011 2.87351 4.05096 2.7489C4.09181 2.62429 4.15774 2.50897 4.24486 2.40976L5.80166 0.59753C5.88635 0.498195 5.9905 0.416505 6.10796 0.357287C6.22542 0.29807 6.35381 0.262526 6.48553 0.25276C6.61726 0.242994 6.74964 0.259203 6.87486 0.300427C7.00008 0.341651 7.11559 0.407055 7.21457 0.492772L7.21057 0.496688Z\"/></symbol><symbol id=\"svg-chevron-up\" data-name=\"chevron-up\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M23.5033 16.7894L12.7494 4.32803C12.652 4.22433 12.535 4.14181 12.4056 4.08543C12.2761 4.02906 12.1368 4 11.996 4C11.8553 4 11.7159 4.02906 11.5865 4.08543C11.457 4.14181 11.34 4.22433 11.2426 4.32803L0.493617 16.7894C0.407647 16.8883 0.342023 17.0038 0.300646 17.129C0.259269 17.2543 0.242983 17.3867 0.252755 17.5185C0.262527 17.6503 0.298159 17.7788 0.357532 17.8963C0.416905 18.0137 0.498809 18.1178 0.598376 18.2023L2.40962 19.7581C2.6116 19.9319 2.87243 20.0177 3.13582 19.997C3.39921 19.9762 3.64405 19.8506 3.8175 19.6472L11.8115 10.2015C11.8344 10.1743 11.8629 10.1524 11.8949 10.1374C11.927 10.1224 11.9618 10.1146 11.997 10.1146C12.0322 10.1146 12.067 10.1224 12.0991 10.1374C12.1311 10.1524 12.1595 10.1743 12.1825 10.2015L20.1794 19.6442C20.2656 19.7455 20.3705 19.8284 20.4881 19.8882C20.6057 19.9481 20.7337 19.9837 20.8648 19.993C20.9951 20.0048 21.1265 19.9899 21.2511 19.949C21.3757 19.9082 21.491 19.8423 21.5902 19.7551L23.4025 18.1983C23.5018 18.1137 23.5835 18.0095 23.6427 17.892C23.7019 17.7746 23.7375 17.6462 23.7472 17.5145C23.757 17.3827 23.7408 17.2504 23.6996 17.1251C23.6583 16.9999 23.5929 16.8844 23.5072 16.7854L23.5033 16.7894Z\"/></symbol><symbol id=\"svg-close\" data-name=\"close\" viewBox=\"0 0 25 25\" width=\"25\" height=\"25\" ><path d=\"M0.439005 21.44C0.157743 21.7214 -0.000215771 22.103 -0.000121997 22.5009C-2.82229e-05 22.8987 0.15811 23.2802 0.439505 23.5615C0.7209 23.8428 1.1025 24.0007 1.50036 24.0006C1.89822 24.0005 2.27974 23.8424 2.56101 23.561L11.823 14.3C11.8462 14.2767 11.8738 14.2582 11.9042 14.2456C11.9346 14.233 11.9671 14.2266 12 14.2266C12.0329 14.2266 12.0654 14.233 12.0958 14.2456C12.1262 14.2582 12.1538 14.2767 12.177 14.3L21.439 23.563C21.5783 23.7023 21.7436 23.8129 21.9256 23.8883C22.1076 23.9637 22.3027 24.0026 22.4997 24.0026C22.6967 24.0027 22.8917 23.9639 23.0738 23.8886C23.2558 23.8132 23.4212 23.7028 23.5605 23.5635C23.6998 23.4242 23.8104 23.2589 23.8858 23.0769C23.9612 22.8949 24.0001 22.6999 24.0001 22.5029C24.0002 22.3059 23.9614 22.1108 23.8861 21.9288C23.8107 21.7467 23.7003 21.5813 23.561 21.442L14.3 12.177C14.2767 12.1538 14.2583 12.1262 14.2456 12.0958C14.233 12.0654 14.2266 12.0329 14.2266 12C14.2266 11.9671 14.233 11.9346 14.2456 11.9042C14.2583 11.8738 14.2767 11.8462 14.3 11.823L23.563 2.561C23.8443 2.27934 24.0021 1.89749 24.0018 1.49944C24.0016 1.10139 23.8432 0.719762 23.5615 0.4385C23.2798 0.157238 22.898 -0.000615664 22.4999 -0.000334364C22.1019 -5.30649e-05 21.7203 0.15834 21.439 0.44L12.177 9.7C12.1538 9.72328 12.1262 9.74175 12.0958 9.75436C12.0654 9.76696 12.0329 9.77345 12 9.77345C11.9671 9.77345 11.9346 9.76696 11.9042 9.75436C11.8738 9.74175 11.8462 9.72328 11.823 9.7L2.56101 0.44C2.42174 0.300667 2.25639 0.19013 2.07441 0.114698C1.89242 0.039267 1.69736 0.000419144 1.50036 0.000372715C1.1025 0.000278947 0.7209 0.158238 0.439505 0.4395C0.15811 0.720762 -2.82604e-05 1.10229 -0.000122029 1.50015C-0.000215797 1.898 0.157743 2.27961 0.439005 2.561L9.7 11.823C9.72329 11.8462 9.74176 11.8738 9.75436 11.9042C9.76696 11.9346 9.77345 11.9671 9.77345 12C9.77345 12.0329 9.76696 12.0654 9.75436 12.0958C9.74176 12.1262 9.72329 12.1538 9.7 12.177L0.439005 21.44Z\"/></symbol><symbol id=\"svg-contact\" data-name=\"contact\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M24.0001 21C23.9979 19.0115 23.2071 17.1051 21.801 15.699C20.395 14.293 18.4885 13.5021 16.5001 13.5C15.6916 13.5003 14.8886 13.633 14.1231 13.893C14.0428 13.9198 13.9706 13.9665 13.9133 14.0288C13.856 14.0911 13.8155 14.167 13.7955 14.2492C13.7755 14.3314 13.7767 14.4174 13.7991 14.4991C13.8214 14.5807 13.864 14.6553 13.9231 14.716C15.5737 16.3911 16.4993 18.6483 16.5001 21V21.024C16.4991 21.0862 16.5106 21.1479 16.5337 21.2056C16.5569 21.2633 16.5913 21.3159 16.6349 21.3602C16.6786 21.4045 16.7306 21.4396 16.7879 21.4636C16.8453 21.4876 16.9069 21.5 16.9691 21.5H23.5001C23.6327 21.5 23.7598 21.4473 23.8536 21.3536C23.9474 21.2598 24.0001 21.1326 24.0001 21Z\"/><path d=\"M13.675 5.53001C13.8078 5.94054 13.9012 6.36278 13.954 6.79101C13.9634 6.86941 13.9912 6.94446 14.0352 7.01003C14.0792 7.07561 14.1381 7.12983 14.2071 7.16826C14.276 7.2067 14.3531 7.22826 14.432 7.23117C14.5109 7.23408 14.5894 7.21826 14.661 7.18501C15.3275 6.87597 15.9302 6.44488 16.438 5.91401C16.4614 5.88963 16.4896 5.87024 16.5207 5.85699C16.5518 5.84374 16.5852 5.83691 16.619 5.83691C16.6528 5.83691 16.6863 5.84374 16.7174 5.85699C16.7485 5.87024 16.7766 5.88963 16.8 5.91401C17.4805 6.62662 18.3292 7.15685 19.268 7.45601C19.3814 7.49225 19.4781 7.56775 19.5408 7.66894C19.6035 7.77012 19.6281 7.89035 19.61 8.00801C19.4991 8.72709 19.1348 9.38282 18.5828 9.85685C18.0308 10.3309 17.3276 10.592 16.6 10.593C16.1879 10.5934 15.78 10.5094 15.4016 10.346C15.0232 10.1826 14.6823 9.94333 14.4 9.64301C14.3419 9.58164 14.2692 9.536 14.1886 9.51036C14.1081 9.48472 14.0224 9.47991 13.9395 9.4964C13.8566 9.51288 13.7792 9.5501 13.7146 9.6046C13.65 9.65909 13.6002 9.72908 13.57 9.80801C13.4534 10.1124 13.314 10.4076 13.153 10.691C13.0963 10.7902 13.0753 10.9059 13.0935 11.0187C13.1117 11.1315 13.168 11.2347 13.253 11.311C14.1396 12.1091 15.2828 12.563 16.4754 12.5904C17.668 12.6177 18.8308 12.2167 19.753 11.46C19.7834 11.435 19.8192 11.4175 19.8576 11.409C19.896 11.4004 19.9358 11.401 19.9739 11.4108C20.012 11.4205 20.0473 11.4391 20.0768 11.465C20.1064 11.491 20.1294 11.5235 20.144 11.56C20.2715 11.8969 20.433 12.2199 20.626 12.524C20.6955 12.6379 20.7871 12.7368 20.8954 12.8148C21.0037 12.8927 21.1265 12.9482 21.2566 12.978C21.3867 13.0078 21.5214 13.0112 21.6528 12.9881C21.7843 12.965 21.9097 12.9158 22.0219 12.8435C22.134 12.7711 22.2305 12.6771 22.3057 12.5668C22.3809 12.4566 22.4333 12.3324 22.4598 12.2016C22.4863 12.0709 22.4863 11.9361 22.4599 11.8053C22.4335 11.6745 22.3812 11.5503 22.306 11.44C21.8362 10.6534 21.6042 9.74761 21.638 8.83201V7.54601C21.64 6.57619 21.3619 5.62642 20.8371 4.81087C20.3123 3.99531 19.5631 3.34869 18.6796 2.94871C17.7961 2.54873 16.8159 2.41242 15.8568 2.55617C14.8976 2.69991 14.0004 3.1176 13.273 3.75901C13.1868 3.83566 13.1298 3.93977 13.1115 4.05367C13.0933 4.16758 13.115 4.28429 13.173 4.38401C13.3812 4.74679 13.5495 5.13103 13.675 5.53001V5.53001Z\"/><path d=\"M12.5 7.5C12.5 6.5111 12.2068 5.5444 11.6573 4.72215C11.1079 3.89991 10.327 3.25904 9.41342 2.8806C8.49979 2.50217 7.49446 2.40315 6.52455 2.59608C5.55465 2.789 4.66373 3.26521 3.96447 3.96447C3.26521 4.66373 2.789 5.55465 2.59608 6.52455C2.40315 7.49446 2.50217 8.49979 2.8806 9.41342C3.25904 10.327 3.89991 11.1079 4.72215 11.6573C5.5444 12.2068 6.5111 12.5 7.5 12.5C8.8256 12.4984 10.0964 11.9711 11.0338 11.0338C11.9711 10.0964 12.4984 8.8256 12.5 7.5V7.5ZM4.6 6.757C4.61992 6.68206 4.65699 6.61278 4.70829 6.55464C4.7596 6.49649 4.82372 6.45107 4.89559 6.42197C4.96747 6.39287 5.04512 6.38089 5.12243 6.38697C5.19973 6.39305 5.27456 6.41703 5.341 6.457C6.42853 7.13071 7.68073 7.49159 8.96 7.5C9.27096 7.49941 9.58146 7.47602 9.889 7.43C9.96594 7.41851 10.0445 7.42513 10.1184 7.44933C10.1923 7.47353 10.2596 7.51465 10.3148 7.56941C10.3701 7.62417 10.4118 7.69106 10.4366 7.76477C10.4615 7.83848 10.4688 7.91697 10.458 7.994C10.3327 8.73515 9.93369 9.40224 9.34001 9.86327C8.74632 10.3243 8.0012 10.5457 7.25211 10.4835C6.50301 10.4214 5.80452 10.0804 5.29487 9.52787C4.78522 8.97536 4.50156 8.25167 4.5 7.5C4.50037 7.24901 4.53399 6.99916 4.6 6.757V6.757Z\"/><path d=\"M15 21C15 19.0109 14.2098 17.1032 12.8033 15.6967C11.3968 14.2902 9.48912 13.5 7.5 13.5C5.51088 13.5 3.60322 14.2902 2.1967 15.6967C0.790176 17.1032 0 19.0109 0 21C0 21.1326 0.0526784 21.2598 0.146447 21.3536C0.240215 21.4473 0.367392 21.5 0.5 21.5H14.5C14.6326 21.5 14.7598 21.4473 14.8536 21.3536C14.9473 21.2598 15 21.1326 15 21Z\"/></symbol><symbol id=\"svg-currency\" data-name=\"currency\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M0.65901 0.65901C1.08097 0.237053 1.65326 0 2.25 0H21.75C22.3467 0 22.919 0.237053 23.341 0.65901C23.7629 1.08097 24 1.65326 24 2.25V14.25C24 14.8467 23.7629 15.419 23.341 15.841C22.919 16.2629 22.3467 16.5 21.75 16.5H15.75C15.3358 16.5 15 16.1642 15 15.75C15 15.3358 15.3358 15 15.75 15H21.75C21.9489 15 22.1397 14.921 22.2803 14.7803C22.421 14.6397 22.5 14.4489 22.5 14.25V2.25C22.5 2.05109 22.421 1.86032 22.2803 1.71967C22.1397 1.57902 21.9489 1.5 21.75 1.5H2.25C2.05109 1.5 1.86032 1.57902 1.71967 1.71967C1.57902 1.86032 1.5 2.05109 1.5 2.25V9.757C1.5 10.1712 1.16421 10.507 0.75 10.507C0.335786 10.507 0 10.1712 0 9.757V2.25C0 1.65326 0.237053 1.08097 0.65901 0.65901Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.17195 11.4579C1.00643 12.0406 0 12.9845 0 14.25V20.25C0 21.5156 1.0063 22.4594 2.17184 23.0422C3.38219 23.6474 5.00183 24 6.75 24C8.49817 24 10.1178 23.6474 11.3282 23.0422C12.4937 22.4594 13.5 21.5156 13.5 20.25V14.25C13.5 12.9845 12.4936 12.0406 11.3281 11.4579C10.1177 10.8527 8.49804 10.5 6.75 10.5C5.00196 10.5 3.38232 10.8527 2.17195 11.4579ZM2.84277 12.7995C1.83671 13.3025 1.5 13.8587 1.5 14.25C1.5 14.6413 1.83671 15.1975 2.84277 15.7005C3.80397 16.1811 5.18433 16.5 6.75 16.5C8.31567 16.5 9.69603 16.1811 10.6572 15.7005C11.6633 15.1975 12 14.6413 12 14.25C12 13.8587 11.6633 13.3025 10.6572 12.7995C9.69603 12.3189 8.31567 12 6.75 12C5.18433 12 3.80397 12.3189 2.84277 12.7995ZM12 17.25V16.6505C11.7868 16.7952 11.5606 16.9259 11.3281 17.0421C10.1177 17.6473 8.49804 18 6.75 18C5.00196 18 3.38232 17.6473 2.17195 17.0421C1.93939 16.9259 1.71316 16.7952 1.5 16.6505V17.25C1.5 17.6414 1.8367 18.1976 2.84266 18.7006C3.80381 19.1811 5.18417 19.5 6.75 19.5C8.31583 19.5 9.69619 19.1811 10.6573 18.7006C11.6633 18.1976 12 17.6414 12 17.25ZM1.5 19.6506C1.71312 19.7953 1.93931 19.9259 2.17184 20.0422C3.38219 20.6474 5.00183 21 6.75 21C8.49817 21 10.1178 20.6474 11.3282 20.0422C11.5607 19.9259 11.7869 19.7953 12 19.6506V20.25C12 20.6414 11.6633 21.1976 10.6573 21.7006C9.69619 22.1811 8.31583 22.5 6.75 22.5C5.18417 22.5 3.80381 22.1811 2.84266 21.7006C1.8367 21.1976 1.5 20.6414 1.5 20.25V19.6506Z\"/><path d=\"M11.8343 6.00644C12.2094 5.97873 12.5856 6.04553 12.9283 6.20073C13.271 6.35594 13.5693 6.59459 13.7959 6.89486C14.0225 7.19512 14.1702 7.54742 14.2256 7.91953C14.2809 8.29164 14.242 8.67167 14.1125 9.02487C13.983 9.37807 13.767 9.69317 13.4843 9.94133C13.1729 10.2146 13.1421 10.6884 13.4153 10.9998C13.6886 11.3111 14.1624 11.3419 14.4738 11.0687C14.945 10.6551 15.305 10.1299 15.5208 9.54124C15.7366 8.95257 15.8014 8.31918 15.7093 7.699C15.6171 7.07882 15.3709 6.49165 14.9931 5.99121C14.6154 5.49076 14.1183 5.09301 13.5471 4.83434C12.976 4.57567 12.3491 4.46433 11.7238 4.51051C11.0985 4.55669 10.4948 4.75892 9.96783 5.0987C9.44088 5.43847 9.00754 5.90495 8.70744 6.45545C8.40734 7.00596 8.25007 7.62293 8.25 8.24992C8.24996 8.66413 8.5857 8.99996 8.99992 9C9.41413 9.00004 9.74996 8.6643 9.75 8.25008C9.75004 7.87389 9.84441 7.50371 10.0245 7.1734C10.2045 6.8431 10.4645 6.56321 10.7807 6.35935C11.0969 6.15548 11.4591 6.03415 11.8343 6.00644Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.7045 3.7045C3.91548 3.49353 4.20163 3.375 4.5 3.375C4.72251 3.375 4.94001 3.44098 5.12502 3.5646C5.31002 3.68821 5.45422 3.86392 5.53936 4.06948C5.62451 4.27505 5.64679 4.50125 5.60338 4.71948C5.55997 4.93771 5.45283 5.13816 5.2955 5.2955C5.13816 5.45283 4.93771 5.55997 4.71948 5.60338C4.50125 5.64679 4.27505 5.62451 4.06948 5.53936C3.86392 5.45422 3.68821 5.31002 3.5646 5.12502C3.44098 4.94001 3.375 4.72251 3.375 4.5C3.375 4.20163 3.49353 3.91548 3.7045 3.7045Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.5 10.875C19.2016 10.875 18.9155 10.9935 18.7045 11.2045C18.4935 11.4155 18.375 11.7016 18.375 12C18.375 12.2225 18.441 12.44 18.5646 12.625C18.6882 12.81 18.8639 12.9542 19.0695 13.0394C19.275 13.1245 19.5012 13.1468 19.7195 13.1034C19.9377 13.06 20.1382 12.9528 20.2955 12.7955C20.4528 12.6382 20.56 12.4377 20.6034 12.2195C20.6468 12.0013 20.6245 11.7751 20.5394 11.5695C20.4542 11.3639 20.31 11.1882 20.125 11.0646C19.94 10.941 19.7225 10.875 19.5 10.875Z\"/></symbol><symbol id=\"svg-dashboard\" data-name=\"dashboard\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M12 0C9.62663 0 7.30655 0.703788 5.33316 2.02236C3.35977 3.34094 1.8217 5.21509 0.913451 7.4078C0.00519943 9.60051 -0.232441 12.0133 0.230582 14.3411C0.693605 16.6689 1.83649 18.8071 3.51472 20.4853C5.19295 22.1635 7.33115 23.3064 9.65892 23.7694C11.9867 24.2324 14.3995 23.9948 16.5922 23.0866C18.7849 22.1783 20.6591 20.6402 21.9776 18.6668C23.2962 16.6935 24 14.3734 24 12C23.9966 8.81846 22.7312 5.76821 20.4815 3.51852C18.2318 1.26883 15.1815 0.00344108 12 0V0ZM5.14501 8.91L4.27901 8.41C4.10661 8.31054 3.98079 8.14668 3.92922 7.95445C3.87765 7.76223 3.90455 7.55739 4.00401 7.385C4.10346 7.21261 4.26733 7.08679 4.45955 7.03522C4.65178 6.98364 4.85661 7.01054 5.02901 7.11L5.89501 7.61C6.0383 7.69249 6.15032 7.82001 6.21365 7.97274C6.27698 8.12548 6.28806 8.29486 6.24517 8.45454C6.20229 8.61422 6.10784 8.75525 5.97651 8.85571C5.84519 8.95616 5.68435 9.01041 5.51901 9.01C5.38766 9.01054 5.25855 8.97602 5.14501 8.91V8.91ZM5.25001 11.991C5.25001 12.1899 5.17099 12.3807 5.03034 12.5213C4.88968 12.662 4.69892 12.741 4.50001 12.741H3.50001C3.30109 12.741 3.11033 12.662 2.96968 12.5213C2.82902 12.3807 2.75001 12.1899 2.75001 11.991C2.75001 11.7921 2.82902 11.6013 2.96968 11.4607C3.11033 11.32 3.30109 11.241 3.50001 11.241H4.50001C4.69892 11.241 4.88968 11.32 5.03034 11.4607C5.17099 11.6013 5.25001 11.7921 5.25001 11.991ZM14.24 12C14.24 12.445 14.108 12.88 13.8608 13.25C13.6136 13.62 13.2622 13.9084 12.851 14.0787C12.4399 14.249 11.9875 14.2936 11.5511 14.2068C11.1146 14.12 10.7137 13.9057 10.399 13.591C10.0843 13.2763 9.87006 12.8754 9.78324 12.439C9.69642 12.0025 9.74098 11.5501 9.91128 11.139C10.0816 10.7278 10.37 10.3764 10.74 10.1292C11.11 9.88196 11.545 9.75 11.99 9.75C12.0154 9.75014 12.0408 9.75181 12.066 9.755C12.1112 9.75955 12.1567 9.75171 12.1978 9.73233C12.2388 9.71295 12.2738 9.68276 12.299 9.645L15.699 4.571C15.7719 4.46128 15.8657 4.36704 15.9751 4.29369C16.0845 4.22033 16.2073 4.1693 16.3364 4.14354C16.4656 4.11777 16.5986 4.11778 16.7277 4.14355C16.8569 4.16932 16.9797 4.22035 17.089 4.29371C17.1984 4.36707 17.2922 4.46131 17.3651 4.57103C17.438 4.68075 17.4884 4.80378 17.5136 4.93306C17.5388 5.06233 17.5382 5.19531 17.5118 5.32435C17.4855 5.45339 17.4339 5.57595 17.36 5.685L13.993 10.71C13.9679 10.7475 13.9535 10.7911 13.9512 10.8362C13.9489 10.8813 13.9589 10.9261 13.98 10.966C14.1496 11.2843 14.2389 11.6393 14.24 12V12ZM12.758 4.558C12.758 4.75691 12.679 4.94768 12.5383 5.08833C12.3977 5.22898 12.2069 5.308 12.008 5.308C11.8091 5.308 11.6183 5.22898 11.4777 5.08833C11.337 4.94768 11.258 4.75691 11.258 4.558V3.558C11.258 3.35909 11.337 3.16832 11.4777 3.02767C11.6183 2.88702 11.8091 2.808 12.008 2.808C12.2069 2.808 12.3977 2.88702 12.5383 3.02767C12.679 3.16832 12.758 3.35909 12.758 3.558V4.558ZM7.39301 4.025C7.47824 3.97559 7.5724 3.9435 7.67007 3.93059C7.76774 3.91767 7.867 3.92417 7.96215 3.94973C8.0573 3.97528 8.14646 4.01938 8.22452 4.07949C8.30258 4.1396 8.36799 4.21454 8.41701 4.3L8.91701 5.166C8.96646 5.25118 8.9986 5.34528 9.01159 5.44291C9.02458 5.54054 9.01816 5.63977 8.99271 5.73491C8.96725 5.83006 8.92325 5.91924 8.86324 5.99733C8.80323 6.07543 8.72839 6.1409 8.64301 6.19C8.52946 6.25602 8.40035 6.29054 8.26901 6.29C8.13723 6.29029 8.00772 6.25576 7.89358 6.18991C7.77944 6.12406 7.68472 6.02922 7.61901 5.915L7.11901 5.049C7.06969 4.96379 7.03765 4.86969 7.02473 4.77209C7.01181 4.67449 7.01826 4.5753 7.04371 4.48019C7.06916 4.38509 7.1131 4.29593 7.17304 4.21782C7.23298 4.13972 7.30772 4.07419 7.39301 4.025V4.025ZM7.50001 17C7.50001 16.8674 7.55268 16.7402 7.64645 16.6464C7.74022 16.5527 7.8674 16.5 8.00001 16.5H16C16.1326 16.5 16.2598 16.5527 16.3536 16.6464C16.4473 16.7402 16.5 16.8674 16.5 17V19C16.5 19.1326 16.4473 19.2598 16.3536 19.3536C16.2598 19.4473 16.1326 19.5 16 19.5H8.00001C7.8674 19.5 7.74022 19.4473 7.64645 19.3536C7.55268 19.2598 7.50001 19.1326 7.50001 19V17ZM17.809 8.7C17.7097 8.52785 17.6827 8.3233 17.7341 8.1313C17.7855 7.9393 17.911 7.77554 18.083 7.676L18.949 7.176C19.1214 7.07654 19.3262 7.04964 19.5185 7.10122C19.7107 7.15279 19.8746 7.27861 19.974 7.451C20.0735 7.62339 20.1004 7.82823 20.0488 8.02045C19.9972 8.21268 19.8714 8.37654 19.699 8.476L18.832 8.976C18.6597 9.07485 18.4552 9.10131 18.2634 9.04956C18.0716 8.99782 17.9082 8.8721 17.809 8.7ZM18.69 12.065C18.69 11.8661 18.769 11.6753 18.9097 11.5347C19.0503 11.394 19.2411 11.315 19.44 11.315H20.44C20.6389 11.315 20.8297 11.394 20.9703 11.5347C21.111 11.6753 21.19 11.8661 21.19 12.065C21.19 12.2639 21.111 12.4547 20.9703 12.5953C20.8297 12.736 20.6389 12.815 20.44 12.815H19.44C19.2413 12.815 19.0507 12.7361 18.91 12.5957C18.7694 12.4552 18.6903 12.2647 18.69 12.066V12.065Z\"/></symbol><symbol id=\"svg-fuel\" data-name=\"fuel\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23.99 3.35858C24.0275 3.62113 23.9591 3.88783 23.8 4.1L21.75 6.833V8H23C23.1326 8 23.2598 8.05268 23.3536 8.14645C23.4473 8.24021 23.5 8.36739 23.5 8.5V11C23.5 11.0823 23.4796 11.1634 23.4407 11.236C23.4018 11.3085 23.3456 11.3704 23.277 11.416L21.777 12.416L21.75 12.433V15.5C21.75 16.2956 21.4339 17.0587 20.8713 17.6213C20.3087 18.1839 19.5456 18.5 18.75 18.5H18.5C18.3674 18.5 18.2402 18.5527 18.1464 18.6464C18.0527 18.7402 18 18.8674 18 19V22.5C18 22.8978 17.842 23.2794 17.5607 23.5607C17.2794 23.842 16.8978 24 16.5 24H3.5C3.10218 24 2.72064 23.842 2.43934 23.5607C2.15804 23.2794 2 22.8978 2 22.5V1.5C2 1.10218 2.15804 0.720644 2.43934 0.43934C2.72064 0.158035 3.10218 0 3.5 0H16.5C16.8978 0 17.2794 0.158035 17.5607 0.43934C17.842 0.720644 18 1.10218 18 1.5V16C18 16.1326 18.0527 16.2598 18.1464 16.3536C18.2402 16.4473 18.3674 16.5 18.5 16.5H18.75C19.0152 16.5 19.2696 16.3946 19.4571 16.2071C19.6446 16.0196 19.75 15.7652 19.75 15.5V6.5C19.75 6.28363 19.8202 6.0731 19.95 5.9L22.2 2.9C22.3591 2.68783 22.596 2.54756 22.8586 2.51005C22.9886 2.49148 23.121 2.49869 23.2482 2.53129C23.3754 2.56388 23.4949 2.62121 23.6 2.7C23.8122 2.85913 23.9524 3.09603 23.99 3.35858ZM15.8536 7.85355C15.9473 7.75979 16 7.63261 16 7.5V2.5C16 2.36739 15.9473 2.24021 15.8536 2.14645C15.7598 2.05268 15.6326 2 15.5 2H4.5C4.36739 2 4.24021 2.05268 4.14645 2.14645C4.05268 2.24021 4 2.36739 4 2.5V7.5C4 7.63261 4.05268 7.75979 4.14645 7.85355C4.24021 7.94732 4.36739 8 4.5 8H15.5C15.6326 8 15.7598 7.94732 15.8536 7.85355ZM13 11C12.4477 11 12 11.4477 12 12V16C12 16.5523 12.4477 17 13 17H14C14.5523 17 15 16.5523 15 16V12C15 11.4477 14.5523 11 14 11H13Z\"/></symbol><symbol id=\"svg-indicator-dot\" data-name=\"indicator-dot\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><circle cx=\"12\" cy=\"12\" r=\"11.5\"/></symbol><symbol id=\"svg-inspection\" data-name=\"inspection\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M12 0C9.62663 0 7.30655 0.703788 5.33316 2.02236C3.35977 3.34094 1.8217 5.21509 0.913451 7.4078C0.00519943 9.60051 -0.232441 12.0133 0.230582 14.3411C0.693605 16.6689 1.83649 18.8071 3.51472 20.4853C5.19295 22.1635 7.33115 23.3064 9.65892 23.7694C11.9867 24.2324 14.3995 23.9948 16.5922 23.0866C18.7849 22.1783 20.6591 20.6402 21.9776 18.6668C23.2962 16.6935 24 14.3734 24 12C23.9963 8.81854 22.7308 5.76844 20.4812 3.51881C18.2316 1.26918 15.1815 0.00370522 12 0V0ZM18.927 8.2L12.082 17.489C12.0012 17.5962 11.8998 17.6863 11.7838 17.7539C11.6678 17.8215 11.5395 17.8654 11.4064 17.8829C11.2733 17.9004 11.138 17.8912 11.0085 17.8558C10.879 17.8205 10.7578 17.7597 10.652 17.677L5.76401 13.769C5.66144 13.6869 5.57605 13.5855 5.5127 13.4704C5.44936 13.3553 5.4093 13.2289 5.39481 13.0983C5.36556 12.8346 5.44224 12.5701 5.60801 12.363C5.77377 12.1559 6.01502 12.0231 6.2787 11.9938C6.54237 11.9646 6.80687 12.0412 7.01401 12.207L11.09 15.468L17.317 7.017C17.392 6.90451 17.489 6.80838 17.6021 6.73443C17.7153 6.66048 17.8423 6.61025 17.9754 6.58676C18.1085 6.56327 18.245 6.56702 18.3767 6.59777C18.5083 6.62853 18.6323 6.68565 18.7413 6.7657C18.8502 6.84574 18.9418 6.94705 19.0105 7.06348C19.0792 7.17992 19.1235 7.30907 19.1409 7.44313C19.1582 7.57719 19.1482 7.71339 19.1115 7.84347C19.0747 7.97356 19.012 8.09485 18.927 8.2Z\"/></symbol><symbol id=\"svg-issue\" data-name=\"issue\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M23 10.586L13.414 1C13.0389 0.625059 12.5303 0.414429 12 0.414429C11.4697 0.414429 10.9611 0.625059 10.586 1L1 10.587C0.625059 10.9621 0.414429 11.4707 0.414429 12.001C0.414429 12.5313 0.625059 13.0399 1 13.415L10.586 23C10.9611 23.3749 11.4697 23.5856 12 23.5856C12.5303 23.5856 13.0389 23.3749 13.414 23L23 13.415C23.1858 13.2293 23.3332 13.0088 23.4338 12.7661C23.5343 12.5234 23.5861 12.2632 23.5861 12.0005C23.5861 11.7378 23.5343 11.4777 23.4338 11.2349C23.3332 10.9922 23.1858 10.7717 23 10.586ZM11.068 6.417C11.068 6.15178 11.1734 5.89743 11.3609 5.70989C11.5484 5.52236 11.8028 5.417 12.068 5.417C12.3332 5.417 12.5876 5.52236 12.7751 5.70989C12.9626 5.89743 13.068 6.15178 13.068 6.417V12.417C13.068 12.6822 12.9626 12.9366 12.7751 13.1241C12.5876 13.3116 12.3332 13.417 12.068 13.417C11.8028 13.417 11.5484 13.3116 11.3609 13.1241C11.1734 12.9366 11.068 12.6822 11.068 12.417V6.417ZM12.119 17.927H12.091C11.6967 17.9255 11.3183 17.7717 11.0346 17.4978C10.751 17.2239 10.5842 16.851 10.569 16.457C10.5617 16.261 10.5935 16.0655 10.6626 15.8819C10.7318 15.6983 10.8368 15.5304 10.9717 15.3879C11.1065 15.2454 11.2684 15.1313 11.4479 15.0521C11.6274 14.973 11.8209 14.9305 12.017 14.927H12.045C12.4394 14.928 12.8182 15.0816 13.1019 15.3556C13.3856 15.6297 13.5523 16.0028 13.567 16.397C13.5743 16.593 13.5425 16.7885 13.4734 16.9721C13.4042 17.1557 13.2992 17.3236 13.1643 17.4661C13.0295 17.6086 12.8676 17.7227 12.6881 17.8019C12.5086 17.881 12.3151 17.9235 12.119 17.927Z\"/></symbol><symbol id=\"svg-leaderboard\" data-name=\"leaderboard\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M5.5 9.5H1.5C1.10218 9.5 0.720644 9.65804 0.43934 9.93934C0.158035 10.2206 0 10.6022 0 11L0 20C0 20.3978 0.158035 20.7794 0.43934 21.0607C0.720644 21.342 1.10218 21.5 1.5 21.5H5.5C5.63261 21.5 5.75979 21.4473 5.85355 21.3536C5.94732 21.2598 6 21.1326 6 21V10C6 9.86739 5.94732 9.74021 5.85355 9.64645C5.75979 9.55268 5.63261 9.5 5.5 9.5Z\"/><path d=\"M22.5 13.5H18.5C18.3674 13.5 18.2402 13.5527 18.1464 13.6464C18.0527 13.7402 18 13.8674 18 14V21C18 21.1326 18.0527 21.2598 18.1464 21.3536C18.2402 21.4473 18.3674 21.5 18.5 21.5H22.5C22.8978 21.5 23.2794 21.342 23.5607 21.0607C23.842 20.7794 24 20.3978 24 20V15C24 14.6022 23.842 14.2206 23.5607 13.9393C23.2794 13.658 22.8978 13.5 22.5 13.5Z\"/><path d=\"M15 2.5H9C8.60218 2.5 8.22064 2.65804 7.93934 2.93934C7.65804 3.22064 7.5 3.60218 7.5 4V21C7.5 21.1326 7.55268 21.2598 7.64645 21.3536C7.74021 21.4473 7.86739 21.5 8 21.5H16C16.1326 21.5 16.2598 21.4473 16.3536 21.3536C16.4473 21.2598 16.5 21.1326 16.5 21V4C16.5 3.60218 16.342 3.22064 16.0607 2.93934C15.7794 2.65804 15.3978 2.5 15 2.5ZM13 10.75H11C10.8011 10.75 10.6103 10.671 10.4697 10.5303C10.329 10.3897 10.25 10.1989 10.25 10C10.25 9.80109 10.329 9.61032 10.4697 9.46967C10.6103 9.32902 10.8011 9.25 11 9.25C11.0663 9.25 11.1299 9.22366 11.1768 9.17678C11.2237 9.12989 11.25 9.0663 11.25 9V7C11.25 6.9337 11.2237 6.87011 11.1768 6.82322C11.1299 6.77634 11.0663 6.75 11 6.75C10.8011 6.75 10.6103 6.67098 10.4697 6.53033C10.329 6.38968 10.25 6.19891 10.25 6C10.25 5.80109 10.329 5.61032 10.4697 5.46967C10.6103 5.32902 10.8011 5.25 11 5.25H11.5C11.8314 5.25053 12.149 5.38239 12.3833 5.6167C12.6176 5.85101 12.7495 6.16864 12.75 6.5V9C12.75 9.0663 12.7763 9.12989 12.8232 9.17678C12.8701 9.22366 12.9337 9.25 13 9.25C13.1989 9.25 13.3897 9.32902 13.5303 9.46967C13.671 9.61032 13.75 9.80109 13.75 10C13.75 10.1989 13.671 10.3897 13.5303 10.5303C13.3897 10.671 13.1989 10.75 13 10.75Z\"/></symbol><symbol id=\"svg-logo\" data-name=\"logo\" viewBox=\"0 0 88.42 52.28\" width=\"88\" height=\"52\"><title>fleetio-logo-mark-only</title><g><g><path d=\"M76.44,16.15A4.49,4.49,0,0,0,72,19.89L64.3,0H17.76L10,19.89a4.49,4.49,0,1,0-4.42,5.26V48l10.67-7.74h-.23a6,6,0,1,1,5.62-3.92l.11-.08L54,48.57l22.46-13V25.15a4.5,4.5,0,0,0,0-9Zm-33,4.5H14L20.5,4H61.56L68,20.65H64.45c0-.06,0-.12,0-.18a10.5,10.5,0,1,0-21,0C43.46,20.53,43.47,20.59,43.47,20.65Zm3.5,0c0-.06,0-.12,0-.18a7,7,0,0,1,14,0c0,.06,0,.12,0,.18ZM66,40.32a6,6,0,1,1,6-6A6,6,0,0,1,66,40.32Z\" fill=\"#242b2e\"/><polygon points=\"88.42 28.34 84.68 37.56 83.19 35.07 53.96 52.28 21.73 39.51 0 52.28 21.73 32.37 53.96 45.12 79.97 29.71 78.52 27.27 88.42 28.34\" fill=\"#18cc6c\"/></g></g></symbol><symbol id=\"svg-map\" data-name=\"map\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M1.79997 18.025L0.466966 22.025C0.391758 22.2503 0.371117 22.4902 0.406742 22.725C0.442368 22.9598 0.533241 23.1828 0.671885 23.3756C0.810528 23.5685 0.992979 23.7256 1.20422 23.8342C1.41547 23.9427 1.64947 23.9996 1.88697 24H22.113C22.3506 23.9999 22.5849 23.9433 22.7964 23.8349C23.0079 23.7264 23.1906 23.5693 23.3295 23.3765C23.4683 23.1836 23.5594 22.9605 23.5951 22.7255C23.6308 22.4905 23.6102 22.2504 23.535 22.025L22.202 18.025C22.1024 17.7266 21.9115 17.4671 21.6563 17.2832C21.4011 17.0992 21.0945 17.0002 20.78 17H15.211C15.1684 17.0001 15.1265 17.0109 15.0893 17.0316C15.052 17.0522 15.0206 17.0819 14.998 17.118C14.212 18.388 13.554 19.38 13.244 19.84C13.1067 20.0438 12.9214 20.2107 12.7045 20.3261C12.4876 20.4415 12.2457 20.5019 12 20.5019C11.7543 20.5019 11.5123 20.4415 11.2954 20.3261C11.0785 20.2107 10.8933 20.0438 10.756 19.84C10.446 19.38 9.78797 18.388 9.00197 17.118C8.97925 17.082 8.94783 17.0523 8.9106 17.0317C8.87336 17.0111 8.83153 17.0002 8.78897 17H3.22097C2.90657 17.0004 2.60024 17.0995 2.34526 17.2835C2.09027 17.4674 1.89953 17.7268 1.79997 18.025V18.025Z\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.1184 18.7701C12.082 18.7896 12.0413 18.7999 12 18.8C11.9589 18.8 11.9184 18.7902 11.882 18.7712C11.8456 18.7522 11.8144 18.7247 11.791 18.691C10.697 17.031 5.67395 9.24897 5.67395 6.19997C5.68192 5.37742 5.8519 4.56449 6.17419 3.80766C6.49647 3.05082 6.96473 2.36491 7.55222 1.78913C8.1397 1.21335 8.83489 0.758977 9.59805 0.451984C10.3612 0.144992 11.1774 -0.00860429 12 -2.57111e-05C12.8225 -0.00847247 13.6386 0.145214 14.4017 0.452253C15.1648 0.759293 15.8599 1.21367 16.4474 1.78943C17.0349 2.36518 17.5031 3.05104 17.8254 3.80782C18.1478 4.56459 18.3179 5.37745 18.326 6.19997C18.326 9.24597 13.3 17.029 12.209 18.688C12.186 18.7224 12.1549 18.7506 12.1184 18.7701ZM12 8.99997C13.6569 8.99997 15 7.65682 15 5.99997C15 4.34312 13.6569 2.99997 12 2.99997C10.3431 2.99997 9 4.34312 9 5.99997C9 7.65682 10.3431 8.99997 12 8.99997Z\"/></symbol><symbol id=\"svg-message-alert\" data-name=\"message-alert\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 4a3 3 0 0 1 3-3h18a3 3 0 0 1 3 3v11a3 3 0 0 1-3 3H10.797l-5.9 4.903a.588.588 0 0 1-.814-.166.527.527 0 0 1-.083-.283V18H3a3 3 0 0 1-3-3V4zm11.5 5.5V5a1 1 0 0 1 2 0v4.5a1 1 0 0 1-2 0zm-.5 4a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0z\"/></symbol><symbol id=\"svg-message-text\" data-name=\"message-text\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0 4a3 3 0 0 1 3-3h18a3 3 0 0 1 3 3v11a3 3 0 0 1-3 3H10.797l-5.9 4.903a.588.588 0 0 1-.814-.166.527.527 0 0 1-.083-.283V18H3a3 3 0 0 1-3-3V4zm6 2a1 1 0 0 0 0 2h12a1 1 0 1 0 0-2H6zm0 5a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6z\"/></symbol><symbol id=\"svg-nav-menu\" data-name=\"nav-menu\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M22.9565 3H1.04348C0.467181 3 0 3.44772 0 4V5C0 5.55228 0.467181 6 1.04348 6H22.9565C23.5328 6 24 5.55228 24 5V4C24 3.44772 23.5328 3 22.9565 3Z\"/><path d=\"M22.9565 10.5H1.04348C0.467181 10.5 0 10.9477 0 11.5V12.5C0 13.0523 0.467181 13.5 1.04348 13.5H22.9565C23.5328 13.5 24 13.0523 24 12.5V11.5C24 10.9477 23.5328 10.5 22.9565 10.5Z\"/><path d=\"M22.9565 18H1.04348C0.467181 18 0 18.4477 0 19V20C0 20.5523 0.467181 21 1.04348 21H22.9565C23.5328 21 24 20.5523 24 20V19C24 18.4477 23.5328 18 22.9565 18Z\"/></symbol><symbol id=\"svg-part\" data-name=\"part\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M15.973 8.271C16.0166 8.25111 16.0536 8.21909 16.0796 8.17875C16.1055 8.13841 16.1193 8.09146 16.1193 8.0435C16.1193 7.99554 16.1055 7.94858 16.0796 7.90825C16.0536 7.86791 16.0166 7.83589 15.973 7.816L6.21596 3.368C6.15205 3.33961 6.0829 3.32494 6.01296 3.32494C5.94303 3.32494 5.87387 3.33961 5.80996 3.368L1.99296 5.024C1.94787 5.04321 1.90941 5.07526 1.88238 5.11615C1.85535 5.15704 1.84094 5.20498 1.84094 5.254C1.84094 5.30302 1.85535 5.35096 1.88238 5.39185C1.90941 5.43274 1.94787 5.46479 1.99296 5.484L12.283 9.772C12.3465 9.79859 12.4148 9.81178 12.4836 9.81075C12.5524 9.80971 12.6203 9.79448 12.683 9.766L15.973 8.271Z\"/><path d=\"M22.062 5.5C22.1059 5.48025 22.1432 5.44822 22.1694 5.40777C22.1956 5.36732 22.2095 5.32017 22.2095 5.272C22.2095 5.22383 22.1956 5.17669 22.1694 5.13624C22.1432 5.09579 22.1059 5.06376 22.062 5.044L12.4 0.847004C12.2739 0.791941 12.1377 0.763519 12 0.763519C11.8624 0.763519 11.7262 0.791941 11.6 0.847004L8.38002 2.247C8.3358 2.26663 8.29823 2.29867 8.27185 2.33923C8.24548 2.37979 8.23145 2.42713 8.23145 2.4755C8.23145 2.52388 8.24548 2.57122 8.27185 2.61178C8.29823 2.65234 8.3358 2.68438 8.38002 2.704L18.08 7.126C18.145 7.15557 18.2156 7.17087 18.287 7.17087C18.3584 7.17087 18.429 7.15557 18.494 7.126L22.062 5.5Z\"/><path d=\"M0.846 6.63001C0.807998 6.6142 0.766683 6.60802 0.72572 6.61202C0.684758 6.61602 0.645416 6.63007 0.611186 6.65292C0.576957 6.67577 0.548899 6.70672 0.529503 6.74302C0.510107 6.77932 0.499973 6.81985 0.5 6.86101V18.007C0.499984 18.2044 0.558372 18.3973 0.667811 18.5616C0.77725 18.7258 0.932846 18.854 1.115 18.93L11.4 23.217C11.438 23.2328 11.4793 23.239 11.5203 23.235C11.5612 23.231 11.6006 23.2169 11.6348 23.1941C11.669 23.1712 11.6971 23.1403 11.7165 23.104C11.7359 23.0677 11.746 23.0272 11.746 22.986V11.34C11.7459 11.2906 11.7312 11.2424 11.7038 11.2013C11.6765 11.1602 11.6375 11.1281 11.592 11.109L0.846 6.63001Z\"/><path d=\"M13.25 22.944C13.2502 22.9857 13.2608 23.0267 13.2809 23.0633C13.3009 23.0999 13.3298 23.1309 13.3648 23.1535C13.3999 23.1761 13.44 23.1897 13.4816 23.1929C13.5232 23.1961 13.5649 23.189 13.603 23.172L22.914 18.94C23.0887 18.8606 23.2368 18.7325 23.3408 18.5711C23.4447 18.4098 23.4999 18.2219 23.5 18.03V6.88601C23.5 6.8442 23.4896 6.80305 23.4696 6.76633C23.4496 6.72961 23.4208 6.69848 23.3856 6.6758C23.3505 6.65312 23.3103 6.6396 23.2686 6.6365C23.2269 6.63339 23.1851 6.64078 23.147 6.65801L13.4 11.09C13.3562 11.1096 13.3189 11.1414 13.2928 11.1817C13.2667 11.222 13.2529 11.269 13.253 11.317L13.25 22.944Z\"/></symbol><symbol id=\"svg-place\" data-name=\"place\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M8 0C5.879 0.00238211 3.84555 0.846002 2.34578 2.34578C0.846002 3.84555 0.00238211 5.879 0 8C0 11.343 4.509 18.912 6.576 22.2C6.63331 22.2917 6.71881 22.3624 6.81968 22.4014C6.92055 22.4404 7.03135 22.4456 7.13546 22.4163C7.23956 22.3871 7.33137 22.3248 7.39709 22.2389C7.46282 22.153 7.49893 22.0481 7.5 21.94V16C7.49992 15.6286 7.60325 15.2645 7.79842 14.9486C7.99358 14.6326 8.27287 14.3772 8.605 14.211L11.605 12.711C11.883 12.5724 12.1894 12.5003 12.5 12.5003C12.8106 12.5003 13.117 12.5724 13.395 12.711L13.94 12.984C14.0006 13.0144 14.0668 13.0322 14.1345 13.0362C14.2022 13.0402 14.27 13.0304 14.3338 13.0074C14.3976 12.9844 14.4561 12.9486 14.5056 12.9023C14.5551 12.856 14.5947 12.8001 14.622 12.738C15.3679 11.2565 15.835 9.65045 16 8C15.9976 5.879 15.154 3.84555 13.6542 2.34578C12.1544 0.846002 10.121 0.00238211 8 0V0ZM8 11C7.40666 11 6.82664 10.8241 6.33329 10.4944C5.83994 10.1648 5.45542 9.69623 5.22836 9.14805C5.0013 8.59987 4.94189 7.99667 5.05764 7.41473C5.1734 6.83279 5.45912 6.29824 5.87868 5.87868C6.29824 5.45912 6.83279 5.1734 7.41473 5.05764C7.99667 4.94189 8.59987 5.0013 9.14805 5.22836C9.69623 5.45542 10.1648 5.83994 10.4944 6.33329C10.8241 6.82664 11 7.40666 11 8C11 8.79565 10.6839 9.55871 10.1213 10.1213C9.55871 10.6839 8.79565 11 8 11Z\"/><path d=\"M15.724 15.553L12.724 14.053C12.6545 14.0182 12.5778 14 12.5 14C12.4222 14 12.3455 14.0182 12.276 14.053L9.276 15.553C9.19305 15.5946 9.12331 15.6584 9.07456 15.7373C9.02582 15.8163 9 15.9072 9 16V23.5C9 23.6326 9.05268 23.7598 9.14645 23.8536C9.24021 23.9473 9.36739 24 9.5 24H11C11.1326 24 11.2598 23.9473 11.3536 23.8536C11.4473 23.7598 11.5 23.6326 11.5 23.5V22.5C11.5 22.3674 11.5527 22.2402 11.6464 22.1464C11.7402 22.0527 11.8674 22 12 22H13C13.1326 22 13.2598 22.0527 13.3536 22.1464C13.4473 22.2402 13.5 22.3674 13.5 22.5V23.5C13.5 23.6326 13.5527 23.7598 13.6464 23.8536C13.7402 23.9473 13.8674 24 14 24H15.5C15.6326 24 15.7598 23.9473 15.8536 23.8536C15.9473 23.7598 16 23.6326 16 23.5V16C16 15.9072 15.9742 15.8163 15.9254 15.7373C15.8767 15.6584 15.8069 15.5946 15.724 15.553ZM14 20H11C10.8674 20 10.7402 19.9473 10.6464 19.8536C10.5527 19.7598 10.5 19.6326 10.5 19.5C10.5 19.3674 10.5527 19.2402 10.6464 19.1464C10.7402 19.0527 10.8674 19 11 19H14C14.1326 19 14.2598 19.0527 14.3536 19.1464C14.4473 19.2402 14.5 19.3674 14.5 19.5C14.5 19.6326 14.4473 19.7598 14.3536 19.8536C14.2598 19.9473 14.1326 20 14 20ZM14 17.5H11C10.8674 17.5 10.7402 17.4473 10.6464 17.3536C10.5527 17.2598 10.5 17.1326 10.5 17C10.5 16.8674 10.5527 16.7402 10.6464 16.6464C10.7402 16.5527 10.8674 16.5 11 16.5H14C14.1326 16.5 14.2598 16.5527 14.3536 16.6464C14.4473 16.7402 14.5 16.8674 14.5 17C14.5 17.1326 14.4473 17.2598 14.3536 17.3536C14.2598 17.4473 14.1326 17.5 14 17.5Z\"/><path d=\"M23.692 12.038L17.692 9.538C17.616 9.50639 17.5334 9.49403 17.4514 9.50203C17.3695 9.51002 17.2908 9.53812 17.2224 9.58382C17.1539 9.62953 17.0978 9.69143 17.059 9.76403C17.0202 9.83663 16.9999 9.91768 17 10V23.5C17 23.6326 17.0527 23.7598 17.1464 23.8536C17.2402 23.9473 17.3674 24 17.5 24H23.5C23.6326 24 23.7598 23.9473 23.8536 23.8536C23.9473 23.7598 24 23.6326 24 23.5V12.5C24.0001 12.4012 23.9708 12.3045 23.916 12.2223C23.8612 12.1401 23.7832 12.0759 23.692 12.038ZM22 20H19C18.8674 20 18.7402 19.9473 18.6464 19.8536C18.5527 19.7598 18.5 19.6326 18.5 19.5C18.5 19.3674 18.5527 19.2402 18.6464 19.1464C18.7402 19.0527 18.8674 19 19 19H22C22.1326 19 22.2598 19.0527 22.3536 19.1464C22.4473 19.2402 22.5 19.3674 22.5 19.5C22.5 19.6326 22.4473 19.7598 22.3536 19.8536C22.2598 19.9473 22.1326 20 22 20ZM22 17.5H19C18.8674 17.5 18.7402 17.4473 18.6464 17.3536C18.5527 17.2598 18.5 17.1326 18.5 17C18.5 16.8674 18.5527 16.7402 18.6464 16.6464C18.7402 16.5527 18.8674 16.5 19 16.5H22C22.1326 16.5 22.2598 16.5527 22.3536 16.6464C22.4473 16.7402 22.5 16.8674 22.5 17C22.5 17.1326 22.4473 17.2598 22.3536 17.3536C22.2598 17.4473 22.1326 17.5 22 17.5ZM22 15H19C18.8674 15 18.7402 14.9473 18.6464 14.8536C18.5527 14.7598 18.5 14.6326 18.5 14.5C18.5 14.3674 18.5527 14.2402 18.6464 14.1464C18.7402 14.0527 18.8674 14 19 14H22C22.1326 14 22.2598 14.0527 22.3536 14.1464C22.4473 14.2402 22.5 14.3674 22.5 14.5C22.5 14.6326 22.4473 14.7598 22.3536 14.8536C22.2598 14.9473 22.1326 15 22 15Z\"/></symbol><symbol id=\"svg-question\" data-name=\"question\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><g clip-path=\"url(#def-svg-question-0)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.1618 3.44747C10.8132 3.11045 11.5446 2.95895 12.2762 3.00953C13.0078 3.06011 13.7114 3.31083 14.3101 3.73429C14.9089 4.15774 15.3797 4.73763 15.6711 5.41058C15.9625 6.08353 16.0634 6.82365 15.9626 7.55003C15.8618 8.27642 15.5633 8.96112 15.0996 9.52931C14.636 10.0975 14.0251 10.5273 13.3337 10.7717C12.5047 11.0648 11.787 11.6078 11.2795 12.3259C10.7722 13.0438 10.5 13.902 10.5003 14.781L10.5 15.5C10.5 16.3284 11.1716 17 12 17C12.8284 17 13.5 16.3284 13.5 15.5L13.5003 14.7795C13.5001 14.5208 13.5802 14.2685 13.7295 14.0573C13.8787 13.8461 14.0898 13.6864 14.3337 13.6002C15.5436 13.1724 16.6127 12.4203 17.424 11.426C18.2353 10.4317 18.7577 9.23347 18.9341 7.96233C19.1105 6.69119 18.934 5.39603 18.424 4.2184C17.9141 3.04077 17.0902 2.02598 16.0424 1.28496C14.9947 0.543938 13.7634 0.105192 12.4831 0.0166745C11.2028 -0.0718426 9.92289 0.193277 8.78313 0.783055C7.64336 1.37283 6.68765 2.26457 6.02046 3.36082C5.35326 4.45706 5.00025 5.71561 5 6.99893C4.99984 7.82736 5.67129 8.49906 6.49971 8.49922C7.32814 8.49937 7.99984 7.82793 8 6.9995C8.00014 6.26616 8.20187 5.54696 8.58313 4.92052C8.9644 4.29408 9.51053 3.7845 10.1618 3.44747ZM12 24C13.2426 24 14.25 22.9926 14.25 21.75C14.25 20.5074 13.2426 19.5 12 19.5C10.7574 19.5 9.75 20.5074 9.75 21.75C9.75 22.9926 10.7574 24 12 24Z\"/></g></symbol><symbol id=\"svg-reminder\" data-name=\"reminder\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.5 3.18262V1.5C13.5 1.10218 13.342 0.720644 13.0607 0.43934C12.7794 0.158035 12.3978 0 12 0C11.6022 0 11.2206 0.158035 10.9393 0.43934C10.658 0.720644 10.5 1.10218 10.5 1.5V3.18262C8.83312 3.60469 7.34274 4.55706 6.25798 5.903C5.06583 7.38218 4.44226 9.23909 4.5 11.138V16C4.5 16.3978 4.34196 16.7794 4.06066 17.0607C3.77936 17.342 3.39782 17.5 3 17.5C2.73478 17.5 2.48043 17.6054 2.29289 17.7929C2.10536 17.9804 2 18.2348 2 18.5C2 18.7652 2.10536 19.0196 2.29289 19.2071C2.48043 19.3946 2.73478 19.5 3 19.5H21C21.2652 19.5 21.5196 19.3946 21.7071 19.2071C21.8946 19.0196 22 18.7652 22 18.5C22 18.2348 21.8946 17.9804 21.7071 17.7929C21.5196 17.6054 21.2652 17.5 21 17.5C20.6022 17.5 20.2206 17.342 19.9393 17.0607C19.658 16.7794 19.5 16.3978 19.5 16V11.138C19.5577 9.23909 18.9342 7.38218 17.742 5.903C16.6573 4.55706 15.1669 3.60469 13.5 3.18262ZM14.236 21H9.76401C9.70263 21.0001 9.64343 21.0228 9.59769 21.0637C9.55196 21.1047 9.52288 21.161 9.51601 21.222C9.50511 21.3143 9.49977 21.4071 9.50001 21.5C9.50001 22.163 9.7634 22.7989 10.2322 23.2678C10.7011 23.7366 11.337 24 12 24C12.663 24 13.2989 23.7366 13.7678 23.2678C14.2366 22.7989 14.5 22.163 14.5 21.5C14.5002 21.4071 14.4949 21.3143 14.484 21.222C14.4776 21.1608 14.4486 21.1042 14.4028 21.0632C14.357 21.0222 14.2975 20.9997 14.236 21Z\"/></symbol><symbol id=\"svg-report\" data-name=\"report\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M23 10.5C23.1326 10.5 23.2598 10.4473 23.3536 10.3536C23.4473 10.2598 23.5 10.1326 23.5 10C23.4968 7.34881 22.4422 4.80712 20.5676 2.93244C18.6929 1.05776 16.1512 0.00317572 13.5 0C13.3674 0 13.2402 0.0526784 13.1464 0.146447C13.0527 0.240215 13 0.367392 13 0.5V9.525C13.0003 9.7836 13.103 10.0315 13.2858 10.2145C13.4686 10.3974 13.7164 10.5005 13.975 10.501L23 10.5Z\"/><path d=\"M23.5 12H14C13.8527 11.9812 13.7032 12.0114 13.5747 12.0859C13.4461 12.1605 13.3457 12.2752 13.2888 12.4125C13.232 12.5497 13.2219 12.7019 13.26 12.8455C13.2982 12.989 13.3825 13.1161 13.5 13.207L20.218 19.925C20.3118 20.0187 20.4389 20.0714 20.5715 20.0714C20.7041 20.0714 20.8313 20.0187 20.925 19.925C21.903 18.9521 22.6783 17.795 23.2062 16.5205C23.734 15.246 24.0038 13.8795 24 12.5C24 12.3674 23.9474 12.2402 23.8536 12.1464C23.7598 12.0527 23.6326 12 23.5 12Z\"/><path d=\"M10.588 24C11.9542 23.9971 13.3062 23.723 14.5657 23.1936C15.8252 22.6642 16.967 21.89 17.925 20.916C18.0188 20.8222 18.0714 20.6951 18.0714 20.5625C18.0714 20.4299 18.0188 20.3028 17.925 20.209L11.207 13.491C11.0889 13.3492 11.0167 13.1748 11 12.991V3.491C11 3.35839 10.9473 3.23121 10.8536 3.13744C10.7598 3.04368 10.6326 2.991 10.5 2.991C7.71405 3.00267 5.04683 4.12058 3.08511 6.09881C1.12338 8.07703 0.0278515 10.7535 0.039521 13.5395C0.0511905 16.3255 1.1691 18.9927 3.14733 20.9544C5.12556 22.9161 7.80205 24.0117 10.588 24V24Z\"/></symbol><symbol id=\"svg-search\" data-name=\"search\" viewBox=\"0 0 25 25\" width=\"25\" height=\"25\" ><path d=\"M24.414 21.591L19.769 16.946C21.1833 14.8289 21.7596 12.2613 21.3857 9.74285C21.0118 7.22435 19.7145 4.93497 17.7461 3.32002C15.7778 1.70506 13.279 0.880008 10.736 1.00534C8.19303 1.13067 5.78756 2.19742 3.98752 3.9981C2.18748 5.79878 1.12157 8.20463 0.997143 10.7477C0.872712 13.2907 1.69865 15.7891 3.3143 17.757C4.92995 19.7248 7.21979 21.0213 9.73841 21.3943C12.257 21.7672 14.8244 21.1901 16.941 19.775L21.586 24.419C21.9642 24.7879 22.4716 24.9944 23 24.9944C23.5284 24.9944 24.0358 24.7879 24.414 24.419C24.7889 24.0439 24.9996 23.5353 24.9996 23.005C24.9996 22.4747 24.7889 21.9661 24.414 21.591ZM11.25 4.005C12.6839 4.005 14.0856 4.43021 15.2779 5.22685C16.4701 6.02349 17.3994 7.15578 17.9481 8.48055C18.4969 9.80531 18.6404 11.263 18.3607 12.6694C18.0809 14.0758 17.3905 15.3676 16.3765 16.3815C15.3626 17.3955 14.0708 18.0859 12.6644 18.3657C11.258 18.6454 9.80031 18.5019 8.47554 17.9531C7.15078 17.4044 6.01848 16.4751 5.22184 15.2829C4.4252 14.0906 4 12.6889 4 11.255C4.00211 9.33283 4.76663 7.48999 6.12581 6.13081C7.48499 4.77163 9.32783 4.00712 11.25 4.005Z\"/></symbol><symbol id=\"svg-service\" data-name=\"service\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M23.582 4.986C23.5558 4.9042 23.509 4.83051 23.4461 4.77205C23.3832 4.71358 23.3063 4.67231 23.2228 4.65221C23.1393 4.63212 23.052 4.63387 22.9694 4.6573C22.8867 4.68074 22.8115 4.72506 22.751 4.786L19.194 8.341C19.142 8.39292 19.0792 8.43274 19.0101 8.45763C18.9409 8.48252 18.8672 8.49186 18.794 8.485L16.2 8.249C16.0836 8.23851 15.9745 8.18754 15.8917 8.10496C15.809 8.02239 15.7578 7.91342 15.747 7.797L15.513 5.2C15.5063 5.12677 15.5158 5.05295 15.5408 4.98381C15.5659 4.91467 15.6059 4.85191 15.658 4.8L19.216 1.242C19.2767 1.18146 19.3208 1.10633 19.3441 1.02382C19.3674 0.941313 19.3691 0.854204 19.349 0.770858C19.3289 0.687512 19.2877 0.610731 19.2294 0.547888C19.1711 0.485044 19.0976 0.438251 19.016 0.412001C17.7707 0.0462067 16.4496 0.0246879 15.1931 0.349733C13.9366 0.674777 12.7917 1.33424 11.88 2.258C10.913 3.21722 10.2475 4.4382 9.96533 5.77072C9.68319 7.10324 9.79674 8.48917 10.292 9.758C10.3294 9.84669 10.3399 9.94445 10.3221 10.0391C10.3043 10.1337 10.2591 10.221 10.192 10.29L0.912001 19.563C0.537436 19.9223 0.279838 20.3861 0.172808 20.8939C0.0657783 21.4018 0.114285 21.9301 0.312001 22.41C0.478494 22.7791 0.731664 23.1025 1.04998 23.3527C1.36829 23.6029 1.74232 23.7725 2.14027 23.8471C2.53822 23.9218 2.9483 23.8992 3.33564 23.7813C3.72298 23.6634 4.07611 23.4537 4.365 23.17L13.7 13.834C13.7693 13.7673 13.8565 13.7222 13.951 13.7045C14.0456 13.6867 14.1432 13.697 14.232 13.734C15.4985 14.2337 16.8836 14.3517 18.2164 14.0734C19.5491 13.7951 20.7713 13.1327 21.732 12.168C22.661 11.2501 23.3237 10.0974 23.6495 8.83265C23.9753 7.56793 23.9519 6.23852 23.582 4.986V4.986Z\"/></symbol><symbol id=\"svg-settings\" data-name=\"settings\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M22.5 9.5H20.638C20.4529 8.8602 20.197 8.24305 19.875 7.66L21.192 6.344C21.3314 6.2047 21.442 6.0393 21.5174 5.85725C21.5928 5.6752 21.6317 5.48006 21.6317 5.283C21.6317 5.08594 21.5928 4.8908 21.5174 4.70875C21.442 4.5267 21.3314 4.3613 21.192 4.222L19.777 2.809C19.4957 2.52779 19.1142 2.36982 18.7165 2.36982C18.3188 2.36982 17.9373 2.52779 17.656 2.809L16.338 4.126C15.7558 3.8038 15.1392 3.54787 14.5 3.363V1.5C14.5 1.10218 14.342 0.720644 14.0607 0.43934C13.7794 0.158035 13.3978 0 13 0L11 0C10.6022 0 10.2206 0.158035 9.93934 0.43934C9.65804 0.720644 9.5 1.10218 9.5 1.5V3.363C8.86058 3.5483 8.24378 3.8042 7.661 4.126L6.343 2.809C6.06171 2.52779 5.68025 2.36982 5.2825 2.36982C4.88475 2.36982 4.50329 2.52779 4.222 2.809L2.807 4.223C2.66761 4.3623 2.55704 4.5277 2.48159 4.70975C2.40615 4.8918 2.36732 5.08694 2.36732 5.284C2.36732 5.48106 2.40615 5.6762 2.48159 5.85825C2.55704 6.0403 2.66761 6.2057 2.807 6.345L4.125 7.662C3.80259 8.24414 3.54665 8.86067 3.362 9.5H1.5C1.10218 9.5 0.720644 9.65804 0.43934 9.93934C0.158035 10.2206 0 10.6022 0 11L0 13C0 13.3978 0.158035 13.7794 0.43934 14.0607C0.720644 14.342 1.10218 14.5 1.5 14.5H3.362C3.54657 15.1397 3.80252 15.7565 4.125 16.339L2.806 17.658C2.52479 17.9393 2.36682 18.3208 2.36682 18.7185C2.36682 19.1162 2.52479 19.4977 2.806 19.779L4.22 21.193C4.50682 21.464 4.88643 21.6149 5.281 21.6149C5.67557 21.6149 6.05518 21.464 6.342 21.193L7.66 19.876C8.24309 20.1981 8.86022 20.4544 9.5 20.64V22.5C9.5 22.8978 9.65804 23.2794 9.93934 23.5607C10.2206 23.842 10.6022 24 11 24H13C13.3978 24 13.7794 23.842 14.0607 23.5607C14.342 23.2794 14.5 22.8978 14.5 22.5V20.64C15.1394 20.4547 15.7562 20.1988 16.339 19.877L17.657 21.194C17.9383 21.4752 18.3198 21.6332 18.7175 21.6332C19.1152 21.6332 19.4967 21.4752 19.778 21.194L21.192 19.78C21.4732 19.4987 21.6312 19.1172 21.6312 18.7195C21.6312 18.3218 21.4732 17.9403 21.192 17.659L19.875 16.342C20.1973 15.7591 20.4532 15.1419 20.638 14.502H22.5C22.6972 14.502 22.8924 14.4631 23.0745 14.3876C23.2566 14.3121 23.4221 14.2015 23.5614 14.062C23.7007 13.9225 23.8111 13.7569 23.8864 13.5746C23.9617 13.3924 24.0003 13.1972 24 13V11C24 10.6022 23.842 10.2206 23.5607 9.93934C23.2794 9.65804 22.8978 9.5 22.5 9.5ZM12 17C11.0111 17 10.0444 16.7068 9.22215 16.1573C8.3999 15.6079 7.75904 14.827 7.3806 13.9134C7.00216 12.9998 6.90315 11.9945 7.09607 11.0245C7.289 10.0546 7.7652 9.16373 8.46447 8.46447C9.16373 7.7652 10.0546 7.289 11.0245 7.09607C11.9945 6.90315 12.9998 7.00216 13.9134 7.3806C14.827 7.75904 15.6079 8.3999 16.1573 9.22215C16.7068 10.0444 17 11.0111 17 12C16.9984 13.3256 16.4711 14.5964 15.5338 15.5338C14.5964 16.4711 13.3256 16.9984 12 17V17Z\"/></symbol><symbol id=\"svg-trip\" data-name=\"trip\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M19.012 14.552C18.9988 14.5198 18.9787 14.4908 18.9531 14.4671C18.9276 14.4435 18.8971 14.4257 18.864 14.415C18.5501 14.3134 18.2667 14.1346 18.04 13.895C16.34 12.08 13.5 8.609 13.5 5.75C13.5 5.579 13.509 5.411 13.524 5.244C13.539 5.077 13.604 4.75 13.275 4.75H12C11.9337 4.75 11.8701 4.77634 11.8232 4.82322C11.7763 4.87011 11.75 4.9337 11.75 5V7.75C11.75 7.94891 11.6709 8.13968 11.5303 8.28033C11.3896 8.42098 11.1989 8.5 11 8.5C10.801 8.5 10.6103 8.42098 10.4696 8.28033C10.329 8.13968 10.25 7.94891 10.25 7.75V5C10.25 4.9337 10.2236 4.87011 10.1767 4.82322C10.1299 4.77634 10.0663 4.75 9.99996 4.75H7.18096C7.08059 4.75006 6.98256 4.78033 6.89963 4.83687C6.81669 4.8934 6.7527 4.97359 6.71596 5.067L0.0339605 22.067C0.00412291 22.1429 -0.00671146 22.2249 0.00240122 22.3059C0.0115139 22.3869 0.0402972 22.4645 0.0862436 22.5318C0.13219 22.5991 0.193906 22.6542 0.266014 22.6923C0.338123 22.7303 0.418437 22.7501 0.49996 22.75H9.99996C10.0663 22.75 10.1299 22.7237 10.1767 22.6768C10.2236 22.6299 10.25 22.5663 10.25 22.5V19.75C10.25 19.5511 10.329 19.3603 10.4696 19.2197C10.6103 19.079 10.801 19 11 19C11.1989 19 11.3896 19.079 11.5303 19.2197C11.6709 19.3603 11.75 19.5511 11.75 19.75V22.5C11.75 22.5663 11.7763 22.6299 11.8232 22.6768C11.8701 22.7237 11.9337 22.75 12 22.75H21.5C21.5815 22.7501 21.6618 22.7303 21.7339 22.6923C21.806 22.6542 21.8677 22.5991 21.9137 22.5318C21.9596 22.4645 21.9884 22.3869 21.9975 22.3059C22.0066 22.2249 21.9958 22.1429 21.966 22.067L19.012 14.552ZM11.75 15.752C11.75 15.9509 11.6709 16.1417 11.5303 16.2823C11.3896 16.423 11.1989 16.502 11 16.502C10.801 16.502 10.6103 16.423 10.4696 16.2823C10.329 16.1417 10.25 15.9509 10.25 15.752V11.752C10.25 11.5531 10.329 11.3623 10.4696 11.2217C10.6103 11.081 10.801 11.002 11 11.002C11.1989 11.002 11.3896 11.081 11.5303 11.2217C11.6709 11.3623 11.75 11.5531 11.75 11.752V15.752Z\"/><path d=\"M19.864 12.87C20.935 11.723 24 8.226 24 5.75C24 4.55653 23.5259 3.41193 22.682 2.56802C21.8381 1.72411 20.6935 1.25 19.5 1.25C18.3065 1.25 17.1619 1.72411 16.318 2.56802C15.4741 3.41193 15 4.55653 15 5.75C15 8.226 18.065 11.723 19.136 12.87C19.1827 12.9196 19.2392 12.9592 19.3018 12.9862C19.3643 13.0133 19.4318 13.0272 19.5 13.0272C19.5682 13.0272 19.6357 13.0133 19.6982 12.9862C19.7608 12.9592 19.8173 12.9196 19.864 12.87V12.87ZM18 5.75C18 5.45333 18.088 5.16332 18.2528 4.91664C18.4176 4.66997 18.6519 4.47771 18.926 4.36418C19.2001 4.25065 19.5017 4.22094 19.7926 4.27882C20.0836 4.3367 20.3509 4.47956 20.5607 4.68934C20.7704 4.89912 20.9133 5.16639 20.9712 5.45736C21.0291 5.74834 20.9993 6.04994 20.8858 6.32403C20.7723 6.59811 20.58 6.83238 20.3334 6.9972C20.0867 7.16203 19.7967 7.25 19.5 7.25C19.1022 7.25 18.7206 7.09196 18.4393 6.81066C18.158 6.52936 18 6.14782 18 5.75Z\"/></symbol><symbol id=\"svg-vehicle\" data-name=\"vehicle\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M22.1929 10.3308C22.2048 10.3578 22.2214 10.3826 22.242 10.404C23.048 11.2339 23.4992 12.3451 23.5 13.502V15.502C23.4984 16.0032 23.3457 16.4924 23.0618 16.9055C22.7966 17.2916 22.4284 17.5946 22 17.7806V20C22 20.5523 21.5523 21 21 21H19C18.4477 21 18 20.5523 18 20V17.8172L6 17.8148V20C6 20.5523 5.55228 21 5 21H3C2.44772 21 2 20.5523 2 20V17.7766C1.57156 17.5906 1.20334 17.2876 0.938115 16.9015C0.654299 16.4884 0.501613 15.9992 0.499983 15.498V13.498C0.501514 12.3436 0.951506 11.2349 1.75498 10.406C1.78137 10.3786 1.80119 10.3455 1.81297 10.3093L1.81341 10.3088C1.81453 10.3042 1.81553 10.2995 1.81639 10.2947C1.82517 10.2465 1.81956 10.1967 1.80027 10.1517C1.78098 10.1066 1.74885 10.0681 1.70789 10.0412C1.66693 10.0142 1.61894 9.9999 1.5699 10H1.28198C1.01677 10 0.762411 9.89464 0.574875 9.70711C0.387338 9.51957 0.281982 9.26522 0.281982 9V8C0.281982 7.73478 0.387338 7.48043 0.574875 7.29289C0.762411 7.10536 1.01677 7 1.28198 7H2.63198C2.86474 7.00062 3.0942 7.0551 3.30238 7.1592C3.4838 7.24991 3.64477 7.37614 3.77591 7.53007L3.78758 7.50165C3.81197 7.46945 3.82823 7.43184 3.83498 7.39201L4.23498 5.00901C4.34955 4.30737 4.71029 3.66948 5.25253 3.2097C5.79477 2.74992 6.48305 2.49832 7.19398 2.50001H16.802C17.5126 2.49825 18.2007 2.74956 18.7429 3.20894C19.2851 3.66832 19.646 4.30574 19.761 5.00701L20.161 7.39001C20.1676 7.42981 20.1837 7.46743 20.208 7.49964C20.2145 7.50829 20.2216 7.51648 20.2291 7.52417C20.3593 7.37291 20.5185 7.24874 20.6976 7.1592C20.9058 7.0551 21.1352 7.00062 21.368 7H22.718C22.9832 7 23.2376 7.10536 23.4251 7.29289C23.6126 7.48043 23.718 7.73478 23.718 8V9C23.718 9.26522 23.6126 9.51957 23.4251 9.70711C23.2376 9.89464 22.9832 10 22.718 10H22.4301C22.381 9.9999 22.333 10.0142 22.2921 10.0412C22.2511 10.0681 22.219 10.1066 22.1997 10.1517C22.1804 10.1967 22.1748 10.2465 22.1836 10.2947C22.1858 10.307 22.1889 10.3191 22.1929 10.3308ZM7.19398 4.50201H16.806C17.0427 4.50212 17.2717 4.58619 17.4522 4.73927C17.6328 4.89235 17.7532 5.10451 17.792 5.33801L18.271 8.21101C18.2763 8.24641 18.2741 8.28254 18.2645 8.31702C18.2548 8.3515 18.2379 8.38353 18.215 8.41101C18.1915 8.43867 18.1622 8.46087 18.1292 8.47607C18.0962 8.49127 18.0603 8.49909 18.024 8.49901H5.97598C5.93965 8.49907 5.90374 8.4912 5.87076 8.47597C5.83778 8.46073 5.80851 8.43849 5.785 8.41079C5.76149 8.38309 5.7443 8.3506 5.73462 8.31558C5.72495 8.28056 5.72302 8.24385 5.72898 8.20801L6.20798 5.33501C6.24744 5.10206 6.3681 4.8906 6.54859 4.73812C6.72907 4.58565 6.95771 4.502 7.19398 4.50201ZM7 13.5C7 14.3284 6.32843 15 5.5 15C4.67157 15 4 14.3284 4 13.5C4 12.6716 4.67157 12 5.5 12C6.32843 12 7 12.6716 7 13.5ZM18.5 15C19.3284 15 20 14.3284 20 13.5C20 12.6716 19.3284 12 18.5 12C17.6716 12 17 12.6716 17 13.5C17 14.3284 17.6716 15 18.5 15Z\"/></symbol><symbol id=\"svg-vendor\" data-name=\"vendor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path d=\"M21.379 11.9C20.8074 11.8915 20.2455 11.7506 19.7375 11.4884C19.2295 11.2263 18.7891 10.8499 18.451 10.389C18.4277 10.358 18.3975 10.3328 18.3628 10.3154C18.3281 10.298 18.2898 10.289 18.251 10.289C18.2122 10.289 18.1739 10.298 18.1392 10.3154C18.1045 10.3328 18.0743 10.358 18.051 10.389C17.7189 10.8563 17.2799 11.2373 16.7705 11.5002C16.2611 11.7631 15.6962 11.9003 15.123 11.9003C14.5498 11.9003 13.9849 11.7631 13.4755 11.5002C12.9661 11.2373 12.527 10.8563 12.195 10.389C12.1717 10.358 12.1415 10.3328 12.1068 10.3154C12.0721 10.298 12.0338 10.289 11.995 10.289C11.9562 10.289 11.9179 10.298 11.8832 10.3154C11.8485 10.3328 11.8183 10.358 11.795 10.389C11.4576 10.849 11.0183 11.2248 10.5116 11.4869C10.0049 11.749 9.44441 11.8904 8.87399 11.9C8.30221 11.8916 7.74016 11.7508 7.23196 11.4886C6.72376 11.2265 6.28324 10.8501 5.94499 10.389C5.9217 10.358 5.89151 10.3328 5.85679 10.3154C5.82208 10.298 5.7838 10.289 5.74499 10.289C5.70618 10.289 5.6679 10.298 5.63319 10.3154C5.59847 10.3328 5.56828 10.358 5.54499 10.389C5.20725 10.8494 4.76753 11.2254 4.26025 11.4875C3.75298 11.7497 3.19192 11.8908 2.62099 11.9C2.49268 11.8998 2.36449 11.8924 2.23699 11.878C2.20194 11.8739 2.16642 11.8773 2.13278 11.8879C2.09913 11.8986 2.06814 11.9163 2.04186 11.9398C2.01557 11.9634 1.99459 11.9922 1.9803 12.0245C1.96601 12.0568 1.95875 12.0917 1.95899 12.127V21.15C1.95899 21.5478 2.11703 21.9294 2.39833 22.2107C2.67963 22.492 3.06117 22.65 3.45899 22.65H20.459C20.8568 22.65 21.2383 22.492 21.5197 22.2107C21.801 21.9294 21.959 21.5478 21.959 21.15V12.134C21.9588 12.0992 21.9515 12.0648 21.9374 12.0329C21.9233 12.0011 21.9027 11.9725 21.877 11.949C21.8514 11.9256 21.8212 11.9078 21.7883 11.8967C21.7554 11.8857 21.7205 11.8817 21.686 11.885C21.584 11.894 21.482 11.9 21.379 11.9ZM14.957 15.01C14.9624 14.9092 15.0075 14.8146 15.0825 14.747C15.1575 14.6793 15.2561 14.6441 15.357 14.649H18.557C18.6578 14.6441 18.7565 14.6793 18.8315 14.747C18.9064 14.8146 18.9516 14.9092 18.957 15.01V20.149C18.957 20.2816 18.9043 20.4088 18.8105 20.5026C18.7168 20.5963 18.5896 20.649 18.457 20.649H15.457C15.3244 20.649 15.1972 20.5963 15.1034 20.5026C15.0097 20.4088 14.957 20.2816 14.957 20.149V15.01ZM5.45699 14.982C5.46266 14.8883 5.50519 14.8007 5.57527 14.7383C5.64536 14.6759 5.7373 14.6438 5.83099 14.649H11.078C11.1718 14.6438 11.2638 14.6759 11.3341 14.7383C11.4043 14.8006 11.4471 14.8882 11.453 14.982V18.316C11.4471 18.4098 11.4043 18.4974 11.3341 18.5597C11.2638 18.6221 11.1718 18.6542 11.078 18.649H5.83099C5.7373 18.6542 5.64536 18.6221 5.57527 18.5597C5.50519 18.4973 5.46266 18.4097 5.45699 18.316V14.982Z\"/><path d=\"M21.379 10.4C21.9018 10.3658 22.3999 10.1654 22.8007 9.82812C23.2016 9.49081 23.4841 9.03421 23.607 8.52499C23.7443 8.07794 23.7398 7.59935 23.594 7.15499L21.794 1.68499C21.7757 1.60101 21.7327 1.52443 21.6705 1.46509C21.6083 1.40575 21.5298 1.36637 21.445 1.35199H2.55104C2.46629 1.36637 2.38778 1.40575 2.32559 1.46509C2.2634 1.52443 2.22037 1.60101 2.20204 1.68499L0.405038 7.15299C0.260149 7.59788 0.255959 8.07663 0.393038 8.52399C0.515827 9.0334 0.798259 9.49021 1.19909 9.82772C1.59992 10.1652 2.09816 10.3657 2.62104 10.4C3.31538 10.3276 3.95359 9.98564 4.39846 9.44764C4.84333 8.90965 5.05934 8.21857 5.00004 7.52299C5.00004 7.32408 5.07906 7.13331 5.21971 6.99266C5.36036 6.85201 5.55113 6.77299 5.75004 6.77299C5.94895 6.77299 6.13972 6.85201 6.28037 6.99266C6.42102 7.13331 6.50004 7.32408 6.50004 7.52299C6.44067 8.21779 6.656 8.90818 7.09982 9.44604C7.54364 9.9839 8.1806 10.3264 8.87404 10.4C9.56784 10.3269 10.2053 9.9846 10.6495 9.44668C11.0938 8.90877 11.3094 8.2181 11.25 7.52299C11.25 7.32408 11.3291 7.13331 11.4697 6.99266C11.6104 6.85201 11.8011 6.77299 12 6.77299C12.199 6.77299 12.3897 6.85201 12.5304 6.99266C12.671 7.13331 12.75 7.32408 12.75 7.52299C12.6907 8.21826 12.9064 8.90906 13.3509 9.447C13.7953 9.98494 14.4331 10.3271 15.127 10.4C15.8204 10.3264 16.4573 9.98387 16.9009 9.44598C17.3446 8.90808 17.5597 8.21769 17.5 7.52299C17.5 7.32408 17.5791 7.13331 17.7197 6.99266C17.8604 6.85201 18.0511 6.77299 18.25 6.77299C18.449 6.77299 18.6397 6.85201 18.7804 6.99266C18.921 7.13331 19 7.32408 19 7.52299C18.941 8.21851 19.1571 8.90945 19.6019 9.44739C20.0467 9.98532 20.6848 10.3273 21.379 10.4Z\"/></symbol><symbol id=\"svg-avatar\" data-name=\"avatar\" viewBox=\"0 0 84 84\" width=\"84\" height=\"84\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;\"><g><path d=\"M51.89,58.967c0.787,3.257 1.624,10.792 3.89,12.874c1.268,1.167 5.893,2.723 10.798,4.245c-6.903,4.979 -15.377,7.914 -24.531,7.914c-9.295,0 -17.889,-3.026 -24.849,-8.146c4.518,-1.351 8.721,-2.733 9.993,-3.884c1.947,-1.763 4.167,-7.364 4.7,-10.816c-0.06,4.293 0.908,13.475 10.054,13.475c11.699,0 10.014,-15.081 9.945,-15.662Z\"/><path d=\"M31.998,59.026c-7.055,-8.327 -11.683,-22.372 -11.683,-32.733c0,-13.574 5.335,-26.079 21.257,-26.29l0.203,-0.002l0.241,-0.001c16.215,0.017 21.594,12.673 21.594,26.355c0,10.499 -3.938,24.154 -11.72,32.611l0,-0.001c0,0 -3.561,6.423 -9.921,6.423c-6.36,0 -9.971,-6.362 -9.971,-6.362l0,-0.001l0,0.001Z\"/><path d=\"M31.998,59.026l0,0c0.096,0.509 0.06,1.242 -0.107,2.128l0.107,-2.128Z\" fill=\"#d3d9dc\" /><path d=\"M51.89,58.966l0,0.001l0,0l0,-0.001Z\" fill=\"#d3d9dc\" /><path d=\"M51.89,58.966l0,0.001l0,0c0.069,0.581 1.754,15.662 -9.945,15.662c-9.146,0 -10.114,-9.182 -10.054,-13.475c0.167,-0.886 0.203,-1.619 0.107,-2.128l0,0l0,-0.001l0,0.001c0,0 3.611,6.362 9.971,6.362c6.36,0 9.921,-6.423 9.921,-6.423l0,0.001Z\" fill-opacity=\"0.705882\" /></g></symbol><symbol id=\"svg-shop\" data-name=\"shop\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M20 4H4v2h16V4zm1 10v-2l-1-5H4l-1 5v2h1v6h10v-6h4v6h2v-6h1zM6 18h6v-4H6v4z\"/></symbol><symbol id=\"svg-place-pin\" data-name=\"place-pin\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" ><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5 9C5 5.13 8.13 2 12 2C15.87 2 19 5.13 19 9C19 14.25 12 22 12 22C12 22 5 14.25 5 9ZM9.5 9C9.5 10.38 10.62 11.5 12 11.5C13.38 11.5 14.5 10.38 14.5 9C14.5 7.62 13.38 6.5 12 6.5C10.62 6.5 9.5 7.62 9.5 9Z\"/></symbol><symbol id=\"svg-checklist\" data-name=\"checklist\" viewBox=\"0 0 14 14\" width=\"14\" height=\"14\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" stroke-linejoin=\"round\" stroke-miterlimit=\"2\"><clipPath><path d=\"M0 0H14V14H0z\"/></clipPath><g clip-path=\"url(#a)\"><path d=\"M12.542 0H1.458C.658 0 0 .658 0 1.458v11.084C0 13.342.658 14 1.458 14h11.084c.8 0 1.458-.658 1.458-1.458V1.458C14 .658 13.342 0 12.542 0zm-1.75 5.542H8.167a.586.586 0 0 1-.583-.583c0-.321.263-.584.583-.584h2.625c.32 0 .583.263.583.583a.586.586 0 0 1-.583.584zm.583 4.666v.001c0 .32-.263.583-.583.583H8.167a.586.586 0 0 1-.583-.583c0-.321.263-.584.583-.584h2.625c.32 0 .583.263.583.583zM6.592 3.267L4.842 5.6a.582.582 0 0 1-.426.233h-.041a.584.584 0 0 1-.412-.17l-.875-.876a.585.585 0 0 1 .412-.996c.154 0 .303.062.412.171l.4.4 1.346-1.795a.583.583 0 1 1 .934.7zm0 5.833l-1.75 2.333a.59.59 0 0 1-.88.063l-.874-.875a.585.585 0 0 1 .824-.825l.4.4L5.658 8.4a.583.583 0 1 1 .934.7z\" fill-rule=\"nonzero\"/></g></symbol></svg>')\n }\n }\n\n // Handle Turbolinks page change events\n if ( window.Turbolinks ) {\n document.addEventListener(\"turbolinks:load\", function(event) { embed() })\n }\n\n embed()\n})()\n","var toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event')\n\nfunction navigateMenu(event) {\n var link,\n activeEl = document.activeElement\n\n if(Event.key.isPressed('down')) {\n if (activeEl.tagName.match(/select|button/i) || activeEl.closest('[aria-hidden=\"true\"]')) { return }\n // Prevent page scrolling as a result of keypress\n event.preventDefault()\n event.stopImmediatePropagation()\n link = getNextLink()\n\n } else if(Event.key.isPressed('up')) {\n // Prevent page scrolling as a result of keypress\n if (activeEl.tagName.match(/select|button/i)) { return }\n event.preventDefault()\n event.stopImmediatePropagation()\n link = getPreviousLink()\n } else {\n link = false\n }\n\n // Only focus if there is a next or previous link to move to\n // At top or bottom of a list there is no \"next\" or \"previous\"\n if (link) link.focus()\n\n}\n\n// Find the next focusable link\nfunction getNextLink() {\n var items = links(),\n pos = items.indexOf(document.activeElement)\n\n // No active element: return first element\n if (pos == -1) return items[ 0 ]\n\n // Last element focused, return nothing (no next element)\n else if (pos == items.length) return\n\n // return next focusable link\n else return items[ pos + 1 ]\n}\n\n// Find the previous focusable link\nfunction getPreviousLink (el) {\n var items = links(),\n pos = items.indexOf(document.activeElement)\n\n // No previous element to select\n if (pos == -1 || pos == 0) return\n\n // return previous focusable link\n else return items[ pos - 1 ]\n}\n\n// Return all links in current modal\nfunction links() {\n var menu = document.activeElement.closest('[role=\"menu\"]')\n return Array.prototype.filter.call(menu.querySelectorAll('a'), function(a) {\n return a.offsetParent != null\n })\n}\n\nfunction setup () {\n Event.ready(function() {\n Event.on(document, 'keydown', 'nav[role=\"menu\"]', navigateMenu)\n })\n}\n\nmodule.exports = {\n setup: setup\n}\n","var toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event'),\n EventManager = Event.callbackManager,\n StackManager = require('./_stack')\n initialized = false,\n Modals = [],\n Stack = [],\n FocusStack = []\n\n// CSS styles to help prevent stray modal clicks (doesn't work in less than IE 11)\nvar style = '<style id=\"modal-toggle-style\">body[data-active-modal] * { pointer-events: none } .active-modal, .active-modal * { pointer-events: all }</style>'\n\n// types of modals\n// Menu - trigger toggles, clicking outside closes\n// Panel - trigger opens, but does not close, clicking outside (or esc) closes\n// Dialog - trigger opens, clicking outside is ignored, must be closed by clicking a close button or the escape key\n\n\nvar Modal = {\n new: function(el, type, trigger) {\n\n // Check if a modal is already registered\n // This might happen if there is more than one trigger for a modal\n var m = getModal(el)\n if (m) {\n // Register the trigger and return\n if (trigger) m.triggers.push(trigger)\n return getModal(el)\n }\n\n var modal = {\n triggers: [],\n _modal: true,\n type: type,\n id: Modals.length,\n el: el,\n\n events: {\n open: EventManager.new(),\n close: EventManager.new()\n },\n\n isOpen: false\n }\n\n modal[ type ] = true // convenience type check\n Modals.push(modal)\n\n // Tag modal element with an id\n el.dataset.modalId = modal.id\n // Hide modal by default\n el.classList.add('hidden')\n el.setAttribute('hidden', true)\n el.setAttribute('aria-hidden', true)\n el.setAttribute('aria-modal', true)\n\n // Register elements which trigger the modal\n if (trigger) modal.triggers.push(trigger)\n\n modal.on = function (type, callback) {\n if (modal.events[type]) {\n modal.events[type].add(callback)\n }\n }\n\n // Add default opening behavior\n modal.open = function () {\n if (modal.isOpen) return\n modal.isOpen = true\n modal.events.open.start()\n modal.events.close.stop()\n\n // Listen to escape key presses in 'modal-active' scope\n if (!Stack.length) Event.on(document, 'keydown', keyPress)\n\n FocusStack.push(document.activeElement)\n Stack.push(modal)\n\n document.body.classList.add('modal-active')\n document.body.dataset.modal = el.id || ''\n\n el.removeAttribute('hidden')\n el.classList.remove('hidden')\n el.setAttribute('aria-hidden', false)\n\n // Set state on modal triggers\n modal.triggers.forEach(function(el) {\n el.classList.add('modal-active')\n })\n\n el.classList.remove('modal-is-closing')\n el.classList.add('modal-is-opening')\n\n // After opening animation, remove animation class\n Event.afterAnimation(el, modal.events.open.fire, 50)\n }\n\n // Add first open callback\n modal.events.open.add(function () {\n el.classList.remove('modal-is-opening')\n })\n\n modal.close = function () {\n if (!modal.isOpen) return\n\n // Toggle event callbacks\n modal.events.open.stop()\n modal.events.close.start()\n\n el.classList.remove('modal-is-opening')\n el.classList.add('modal-is-closing')\n \n // After closing animation, hide, pop stack, fire close events.\n Event.afterAnimation(el, modal.events.close.fire, 50)\n }\n\n // Add first close callback\n modal.events.close.add(function(){\n modal.isOpen = false\n\n el.classList.remove('modal-is-closing')\n el.classList.add('hidden')\n el.setAttribute('hidden', true)\n el.setAttribute('aria-hidden', true)\n\n // Set state on modal triggers\n modal.triggers.forEach(function(el) {\n el.classList.remove('modal-active')\n })\n \n // Remove this modal from the stack\n Stack.pop()\n\n // Restore foucs for dialogs and modal menus\n // This returns users to their place on the page\n // This doesn't occur on modal panels because focusing\n // opens panels. There may be a good fix for this at some point.\n var focusEl = FocusStack.pop()\n if (modal.dialog || modal.menu) focusEl.focus()\n\n // If it's the last modal open, restore non-modal state\n if (!Stack.length) {\n Event.off(document, 'keydown', keyPress)\n document.body.classList.remove('modal-active')\n document.body.dataset.modal = ''\n } else {\n document.body.dataset.modal = activeModal().el.id\n }\n })\n\n return modal\n }\n}\n\n// Add events to modal\nfunction on (selector, event, callback) {\n var modal = getModal(selector)\n if (modal && modal.events[event]) {\n modal.events[event].add(callback)\n return modal\n }\n}\n\nfunction close (modal) {\n // Did they specify a modal to close?\n if (typeof modal != 'undefined') {\n modal = getModal(modal)\n if (modal) modal.close()\n\n // No? Assume current modal should be closed\n } else {\n modal = activeModal()\n if (modal) modal.close()\n }\n\n return modal\n}\n\nfunction open (modal) {\n modal = getModal(modal)\n if (modal) modal.open()\n\n return modal\n}\n\n// Clicks which occur when a modal is active\nfunction activeClick (event) {\n var modal = activeModal()\n\n // Stop the click if it happened outside the modal or panel control\n if (!isWithinModal(event.target)) {\n event.stopImmediatePropagation()\n event.preventDefault()\n\n if (modal.panel) modal.close()\n }\n}\n\nfunction focused(event) {\n var modal = activeModal()\n\n // If a modal panel, close when focus occurs outside.\n if (document.activeElement && !isWithinModal(document.activeElement)) {\n event.stopImmediatePropagation()\n if (modal.panel) modal.close()\n else event.preventDefault()\n }\n}\n\nfunction isWithinModal(el) {\n var modal = activeModal(),\n // Did the click happen in side the modal\n modalClick = el.closest('[data-modal-id=\"'+modal.id+'\"]'),\n // Or in a modal safe control?\n panelClick = modal.panel && !!el.closest('[data-for-modal=\"'+modal.id+'\"]')\n\n return modalClick || panelClick\n}\n\n// Use the stack position to determine the current modal\nfunction activeModal () {\n return Stack[ Stack.length - 1 ]\n}\n\nfunction activePanel () {\n return activeModal().querySelector('[aria-modal=true][aria-expanded=true]')\n}\n\nfunction isElement (item) {\n return item.constructor.toString().search(/HTML.+Element/) > -1\n}\n\n// Returns the modal object by id or selector\nfunction getModal (search) {\n\n // Don't accept garbage input\n if (!search) return\n\n // Was a modal object passed in? Just return it\n if (search._modal) return search\n\n // Is it already registered? (passed an id)\n if (Modals[ search ]) return Modals[ search ]\n\n // Try modal triggers\n if (isElement(search)) {\n // Is it a modal trigger?\n if (search.dataset.forModal) return Modals[ search.dataset.forModal ]\n \n // Is it the child of a modal trigger?\n var parent = search.closest('[data-for-modal]')\n if (parent) return Modals[ parent.dataset.forModal ]\n }\n\n if (typeof search === 'string') {\n\n // Well, let's hope it's a DOM selector\n var modal = document.querySelector(search)\n\n // If it is woo hoo\n if (modal && modal.dataset.modalId) {\n return Modals[ modal.dataset.modalId ]\n }\n }\n}\n\nfunction init () {\n // Search for three types of modals\n ['panel', 'menu', 'dialog'].forEach(function(type) {\n toolbox.each(document.querySelectorAll('[data-show-'+type+']'), function(triggerEl) {\n var modalEl\n\n // Get selector\n var selector = triggerEl.getAttribute('data-show-'+type)\n if (selector) modalEl = document.querySelector(selector)\n\n if (modalEl) {\n var modal = Modal.new(modalEl, type, triggerEl)\n\n // Assign the trigger to this modalId for easy reference later\n triggerEl.dataset.forModal = modal.id\n }\n })\n })\n\n if (Modals.length > 0 && !initialized) {\n document.body.insertAdjacentHTML('afterbegin', style) \n initialized = true\n }\n}\n\nfunction triggerEvent (event) {\n var modal = getModal(event.currentTarget)\n var el = event.currentTarget\n\n if (el.tagName == 'INPUT') {\n\n // Don't open when input is focused\n // if (event.type == 'focusin' && el.value == '') return\n\n // Do not trigger open if input event clears input value\n if (event.type == 'input' && el.value == '') return\n }\n\n // Don't follow links used to trigger modals\n if (el.tagName.toLowerCase() == 'a' && el.href == '#') {\n event.preventDefault()\n }\n\n\n open(modal)\n\n}\n\nfunction keyPress (event) {\n var activeEl = document.activeElement\n\n // ESC was pressed\n if (Event.key.isPressed(\"esc\")) {\n // A way to stop clearing the input value\n //if (activeEl.tagName == 'INPUT' && activeEl.value != '') {\n //event.preventDefault()\n //}\n return close()\n }\n\n if (activeModal() && Event.key.isPressed(\"tab\") && !Event.key.shift) {\n focusNext(event)\n }\n\n /* \n if (activeModal().panel || activeModal().menu) {\n var link\n\n if (event.key == 'ArrowDown') {\n if (activeEl.tagName.match(/select|button/i)) { return }\n // Prevent page scrolling as a result of keypress\n event.preventDefault()\n link = getNextLink()\n\n } else if (event.key == 'ArrowUp') {\n // Prevent page scrolling as a result of keypress\n if (activeEl.tagName.match(/select|button/i)) { return }\n event.preventDefault()\n link = getPreviousLink()\n } else {\n link = false\n }\n\n // Only focus if there is a next or previous link to move to\n // At top or bottom of a list there is no \"next\" or \"previous\"\n if (link) link.focus()\n\n }*/\n}\n\nfunction focusNext(event) {\n var modalEl = activeModal().el,\n focusable = modalEl.querySelectorAll('input:not([type=hidden]), textarea, select, button, [tabindex]:not([tabindex=\"-1\"])'),\n focusable = Array.prototype.filter.call(focusable, function(el) {\n return !el.closest('[hidden], [aria-hidden=\"true\"]')\n }),\n first = focusable[0],\n last = focusable[focusable.length - 1],\n focused = document.activeElement\n\n // If focused on the last focusable element, tab to the first element.\n}\n\nfunction setup () {\n Event.change(function() {\n init()\n\n // Check all body clicks to see if they should be permitted\n Event.on(document, 'click', 'body.modal-active', activeClick, { useCapture: true }) \n \n // Focus outisde of modal (if a panel) should close modal\n Event.on(document, 'focus', '.modal-active', focused, { useCapture: true })\n\n // Trigger modals on input events (like a search results panel that waits until typing to show)\n Event.on(document, 'input', 'input[data-for-modal], [data-for-modal] input', Event.debounce(triggerEvent, 50, { leading: true }))\n \n // Trigger modals on keyup events in inputs (like a search results panel that waits until typing to show)\n Event.on(document, 'click focusin', 'input[data-for-modal], [data-for-modal] input', triggerEvent)\n\n // Trigger modals on click events for anchors and buttons\n Event.on(document, 'click', 'a[data-for-modal], button[data-for-modal], [data-for-modal] a, [data-for-modal] button', triggerEvent)\n\n Event.keyOn('esc', close)\n })\n}\n\nmodule.exports = {\n new: Modal.new,\n setup: setup,\n modals: Modals,\n init: init,\n get: getModal,\n active: activeModal,\n on: on,\n isElement: isElement\n}\n","var toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event'),\n modal = require('./_modal'),\n stack = require('./_stack')\n\n// Focus on search when `/` key is pressed\nEvent.keyOn('/', function(event){ \n var q = document.querySelector('[name=q]')\n if (q && !event.target.closest('[contenteditable=true]')) {\n event.preventDefault()\n q.focus()\n }\n})\n\nfunction autoClose(event) {\n if (!document.activeElement.closest('#search_modal')) {\n modal.get('#search-results').close()\n }\n}\n\nfunction setup() {\n var q = document.querySelector('[name=q]'),\n filter = document.querySelector('#search_model')\n searchPanel = document.querySelector('.search-panel'),\n searchStack = stack.get('#search-stack'),\n searchModal = modal.get('#search-results')\n\n if (!searchModal || !q) return\n\n // 1. Focus on query input when characters are typed\n // 2. Clear input when escape is pressed\n function keyWatcher (event) {\n var focusEl = document.activeElement\n\n // If a letter, number, or backspace is pressed, focus on search input\n if ((event.key.length === 1 || Event.key.isPressed(\"backspace\")) && focusEl != q && !focusEl.tagName.match(/select|button/i)) {\n q.focus()\n\n // Restore default search input behavior\n // When foucsed, esc clears input\n } else if (focusEl == q && Event.key.isPressed(\"esc\")) {\n q.value = ''\n Event.fire(q, 'input')\n } else if (Event.key.isPressed(\"down\")) {\n if (document.activeElement && document.activeElement.tagName.match(/select|button/i)) { return }\n var result = searchStack.currentPanel().querySelector('[role=menu] a')\n if (result) result.focus()\n }\n }\n\n // Scroll all navs back to top\n function resetScroll () {\n toolbox.each(searchStack.root.querySelectorAll('nav'), function (nav) {\n nav.scrollTop = 0\n })\n }\n \n // Show first panel stack when query is cleared\n Event.on(q, 'input', function (event) {\n if (q.value == '') {\n searchStack.show(0)\n searchPanel.classList.remove('search-in-progress')\n resetScroll()\n }\n })\n\n searchModal.on('open', function() {\n Event.on(document, 'keydown', keyWatcher)\n Event.on(document, 'blur', autoClose)\n })\n\n // Reset stack when modal is closed and query is clear\n searchModal.on('close', function() {\n // Restore state of search panel\n if (q.value == '') {\n searchStack.reset()\n resetScroll()\n }\n\n searchPanel.classList.remove('search-in-progress')\n\n Event.off(document, 'keydown', keyWatcher)\n Event.off(document, 'blur', autoClose)\n })\n}\n\n// Reset search results panel when query is cleared\nEvent.ready(setup)\n","var toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event'),\n Stacks = []\n\nvar Stack = {\n new: function(root) {\n\n if (!isElement(root)) root = document.querySelector(root)\n\n // Don't add a new stack if no element found or if stack already exists\n if (!isElement(root) || root.dataset.stackId) return\n\n // Set up stack by searching DOM node under it.\n // The first child found will be set up as a default\n // After that each child will be added as a stack push\n\n var stack = {\n root: root,\n panels: [],\n focus: [],\n current: null,\n\n add: function (panelEl, name) {\n panelEl.dataset.stackIndex = stack.panels.length\n\n hideEl(panelEl)\n\n stack.panels.push(panelEl)\n },\n\n // Reset stack to first panel\n reset: function () {\n // Already reset? We're done.\n if (stack.current == 0) return\n\n // If hidden or first is empty, hide all\n if (stack.root.offsetParent == null) {\n stack.focus = [] // Clear focus stack\n\n // Hide and reset scroll on all panels\n stack.hidePanels()\n\n // Show first panel\n if (isEmpty(stack.panels[0])) {\n stack.current = null\n } else {\n stack.current = 0\n }\n showEl(stack.panels[0])\n stack.updateWatchers()\n }\n\n // If not hidden, dismiss current panel and reset to first panel\n else stack.show(0)\n },\n\n // Show a specific panel, hiding all others\n show: function (name) {\n var panel = stack.findPanel(name)\n if (!panel) return // This panel doesn't exist\n\n if (isEmpty(panel)) {\n stack.current = null\n stack.hidePanels()\n stack.updateWatchers()\n return\n }\n\n var current = stack.currentPanel()\n if (!current) return stack.enter(panel) // the stack isn't currently active\n\n // If a panel isn't the current panel\n if (panel != current) {\n \n // Dismiss it with the callback load in the next panel\n return stack.dismiss(stack.direction(panel), function() { \n stack.enter(panel)\n })\n\n }\n },\n\n enter: function (el) {\n var direction = stack.direction(el)\n el.dataset.direction = direction\n stack.current = Number(el.dataset.stackIndex)\n\n Event.afterAnimation(el, function() {\n el.dataset.direction = ''\n el.classList.remove('enter')\n }, 50)\n\n el.classList.add('enter')\n showEl(el)\n\n stack.updateWatchers()\n\n // When going forward remove focus from elements in the previous panel\n //if (direction == 'forward') {\n //if (toolbox.childOf(document.activeElement, stack.root)) {\n //document.activeElement.blur()\n //if (navigated) {\n //var navEl = el.querySelector('[data-stack-nav]')\n //if (navEl) navEl.focus()\n //}\n //}\n //} \n\n // When reversing, focus on the previously focused element\n if (direction == 'reverse' && stack.focus.length > 0) {\n stack.focus.pop().focus()\n } \n },\n\n dismiss: function (direction, callback) {\n\n var el = stack.currentPanel()\n\n if (direction == 'forward')\n stack.focus.push(document.activeElement)\n\n el.classList.remove('enter')\n el.classList.add('exit')\n el.dataset.direction = direction\n\n Event.afterAnimation(el, function() {\n // Ensure panel is scrolled to top\n if (direction == 'reverse') el.scrollTop = 0\n\n hideEl(el)\n el.classList.remove('exit')\n el.dataset.direction = ''\n\n if (typeof callback === 'function') callback()\n\n }, 50)\n\n },\n\n hidePanels: function() {\n stack.panels.forEach(function(el) { \n el.scrollTop = 0\n hideEl(el)\n })\n },\n\n lastFocus: function() {\n return stack.focus[ stack.focus.length -1 ] \n },\n\n // Find a panel by name or index\n findPanel: function (name) {\n if (isElement(name)) \n return name \n else \n return root.querySelector('[data-stack=\"'+name+'\"], [data-stack-index=\"'+name+'\"]')\n },\n\n // Walk backwards in the stack, showing the panel previous to the current panel\n back: function () {\n stack.show(stack.panels[ stack.current - 1 ])\n },\n\n // add aria-hidden=false to the first hidden element\n next: function () {\n stack.show(stack.panels[ stack.current + 1 ])\n },\n\n direction: function(panel) {\n var index = stack.panelIndex(panel)\n\n if (index == stack.current || stack.current == null) return 'none'\n else return (stack.current < index) ? 'forward' : 'reverse'\n \n },\n\n currentPanel: function (name) {\n if (typeof stack.current == 'undefined') return\n\n if (name) {\n return stack.panels[ stack.current ] == stack.findPanel(name)\n }\n return stack.panels[ stack.current ]\n },\n\n panelIndex: function (panel) {\n return Number(panel.dataset.stackIndex)\n },\n\n updateWatchers: function () {\n toolbox.each(stack.watchers, function(el) {\n if (stack.current == null)\n el.removeAttribute('data-active-stack')\n else\n el.dataset.activeStack = stack.currentPanel().dataset.stack || stack.currentPanel().dataset.stackIndex\n })\n }\n }\n\n toolbox.each(root.children, stack.add)\n\n if (root.id) stack.watchers = document.querySelectorAll('[data-watch-stack=\"#'+root.id+'\"]')\n\n // Only show the first panel if it has content.\n // If it doesn't, assume async and manual panel showing.\n if (!isEmpty(stack.panels[0])) stack.show(0)\n\n // Add a queryable stack id\n root.dataset.stackId = Stacks.length\n\n Stacks.push(stack)\n\n return stack\n }\n}\n\nfunction showEl(el) {\n el.removeAttribute('hidden')\n el.setAttribute('aria-hidden', false)\n}\n\nfunction isEmpty(el) {\n return el.childElementCount == 0\n}\n\nfunction hideEl(el) {\n el.setAttribute('aria-hidden', true)\n el.setAttribute('hidden', true)\n}\n\nfunction isElement(item) {\n return item.constructor.toString().search(/HTML.+Element/) > -1\n}\n\nfunction navClick(event) {\n var el = event.currentTarget\n var panel = el.dataset.stackNav\n var stack = getStack(el.closest('[data-stack=\"root\"]'))\n if (!stack) return\n\n if (panel == 'next') stack.next()\n else if (panel == 'back') stack.back()\n else if (stack.findPanel(panel)) {\n stack.show(panel, true)\n }\n}\n\nfunction navKey(event) {\n // Find the active panel in the stack where the navigation event should be triggered.\n var panel = event.currentTarget.closest('[data-stack=\"root\"]').querySelector('[data-stack-index][aria-hidden=\"false\"]')\n if (!panel) { return }\n\n if (Event.key.isPressed(\"left\")) {\n var back = panel.querySelector('[data-stack-nav].nav-back')\n if (back) Event.fire(back, 'click')\n }\n if (Event.key.isPressed(\"right\")) {\n var next = panel.querySelector('[data-stack-nav].nav-next')\n if (next) Event.fire(next, 'click')\n }\n}\n\nfunction prevPanel (event) {\n var stack = getStack(event.target.closest('[data-stack=\"root\"]'))\n stack.back()\n event.preventDefault()\n}\n\nfunction setup () {\n Event.change(function() {\n toolbox.each(document.querySelectorAll('[data-stack=\"root\"]'), Stack.new)\n })\n\n // Localise clicks to a stack root\n // Future: consider expanding this to allow controls to live anywhere and point to a stack\n Event.ready(function() {\n Event.on(document, 'click', '[data-stack=\"root\"] [data-stack-nav]', navClick)\n Event.on(document, 'keydown', '[data-stack-index]', navKey)\n })\n}\n\nfunction getStack (search) {\n\n if (isElement(search)) {\n if (search.dataset.stackId) return Stacks[ search.dataset.stackId ]\n }\n\n if (typeof search === 'string') {\n\n // Well, let's hope it's a DOM selector\n var stack = document.querySelector(search)\n\n // If it is woo hoo\n if (stack && stack.dataset.stackId) {\n return Stacks[ stack.dataset.stackId ]\n }\n }\n}\n\nmodule.exports = {\n new: Stack.new,\n setup: setup,\n get: getStack,\n stacks: Stacks\n}\n","var toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event')\n\nEvent.ready(function() {\n Event.keyOn('],[,\\\\', toggle)\n})\n\nfunction toggle(event) {\n // Cancel if typing in a conenteditable element or if there is no sidebar on the page. \n if(event.target.closest('[contenteditable=true]') || !document.querySelector('.with-sidebar')) return\n\n // Trigger app sidebar toggle, to ensure its toggle events and state tracking occurs.\n Event.fire(document.querySelector('.app-sidebar-toggle'), 'click')\n}\n","var Event = require('@spark-engine/event'),\n toolbox = require('@spark-engine/toolbox'),\n tabRoot = '.spark-nav-tabs',\n tabGroup = '.nav-group'\n\nfunction setup() {\n toolbox.each(document.querySelectorAll(tabRoot + ' ' + tabGroup), function(group) {\n var size = 0\n var root = group.closest(tabRoot)\n\n toolbox.each(group.children, function(tab){ size += tab.clientWidth })\n root.dataset.collapseAt = size\n toggleTabCollapse(root)\n })\n Event.on(document, 'click', '.collapse-tabs [role=tab]', function(event) {\n Event.fire(event.target.closest('.collapse-tabs').querySelector('.nav-toggle'), 'click') \n })\n}\n\nfunction resize() {\n toolbox.each(document.querySelectorAll(tabRoot + '[data-collapse-at]'), toggleTabCollapse)\n}\n\nfunction toggleTabCollapse(el) {\n el.classList.toggle('collapse-tabs', el.clientWidth <= el.dataset.collapseAt)\n}\n\nEvent.ready(setup)\nEvent.resize(resize)\n","var Event = require('@spark-engine/event'),\n toolbox = require('@spark-engine/toolbox')\n\nfunction click(event) {\n // If we've triggered a nav toggle (which hasn't been made active yet),\n // set keyboard listener scope to watch for escape and close open menus\n if (!event.currentTarget.classList.contains('active')) {\n Event.key.setScope('nav-toggle')\n\n // If there are no other toggles active, restore keyboard listner scope\n } else if (!document.querySelector('.nav-toggle.active')) {\n Event.key.setScope('all')\n }\n}\n\nfunction esc() {\n toolbox.each(document.querySelectorAll('.nav-toggle.active'), function(toggle) {\n Event.fire(toggle, 'click')\n })\n}\n\nEvent.ready(function(){\n Event.on(document, 'click', '.nav-toggle', click)\n Event.keyOn('esc', 'nav-toggle', esc)\n})\n","// Purpose: Toggles expansion of tree nav and stores cookies to retain state\n//\n// For Cookies to be set:\n// - Trees must have a [data-tree='tree-key']\n// - Nodes are named by [data-node='node-name']\n//\n// Cookies are stored as tree-key => { node-name: true }\n// node boolean matches aria-expanded state\n//\n\nvar toolbox = require('@spark-engine/toolbox'),\n cookie = require('../../_cookie'),\n Event = require('@spark-engine/event')\n\nfunction setCookie(node) {\n if (node.dataset.node) {\n var tree = node.closest('[data-tree]')\n if (tree) {\n data = {}\n data[ node.dataset.node ] = node.getAttribute('aria-expanded') == 'true'\n cookie.update(tree.dataset.tree, data)\n }\n }\n}\n\nfunction click(event) {\n toggleNode(event.currentTarget)\n}\n\n// Expand or collapse the current tree node\nfunction toggleNode(target) {\n var parent = target.closest('[aria-expanded]'),\n expanded = parent.getAttribute('aria-expanded') == 'true'\n\n // Add a classname to indicate that it was manually triggered\n // This allows for animating interactions, but not other attribute changes\n parent.classList.add('triggered')\n toggleExpansion(parent, !expanded)\n\n setCookie(parent)\n}\n\n// Set aria-expanded and toggle tabindex values based on expansion\nfunction toggleExpansion(el, expanded) {\n el.setAttribute('aria-expanded', expanded)\n setupItemTabIndex(el)\n}\n\n// Sets tree nav state based off of cookies\nfunction restoreNav() {\n toolbox.each(document.querySelectorAll('[data-tree]'), function(tree) {\n var key = tree.dataset.tree\n if (key) {\n var data = cookie.get(key)\n\n Object.keys(data).forEach(function(node) {\n var nodeEl = tree.querySelector('[data-node='+node+']'),\n expanded = data[node] == 'true'\n // Use cookies to expand.\n if (nodeEl) {\n nodeEl.setAttribute('aria-expanded', expanded)\n toggleExpansion(nodeEl, expanded)\n }\n })\n }\n })\n}\n\n// Enables keyboard navigation of a nav tree\n//\n// `space` - toggles tree node triggers\n// `right arrow` - opens nodes and navigates inward\n// `left arrow` - closes nodes and navigates outward\n// `up arrow` - moves to previous visible element\n// `down arrow` - moves to next visible element\n//\nfunction navigateTree(event) {\n var item = document.activeElement\n if (!item) return\n\n // Find the parent tree item\n var tree = item.closest('[role=\"tree\"]')\n if (!tree) return\n\n // Is the item a trigger which opens nodes?\n if (item.matches('.tree-trigger')) {\n var expanded = item.parentElement.getAttribute('aria-expanded') != 'false'\n\n // Space toggles node which trigger points to\n if (Event.key.isPressed('space')) {\n event.preventDefault()\n return toggleNode(item)\n }\n\n // Expand or move to the first item in the node\n if (Event.key.isPressed('right')) {\n event.preventDefault()\n if (expanded) return focus(getNextItem(tree, item))\n else return toggleNode(item)\n }\n\n // Collapse or move up the parent node\n if (Event.key.isPressed('left')) {\n event.preventDefault()\n if (expanded) return toggleNode(item)\n else return focus(getUpwardItem(tree, item))\n }\n }\n\n // Move to next visible item in the tree\n if (Event.key.isPressed('down')) {\n event.preventDefault()\n focus(getNextItem(tree, item))\n }\n\n // Move to previous visible item in the tree\n else if (Event.key.isPressed('up')) {\n event.preventDefault()\n focus(getPreviousItem(tree, item))\n }\n\n // Move outward in tree\n else if (Event.key.isPressed('left')) {\n event.preventDefault()\n focus(getUpwardItem(tree, item))\n }\n}\n\n// Focus on element (if able)\nfunction focus(el) {\n if (el) el.focus()\n}\n\n// Find next focusable item\nfunction getNextItem(tree, item) {\n items = getFocusableItems(tree)\n return items[ items.indexOf(item) + 1]\n}\n\n// Find previous focusable item\nfunction getPreviousItem(tree, item) {\n items = getFocusableItems(tree)\n return items[ items.indexOf(item) - 1]\n}\n\n// Walk up the tree to the tree trigger\nfunction getUpwardItem(tree, item) {\n var upward = item.parentElement.closest('[aria-expanded]')\n if (upward) return upward.querySelector('.tree-trigger')\n}\n\n// Find all focusable items in a nav tree\nfunction getFocusableItems(tree) {\n // Filter out items in collapsed nodes\n return Array.prototype.filter.call(tree.querySelectorAll('a, [tabindex]'), function(el) {\n return !el.closest('[aria-expanded=\"false\"] [role=\"group\"]')\n })\n}\n\n// Ensure hidden items are not focasable\nfunction setupItemTabIndex(tree) {\n toolbox.each(tree.querySelectorAll('a, [tabindex]'), function(el) {\n if (el.closest('[aria-expanded=\"false\"] [role=\"group\"]')) {\n el.setAttribute('tabindex', -1)\n } else {\n // Don't set a tabindex for anchor elements\n // They already participate in tabindex and tabindex=0\n // will change their click behavior\n if (el.matches('a')) {\n el.removeAttribute('tabindex')\n } else {\n el.setAttribute('tabindex', 0)\n }\n }\n })\n}\n\nfunction setup() {\n Event.ready(function() {\n\n // The first child of a node is the trigger\n Event.on(document, 'click', '.tree-trigger', click)\n Event.on(document, 'keydown', '[role=\"tree\"]', navigateTree)\n\n // Set states according to cookies\n // restoreNav()\n })\n\n Event.change(function() {\n toolbox.each(document.querySelectorAll('[role=\"tree\"]'), function(el) {\n setupItemTabIndex(el)\n })\n })\n}\n\nmodule.exports = {\n setup: setup\n}\n","var toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event'),\n stickyClass = 'ui-sticky-panel',\n stickyStateClass = 'is-sticky',\n stickySpacer = 'ui-sticky-panel-spacer',\n scrollPanels = []\n\n\nfunction setup() {\n scrollPanels.push({ panel: window, els: [] })\n Event.scroll.start(startScrolling)\n Event.scroll(whileScrolling)\n\n Event.change(function(){\n toolbox.each(document.querySelectorAll('[data-sticky]:not([data-sticky-start])'), setupSticky)\n })\n\n Event.resize(function(event) {\n // Set new start points due to reflow\n toolbox.each(document.querySelectorAll('[data-sticky]'), setStart)\n // Reset constraints when page is resized\n toolbox.each(document.querySelectorAll('.'+stickyClass), stick)\n })\n}\n\nfunction setupSticky(el) {\n setupPanels(el)\n appendSpacer(el)\n setStart(el)\n}\n\nfunction startScrolling(event) {\n getEventPanel(event.currentTarget).els.forEach(setStart)\n}\n\nfunction whileScrolling(event) {\n var panel = event.currentTarget,\n position = panel == window ? panel.scrollY : panel.scrollTop\n getEventPanel(event.currentTarget).els.forEach(function(el) {\n var hasStickClass = el.classList.contains(stickyClass)\n var stickable = !isFixed(el) && !hasStickClass\n if (Number(el.dataset.stickyStart) < position) {\n if (stickable) stick(el)\n } else if (hasStickClass) unstick(el)\n\n })\n}\n\n// Set an elements style properties to fixed position and constrain its dimensions.\nfunction stick(el) {\n // Don't calculate spacer height from a fixed position element.\n if(!isFixed(el)) { \n setSpacerStyle(el) \n el.classList.add(stickyClass)\n el.classList.remove(stickyStateClass)\n }\n\n // If position is fixed (by adding class) add calculated styles\n if (isFixed(el)) { \n var panel = getPanel(el)\n // Fix just below top of panel\n el.style.top = getPanelOffset(el) + 'px'\n el.classList.add(stickyStateClass)\n\n // Constrain to spacer (retaining natural width) or full panel width\n var constraint = el.dataset.stickyConstrain ? getSpacer(el) : getPanel(el)\n\n el.style.left = getOffset(constraint).left + 'px'\n el.style.width = constraint.clientWidth + 'px'\n }\n}\n\nfunction unstick(el) {\n clearStyle(el)\n el.classList.remove(stickyClass, stickyStateClass)\n}\n\nfunction clearStyle(el) {\n el.style.left = ''\n el.style.top = ''\n el.style.width = ''\n}\n\n// Spacer keeps content from jumping when element's position is fixed\nfunction setSpacerStyle(el) {\n var spacer = el.nextSibling\n spacer.style.height = el.clientHeight + 'px'\n spacer.style.margin = window.getComputedStyle(el).margin\n}\n\nfunction appendSpacer(el) {\n var spacer = getSpacer(el)\n if(!spacer || !spacer.classList.contains(stickySpacer)) {\n el.insertAdjacentHTML('afterend', \"<div class='\"+stickySpacer+\"'></div>\")\n }\n}\n\n// \nfunction getSpacer(el) {\n return el.nextElementSibling\n}\n\n// Associate sticky elements with their panels, adding panels if necessary\nfunction setupPanels(el) {\n var panel,\n panelId = el.dataset.scrollPanelId\n\n if (!panelId) {\n panelId = getPanelId(el)\n\n el.dataset.scrollPanelId = panelId\n scrollPanels[panelId].els.push(el)\n }\n}\n\n// Add a panel to the scrollPanels object\nfunction addPanel(panel) {\n scrollPanels.push({\n panel: panel,\n els: []\n })\n panel.dataset.scrollPanelId = scrollPanels.length - 1\n addManager(panel)\n}\n\n// Add a new scroll event manager for a panel\nfunction addManager(target) {\n var scroll = Event.eventManager.new('scroll', { target: target })\n scroll.start(startScrolling)\n scroll(whileScrolling)\n}\n\n// Set the y coordinate when element should become sticky while scrolling\nfunction setStart(el) {\n if(!isFixed(el)) {\n el.dataset.stickyStart = getOffset(el).top - getPanelOffset(el)\n }\n}\n\nfunction getPanelOffset(el) {\n var panel = getPanel(el)\n return getOffset(panel).top + panel.scrollTop\n}\n\n// Get Panel element referred to by an element with a panel id\n// If scroll panel is window, return body for DOM measurments\nfunction getPanel(el) {\n var panel = scrollPanels[el.dataset.scrollPanelId].panel\n return panel == window ? document.body : panel\n}\n\n// Return panel object deriving panel id from event target\nfunction getEventPanel(el) {\n var id = el == window ? 0 : Number(el.dataset.scrollPanelId)\n return scrollPanels[id]\n}\n\n// Return the scroll panel for an element, either:\n// 1. Return the panel it refers to with its data sticky selector.\n// 2. Or walk up the DOM tree to find the closest `data-scroll` element.\nfunction getPanelId(el) {\n // Either retrieve a custom panel, or find the next closest\n var panel = document.querySelector(el.dataset.sticky) || el.parentElement.closest('[data-scroll]')\n\n if (panel) {\n // Hasn't been set up yet\n if (!panel.dataset.scrollPanelId) addPanel(panel)\n\n return Number(panel.dataset.scrollPanelId)\n } else {\n // If no scroll panels are found, default to window scoll\n return 0\n }\n}\n\n\n// Is actually fixed? Must check computed style to support media query changes\nfunction isFixed(el) {\n return window.getComputedStyle(el).position === 'fixed'\n}\n\n// Get offset including offsets of parents\nfunction getOffset(el) {\n var _x = 0;\n var _y = 0;\n while(el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\n _x += el.offsetLeft - el.scrollLeft;\n _y += el.offsetTop - el.scrollTop;\n el = el.offsetParent;\n }\n return { top: _y, left: _x };\n}\n\nmodule.exports = { \n setup: setup,\n panels: scrollPanels,\n getOffset: getOffset,\n getPanel: getPanel,\n getPanelOffset: getPanelOffset\n}\n\n","var Event = require('@spark-engine/event')\n\nEvent.ready(function() {\n\n // Toggle value state classes on search inputs\n // Enable and disable clear button based on input value\n Event.on(document, 'input', '[role=search]', Event.debounce(function (event) {\n\n var input = event.currentTarget,\n label = input.closest('.text-input-label')\n\n input.classList.toggle('input-filled', input.value != '')\n input.classList.toggle('input-empty', input.value == '')\n\n if (label) {\n label.classList.toggle('input-filled', input.value != '')\n label.classList.toggle('input-empty', input.value == '')\n\n // If input value is '', hide \"clear search button\"\n var clearBtn = label.querySelector('.clear-search')\n if (clearBtn) clearBtn.disabled = input.value == ''\n\n }\n\n }))\n\n // Focus on the input after the click occurs\n Event.on(document, 'click', '.clear-search', function(){\n var label = event.target.closest('.text-input-label')\n if (label) {\n input = label.querySelector('[role=search]')\n if (input) input.focus\n }\n }, { useCapture: true })\n})\n","// Make it easy to set input values from a DOM element\n// 'click' on elements data-set-input='.input-1:value,.input-2:value2'\n// data-clear-input='.input-1'\n//\n\nvar toolbox = require('@spark-engine/toolbox')\nvar Event = require('@spark-engine/event')\n\nfunction watch() {\n Event.on(document, 'click', '[data-set-input],[data-clear-input]', click, { useCapture: true })\n}\n\nfunction click(event) {\n\n event.preventDefault()\n var el = event.currentTarget\n\n // Find element selectors from data property\n if (el.dataset.clearInput) {\n toolbox.each(event.currentTarget.dataset.clearInput.split(','), function(selector) {\n setValue(selector, '')\n })\n }\n\n // Find element selectors an new value from data property\n if (el.dataset.setInput) {\n toolbox.each(event.currentTarget.dataset.setInput.split(','), function(data) {\n setValue.apply(null, data.split(':'))\n })\n }\n}\n\nfunction setValue(input, value) {\n\n if (typeof value == 'undefined') value = ''\n var el = document.querySelector(input)\n\n if (el) { \n el.value = value \n Event.fire(el, 'input')\n }\n}\n\nEvent.ready(watch)\n","// Allows a separate element to represent a <select> for visual freedom.\n// Changes to <select data-sync-selected='.selector'> will select elements and set content with the content of the selected option.\n\nvar toolbox = require('@spark-engine/toolbox')\nvar Event = require('@spark-engine/event')\n\nfunction sync(event) {\n var select = event.currentTarget,\n els = document.querySelectorAll(select.dataset.syncSelected)\n\n toolbox.each(els, function(el) {\n el.innerHTML = select.options[select.selectedIndex].text\n })\n}\n\nEvent.ready(function(){\n Event.on(document, 'input change', 'select[data-sync-selected]', sync)\n}, { useCapture: true })\n","// When scrollbars are always visible this will missalign fixed width absolutely positioned elements\n// Elements may use `data-match-width=\".selector\"` to match the width of another element, solving\n// scrollbar misalignment\n\nvar toolbox = require('@spark-engine/toolbox'),\n Event = require('@spark-engine/event')\n\nfunction setMatchWidth() {\n toolbox.each(document.querySelectorAll('[data-match-width]'), function(el) {\n var widthEl = document.querySelector(el.dataset.matchWidth)\n if (widthEl) el.style.width = widthEl.clientWidth + 'px'\n })\n}\n\n// On DOM ready and page transitions (i.e., turbolinks) subtract scroll widths.\nEvent.ready(setMatchWidth)\n","// Require modules, add code, etc\nvar esvg = require('./_esvg')\nvar icons = require('./_icons')\nvar toggler = require('@spark-engine/toggler')\nvar toolbox = require('@spark-engine/toolbox')\nvar Event = require('@spark-engine/event')\nvar modal = require('./_modal')\nvar stack = require('./_stack')\nvar search = require('./_search')\nvar cookie = require('./_cookie')\nvar tree = require('./components/nav/_tree')\nvar menu = require('./_menu')\nvar sticky = require('./components/ui/_sticky_panel')\n\nrequire('./shims/_scroll-detect')\nrequire('./form/_input-status')\nrequire('./form/_set-input')\nrequire('./form/_sync-select')\nrequire('./components/app/sidebar/_toggle')\nrequire('./components/nav/_tabs')\nrequire('./components/nav/_toggle')\n\nmodal.setup()\nstack.setup()\ntree.setup()\nmenu.setup()\nsticky.setup()\n\nwindow.spark = module.exports = toolbox.merge({\n esvg: esvg,\n toggler: toggler,\n modal: modal,\n stack: stack,\n cookie: cookie,\n sticky: sticky,\n event: Event\n}, toolbox)\n\n// Simple ignore click on anchor triggers\nEvent.on(document, 'click', '[href=\"#\"]', function(event) {\n event.preventDefault();\n})\n","/*!\n * Bean - copyright (c) Jacob Thornton 2011-2012\n * https://github.com/fat/bean\n * MIT license\n */\n(function (name, context, definition) {\n // Fallback for node\n if (typeof window === 'undefined') { return null; }\n if (typeof module != 'undefined' && module.exports) module.exports = definition(name, context)\n else if (typeof define == 'function' && define.amd) define(definition)\n else context[name] = definition(name, context)\n})('bean', this, function (name, context) {\n name = name || 'bean'\n context = context || this\n\n var win = window\n , old = context[name]\n , namespaceRegex = /[^\\.]*(?=\\..*)\\.|.*/\n , nameRegex = /\\..*/\n , addEvent = 'addEventListener'\n , removeEvent = 'removeEventListener'\n , doc = document || {}\n , root = doc.documentElement || {}\n , W3C_MODEL = root[addEvent]\n , eventSupport = W3C_MODEL ? addEvent : 'attachEvent'\n , ONE = {} // singleton for quick matching making add() do one()\n\n , slice = Array.prototype.slice\n , str2arr = function (s, d) { return s.split(d || ' ') }\n , isString = function (o) { return typeof o == 'string' }\n , isFunction = function (o) { return typeof o == 'function' }\n , isObject = function (o) { return typeof o == 'object' }\n\n // Try to build an options object. If any key in `maybeOptions`\n // matches a key in `defaults`, it will be copied into a clone\n // of `defaults`, thus overriding the default.\n , buildOptions = function (originalDefaults, maybeOptions) {\n var defaults = {}\n\n for (var key in originalDefaults) {\n if (originalDefaults.hasOwnProperty(key)) {\n defaults[key] = originalDefaults[key];\n }\n }\n\n if (!isObject(maybeOptions)) {\n return defaults;\n }\n\n for (key in defaults) {\n if (defaults.hasOwnProperty(key) && maybeOptions.hasOwnProperty(key)) {\n defaults[key] = maybeOptions[key]\n }\n }\n\n return defaults\n }\n\n // events that we consider to be 'native', anything not in this list will\n // be treated as a custom event\n , standardNativeEvents =\n 'click dblclick mouseup mousedown contextmenu ' + // mouse buttons\n 'mousewheel mousemultiwheel DOMMouseScroll ' + // mouse wheel\n 'mouseover mouseout mousemove selectstart selectend ' + // mouse movement\n 'keydown keypress keyup ' + // keyboard\n 'orientationchange ' + // mobile\n 'focus blur change reset select submit ' + // form elements\n 'load unload beforeunload resize move DOMContentLoaded ' + // window\n 'readystatechange message ' + // window\n 'error abort scroll ' // misc\n // element.fireEvent('onXYZ'... is not forgiving if we try to fire an event\n // that doesn't actually exist, so make sure we only do these on newer browsers\n , w3cNativeEvents =\n 'show ' + // mouse buttons\n 'input invalid ' + // form elements\n 'touchstart touchmove touchend touchcancel ' + // touch\n 'gesturestart gesturechange gestureend ' + // gesture\n 'textinput ' + // TextEvent\n 'readystatechange pageshow pagehide popstate ' + // window\n 'hashchange offline online ' + // window\n 'afterprint beforeprint ' + // printing\n 'dragstart dragenter dragover dragleave drag drop dragend ' + // dnd\n 'loadstart progress suspend emptied stalled loadmetadata ' + // media\n 'loadeddata canplay canplaythrough playing waiting seeking ' + // media\n 'seeked ended durationchange timeupdate play pause ratechange ' + // media\n 'volumechange cuechange ' + // media\n 'checking noupdate downloading cached updateready obsolete ' // appcache\n\n // convert to a hash for quick lookups\n , nativeEvents = (function (hash, events, i) {\n for (i = 0; i < events.length; i++) events[i] && (hash[events[i]] = 1)\n return hash\n }({}, str2arr(standardNativeEvents + (W3C_MODEL ? w3cNativeEvents : ''))))\n\n // custom events are events that we *fake*, they are not provided natively but\n // we can use native events to generate them\n , customEvents = (function () {\n var isAncestor = 'compareDocumentPosition' in root\n ? function (element, container) {\n return container.compareDocumentPosition && (container.compareDocumentPosition(element) & 16) === 16\n }\n : 'contains' in root\n ? function (element, container) {\n container = container.nodeType === 9 || container === window ? root : container\n return container !== element && container.contains(element)\n }\n : function (element, container) {\n while (element = element.parentNode) if (element === container) return 1\n return 0\n }\n , check = function (event) {\n var related = event.relatedTarget\n return !related\n ? related == null\n : (related !== this && related.prefix !== 'xul' && !/document/.test(this.toString())\n && !isAncestor(related, this))\n }\n\n return {\n mouseenter: { base: 'mouseover', condition: check }\n , mouseleave: { base: 'mouseout', condition: check }\n , mousewheel: { base: /Firefox/.test(navigator.userAgent) ? 'DOMMouseScroll' : 'mousewheel' }\n }\n }())\n\n // we provide a consistent Event object across browsers by taking the actual DOM\n // event object and generating a new one from its properties.\n , Event = (function () {\n // a whitelist of properties (for different event types) tells us what to check for and copy\n var commonProps = str2arr('altKey attrChange attrName bubbles cancelable ctrlKey currentTarget ' +\n 'detail eventPhase getModifierState isTrusted metaKey relatedNode relatedTarget shiftKey ' +\n 'srcElement target timeStamp type view which propertyName path')\n , mouseProps = commonProps.concat(str2arr('button buttons clientX clientY dataTransfer ' +\n 'fromElement offsetX offsetY pageX pageY screenX screenY toElement movementX movementY region'))\n , mouseWheelProps = mouseProps.concat(str2arr('wheelDelta wheelDeltaX wheelDeltaY wheelDeltaZ ' +\n 'axis')) // 'axis' is FF specific\n , keyProps = commonProps.concat(str2arr('char charCode key keyCode keyIdentifier ' +\n 'keyLocation location isComposing code'))\n , textProps = commonProps.concat(str2arr('data'))\n , touchProps = commonProps.concat(str2arr('touches targetTouches changedTouches scale rotation'))\n , messageProps = commonProps.concat(str2arr('data origin source'))\n , stateProps = commonProps.concat(str2arr('state'))\n , overOutRegex = /over|out/\n // some event types need special handling and some need special properties, do that all here\n , typeFixers = [\n { // key events\n reg: /key/i\n , fix: function (event, newEvent) {\n newEvent.keyCode = event.keyCode || event.which\n return keyProps\n }\n }\n , { // mouse events\n reg: /click|mouse(?!(.*wheel|scroll))|menu|drag|drop/i\n , fix: function (event, newEvent, type) {\n newEvent.rightClick = event.which === 3 || event.button === 2\n newEvent.pos = { x: 0, y: 0 }\n if (event.pageX || event.pageY) {\n newEvent.clientX = event.pageX\n newEvent.clientY = event.pageY\n } else if (event.clientX || event.clientY) {\n newEvent.clientX = event.clientX + doc.body.scrollLeft + root.scrollLeft\n newEvent.clientY = event.clientY + doc.body.scrollTop + root.scrollTop\n }\n if (overOutRegex.test(type)) {\n newEvent.relatedTarget = event.relatedTarget\n || event[(type == 'mouseover' ? 'from' : 'to') + 'Element']\n }\n return mouseProps\n }\n }\n , { // mouse wheel events\n reg: /mouse.*(wheel|scroll)/i\n , fix: function () { return mouseWheelProps }\n }\n , { // TextEvent\n reg: /^text/i\n , fix: function () { return textProps }\n }\n , { // touch and gesture events\n reg: /^touch|^gesture/i\n , fix: function () { return touchProps }\n }\n , { // message events\n reg: /^message$/i\n , fix: function () { return messageProps }\n }\n , { // popstate events\n reg: /^popstate$/i\n , fix: function () { return stateProps }\n }\n , { // everything else\n reg: /.*/\n , fix: function () { return commonProps }\n }\n ]\n , typeFixerMap = {} // used to map event types to fixer functions (above), a basic cache mechanism\n\n , Event = function (event, element, isNative) {\n if (!arguments.length) return\n event = event || ((element.ownerDocument || element.document || element).parentWindow || win).event\n this.originalEvent = event\n this.isNative = isNative\n this.isBean = true\n\n if (!event) return\n\n var type = event.type\n , target = event.target || event.srcElement\n , i, l, p, props, fixer\n\n this.target = target && target.nodeType === 3 ? target.parentNode : target\n\n if (isNative) { // we only need basic augmentation on custom events, the rest expensive & pointless\n fixer = typeFixerMap[type]\n if (!fixer) { // haven't encountered this event type before, map a fixer function for it\n for (i = 0, l = typeFixers.length; i < l; i++) {\n if (typeFixers[i].reg.test(type)) { // guaranteed to match at least one, last is .*\n typeFixerMap[type] = fixer = typeFixers[i].fix\n break\n }\n }\n }\n\n props = fixer(event, this, type)\n for (i = props.length; i--;) {\n if (!((p = props[i]) in this) && p in event) this[p] = event[p]\n }\n }\n }\n\n // preventDefault() and stopPropagation() are a consistent interface to those functions\n // on the DOM, stop() is an alias for both of them together\n Event.prototype.preventDefault = function () {\n if (this.originalEvent.preventDefault) this.originalEvent.preventDefault()\n else this.originalEvent.returnValue = false\n }\n Event.prototype.stopPropagation = function () {\n if (this.originalEvent.stopPropagation) this.originalEvent.stopPropagation()\n else this.originalEvent.cancelBubble = true\n }\n Event.prototype.stop = function () {\n this.preventDefault()\n this.stopPropagation()\n this.stopped = true\n }\n // stopImmediatePropagation() has to be handled internally because we manage the event list for\n // each element\n // note that originalElement may be a Bean#Event object in some situations\n Event.prototype.stopImmediatePropagation = function () {\n if (this.originalEvent.stopImmediatePropagation) this.originalEvent.stopImmediatePropagation()\n this.isImmediatePropagationStopped = function () { return true }\n }\n Event.prototype.isImmediatePropagationStopped = function () {\n return this.originalEvent.isImmediatePropagationStopped && this.originalEvent.isImmediatePropagationStopped()\n }\n Event.prototype.clone = function (currentTarget) {\n //TODO: this is ripe for optimisation, new events are *expensive*\n // improving this will speed up delegated events\n var ne = new Event(this, this.element, this.isNative)\n ne.currentTarget = currentTarget\n return ne\n }\n\n return Event\n }())\n\n // if we're in old IE we can't do onpropertychange on doc or win so we use doc.documentElement for both\n , targetElement = function (element, isNative) {\n return !W3C_MODEL && !isNative && (element === doc || element === win) ? root : element\n }\n\n /**\n * Bean maintains an internal registry for event listeners. We don't touch elements, objects\n * or functions to identify them, instead we store everything in the registry.\n * Each event listener has a RegEntry object, we have one 'registry' for the whole instance.\n */\n , RegEntry = (function () {\n // each handler is wrapped so we can handle delegation and custom events\n var wrappedHandler = function (element, fn, condition, args) {\n var call = function (event, eargs) {\n return fn.apply(element, args ? slice.call(eargs, event ? 0 : 1).concat(args) : eargs)\n }\n , findTarget = function (event, eventElement) {\n return fn.__beanDel ? fn.__beanDel.ft(event.target, element) : eventElement\n }\n , handler = condition\n ? function (event) {\n var target = findTarget(event, this) // deleated event\n if (condition.apply(target, arguments)) {\n if (event) event.currentTarget = target\n return call(event, arguments)\n }\n }\n : function (event) {\n if (fn.__beanDel) event = event.clone(findTarget(event)) // delegated event, fix the fix\n return call(event, arguments)\n }\n handler.__beanDel = fn.__beanDel\n return handler\n }\n\n , RegEntry = function (element, type, handler, original, namespaces, args, root) {\n var customType = customEvents[type]\n , isNative\n\n if (type == 'unload') {\n // self clean-up\n handler = once(removeListener, element, type, handler, original)\n }\n\n if (customType) {\n if (customType.condition) {\n handler = wrappedHandler(element, handler, customType.condition, args)\n }\n type = customType.base || type\n }\n\n this.isNative = isNative = nativeEvents[type] && !!element[eventSupport]\n this.customType = !W3C_MODEL && !isNative && type\n this.element = element\n this.type = type\n this.original = original\n this.namespaces = namespaces\n this.eventType = W3C_MODEL || isNative ? type : 'propertychange'\n this.target = targetElement(element, isNative)\n this[eventSupport] = !!this.target[eventSupport]\n this.root = root\n this.handler = wrappedHandler(element, handler, null, args)\n }\n\n // given a list of namespaces, is our entry in any of them?\n RegEntry.prototype.inNamespaces = function (checkNamespaces) {\n var i, j, c = 0\n if (!checkNamespaces) return true\n if (!this.namespaces) return false\n for (i = checkNamespaces.length; i--;) {\n for (j = this.namespaces.length; j--;) {\n if (checkNamespaces[i] == this.namespaces[j]) c++\n }\n }\n return checkNamespaces.length === c\n }\n\n // match by element, original fn (opt), handler fn (opt)\n RegEntry.prototype.matches = function (checkElement, checkOriginal, checkHandler) {\n return this.element === checkElement &&\n (!checkOriginal || this.original === checkOriginal) &&\n (!checkHandler || this.handler === checkHandler)\n }\n\n return RegEntry\n }())\n\n , registry = (function () {\n // our map stores arrays by event type, just because it's better than storing\n // everything in a single array.\n // uses '$' as a prefix for the keys for safety and 'r' as a special prefix for\n // rootListeners so we can look them up fast\n var map = {}\n\n // generic functional search of our registry for matching listeners,\n // `fn` returns false to break out of the loop\n , forAll = function (element, type, original, handler, root, fn) {\n var pfx = root ? 'r' : '$'\n if (!type || type == '*') {\n // search the whole registry\n for (var t in map) {\n if (t.charAt(0) == pfx) {\n forAll(element, t.substr(1), original, handler, root, fn)\n }\n }\n } else {\n var i = 0, l, list = map[pfx + type], all = element == '*'\n if (!list) return\n for (l = list.length; i < l; i++) {\n if ((all || list[i].matches(element, original, handler)) && !fn(list[i], list, i, type)) return\n }\n }\n }\n\n , has = function (element, type, original, root) {\n // we're not using forAll here simply because it's a bit slower and this\n // needs to be fast\n var i, list = map[(root ? 'r' : '$') + type]\n if (list) {\n for (i = list.length; i--;) {\n if (!list[i].root && list[i].matches(element, original, null)) return true\n }\n }\n return false\n }\n\n , get = function (element, type, original, root) {\n var entries = []\n forAll(element, type, original, null, root, function (entry) {\n return entries.push(entry)\n })\n return entries\n }\n\n , put = function (entry) {\n var has = !entry.root && !this.has(entry.element, entry.type, null, false)\n , key = (entry.root ? 'r' : '$') + entry.type\n ;(map[key] || (map[key] = [])).push(entry)\n return has\n }\n\n , del = function (entry) {\n forAll(entry.element, entry.type, null, entry.handler, entry.root, function (entry, list, i) {\n list.splice(i, 1)\n entry.removed = true\n if (list.length === 0) delete map[(entry.root ? 'r' : '$') + entry.type]\n return false\n })\n }\n\n // dump all entries, used for onunload\n , entries = function () {\n var t, entries = []\n for (t in map) {\n if (t.charAt(0) == '$') entries = entries.concat(map[t])\n }\n return entries\n }\n\n return { has: has, get: get, put: put, del: del, entries: entries }\n }())\n\n // we need a selector engine for delegated events, use querySelectorAll if it exists\n // but for older browsers we need Qwery, Sizzle or similar\n , selectorEngine\n , setSelectorEngine = function (e) {\n if (!arguments.length) {\n selectorEngine = doc.querySelectorAll\n ? function (s, r) {\n return r.querySelectorAll(s)\n }\n : function () {\n throw new Error('Bean: No selector engine installed') // eeek\n }\n } else {\n selectorEngine = e\n }\n }\n\n // we attach this listener to each DOM event that we need to listen to, only once\n // per event type per DOM element\n , rootListener = function (event, type) {\n if (!W3C_MODEL && type && event && event.propertyName != '_on' + type) return\n\n var listeners = registry.get(this, type || event.type, null, false)\n , l = listeners.length\n , i = 0\n\n event = new Event(event, this, true)\n if (type) event.type = type\n\n // iterate through all handlers registered for this type, calling them unless they have\n // been removed by a previous handler or stopImmediatePropagation() has been called\n for (; i < l && !event.isImmediatePropagationStopped(); i++) {\n if (!listeners[i].removed) listeners[i].handler.call(this, event)\n }\n }\n\n // add and remove listeners to DOM elements\n , listener = W3C_MODEL\n ? function (element, type, add, custom, useCapture) {\n // new browsers\n element[add ? addEvent : removeEvent](type, rootListener, useCapture)\n }\n : function (element, type, add, custom /*, useCapture */) {\n // IE8 and below, use attachEvent/detachEvent and we have to piggy-back propertychange events\n // to simulate event bubbling etc.\n var entry\n if (add) {\n registry.put(entry = new RegEntry(\n element\n , custom || type\n , function (event) { // handler\n rootListener.call(element, event, custom)\n }\n , rootListener\n , null\n , null\n , true // is root\n ))\n if (custom && element['_on' + custom] == null) element['_on' + custom] = 0\n entry.target.attachEvent('on' + entry.eventType, entry.handler)\n } else {\n entry = registry.get(element, custom || type, rootListener, true)[0]\n if (entry) {\n entry.target.detachEvent('on' + entry.eventType, entry.handler)\n registry.del(entry)\n }\n }\n }\n\n , once = function (rm, element, type, fn, originalFn) {\n // wrap the handler in a handler that does a remove as well\n return function () {\n fn.apply(this, arguments)\n rm(element, type, originalFn)\n }\n }\n\n , removeListener = function (element, orgType, handler, namespaces, useCapture) {\n var type = orgType && orgType.replace(nameRegex, '')\n , handlers = registry.get(element, type, null, false)\n , removed = {}\n , i, l\n\n for (i = 0, l = handlers.length; i < l; i++) {\n if ((!handler || handlers[i].original === handler) && handlers[i].inNamespaces(namespaces)) {\n // TODO: this is problematic, we have a registry.get() and registry.del() that\n // both do registry searches so we waste cycles doing this. Needs to be rolled into\n // a single registry.forAll(fn) that removes while finding, but the catch is that\n // we'll be splicing the arrays that we're iterating over. Needs extra tests to\n // make sure we don't screw it up. @rvagg\n registry.del(handlers[i])\n if (!removed[handlers[i].eventType] && handlers[i][eventSupport])\n removed[handlers[i].eventType] = { t: handlers[i].eventType, c: handlers[i].type }\n }\n }\n // check each type/element for removed listeners and remove the rootListener where it's no longer needed\n for (i in removed) {\n if (!registry.has(element, removed[i].t, null, false)) {\n // last listener of this type, remove the rootListener\n listener(element, removed[i].t, false, removed[i].c, useCapture)\n }\n }\n }\n\n // set up a delegate helper using the given selector, wrap the handler function\n , delegate = function (selector, fn) {\n //TODO: findTarget (therefore $) is called twice, once for match and once for\n // setting e.currentTarget, fix this so it's only needed once\n var findTarget = function (target, root) {\n var i, array = isString(selector) ? selectorEngine(selector, root) : selector\n for (; target && target !== root; target = target.parentNode) {\n for (i = array.length; i--;) {\n if (array[i] === target) return target\n }\n }\n }\n , handler = function (e) {\n var match = findTarget(e.target, this)\n if (match) fn.apply(match, arguments)\n }\n\n // __beanDel isn't pleasant but it's a private function, not exposed outside of Bean\n handler.__beanDel = {\n ft : findTarget // attach it here for customEvents to use too\n , selector : selector\n }\n return handler\n }\n\n , fireListener = W3C_MODEL ? function (isNative, type, element) {\n // modern browsers, do a proper dispatchEvent()\n var evt = doc.createEvent(isNative ? 'HTMLEvents' : 'UIEvents')\n evt[isNative ? 'initEvent' : 'initUIEvent'](type, true, true, win, 1)\n element.dispatchEvent(evt)\n } : function (isNative, type, element) {\n // old browser use onpropertychange, just increment a custom property to trigger the event\n element = targetElement(element, isNative)\n isNative ? element.fireEvent('on' + type, doc.createEventObject()) : element['_on' + type]++\n }\n\n /**\n * Public API: off(), on(), add(), (remove()), one(), fire(), clone()\n */\n\n /**\n * off(element[, eventType(s)[, handler ], options])\n */\n , off = function (element, typeSpec, fn) {\n var isTypeStr = isString(typeSpec),\n defaultOpts = {\n useCapture: false\n }\n , opts = buildOptions(defaultOpts, arguments[arguments.length - 1])\n , k, type, namespaces, i\n\n if (isTypeStr && typeSpec.indexOf(' ') > 0) {\n // off(el, 't1 t2 t3', fn) or off(el, 't1 t2 t3')\n typeSpec = str2arr(typeSpec)\n for (i = typeSpec.length; i--;)\n off(element, typeSpec[i], fn)\n return element\n }\n\n type = isTypeStr && typeSpec.replace(nameRegex, '')\n if (type && customEvents[type]) type = customEvents[type].base\n\n if (!typeSpec || isTypeStr) {\n // off(el) or off(el, t1.ns) or off(el, .ns) or off(el, .ns1.ns2.ns3)\n if (namespaces = isTypeStr && typeSpec.replace(namespaceRegex, '')) namespaces = str2arr(namespaces, '.')\n removeListener(element, type, fn, namespaces, opts.useCapture)\n } else if (isFunction(typeSpec)) {\n // off(el, fn)\n removeListener(element, null, typeSpec, null, opts.useCapture)\n } else {\n // off(el, { t1: fn1, t2, fn2 })\n for (k in typeSpec) {\n if (typeSpec.hasOwnProperty(k)) off(element, k, typeSpec[k])\n }\n }\n\n return element\n }\n\n /**\n * on(element, eventType(s)[, selector], handler[, args ], [options])\n */\n , on = function(element, events, selector, fn) {\n var defaultOpts = {\n useCapture: false\n },\n originalFn, type, types, i, args, entry, first, opts\n\n //TODO: the undefined check means you can't pass an 'args' argument, fix this perhaps?\n if (selector === undefined && typeof events == 'object') {\n //TODO: this can't handle delegated events\n for (type in events) {\n if (events.hasOwnProperty(type)) {\n on.call(this, element, type, events[type])\n }\n }\n return\n }\n\n if (!isFunction(selector)) {\n // delegated event\n originalFn = fn\n args = slice.call(arguments, 4)\n fn = delegate(selector, originalFn, selectorEngine)\n } else {\n args = slice.call(arguments, 3)\n fn = originalFn = selector\n }\n\n opts = buildOptions(defaultOpts, args[args.length - 1])\n types = str2arr(events)\n\n // special case for one(), wrap in a self-removing handler\n if (this === ONE) {\n fn = once(off, element, events, fn, originalFn)\n }\n\n for (i = types.length; i--;) {\n // add new handler to the registry and check if it's the first for this element/type\n first = registry.put(entry = new RegEntry(\n element\n , types[i].replace(nameRegex, '') // event type\n , fn\n , originalFn\n , str2arr(types[i].replace(namespaceRegex, ''), '.') // namespaces\n , args\n , false // not root\n ))\n if (entry[eventSupport] && first) {\n // first event of this type on this element, add root listener\n listener(element, entry.eventType, true, entry.customType, opts.useCapture)\n }\n }\n\n return element\n }\n\n /**\n * add(element[, selector], eventType(s), handler[, args ])\n *\n * Deprecated: kept (for now) for backward-compatibility\n */\n , add = function (element, events, fn, delfn, options) {\n return on.apply(\n null\n , !isString(fn)\n ? slice.call(arguments)\n : [ element, fn, events, delfn ].concat(arguments.length > 3 ? slice.call(arguments, 4) : [])\n )\n }\n\n /**\n * one(element, eventType(s)[, selector], handler[, args ])\n */\n , one = function () {\n return on.apply(ONE, arguments)\n }\n\n /**\n * fire(element, eventType(s)[, args ])\n *\n * The optional 'args' argument must be an array, if no 'args' argument is provided\n * then we can use the browser's DOM event system, otherwise we trigger handlers manually\n */\n , fire = function (element, type, args) {\n var types = str2arr(type)\n , i, j, l, names, handlers\n\n for (i = types.length; i--;) {\n type = types[i].replace(nameRegex, '')\n if (names = types[i].replace(namespaceRegex, '')) names = str2arr(names, '.')\n if (!names && !args && element[eventSupport]) {\n fireListener(nativeEvents[type], type, element)\n } else {\n // non-native event, either because of a namespace, arguments or a non DOM element\n // iterate over all listeners and manually 'fire'\n handlers = registry.get(element, type, null, false)\n args = [false].concat(args)\n for (j = 0, l = handlers.length; j < l; j++) {\n if (handlers[j].inNamespaces(names)) {\n handlers[j].handler.apply(element, args)\n }\n }\n }\n }\n return element\n }\n\n /**\n * clone(dstElement, srcElement[, eventType ])\n *\n * TODO: perhaps for consistency we should allow the same flexibility in type specifiers?\n */\n , clone = function (element, from, type) {\n var handlers = registry.get(from, type, null, false)\n , l = handlers.length\n , i = 0\n , args, beanDel\n\n for (; i < l; i++) {\n if (handlers[i].original) {\n args = [ element, handlers[i].type ]\n if (beanDel = handlers[i].handler.__beanDel) args.push(beanDel.selector)\n args.push(handlers[i].original)\n on.apply(null, args)\n }\n }\n return element\n }\n\n , bean = {\n 'on' : on\n , 'add' : add\n , 'one' : one\n , 'off' : off\n , 'remove' : off\n , 'clone' : clone\n , 'fire' : fire\n , 'Event' : Event\n , 'setSelectorEngine' : setSelectorEngine\n , 'noConflict' : function () {\n context[name] = old\n return this\n }\n }\n\n // for IE, clean up on unload to avoid leaks\n if (win.attachEvent) {\n var cleanup = function () {\n var i, entries = registry.entries()\n for (i in entries) {\n if (entries[i].type && entries[i].type !== 'unload') off(entries[i].element, entries[i].type)\n }\n win.detachEvent('onunload', cleanup)\n win.CollectGarbage && win.CollectGarbage()\n }\n win.attachEvent('onunload', cleanup)\n }\n\n // initialize selector engine to internal default (qSA or throw Error)\n setSelectorEngine()\n\n return bean\n});\n","require( './lib/shims/custom-event' )\n\nvar bean = require( '@spark-engine/bean' ),\n key = require( 'keymaster' ),\n afterAnimation = require( './lib/after-animation' ),\n page = require( './lib/page' ),\n tap = require( './lib/tap-events' ),\n debounce = require( './lib/debounce' ),\n throttle = require( './lib/throttle' ),\n delay = require( './lib/delay' ),\n repeat = require( './lib/repeat' ),\n bubbleFormEvents = require( './lib/bubble-form-events' ),\n submit = require( './lib/submit' ),\n scroll = require( './lib/scroll' ),\n resize = require( './lib/resize' ),\n callbackManager = require( './lib/callback-manager' ),\n eventManager = require( './lib/event-manager' ),\n media = require( './lib/media' ),\n\n slice = Array.prototype.slice,\n formBubbling = false,\n watchAnimation = true\n\nmodule.exports = {\n\n // DOM events\n on: bean.on,\n off: bean.off,\n one: bean.one,\n fire: bean.fire,\n clone: bean.clone,\n ready: page.ready,\n change: page.change,\n afterAnimation: afterAnimation,\n watchAnimation: watchAnimation,\n\n // Media query events\n media: media,\n\n // Keyboard events\n key: key,\n keyOn: key,\n keyOff: key.unbind,\n keyOne: keyOne,\n\n // Timing utilities\n debounce: debounce,\n throttle: throttle,\n delay: delay,\n repeat: repeat,\n\n // Optimized Event Managers\n scroll: scroll,\n resize: resize,\n eventManager: eventManager,\n\n callbackManager: callbackManager,\n callback: callbackManager.callback,\n\n // Bubbling fix\n bubbleFormEvents: bubbleFormEvents,\n\n submit: submit\n}\n\npage.ready( function() {\n if ( watchAnimation ) afterAnimation.watch()\n})\n\n// Add support for unbinding a key event after it is called\n//\nfunction keyOne ( keys, scope, fn ) {\n\n if ( typeof scope == 'function' ) {\n fn = scope\n scope = 'all'\n }\n\n key( keys, scope, function( event ) {\n key.unbind( keys, scope )\n fn( event )\n })\n}\n","var Event = require( '@spark-engine/bean' ),\n delay = require( './delay' )\n\nfunction animationDuration( el ) {\n return window.getComputedStyle( el ).getPropertyValue( 'animation-duration' )\n}\n\n// Watches all document animation and adds data attributes to elements when they begin\n// This enables animationEnd to watch animations which haven't begun\nfunction watchAnimation() {\n Event.on( document, 'animationstart', function( event ) {\n event.target.dataset.isAnimating = true\n })\n Event.on( document, 'animationend', function( event ) {\n event.target.removeAttribute('data-is-animating')\n })\n}\n\n// This requires trackElementAnimation to be enabled\nfunction afterAnimation( el, callback, startTimeout ) {\n // Animation has already begun\n if ( el.dataset.isAnimating || el.querySelector( '[data-is-animating]' ) ) {\n\n // Watch for end\n Event.one( el, 'animationend', callback )\n\n // Animation has not yet begun so…\n } else {\n\n // startTimeout is meant to ensure that a callback is fired even if \n // an animation event, or in the case that an animation event is never triggered\n // this might happen if a user wants to fire a callack after an element animates\n // or fire the callback anyway if the element doesn't have an animation.\n if ( startTimeout ) {\n\n // Set a default timeout (allowing startTimeout == true or a specified number of milisecons)\n var time = ((typeof startTimeout == \"number\") ? startTimeout : 32) // 32ms: ~ two frames of animation grace period\n\n var delayedEvent = delay( function() {\n // Stop watching for animation to start\n // Why? - If the animation starts later, the callback will fire twice\n Event.off( el, 'animationstart', watchEndEvent ) \n callback()\n }, time )\n }\n\n // Next:\n // Register a function to attach callback to animationEnd event\n function watchEndEvent () {\n if ( startTimeout ) delayedEvent.stop() // cancel delayed fire\n Event.one( el, 'animationend', callback ) // watch for animation to finish\n }\n \n // Finally, when the animation does start, watch for its end\n Event.one( el, 'animationstart', watchEndEvent )\n }\n}\n\nafterAnimation.watch = watchAnimation\n\nmodule.exports = afterAnimation\n","var Event = require( '@spark-engine/bean' ),\n page = require( './page' ),\n formEls;\n\nvar formBubbling = false\n\nvar fireBubble = function ( event ) {\n if ( event.detail && event.detail.triggered ) { return false }\n\n var ev = new CustomEvent( event.type, { bubbles: true, cancelable: true, detail: { triggered: true } } )\n\n // Stop only 'submit' events. Stopping blur or foucs events seems to break FireFox input interactions.\n if ( event.type == 'submit' ) event.stopImmediatePropagation()\n\n event.target.dispatchEvent( ev )\n\n // Prevent default on original event if custom event is prevented\n if ( ev.defaultPrevented ) event.preventDefault() \n}\n\n// Simplify setting the event type based on the element\nvar eventType = function ( el ) {\n return ( el.tagName == 'FORM' ) ? 'submit' : 'focus blur'\n}\n\n// Add event listeners\nvar bubbleOn = function ( el ) {\n Event.on( el, eventType( el ), fireBubble )\n}\n\n// Remove event listeners\nvar bubbleOff = function ( el ) {\n Event.off( el, eventType( el ), fireBubble )\n}\n\n// Add/Remove event listeners\nvar bubbleFormEvents = function () {\n if ( formBubbling ) { return } \n page.change( function() {\n\n // Remove listeners from previous page\n if ( formEls ) Array.prototype.forEach.call( formEls, bubbleOff )\n\n // Add new listeners to this page\n formEls = document.querySelectorAll( 'form, input' )\n\n Array.prototype.forEach.call( formEls, bubbleOn )\n })\n\n var formBubbling = true\n}\n\nmodule.exports = bubbleFormEvents\n","var Manager = {\n new: function() {\n var manager = {\n\n callbacks: [],\n\n add: function( fn ) {\n var cb = Manager.callback.new( fn )\n manager.callbacks.push( cb )\n return cb\n },\n\n stop: function() {\n manager.callbacks.forEach( function( cb ) { cb.stop() } )\n },\n\n start: function() {\n manager.callbacks.forEach( function( cb ) { cb.start() } )\n },\n\n toggle: function( bool ) {\n manager.callbacks.forEach( function( cb ) { cb.toggle( bool ) } )\n },\n\n remove: function() {\n manager.callbacks = []\n },\n\n fire: function() {\n var args = Array.prototype.slice.call( arguments )\n manager.callbacks.forEach( function( fn ) { fn.apply( this, args ) } )\n }\n }\n\n return manager\n },\n\n callback: {\n new: function( fn ) {\n var cb = function() {\n if ( cb.enabled ) { fn.apply( fn, arguments ) }\n }\n\n cb.stop = function() { cb.enabled = false }\n cb.start = function() { cb.enabled = true }\n cb.toggle = function( bool ) {\n cb.enabled = ( 0 in arguments ) ? bool : !cb.enabled\n }\n cb.enabled = true\n\n return cb\n }\n }\n}\n\nmodule.exports = Manager\n","var now = function() {\n return Date.now()\n}\n\nvar pickFunction = function() {\n var found\n Array.prototype.forEach.call( arguments, function( candidate ) {\n if ( typeof( candidate ) == 'function' && !found ) { found = candidate }\n })\n\n return found\n}\n\nvar debounce = function( fn, wait, options ) {\n\n // Allow options passed as the first argument\n if ( typeof( fn ) == 'object' ) { options = fn } \n\n // Options won't be null\n else { options = options || {} }\n\n wait = options.wait || wait || 0\n\n var max = options.max || false,\n leading = ( ( 'leading' in options ) ? options.leading : false ),\n trailing = ( ( 'trailing' in options ) ? options.trailing : true ),\n \n // Grab functions from options or default to first argument\n leadingFn = pickFunction( options.leading, options.trailing, options.callback, fn ),\n trailingFn = pickFunction( options.trailing, options.leading, options.callback, fn ),\n\n // State tracking vars\n args, // Track arguments passed to debounced callback\n queued = false, // Has a callback been added to the animation loop?\n handle = {}, // Object for tracking functions and callbacks\n lastCalled = 0, // Keep a timer for debouncing\n lastInvoked = 0, // Keep a timer for max\n leadingBlocked = false; // Track leading, throttling subsequent leading calls\n\n // Queue the function with requestAnimationFrame\n var invoke = function( callType ) {\n\n lastCalled = now()\n lastInvoked = now()\n queued = false\n leadingBlocked = true\n\n if ( callType === 'leading' ) {\n leadingFn.apply( leadingFn, args ) }\n else {\n trailingFn.apply( trailingFn, args ) }\n\n }\n\n // Load the loop into the animation queue\n var addToQueue = function () {\n\n if ( !queued ) {\n queued = true\n handle.value = requestAnimationFrame( loop ) // Add to browser's animation queue\n }\n\n }\n\n // Remove from animation queue and reset debounce \n var removeFromQueue = function() {\n\n if ( \"value\" in handle ) {\n cancelAnimationFrame( handle.value )\n queued = false\n lastCalled = 0\n lastInvoked = 0\n leadingBlocked = false\n }\n \n }\n\n // prevent infinite debouncing ( if options.max is set )\n var maxPassed = function() {\n return ( max && now() - lastInvoked >= max )\n }\n\n var waitReached = function() {\n return ( now() - lastCalled ) >= wait\n }\n\n // This gets loaded into the animation queue and determines whether to ivoke the debounced function\n var loop = function () {\n \n // Loop was executed so it's no longer in the animation queue\n queued = false\n \n if ( leading && !leadingBlocked ) {\n invoke( 'leading' )\n }\n\n // If function has been called to frequently to execute\n else if ( maxPassed() ) {\n\n if ( leading ) { invoke( 'leading' ) }\n else { invoke( 'trailing' ) }\n\n } \n \n // If function hasn't been called since last wait\n else if ( waitReached() ) {\n\n // If trailing it's safe to invoke\n if ( trailing ) { invoke( 'trailing' ) }\n\n // If leading, it's safe to remove block\n if ( leading ) { leadingBlocked = false }\n \n } else {\n addToQueue()\n }\n\n }\n\n // A wrapper function for queueing up function calls\n //\n var debounced = function() {\n lastCalled = now()\n args = arguments\n addToQueue()\n }\n\n debounced.stop = removeFromQueue\n\n return debounced\n}\n\nmodule.exports = debounce\n","var now = function() {\n return Date.now()\n}\n\nvar delay = function ( fn, wait ) {\n\n var argsStart = ( wait != null ) ? 2 : 1;\n var handle = {}\n\n handle.args = Array.prototype.slice.call( arguments, argsStart )\n handle.wait = wait || 0\n handle.start = now()\n\n handle.stop = function () {\n if ( \"value\" in handle ) {\n cancelAnimationFrame( handle.value );\n }\n }\n\n handle.loop = function () {\n\n // If wait limit has been reached\n if ( now() - handle.start >= handle.wait ) {\n fn.apply( fn, handle.args )\n\n // If repeat is set and is not 0\n if ( !!handle.repeat ) {\n handle.repeat = handle.repeat - 1\n handle.start = now()\n queueDelay( handle )\n } else if ( handle.repeat === 0 && handle.complete ) {\n handle.complete()\n }\n\n } else {\n queueDelay( handle )\n }\n\n }\n\n\n return queueDelay( handle )\n}\n\nvar queueDelay = function ( handle ) {\n handle.value = requestAnimationFrame( handle.loop )\n return handle\n}\n\nmodule.exports = delay\n","var Event = require( '@spark-engine/bean' )\nvar Page = require( './page' )\nvar callbackManager = require( './callback-manager' )\nvar throttle = require( './throttle' )\nvar debounce = require( './debounce' )\n\nvar eventManager = {\n new: function( name, options ) {\n\n options = options || {}\n var target = options.target || window\n var delay = options.delay || 150\n var optimize = options.throttle || true\n\n // Create a new callback manager\n var manager = {\n run: callbackManager.new(),\n start: callbackManager.new(),\n end: callbackManager.new()\n }\n\n var running = manager.run.fire\n\n // run callbacks when event happens (at paint-ready frames)\n if (optimize) running = throttle( running )\n\n // fire callbacks when event starts (at paint-ready frames)\n var started = debounce({ leading: manager.start.fire, trailing: false, wait: delay })\n\n // fire callbacks when event starts (at paint-ready frames)\n var ended = debounce( manager.end.fire, delay )\n\n // Public API\n var run = function ( fn ) { return manager.run.add( fn ) }\n run.start = function ( fn ) { return manager.start.add( fn ) }\n run.end = function ( fn ) { return manager.end.add( fn ) }\n\n Page.ready(function(){\n if ( typeof target === \"string\" ) target = document.querySelector(target)\n\n if ( target ) {\n // These functions use throttle and debounce to only trigger on optimzied intervals and at start and end\n Event.on( target, name, function(event) {\n started(event)\n running(event)\n ended(event)\n })\n }\n })\n\n return run\n }\n}\n\nmodule.exports = eventManager\n","// This simplifies common uses for window.matchMedia \n// namely, adding listeners for width and height queries\n\nfunction parseQuery( query, dimension ) {\n var result = {}\n\n if ( typeof( query ) === 'string' ) { return query }\n\n result.min = size( query.min, 'min-' + dimension )\n result.max = size( query.max, 'max-' + dimension )\n\n if ( result.min && result.max )\n result.query = result.min + ' and ' + result.max\n\n return result.query || result.min || result.max\n}\n\nfunction size( num, limit ) {\n return ( num ) ? '('+limit+': ' + toPx( num ) + ')' : null\n}\n\nfunction toPx( width ) {\n if ( typeof( width ) === 'number' ) { return width + 'px'}\n return width\n}\n\nvar media = {\n\n width: function( query, fn ) {\n return media.listen( parseQuery( query, 'width' ), fn )\n },\n\n minWidth: function( size, fn ) { return media.width( { min: size }, fn ) },\n maxWidth: function( size, fn ) { return media.width( { max: size }, fn ) },\n\n height: function( query, fn ) {\n return media.listen( parseQuery( query, 'height' ), fn )\n },\n\n minHeight: function( size, fn ) { return media.height( { min: size }, fn ) },\n maxHeight: function( size, fn ) { return media.height( { max: size }, fn ) },\n\n listen: function( query, fn ) {\n var match = window.matchMedia( query )\n\n if ( fn ) {\n fn( match )\n match.addListener( fn )\n }\n\n return match\n }\n\n}\n\n\nmodule.exports = media\n","var Event = require( '@spark-engine/bean' )\nvar callbackManager = require( './callback-manager' )\n\n// Create a new page event manager\nvar manager = {\n ready: callbackManager.new(),\n change: callbackManager.new(),\n readyAlready: false,\n changed: false,\n}\n\nmanager.ready.add( function(){\n manager.readyAlready = true \n})\n\nmanager.ready.add( function(){ \n if ( !window.Turbolinks && !manager.changed ) { \n manager.changed = true \n manager.change.fire()\n }\n})\n\nvar ready = function ( fn ) {\n if ( manager.readyAlready ) { fn() }\n return manager.ready.add( fn ) }\n\nvar change = function( fn ) {\n if ( manager.changed ) { fn() }\n return manager.change.add( fn ) }\n\n// Make it easy to trigger ready callbacks\nready.fire = function () {\n manager.ready.fire()\n // Be sure ready can only be fired once\n manager.ready.stop() }\n\n// Make it easy to trigger change callbacks\nchange.fire = function () {\n manager.change.fire() }\n\nEvent.on( document, 'DOMContentLoaded', ready.fire )\nEvent.on( document, 'page:change turbolinks:load', change.fire ) // Support custom and rails turbolinks page load events\n\nmodule.exports = {\n ready: ready,\n change: change\n}\n","var delay = require( './delay' )\n\nvar repeat = function( fn, wait, limit ) {\n\n var argsStart = 1,\n handle = delay ( fn, wait );\n\n if ( limit != null ) { argsStart = 3 }\n else if ( wait != null ) { argsStart = 2 }\n\n // Enable repeat ( -1 will repeat forever )\n handle.repeat = limit || -1\n handle.args = Array.prototype.slice.call( arguments, argsStart )\n handle.stop = handle.cancel\n\n return handle\n}\n\nmodule.exports = repeat\n","var manager = require( './event-manager' )\nvar resize = manager.new( 'resize' )\n\n// Pause animations during resizing for better performance\nresize.disableAnimation = function() {\n var style = '<style id=\"fullstop\">.no-animation *, .no-animation *:after, .no-animation *:before {\\\n transition: none !important; animation: none !important\\\n }</style>'\n\n // Inject style for easy classname manipulation\n if ( !document.querySelector('style#fullstop') ) { \n document.head.insertAdjacentHTML('beforeend', style)\n }\n\n resize.start( function() { document.body.classList.add( 'no-animation' ) } )\n resize.end( function() { document.body.classList.remove( 'no-animation' ) } )\n}\n\nmodule.exports = resize\n","var manager = require( './event-manager' )\nvar scroll = manager.new( 'scroll' )\n\nscroll.disablePointer = function() {\n\n // Disable pointer interaction\n scroll.start( function() {\n document.documentElement.style.pointerEvents = 'none'\n })\n\n // Enable pointer interaction\n scroll.end( function() {\n document.documentElement.style.pointerEvents = ''\n })\n}\n\nmodule.exports = scroll\n","// Custom Event Polyfill\n(function () {\n\n if ( typeof window.CustomEvent === \"function\" ) return false;\n\n function CustomEvent ( event, params ) {\n params = params || { bubbles: false, cancelable: false, detail: undefined };\n var evt = document.createEvent( 'CustomEvent' );\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n\n window.CustomEvent = CustomEvent;\n})()\n","// Manually trigger a cancelable form submit event.\nfunction submit( form ) {\n if ( !form.tagName || form.tagName != 'FORM' ) {\n return console.error( 'Trigger this event on a form element' )\n }\n\n var ev = new CustomEvent( 'submit', { bubbles: true, cancelable: true, detail: { triggered: true } } )\n form.dispatchEvent( ev )\n\n // Submit form unless event default is prevented\n if ( !ev.defaultPrevented ) form.submit()\n}\n\nmodule.exports = submit\n","var endEvents = [\n 'touchend'\n]\n\nmodule.exports = Tap\n\n// default tap timeout in ms\nTap.timeout = 200\n\nfunction Tap(callback, options) {\n options = options || {}\n // if the user holds his/her finger down for more than 200ms,\n // then it's not really considered a tap.\n // however, you can make this configurable.\n var timeout = options.timeout || Tap.timeout\n\n // to keep track of the original listener\n listener.handler = callback\n\n return listener\n\n // el.addEventListener('touchstart', listener)\n function listener(e1) {\n // tap should only happen with a single finger\n if (!e1.touches || e1.touches.length > 1) return\n\n var el = e1.target\n var context = this\n var args = arguments;\n\n var timeout_id = setTimeout(cleanup, timeout)\n\n el.addEventListener('touchmove', cleanup)\n\n endEvents.forEach(function (event) {\n el.addEventListener(event, done)\n })\n\n function done(e2) {\n // since touchstart is added on the same tick\n // and because of bubbling,\n // it'll execute this on the same touchstart.\n // this filters out the same touchstart event.\n if (e1 === e2) return\n\n cleanup()\n\n // already handled\n if (e2.defaultPrevented) return\n\n // overwrite these functions so that they all to both start and events.\n var preventDefault = e1.preventDefault\n var stopPropagation = e1.stopPropagation\n\n e1.stopPropagation = function () {\n stopPropagation.call(e1)\n stopPropagation.call(e2)\n }\n\n e1.preventDefault = function () {\n preventDefault.call(e1)\n preventDefault.call(e2)\n }\n\n // calls the handler with the `end` event,\n // but i don't think it matters.\n callback.apply(context, args)\n }\n\n // cleanup end events\n // to cancel the tap, just run this early\n function cleanup(e2) {\n // if it's the same event as the origin,\n // then don't actually cleanup.\n // hit issues with this - don't remember\n if (e1 === e2) return\n\n clearTimeout(timeout_id)\n\n el.removeEventListener('touchmove', cleanup)\n\n endEvents.forEach(function (event) {\n el.removeEventListener(event, done)\n })\n }\n }\n}\n","var debounce = require( './debounce' )\n\nvar throttle = function( fn, wait, options ) {\n\n if ( typeof( fn ) == 'object' ) { options = fn; fn = undefined } \n else { options = options || {} }\n\n options.wait = options.wait || wait || 0\n options.max = options.max || options.wait\n options.callback = options.callback || fn\n options.leading = true\n options.trailing = true\n\n return debounce(options)\n}\n\n\nmodule.exports = throttle\n","var Event = require(\"@spark-engine/event\"),\n hiddenClass = \"hidden\",\n hidingClass = \"hiding\",\n showingClass = \"showing\",\n visibleClass = \"visible\",\n checkboxSelector = \"[type=checkbox][data-toggle], [type=checkbox][data-show], [type=checkbox][data-hide]\",\n radioSelector = \"input[type=radio][data-show], input[type=radio][data-hide], input[type=radio][data-add-class], input[type=radio][data-remove-class]\",\n optionSelector = \"option[data-hide], option[data-show]\",\n tabListSelector = \"[role=tablist][data-tab-toggle]\",\n tabSelector = \"[role=tab]\",\n lastHash = \"\"\n\nfunction listen(){\n Event.on(document, \"click change\", \"[data-toggle], [data-show], [data-hide], [data-toggle-class], [data-add-class], [data-remove-class]\", trigger)\n Event.on(document, \"change\", \"[data-select-toggler]\", trigger)\n Event.on(window, 'hashchange', hashChange)\n}\n\nfunction hashChange() {\n if (window.location.hash) {\n\n var anchor = '[data-anchor=\"'+window.location.hash+'\"]'\n var target = document.querySelector(anchor)\n\n if (target) {\n lastHash = anchor\n\n if (target.type == 'radio') {\n target.checked = true\n } else if (target.getAttribute('role') === 'tab') {\n // No need to run if the current tab is already selected\n if (target.getAttribute('aria-selected') === 'true') { return }\n } else if (target.tagName == \"OPTION\") {\n target.closest('select').selectedIndex = target.index\n }\n\n triggerToggling(target)\n }\n } else if (lastHash) {\n // If a previous tab was selected and a user navigates back, changing the location hash to ''\n // Select the first tab which is the default\n var tab = document.querySelector(lastHash + tabSelector)\n if (tab) {\n var firstTab = tab.closest(tabListSelector).querySelector(tabSelector)\n firstTab.setAttribute('aria-selected', 'true')\n triggerToggling(firstTab)\n }\n }\n}\n\nfunction refresh(){\n selectByUrl()\n toggleCheckboxes()\n setupSelects()\n setupRadios()\n setupTabs()\n}\n\nfunction trigger(event) {\n // Stop event and bubbling if link is only being used as a toggler\n if (event.currentTarget.getAttribute('href') == \"#\") {\n event.preventDefault()\n event.stop()\n }\n\n triggerToggling(event.currentTarget, event)\n}\n\nfunction triggerToggling(target, event) {\n var actions = ['hide', 'toggle', 'show', 'removeClass', 'toggleClass', 'addClass']\n\n // Store the select, and set the target to the current option\n // Events fire on the select, but the options have toggling attributes\n if (target.tagName.match(/select/i)) {\n return triggerToggling(target.selectedOptions[0])\n }\n\n if (target.getAttribute('role') == 'tab') {\n selectTab(target)\n selectAmongOthers(target)\n } else if (target.tagName == 'OPTION' || target.type == 'radio') {\n selectAmongOthers(target)\n }\n\n // Radio inputs, tabs, and selects do not support toggling, so remove them\n actions = actions.filter(function(action) {\n if (target.tagName == 'OPTION' || target.type == 'radio' || target.getAttribute('role') == 'tab') {\n return !action.match(/toggle/)\n }\n return target.dataset[action] != null\n })\n\n // Dispatch all actions\n actions.forEach(function(action) {\n dispatch(target, action)\n })\n}\n\nfunction dispatch(el, type) {\n var action = type\n var data = el.dataset[type]\n\n // Abort if element doesn't have data for the action\n if (!data || typeof data == 'undefined' || data == '') return\n\n // Toggle and show are treated the same for checkboxes\n if (el.type == 'checkbox')\n action = (type.match(/hide|remove/i) ? !el.checked : el.checked)\n\n if (data){\n if (type.match(/class/i)){\n setClass(data, action, el)\n } else {\n setState(data, action)\n }\n }\n}\n\n// Add, remove, or toggle classnames, triggered by elements with:\n// data-hide-class, data-show-class, and data-toggle-class values\n//\n// Data value examples:\n// - \"classname\" - add/remove/toggle classname on current element\n// - \"foo bar\" - multiple classnames, separated by spaces (like html class property)\n// - \"foo bar; selector\" - change classnames on elements matched by selector\n// - \"foo bar; selector, selector\" - match multiple selectors\n//\n// You can perform multiple add/remove classes by joining values with an `&`\n// For example: \"classname & foo bar; selector\"\n// This would toggle classname on current element and toggle `foo bar` classnames\n// on an element matching the selector\n//\n\nfunction setClass(selectors, action, el){\n if(typeof selectors == 'undefined' || selectors == '') return\n\n if (typeof(action) == 'boolean') {\n action = (action ? 'add' : 'remove')\n }\n\n if (selectors.match(/&/)) {\n selectors.split('&').forEach(function(sel){\n setClass(sel.trim(), action, el)\n })\n return\n }\n\n // Get selector and classnames, format: \"classname classname; selector,selector\"\n var settings = selectors.split(';')\n var classnames = settings[0].trim()\n var matches = []\n selectors = settings[1]\n\n if (selectors) {\n matches = document.querySelectorAll(selectors)\n\n // If no slectors are present, and el is an OPTION, use its SELECT as the matched element\n } else if (el && el.tagName.match(/option/i)) {\n matches = [getSelectFromOption(el)]\n\n // If no slectors are present, use the current el for classnames\n } else if (el) {\n matches = [el]\n }\n\n Array.prototype.forEach.call(matches, function(match){\n Array.prototype.forEach.call(classnames.split(' '), function(classname) {\n var method = action.replace(/Class/,'')\n match.classList[method](classname)\n })\n\n triggerTogglerEventsOnChildren(match, 'class')\n })\n}\n\nfunction setState(selectors, state) {\n var matches = document.querySelectorAll(selectors)\n\n Array.prototype.forEach.call(matches, function(match){\n var action = toggleAction(match, state)\n\n if (action == 'show') show(match)\n else if (action == \"hide\") hide(match)\n\n triggerTogglerEventsOnChildren(match, action)\n })\n}\n\nfunction toggleAction(el, action) {\n\n if (typeof action == 'boolean') {\n action = (action ? 'show' : 'hide')\n }\n\n if (action == 'toggle') {\n if (el.classList.contains(hiddenClass) || el.classList.contains(hidingClass)) {\n action = 'show'\n } else {\n action = 'hide'\n }\n }\n\n return action\n}\n\nfunction show(el) {\n if (el.classList.contains(visibleClass) ||\n el.classList.contains(showingClass) ||\n el.offsetParent != null) {\n return\n }\n el.classList.remove(hiddenClass, hidingClass)\n el.hidden = false\n\n var showNow = function() {\n // Remove hidden because it might be added before this fires\n el.classList.remove(showingClass, hiddenClass)\n el.classList.add(visibleClass)\n\n // Enable inputs, fieldsets or forms when shown\n if (typeof el.disabled != 'undefined'){\n el.disabled = false\n }\n\n // Focus on key element if an element expects focus\n var focusEl = el.querySelector('[data-focus]')\n if (focusEl) { focusEl.focus() }\n\n // Trigger input event on ranges that have been hidden\n var ranges = el.querySelectorAll('[type=range]')\n }\n\n if (el.dataset.animate) {\n Event.afterAnimation(el, showNow, true)\n el.classList.add(showingClass)\n } else {\n showNow()\n }\n}\n\nfunction hide(el) {\n if (el.classList.contains(hiddenClass) ||\n el.classList.contains(hidingClass)) {\n return\n }\n\n // Remove showing because it might be added before this fires\n el.classList.remove(visibleClass, showingClass)\n\n var hideNow = function() {\n el.classList.remove(hidingClass, visibleClass)\n el.classList.add(hiddenClass)\n el.hidden = true\n\n // Disable inputs, fieldsets or forms when hidden\n if (typeof el.disabled != 'undefined'){\n el.disabled = true\n }\n }\n\n if (el.dataset.animate) {\n Event.afterAnimation(el, hideNow, true)\n el.classList.add(hidingClass)\n } else {\n hideNow()\n }\n}\n\nfunction getLeafNodes(parent) {\n // is the parent itself a leaf node?\n if (!parent.hasChildNodes()) return [parent]\n\n var nodes = Array.prototype.slice.call(parent.getElementsByTagName(\"*\"), 0)\n\n return nodes.filter(function(elem) {\n return elem.children && elem.children.length === 0\n })\n}\n\nfunction triggerTogglerEventsOnChildren(el, eventName){\n // we care about leaf nodes since the event will bubble to\n // non-leaf nodes from the leaf nodes\n var leafChildNodes = getLeafNodes(el)\n\n Array.prototype.forEach.call(leafChildNodes, function(node) {\n // 'toggler:show', 'toggler:hide', etc\n Event.fire(node, \"toggler:\" + eventName)\n })\n}\n\nfunction toggleCheckboxes(checkboxes) {\n checkboxes = checkboxes || document.querySelectorAll(checkboxSelector)\n\n Array.prototype.forEach.call(checkboxes, triggerToggling)\n}\n\nfunction setupRadios() {\n Array.prototype.forEach.call(document.querySelectorAll(radioSelector), function(radio){\n if (!radio.dataset.togglerActive) {\n\n var radioName = radio.getAttribute('name'),\n radios = parentForm(radio).querySelectorAll('[type=radio][name=\"'+radioName+'\"]'),\n checked\n\n Array.prototype.forEach.call(radios, function(r){\n r.dataset.togglerActive = true\n if(r.checked) checked = r\n })\n\n if (checked) { \n triggerToggling(checked) \n } else {\n hideOthers(radios)\n removeClassOnOthers(radios)\n }\n }\n\n })\n}\n\n// Add data-hide to each <option> containing the selectors from other\n// option's data-show. This makes the toggling of elements exclusive.\nfunction setupSelects(){\n Array.prototype.forEach.call(document.querySelectorAll(optionSelector), function(option){\n var select = option.closest('select')\n\n // Mark selects to prevent double processing for each option.\n if (!select.dataset.selectToggler) { \n select.dataset.selectToggler = true\n triggerToggling(select)\n }\n })\n}\n\nfunction setupTabs() {\n Array.prototype.forEach.call(document.querySelectorAll(tabListSelector), function(tabList) {\n var tabs = tabList.querySelectorAll(tabSelector)\n if (tabs.length == 0) return\n\n Array.prototype.forEach.call(tabs, function(tab) {\n tab.dataset.show = \"#\"+tab.getAttribute('aria-controls')\n })\n\n var selectedTab = tabList.querySelector('[data-anchor=\"'+window.location.hash+'\"]') ||\n tabList.querySelector('[aria-selected=true]') ||\n tabList.querySelectorAll(tabSelector)[0]\n\n triggerToggling(selectedTab)\n })\n}\n\nfunction getSiblingEls(el) {\n var elements\n\n if (el.type == 'radio') {\n elements = parentForm(el).querySelectorAll('[type=radio][name=\"'+el.getAttribute('name')+'\"]')\n } else if (el.getAttribute('role') == 'tab') {\n elements = el.closest(tabListSelector).querySelectorAll(tabSelector)\n } else if (el.tagName == \"OPTION\") {\n elements = el.closest('select').querySelectorAll('option')\n }\n\n return Array.prototype.filter.call(elements, function(e) { return e != el })\n}\n\nfunction hideOthers(others, el) {\n var hideSelectors = showAttributes(others)\n if (el) {\n var showSelectors = (el.dataset.show || '').split(',')\n hideSelectors = hideSelectors.filter(function(selector) {\n return showSelectors.indexOf(selector) < 0\n })\n }\n\n setState(hideSelectors.join(','), 'hide')\n}\n\nfunction removeClassOnOthers(others) {\n Array.prototype.forEach.call(others, function(other) {\n setClass(other.dataset.addClass, 'remove', other)\n })\n}\n\nfunction selectByUrl() {\n if (window.location.hash.length < 1) { return }\n\n Array.prototype.forEach.call(document.querySelectorAll('[data-anchor=\"'+window.location.hash+'\"]'), function(el) {\n if (el.tagName == 'OPTION') {\n el.closest('select').selectedIndex = el.index \n } else if (el.getAttribute('role') == 'tab') { \n el.setAttribute('aria-selected', 'true')\n } else if (el.type == 'radio') {\n el.checked = true\n }\n })\n}\n\nfunction selectTab(tab) {\n // Deselect sibling tabs\n Array.prototype.forEach.call(getSiblingEls(tab), function(t) {\n t.setAttribute('aria-selected', 'false')\n })\n \n // Don't set selected and change url if the current tab is already selected\n if (tab.getAttribute('aria-selected') !== 'true') {\n\n tab.setAttribute('aria-selected', true)\n\n if (tab.dataset.anchor && window.location.hash != tab.dataset.anchor) {\n window.location.hash = tab.dataset.anchor \n }\n }\n}\n\nfunction selectAmongOthers(el) {\n var siblings = getSiblingEls(el)\n if (siblings.length < 1) { return }\n\n hideOthers(siblings, el)\n removeClassOnOthers(siblings)\n}\n\n// Find parent <select> for an option (accounts for option groups)\nfunction getSelectFromOption(el) {\n return el.closest('select')\n}\n\n\n// Find parent <form> or document if there is no form\nfunction parentForm(element) {\n var el = element\n\n while (el && el.tagName != \"FORM\") {\n el = el.parentNode\n }\n\n return el || document\n}\n\nfunction groupAttributes(elements, attr) {\n return Array.prototype.map.call(elements, function(el) {\n return el.getAttribute(attr)\n }).filter(function(selectors, index, self) {\n // Only keep array items if they are truthy and not duplicates.\n return selectors != \"\" && selectors != null && typeof selectors != 'undefined' && self.indexOf(selectors) === index\n })\n}\n\n// Return a unique array of all data attribute values from elements\nfunction showAttributes(elements) {\n return Array.prototype.map.call(elements, function(el) {\n return el.dataset.show\n }).join(',').split(',').filter(function(selectors, index, self) {\n // Only keep array items if they are truthy and not duplicates.\n return selectors != \"\" && selectors != null && typeof selectors != 'undefined' && self.indexOf(selectors) === index\n })\n}\n\nEvent.ready(listen)\nEvent.change(refresh)\n\nmodule.exports = {\n set: function(options) {\n if(options.hidden) hiddenClass = options.hidden\n if(options.hiding) hidingClass = options.hiding\n if(options.showing) showingClass = options.showing\n if(options.visible) visibleClass = options.visible\n }\n}\n","require('./lib/shims/_classlist')\n\nconst scrollTo = require('./lib/scrollto'),\n fromTop = require('./lib/fromtop'),\n ease = require('./lib/ease')\n dom = require('./lib/dom'),\n obj = require('./lib/object')\n\n// Merge object tools and DOM tools into one exported API\nmodule.exports = obj.merge(obj, dom, {\n scrollTo: scrollTo,\n fromTop: fromTop,\n ease: ease\n})\n","// Shim matches and closest\nrequire('./shims/_element.matches')\nrequire('./shims/_element.closest')\n\nconst obj = require('./object')\n\n// Determine if an element is a child of a parent element.\nfunction childOf(el, parent) {\n for (; el && el !== document; el = el.parentNode) {\n if (el == parent) return true;\n }\n return false\n}\n\nfunction isElement(item) {\n return item.constructor.toString().search(/HTML.+Element/) > -1\n}\n\n// Return a formData object with all inputs beneath a given root element\n//\n// Examples:\n//\n// 1. Get formdata for all fields in a fieldset:\n// formData(document.querySelector('#some-fieldset'))\n//\n// 2. Get formdata for a form\n// formData(document.querySelector('#some-form')\n//\nfunction formData(rootEl) {\n var formData = new FormData(),\n fields = obj.slice(rootEl.querySelectorAll('input[name]:not([disabled]), select[name]:not([disabled]), textarea[name]:not([disabled])')),\n fieldData = {}\n\n // Remove any field which has a parent which is disabled\n fields = fields.filter(function(f) { return !f.closest('[disabled]') })\n\n // Loop over fields\n // reverse them because if there are two inputs with the same name\n // the last input overrides the first.\n fields.reverse().forEach(function(field) {\n if (field.matches('[type=radio], [type=checkbox]')) {\n // If this is a checkbox or radio input, overwrite with checked values\n if (field.checked) fieldData[field.name] = field\n } else {\n // Only add one value per field name\n fieldData[field.name] = fieldData[field.name] || field\n }\n })\n\n for (var name in fieldData) {\n // Append current field’s name/value to new formData object\n formData.append(name, fieldData[name].value);\n }\n\n // Then return said formData object\n return formData;\n}\n\nmodule.exports = {\n childOf: childOf,\n isElement: isElement,\n formData: formData\n}\n","// easing functions http://gizma.com/easing/\nvar ease = {\n inOutQuad: function (t, b, c, d) {\n t /= d/2\n if (t < 1) { return c/2*t*t + b }\n t--\n return -c/2 * (t*(t-2) - 1) + b\n },\n\n inOutCubic: function (t, b, c, d) {\n\tt /= d/2;\n\tif (t < 1) return c/2*t*t*t + b;\n\tt -= 2;\n\treturn c/2*(t*t*t + 2) + b;\n },\n\n inOutQuint: function(t, b, c, d) {\n var ts = (t/=d)*t,\n tc = ts*t;\n return b+c*(6*tc*ts + -15*ts*ts + 10*tc);\n },\n\n inOutCirc: function (t, b, c, d) {\n t /= d/2;\n if (t < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;\n t -= 2;\n return c/2 * (Math.sqrt(1 - t*t) + 1) + b;\n }\n}\n\nease.default = ease.inOutQuad\n\nmodule.exports = ease\n","// Get the distance from the top of the window.\nmodule.exports = function(el) {\n return Math.round(el.getBoundingClientRect().top + window.pageYOffset)\n}\n","require('./shims/_object.assign')\n\n// Easy access to slice for converting objects into arrays of values.\nfunction slice(obj, count) {\n return Array.prototype.slice.call(obj, count)\n}\n\n// Each which supports NodeLists (from a DOM query) as well as other iteratable objects.\nfunction each(collection, callback) {\n return Array.prototype.forEach.call(collection, callback)\n}\n\n// Make it easy to merge objects without overwriting the original objects\nfunction merge() {\n var args = [{}].concat(slice(arguments))\n return Object.assign.apply(this, args)\n}\n\nmodule.exports = {\n merge: merge,\n slice: slice,\n each: each\n}\n","const ease = require('./ease'),\n fromTop = require('./fromtop'),\n duration = 500\n\nfunction move(amount, element) {\n if (element) {\n return element.scrollTop\n }\n // Scroll all because document.scrollingElement is still expiremental\n document.documentElement.scrollTop = amount;\n document.body.parentNode.scrollTop = amount;\n document.body.scrollTop = amount;\n}\n\nfunction position(element) {\n return scrollElement(element).scrollTop\n}\n\nfunction scrollElement(element) {\n if (element) { return element }\n else if (document.documentElement.scrollTop) return document.documentElement\n else if (document.parentNode.scrollTop) return document.parentNode\n else if (document.body.scrollTop) return document.body\n}\n\n// Scroll to a position or element.\n//\n// Arguments:\n// - to: a y coordiante, or a DOM element\n// - options:\n// callback: callback to trigger on complete\n// duration: time in ms to scroll (default: 500)\n// scroll: element to scroll (default: document root)\n//\nfunction scrollTo(to, options) {\n\n // Making args flexible\n //\n // Allow for element or y-coordinates\n if(typeof(to) === 'object') { to = fromTop(to) }\n\n // Default duration = 500\n options.duration = options.duration || duration\n\n var start = position(),\n change = to - start,\n currentTime = 0,\n increment = 20;\n\n var animateScroll = function() {\n // increment the time\n currentTime += increment\n\n // find the value with the quadratic in-out easing function\n var val = ease.default(currentTime, start, change, options.duration)\n\n // move the document.body\n move(val, options.scroll);\n\n // do the animation unless its over\n if (currentTime < options.duration) {\n requestAnimationFrame(animateScroll)\n } else {\n if (options.callback && typeof(callback) === 'function') {\n options.callback()\n }\n }\n }\n\n animateScroll()\n}\n\nmodule.exports = scrollTo\n","// Element.classlist polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/classlist\n//\n// 1. String.prototype.trim polyfill\nif (!\"\".trim) String.prototype.trim = function(){ return this.replace(/^[\\s]+|[\\s]+$/g, ''); };\n(function(window){\"use strict\"; // prevent global namespace pollution\nfunction checkIfValidClassListEntry(O, V){\nif (V === \"\") throw new DOMException(\n \"Failed to execute '\" + O + \"' on 'DOMTokenList': The token provided must not be empty.\" );\nif((wsI=V.search(wsRE))!==-1)throw new DOMException(\"Failed to execute '\"+O+\"' on 'DOMTokenList': \"+\n\"The token provided ('\"+V[wsI]+\"') contains HTML space characters, which are not valid in tokens.\");\n }\n// 2. Implement the barebones DOMTokenList livelyness polyfill\nif (typeof DOMTokenList !== \"function\") (function(window){\n var document = window.document, Object = window.Object, hasOwnProp = Object.prototype.hasOwnProperty;\n var defineProperty = Object.defineProperty, allowTokenListConstruction = 0, skipPropChange = 0;\n var Element = window.Element, wsI = 0, wsRE = /[\\11\\12\\14\\15\\40]/; // WhiteSpace Regular Expression\n function DOMTokenList(){\n if (!allowTokenListConstruction) throw TypeError(\"Illegal constructor\"); // internally let it through\n }\n DOMTokenList.prototype.toString = DOMTokenList.prototype.toLocaleString = function(){return this.value};\n DOMTokenList.prototype.add = function(){\n a: for(var v=0, argLen=arguments.length,val=\"\",ele=this[\"uCL\"],proto=ele[\" uCLp\"]; v!==argLen; ++v) {\n val = arguments[v] + \"\", checkIfValidClassListEntry(\"add\", val);\n for (var i=0, Len=proto.length, resStr=val; i !== Len; ++i)\n if (this[i] === val) continue a; else resStr += \" \" + this[i];\n this[Len] = val, proto.length += 1, proto.value = resStr;\n }\n skipPropChange = 1, ele.className = proto.value, skipPropChange = 0;\n };\n DOMTokenList.prototype.remove = function(){\n for (var v=0, argLen=arguments.length,val=\"\",ele=this[\"uCL\"],proto=ele[\" uCLp\"]; v !== argLen; ++v) {\n val = arguments[v] + \"\", checkIfValidClassListEntry(\"remove\", val);\n for (var i=0, Len=proto.length, resStr=\"\", is=0; i !== Len; ++i)\n if(is){ this[i-1]=this[i] }else{ if(this[i] !== val){ resStr+=this[i]+\" \"; }else{ is=1; } }\n if (!is) continue;\n delete this[Len], proto.length -= 1, proto.value = resStr;\n }\n skipPropChange = 1, ele.className = proto.value, skipPropChange = 0;\n };\n window.DOMTokenList = DOMTokenList;\n function whenPropChanges(){\n var evt = window.event, prop = evt.propertyName;\n if ( !skipPropChange && (prop===\"className\" || (prop===\"classList\" && !defineProperty)) ) {\n var target = evt.srcElement, protoObjProto = target[\" uCLp\"], strval = \"\" + target[prop];\n var tokens=strval.trim().split(wsRE), resTokenList=target[prop===\"classList\"?\" uCL\":\"classList\"];\n var oldLen = protoObjProto.length;\n a: for(var cI = 0, cLen = protoObjProto.length = tokens.length, sub = 0; cI !== cLen; ++cI){\n for(var innerI=0; innerI!==cI; ++innerI) if(tokens[innerI]===tokens[cI]) {sub++; continue a;}\n resTokenList[cI-sub] = tokens[cI];\n }\n for (var i=cLen-sub; i < oldLen; ++i) delete resTokenList[i]; //remove trailing indexs\n if(prop !== \"classList\") return;\n skipPropChange = 1, target.classList = resTokenList, target.className = strval;\n skipPropChange = 0, resTokenList.length = tokens.length - sub;\n }\n }\n function polyfillClassList(ele){\n if (!ele || !(\"innerHTML\" in ele)) throw TypeError(\"Illegal invocation\");\n srcEle.detachEvent( \"onpropertychange\", whenPropChanges ); // prevent duplicate handler infinite loop\n allowTokenListConstruction = 1;\n try{ function protoObj(){} protoObj.prototype = new DOMTokenList(); }\n finally { allowTokenListConstruction = 0 }\n var protoObjProto = protoObj.prototype, resTokenList = new protoObj();\n a: for(var toks=ele.className.trim().split(wsRE), cI=0, cLen=toks.length, sub=0; cI !== cLen; ++cI){\n for (var innerI=0; innerI !== cI; ++innerI) if (toks[innerI] === toks[cI]) { sub++; continue a; }\n this[cI-sub] = toks[cI];\n }\n protoObjProto.length = Len-sub, protoObjProto.value = ele.className, protoObjProto[\" uCL\"] = ele;\n if (defineProperty) { defineProperty(ele, \"classList\", { // IE8 & IE9 allow defineProperty on the DOM\n enumerable: 1, get: function(){return resTokenList},\n configurable: 0, set: function(newVal){\n skipPropChange = 1, ele.className = protoObjProto.value = (newVal += \"\"), skipPropChange = 0;\n var toks = newVal.trim().split(wsRE), oldLen = protoObjProto.length;\n a: for(var cI = 0, cLen = protoObjProto.length = toks.length, sub = 0; cI !== cLen; ++cI){\n for(var innerI=0; innerI!==cI; ++innerI) if(toks[innerI]===toks[cI]) {sub++; continue a;}\n resTokenList[cI-sub] = toks[cI];\n }\n for (var i=cLen-sub; i < oldLen; ++i) delete resTokenList[i]; //remove trailing indexs\n }\n }); defineProperty(ele, \" uCLp\", { // for accessing the hidden prototype\n enumerable: 0, configurable: 0, writeable: 0, value: protoObj.prototype\n }); defineProperty(protoObjProto, \" uCL\", {\n enumerable: 0, configurable: 0, writeable: 0, value: ele\n }); } else { ele.classList=resTokenList, ele[\" uCL\"]=resTokenList, ele[\" uCLp\"]=protoObj.prototype; }\n srcEle.attachEvent( \"onpropertychange\", whenPropChanges );\n }\n try { // Much faster & cleaner version for IE8 & IE9:\n // Should work in IE8 because Element.prototype instanceof Node is true according to the specs\n window.Object.defineProperty(window.Element.prototype, \"classList\", {\n enumerable: 1, get: function(val){\n if (!hasOwnProp.call(window.Element.prototype, \"classList\")) polyfillClassList(this);\n return this.classList;\n },\n configurable: 0, set: function(val){this.className = val}\n });\n } catch(e) { // Less performant fallback for older browsers (IE 6-8):\n window[\" uCL\"] = polyfillClassList;\n // the below code ensures polyfillClassList is applied to all current and future elements in the doc.\n document.documentElement.firstChild.appendChild(document.createElement('style')).styleSheet.cssText=(\n '_*{x-uCLp:expression(!this.hasOwnProperty(\"classList\")&&window[\" uCL\"](this))}' + // IE6\n '[class]{x-uCLp/**/:expression(!this.hasOwnProperty(\"classList\")&&window[\" uCL\"](this))}' //IE7-8\n );\n }\n})(window);\n// 3. Patch in unsupported methods in DOMTokenList\n(function(DOMTokenListProto, testClass){\n if (!DOMTokenListProto.item) DOMTokenListProto.item = function(i){\n function NullCheck(n) {return n===void 0 ? null : n} return NullCheck(this[i]);\n };\n if (!DOMTokenListProto.toggle || testClass.toggle(\"a\",0)!==false) DOMTokenListProto.toggle=function(val){\n if (arguments.length > 1) return (this[arguments[1] ? \"add\" : \"remove\"](val), !!arguments[1]);\n var oldValue = this.value;\n return (this.remove(oldValue), oldValue === this.value && (this.add(val), true) /*|| false*/);\n };\n if (!DOMTokenListProto.replace || typeof testClass.replace(\"a\", \"b\") !== \"boolean\")\n DOMTokenListProto.replace = function(oldToken, newToken){\n checkIfValidClassListEntry(\"replace\", oldToken), checkIfValidClassListEntry(\"replace\", newToken);\n var oldValue = this.value;\n return (this.remove(oldToken), this.value !== oldValue && (this.add(newToken), true));\n };\n if (!DOMTokenListProto.contains) DOMTokenListProto.contains = function(value){\n for (var i=0,Len=this.length; i !== Len; ++i) if (this[i] === value) return true;\n return false;\n };\n if (!DOMTokenListProto.forEach) DOMTokenListProto.forEach = function(f){\n if (arguments.length === 1) for (var i = 0, Len = this.length; i !== Len; ++i) f( this[i], i, this);\n else for (var i=0,Len=this.length,tArg=arguments[1]; i !== Len; ++i) f.call(tArg, this[i], i, this);\n };\n if (!DOMTokenListProto.entries) DOMTokenListProto.entries = function(){\n var nextIndex = 0, that = this;\n return {next: function() {\n return nextIndex<that.length ? {value: [nextIndex, that[nextIndex]], done: false} : {done: true};\n }};\n };\n if (!DOMTokenListProto.values) DOMTokenListProto.values = function(){\n var nextIndex = 0, that = this;\n return {next: function() {\n return nextIndex<that.length ? {value: that[nextIndex], done: false} : {done: true};\n }};\n };\n if (!DOMTokenListProto.keys) DOMTokenListProto.keys = function(){\n var nextIndex = 0, that = this;\n return {next: function() {\n return nextIndex<that.length ? {value: nextIndex, done: false} : {done: true};\n }};\n };\n})(window.DOMTokenList.prototype, window.document.createElement(\"div\").classList);\n})(window);\n","require('./_element.matches')\n// Element.closest() polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\nif (!Element.prototype.closest) {\n Element.prototype.closest = function(s) {\n var el = this;\n\n do {\n if (el.matches(s)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\n","// Element.matches() polyfill - https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\nif (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n}\n","/**\n * Object.assign polyfill\n * Cross-browser full Object.assign implementation\n * @source https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\n * @license MIT\n **/\n\nif (typeof Object.assign != 'function') {\n (function() {\n Object.assign = function(target) {\n 'use strict';\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[ index ];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (Object.prototype.hasOwnProperty.call(source, nextKey)) {\n output[ nextKey ] = source[ nextKey ];\n }\n }\n }\n }\n return output;\n };\n })();\n}\n","// Copyright (c) 2015 Florian Hartmann, https://github.com/florian https://github.com/florian/cookie.js\n\n!function (document, undefined) {\n\n\tvar cookie = function () {\n\t\treturn cookie.get.apply(cookie, arguments);\n\t};\n\n\tvar utils = cookie.utils = {\n\n\t\t// Is the given value an array? Use ES5 Array.isArray if it's available.\n\t\tisArray: Array.isArray || function (value) {\n\t\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t\t},\n\n\t\t// Is the given value a plain object / an object whose constructor is `Object`?\n\t\tisPlainObject: function (value) {\n\t\t\treturn !!value && Object.prototype.toString.call(value) === '[object Object]';\n\t\t},\n\n\t\t// Convert an array-like object to an array – for example `arguments`.\n\t\ttoArray: function (value) {\n\t\t\treturn Array.prototype.slice.call(value);\n\t\t},\n\n\t\t// Get the keys of an object. Use ES5 Object.keys if it's available.\n\t\tgetKeys: Object.keys || function (obj) {\n\t\t\tvar keys = [],\n\t\t\t\t key = '';\n\t\t\tfor (key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key)) keys.push(key);\n\t\t\t}\n\t\t\treturn keys;\n\t\t},\n\n\t\t// Unlike JavaScript's built-in escape functions, this method\n\t\t// only escapes characters that are not allowed in cookies.\n\t\tencode: function (value) {\n\t\t\treturn String(value).replace(/[,;\"\\\\=\\s%]/g, function (character) {\n\t\t\t\treturn encodeURIComponent(character);\n\t\t\t});\n\t\t},\n\n\t\tdecode: function (value) {\n\t\t\treturn decodeURIComponent(value);\n\t\t},\n\n\t\t// Return fallback if the value is not defined, otherwise return value.\n\t\tretrieve: function (value, fallback) {\n\t\t\treturn value == null ? fallback : value;\n\t\t}\n\n\t};\n\n\tcookie.defaults = {};\n\n\tcookie.expiresMultiplier = 60 * 60 * 24;\n\n\tcookie.set = function (key, value, options) {\n\t\tif (utils.isPlainObject(key)) {\n\t\t\t// `key` contains an object with keys and values for cookies, `value` contains the options object.\n\n\t\t\tfor (var k in key) {\n\t\t\t\tif (key.hasOwnProperty(k)) this.set(k, key[k], value);\n\t\t\t}\n\t\t} else {\n\t\t\toptions = utils.isPlainObject(options) ? options : { expires: options };\n\n\t\t\t// Empty string for session cookies.\n\t\t\tvar expires = options.expires !== undefined ? options.expires : (this.defaults.expires || ''),\n\t\t\t expiresType = typeof(expires);\n\n\t\t\tif (expiresType === 'string' && expires !== '') expires = new Date(expires);\n\t\t\telse if (expiresType === 'number') expires = new Date(+new Date + 1000 * this.expiresMultiplier * expires); // This is needed because IE does not support the `max-age` cookie attribute.\n\n\t\t\tif (expires !== '' && 'toGMTString' in expires) expires = ';expires=' + expires.toGMTString();\n\n\t\t\tvar path = options.path || this.defaults.path;\n\t\t\tpath = path ? ';path=' + path : '';\n\n\t\t\tvar domain = options.domain || this.defaults.domain;\n\t\t\tdomain = domain ? ';domain=' + domain : '';\n\n\t\t\tvar secure = options.secure || this.defaults.secure ? ';secure' : '';\n\t\t\tif (options.secure === false) secure = '';\n\n\t\t\tdocument.cookie = utils.encode(key) + '=' + utils.encode(value) + expires + path + domain + secure;\n\t\t}\n\n\t\treturn this; // Return the `cookie` object to make chaining possible.\n\t};\n\n\tcookie.setDefault = function (key, value, options) {\n\t\tif (utils.isPlainObject(key)) {\n\t\t\tfor (var k in key) {\n\t\t\t\tif (this.get(k) === undefined) this.set(k, key[k], value);\n\t\t\t}\n\t\t\treturn cookie;\n\t\t} else {\n\t\t\tif (this.get(key) === undefined) return this.set.apply(this, arguments);\n\t\t}\n\t},\n\n\tcookie.remove = function (keys) {\n\t\tkeys = utils.isArray(keys) ? keys : utils.toArray(arguments);\n\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tthis.set(keys[i], '', -1);\n\t\t}\n\n\t\treturn this; // Return the `cookie` object to make chaining possible.\n\t};\n\n\tcookie.removeSpecific = function (keys, options) {\n\t\tif (!options) return this.remove(keys);\n\n\t\tkeys = utils.isArray(keys) ? keys : [keys];\n\t\toptions.expires = -1;\n\n\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\tthis.set(keys[i], '', options);\n\t\t}\n\n\t\treturn this; // Return the `cookie` object to make chaining possible.\n\t};\n\n\tcookie.empty = function () {\n\t\treturn this.remove(utils.getKeys(this.all()));\n\t};\n\n\tcookie.get = function (keys, fallback) {\n\t\tvar cookies = this.all();\n\n\t\tif (utils.isArray(keys)) {\n\t\t\tvar result = {};\n\n\t\t\tfor (var i = 0, l = keys.length; i < l; i++) {\n\t\t\t\tvar value = keys[i];\n\t\t\t\tresult[value] = utils.retrieve(cookies[value], fallback);\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t} else return utils.retrieve(cookies[keys], fallback);\n\t};\n\n\tcookie.all = function () {\n\t\tif (document.cookie === '') return {};\n\n\t\tvar cookies = document.cookie.split('; '),\n\t\t result = {};\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar item = cookies[i].split('=');\n\t\t\tvar key = utils.decode(item.shift());\n\t\t\tvar value = utils.decode(item.join('='));\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tcookie.enabled = function () {\n\t\tif (navigator.cookieEnabled) return true;\n\n\t\tvar ret = cookie.set('_', '_').get('_') === '_';\n\t\tcookie.remove('_');\n\t\treturn ret;\n\t};\n\n\t// If an AMD loader is present use AMD.\n\t// If a CommonJS loader is present use CommonJS.\n\t// Otherwise assign the `cookie` object to the global scope.\n\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn {cookie: cookie};\n\t\t});\n\t} else if (typeof exports !== 'undefined') {\n\t\texports.cookie = cookie;\n\t} else window.cookie = cookie;\n\n// If used e.g. with Browserify and CommonJS, document is not declared.\n}(typeof document === 'undefined' ? null : document);\n","// keymaster.js\n// (c) 2011-2013 Thomas Fuchs\n// keymaster.js may be freely distributed under the MIT license.\n\n;(function(global){\n var k,\n _handlers = {},\n _mods = { 16: false, 18: false, 17: false, 91: false },\n _scope = 'all',\n // modifier keys\n _MODIFIERS = {\n '⇧': 16, shift: 16,\n '⌥': 18, alt: 18, option: 18,\n '⌃': 17, ctrl: 17, control: 17,\n '⌘': 91, command: 91\n },\n // special keys\n _MAP = {\n backspace: 8, tab: 9, clear: 12,\n enter: 13, 'return': 13,\n esc: 27, escape: 27, space: 32,\n left: 37, up: 38,\n right: 39, down: 40,\n del: 46, 'delete': 46,\n home: 36, end: 35,\n pageup: 33, pagedown: 34,\n ',': 188, '.': 190, '/': 191,\n '`': 192, '-': 189, '=': 187,\n ';': 186, '\\'': 222,\n '[': 219, ']': 221, '\\\\': 220\n },\n code = function(x){\n return _MAP[x] || x.toUpperCase().charCodeAt(0);\n },\n _downKeys = [];\n\n for(k=1;k<20;k++) _MAP['f'+k] = 111+k;\n\n // IE doesn't support Array#indexOf, so have a simple replacement\n function index(array, item){\n var i = array.length;\n while(i--) if(array[i]===item) return i;\n return -1;\n }\n\n // for comparing mods before unassignment\n function compareArray(a1, a2) {\n if (a1.length != a2.length) return false;\n for (var i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) return false;\n }\n return true;\n }\n\n var modifierMap = {\n 16:'shiftKey',\n 18:'altKey',\n 17:'ctrlKey',\n 91:'metaKey'\n };\n function updateModifierKey(event) {\n for(k in _mods) _mods[k] = event[modifierMap[k]];\n };\n\n // handle keydown event\n function dispatch(event) {\n var key, handler, k, i, modifiersMatch, scope;\n key = event.keyCode;\n\n if (index(_downKeys, key) == -1) {\n _downKeys.push(key);\n }\n\n // if a modifier key, set the key.<modifierkeyname> property to true and return\n if(key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n if(key in _mods) {\n _mods[key] = true;\n // 'assignKey' from inside this closure is exported to window.key\n for(k in _MODIFIERS) if(_MODIFIERS[k] == key) assignKey[k] = true;\n return;\n }\n updateModifierKey(event);\n\n // see if we need to ignore the keypress (filter() can can be overridden)\n // by default ignore key presses if a select, textarea, or input is focused\n if(!assignKey.filter.call(this, event)) return;\n\n // abort if no potentially matching shortcuts found\n if (!(key in _handlers)) return;\n\n scope = getScope();\n\n // for each potential shortcut\n for (i = 0; i < _handlers[key].length; i++) {\n handler = _handlers[key][i];\n\n // see if it's in the current scope\n if(handler.scope == scope || handler.scope == 'all'){\n // check if modifiers match if any\n modifiersMatch = handler.mods.length > 0;\n for(k in _mods)\n if((!_mods[k] && index(handler.mods, +k) > -1) ||\n (_mods[k] && index(handler.mods, +k) == -1)) modifiersMatch = false;\n // call the handler and stop the event if neccessary\n if((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch){\n if(handler.method(event, handler)===false){\n if(event.preventDefault) event.preventDefault();\n else event.returnValue = false;\n if(event.stopPropagation) event.stopPropagation();\n if(event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n }\n };\n\n // unset modifier keys on keyup\n function clearModifier(event){\n var key = event.keyCode, k,\n i = index(_downKeys, key);\n\n // remove key from _downKeys\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n\n if(key == 93 || key == 224) key = 91;\n if(key in _mods) {\n _mods[key] = false;\n for(k in _MODIFIERS) if(_MODIFIERS[k] == key) assignKey[k] = false;\n }\n };\n\n function resetModifiers() {\n for(k in _mods) _mods[k] = false;\n for(k in _MODIFIERS) assignKey[k] = false;\n };\n\n // parse and assign shortcut\n function assignKey(key, scope, method){\n var keys, mods;\n keys = getKeys(key);\n if (method === undefined) {\n method = scope;\n scope = 'all';\n }\n\n // for each shortcut\n for (var i = 0; i < keys.length; i++) {\n // set modifier keys if any\n mods = [];\n key = keys[i].split('+');\n if (key.length > 1){\n mods = getMods(key);\n key = [key[key.length-1]];\n }\n // convert to keycode and...\n key = key[0]\n key = code(key);\n // ...store handler\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({ shortcut: keys[i], scope: scope, method: method, key: keys[i], mods: mods });\n }\n };\n\n // unbind all handlers for given key in current scope\n function unbindKey(key, scope) {\n var multipleKeys, keys,\n mods = [],\n i, j, obj;\n\n multipleKeys = getKeys(key);\n\n for (j = 0; j < multipleKeys.length; j++) {\n keys = multipleKeys[j].split('+');\n\n if (keys.length > 1) {\n mods = getMods(keys);\n key = keys[keys.length - 1];\n }\n\n key = code(key);\n\n if (scope === undefined) {\n scope = getScope();\n }\n if (!_handlers[key]) {\n return;\n }\n for (i = 0; i < _handlers[key].length; i++) {\n obj = _handlers[key][i];\n // only clear handlers if correct scope and mods match\n if (obj.scope === scope && compareArray(obj.mods, mods)) {\n _handlers[key][i] = {};\n }\n }\n }\n };\n\n // Returns true if the key with code 'keyCode' is currently down\n // Converts strings into key codes.\n function isPressed(keyCode) {\n if (typeof(keyCode)=='string') {\n keyCode = code(keyCode);\n }\n return index(_downKeys, keyCode) != -1;\n }\n\n function getPressedKeyCodes() {\n return _downKeys.slice(0);\n }\n\n function filter(event){\n var tagName = (event.target || event.srcElement).tagName;\n // ignore keypressed in any elements that support keyboard data input\n return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n }\n\n // initialize key.<modifier> to false\n for(k in _MODIFIERS) assignKey[k] = false;\n\n // set current scope (default 'all')\n function setScope(scope){ _scope = scope || 'all' };\n function getScope(){ return _scope || 'all' };\n\n // delete all handlers for a given scope\n function deleteScope(scope){\n var key, handlers, i;\n\n for (key in _handlers) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length; ) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);\n else i++;\n }\n }\n };\n\n // abstract key logic for assign and unassign\n function getKeys(key) {\n var keys;\n key = key.replace(/\\s/g, '');\n keys = key.split(',');\n if ((keys[keys.length - 1]) == '') {\n keys[keys.length - 2] += ',';\n }\n return keys;\n }\n\n // abstract mods logic for assign and unassign\n function getMods(key) {\n var mods = key.slice(0, key.length - 1);\n for (var mi = 0; mi < mods.length; mi++)\n mods[mi] = _MODIFIERS[mods[mi]];\n return mods;\n }\n\n // cross-browser events\n function addEvent(object, event, method) {\n if (object.addEventListener)\n object.addEventListener(event, method, false);\n else if(object.attachEvent)\n object.attachEvent('on'+event, function(){ method(window.event) });\n };\n\n // set the handlers globally on document\n addEvent(document, 'keydown', function(event) { dispatch(event) }); // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n addEvent(document, 'keyup', clearModifier);\n\n // reset modifiers to false whenever the window is (re)focused.\n addEvent(window, 'focus', resetModifiers);\n\n // store previously defined key\n var previousKey = global.key;\n\n // restore previously defined key and return reference to our key object\n function noConflict() {\n var k = global.key;\n global.key = previousKey;\n return k;\n }\n\n // set window.key and window.key.set/get/deleteScope, and the default filter\n global.key = assignKey;\n global.key.setScope = setScope;\n global.key.getScope = getScope;\n global.key.deleteScope = deleteScope;\n global.key.filter = filter;\n global.key.isPressed = isPressed;\n global.key.getPressedKeyCodes = getPressedKeyCodes;\n global.key.noConflict = noConflict;\n global.key.unbind = unbindKey;\n\n if(typeof module !== 'undefined') module.exports = assignKey;\n\n})(this);\n"]}