{"version":3,"sources":["../global/helpers.js","breakdance.js","../ef_plugins/togglr.js","../../libs/jquery.transit.js","../ef_plugins/expando.js","../ef_plugins/truncatr.js","togglr.js"],"names":["Array","prototype","contains","a","b","this","length","String","it","indexOf","define","$","_","console","log","getFuncFromString","fnName","temp","i","il","func","split","window","toBool","val","isBoolean","isString","toLowerCase","Error","mapKeys","data","map","each","value","key","list","newKey","constructUrl","params","newurl","param","document","location","pathname","isMobile","test","navigator","userAgent","validate","validationType","isValid","nameRegex","emailRegex","replace","phoneRegex","passportRegex","countryCodeRegex","expirationDateRegex","Boolean","getCurrentDate","d","Date","curr_date","getDate","curr_month","getMonth","curr_year","getFullYear","enquire","helpers","register","bp","matchCallback","unmatchCallback","match","unmatch","jQuery","undefined","Togglr","element","options","$element","metadata","activeText","inactiveText","extend","defaults","_defaults","_name","pluginName","init","toggleText","activeClass","plugin","$radios","$input","_active","tagName","attr","on","_update","event","preventDefault","toggle","isActive","active","is","prop","newText","addClass","trigger","removeClass","text","destroy","removeData","off","fn","getVendorPropertyName","div","style","prefixes","prop_","charAt","toUpperCase","substr","vendorProp","checkTransform3dSupport","support","transform","Transform","str","parse","callOrQueue","self","queue","getProperties","props","re","camelCase","transit","propertyMap","cssProps","uncamel","inArray","push","getTransition","properties","duration","easing","delay","cssEase","attribs","toMS","parseInt","transitions","name","join","registerCssHook","isPixels","cssNumber","cssHooks","get","elem","t","css","set","setFromString","transit:transform","letter","unit","units","fx","speeds","version","marginLeft","marginRight","marginBottom","marginTop","paddingLeft","paddingRight","paddingBottom","paddingTop","enabled","useTransitionEnd","createElement","isChrome","transition","transitionDelay","transformOrigin","transform3d","eventNames","MozTransition","OTransition","WebkitTransition","msTransition","transitionEnd","hasOwnProperty","_default","in","out","in-out","snap","easeOutCubic","easeInOutCubic","easeInCirc","easeOutCirc","easeInOutCirc","easeInExpo","easeOutExpo","easeInOutExpo","easeInQuad","easeOutQuad","easeInOutQuad","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInBack","easeOutBack","easeInOutBack","v","toString","jquery","args","constructor","unshift","apply","slice","arguments","setter","getter","rotate","theta","rotateX","rotateY","scale","x","y","skewX","skewY","perspective","dist","translate","_translateX","_translateY","s","parseFloat","rotate3d","use3d","callback","complete","transitionValue","work","next","oldTransitions","run","nextCall","bound","cb","unbind","bind","setTimeout","deferredRun","offsetWidth","getTransitionValue","Expando","animateClass","animate","animateTime","excerpt","useTogglr","togglr","$excerpt","siblings","$trigger","parents","expand","collapse","expanded","display","_animate","startHeight","endHeight","overflow","height","Truncatr","maxLength","fullWrapper","excerptWrapper","ending","$children","$el","children","not","detach","_wrapTextWithP","_sanitize","append","_createExcerpt","$full","html","truncate","origText","max","separator","punctuation","indexOfLastSeparator","substring","lastIndexOf","find","first","$this","trim","remove","wrapInner","contents","filter","nodeType","wrap","end","breakdance","createMobileDrawer","expando","destroyMobileDrawer","$expando","truncatr","$fullP","$excerptP","add"],"mappings":"AAAA,AAGAA,MAAAC,UAAAC,SAAA,SAAAC,GAEA,IADA,GAAAC,GAAAC,KAAAC,OACAF,KACA,GAAAC,KAAAD,KAAAD,EAAA,OAAA,CAEA,QAAA,GAEA,mBAAAI,QAAAN,UAAAC,WACAK,OAAAN,UAAAC,SAAA,SAAAM,GAAA,MAAA,IAAAH,KAAAI,QAAAD,KAIAE,OAAA,uBAAA,SAAA,cAAA,SAAAC,EAAAC,GAEA,MADAC,SAAAC,IAAA,mBAMAC,kBAAA,SAAAC,GACA,GAAAC,GAAAC,EAAAC,EAAAC,CAEA,IAAA,kBAAA,GAMA,IAJAH,EAAAD,EAAAK,MAAA,KACAF,EAAAF,EAAAX,OAGAY,EAAA,EAAAC,EAAAD,EAAAA,IAKAE,EAJA,MAAAA,EAIAA,EAAAH,EAAAC,IAHAI,OAAAL,EAAAC,QAMAE,GAAAJ,CAGA,OAAAI,IAIAG,OAAA,SAAAC,GACA,GAAAZ,EAAAa,UAAAD,GACA,MAAAA,EACA,IAAAZ,EAAAc,SAAAF,GACA,MAAA,SAAAA,EAAAG,aAEA,MAAA,IAAAC,OAAA,gEAIAC,QAAA,SAAAC,EAAAC,GAQA,MAPAnB,GAAAoB,KAAAF,EAAA,SAAAG,EAAAC,EAAAC,GACA,GAAAC,GAAAL,EAAAG,EACAE,KACAN,EAAAM,GAAAH,QACAH,GAAAI,MAGAJ,GAGAO,aAAA,SAAAC,GACA,GAAAC,EASA,OARAA,GAAA5B,EAAA6B,MAAAF,GAGAC,EAFAA,EAAAjC,OAAA,EAEA,IAAAiC,EAGAE,SAAAC,SAAAC,UAKAC,SAAA,WACA,MAAA,iEAAAC,KAAAC,UAAAC,YAIAC,SAAA,SAAAC,EAAAhB,GACA,GAAAiB,IAAA,CAEA,QAAAD,GACA,IAAA,OACA,GAAAhB,EAAA,CACA,GAAAkB,GAAA,iBACAD,GAAAC,EAAAN,KAAAZ,GAEA,KACA,KAAA,QACA,GAAAA,EAAA,CACA,GAAAmB,GAAA,oFACAF,GAAAE,EAAAP,KAAAZ,GAEA,KACA,KAAA,QACA,GAAAA,EAAA,CACAA,EAAAA,EAAAoB,QAAA,UAAA,IAAAA,QAAA,IAAA,GACA,IAAAC,GAAA,eACAJ,GAAAI,EAAAT,KAAAZ,GAEA,KACA,KAAA,WACA,GAAAA,EAAA,CACA,GAAAsB,GAAA,gBACAL,GAAAK,EAAAV,KAAAZ,GAEA,KACA,KAAA,cACA,GAAAA,EAAA,CACA,GAAAuB,GAAA,gBACAN,GAAAM,EAAAX,KAAAZ,GAEA,KACA,KAAA,OACA,GAAAA,EAAA,CACA,GAAAwB,GAAA,kCACAP,GAAAO,EAAAZ,KAAAZ,GAEA,KACA,KAAA,gBACA,GAAAA,EAAA,CACA,GAAAwB,GAAA,oCACAP,GAAAO,EAAAZ,KAAAZ,IAIA,MAAAyB,SAAAR,IAGAS,eAAA,WACA,GAAAC,GAAA,GAAAC,MACAC,EAAAF,EAAAG,UACAC,EAAAJ,EAAAK,WAAA,EACAC,EAAAN,EAAAO,aACA,OAAAH,GAAA,IAAAF,EAAA,IAAAI,MAKAxD,OAAA,2BAAA,SAAA,eAAA,uBAAA,SAAAC,EAAAyD,EAAAC,GCjJA,OACAC,SAAA,SAAAC,EAAAC,EAAAC,GACAL,EAAAE,SAAA,2BAAAC,EAAA,OACAG,MAAA,YACAF,EAAAH,EAAAtD,kBAAAyD,OAGAG,QAAA,YACAF,EAAAJ,EAAAtD,kBAAA0D,aCMA/D,OAAA,0BAAA,UAAA,SAAAkE,IACA,SAAAjE,EAAAW,EAAAmB,EAAAoC,GACA,YAUA,SAAAC,GAAAC,EAAAC,GACA3E,KAAA0E,QAAAA,EACA1E,KAAA4E,SAAAtE,EAAAoE,GAIA1E,KAAA6E,UACAC,WAAA9E,KAAA4E,SAAAnD,KAAA,sBACAsD,aAAA/E,KAAA4E,SAAAnD,KAAA,yBAEAzB,KAAA2E,QAAArE,EAAA0E,UAAAC,EAAAN,EAAA3E,KAAA6E,UACA7E,KAAAkF,UAAAD,EACAjF,KAAAmF,MAAAC,EACApF,KAAAqF,OAtBA,GAAAD,GAAA,SACAH,GACAH,WAAA,OACAC,aAAA,OACAO,YAAA,EACAC,YAAA,YAoBAd,GAAA7E,WACAyF,KAAA,WACA,GAAAG,GAAAxF,IAKA,IAJAwF,EAAAC,QAAAnF,IACAkF,EAAAE,OAAApF,IACAkF,EAAAG,SAAA,EAEA,UAAAH,EAAAd,QAAAkB,QAAA,CAIA,GADAJ,EAAAE,OAAApF,EAAA,IAAAkF,EAAAZ,SAAAiB,KAAA,QACA,IAAAL,EAAAE,OAAAzF,OACA,KAAA,IAAAsB,OAAA,yEAEA,IAAA,aAAAiE,EAAAE,OAAAG,KAAA,QACAL,EAAAE,OAAAI,GAAA,gBAAA,WACAN,EAAAO,gBAEA,CAAA,GAAA,UAAAP,EAAAE,OAAAG,KAAA,QASA,KAAA,IAAAtE,OAAA,wDAPA,IADAiE,EAAAC,QAAAnF,EAAA,cAAAkF,EAAAE,OAAAG,KAAA,QAAA,MACAL,EAAAb,QAAAe,OAAAG,KAAA,QACA,KAAA,IAAAtE,OAAA,oDAEAiE,GAAAC,QAAAK,GAAA,gBAAA,WACAN,EAAAO,iBAQAP,GAAAZ,SAAAkB,GAAA,eAAA,SAAAE,GACAA,EAAAC,iBACAT,EAAAU,UAMA,OADAV,GAAAO,SAAA,IACA,GAGAI,SAAA,WACA,GACAC,GADAZ,EAAAxF,IAOA,OAJAoG,GADA,IAAAZ,EAAAE,OAAAzF,OACAuF,EAAAE,OAAAW,GAAA,YAEAb,EAAAG,SAKAO,OAAA,WACA,GAAAV,GAAAxF,IACA,KAAAwF,EAAAE,OAAAzF,OACAuF,EAAAb,QAAA2B,KAAA,WAAAd,EAAAW,YAEAX,EAAAG,SAAAH,EAAAG,QAEAH,EAAAO,WAGAA,QAAA,WACA,GAAAP,GAAAxF,KACAuG,EAAA,EAEAf,GAAAW,YACAX,EAAAZ,SAAA4B,SAAAhB,EAAAb,QAAAY,aACAgB,EAAAf,EAAAb,QAAAG,WACAU,EAAAZ,SAAA6B,QAAA,qBAEAjB,EAAAZ,SAAA8B,YAAAlB,EAAAb,QAAAY,aACAgB,EAAAf,EAAAb,QAAAI,aACAS,EAAAZ,SAAA6B,QAAA,sBAGAjB,EAAAb,QAAAW,YACAE,EAAAZ,SAAA+B,KAAAJ,IAIAK,QAAA,WACA,GAAApB,GAAAxF,KACAuF,EAAAC,EAAAb,QAAAY,WAEAC,GAAAZ,SAAAiC,WAAA,UAAAzB,GAEAI,EAAAE,OAAAoB,IAAA,iBACAtB,EAAAC,QAAAqB,IAAA,iBACAtB,EAAAZ,SAAAkC,IAAA,gBACAtB,EAAAZ,SAAA8B,YAAAnB,KAMAjF,EAAAyG,GAAA3B,GAAA,SAAAT,GACA,MAAA3E,MAAA2B,KAAA,WACArB,EAAAmB,KAAAzB,KAAA,UAAAoF,IACA9E,EAAAmB,KAAAzB,KAAA,UAAAoF,EACA,GAAAX,GAAAzE,KAAA2E,QAKAJ,EAAAtD,OAAAmB,YC7IA/B,OAAA,uBAAA,UAAA,SAAAC,GA6BA,QAAA0G,GAAAV,GAEA,GAAAA,IAAAW,GAAAC,MAAA,MAAAZ,EAEA,IAAAa,IAAA,MAAA,SAAA,IAAA,MACAC,EAAAd,EAAAe,OAAA,GAAAC,cAAAhB,EAAAiB,OAAA,EAEA,IAAAjB,IAAAW,GAAAC,MAAA,MAAAZ,EAEA,KAAA,GAAAzF,GAAA,EAAAA,EAAAsG,EAAAlH,SAAAY,EAAA,CACA,GAAA2G,GAAAL,EAAAtG,GAAAuG,CACA,IAAAI,IAAAP,GAAAC,MAAA,MAAAM,IAMA,QAAAC,KAGA,MAFAR,GAAAC,MAAAQ,EAAAC,WAAA,GACAV,EAAAC,MAAAQ,EAAAC,WAAA,iBACA,KAAAV,EAAAC,MAAAQ,EAAAC,WAuLA,QAAAC,GAAAC,GAEA,MADA,gBAAAA,IAAA7H,KAAA8H,MAAAD,GACA7H,KA2LA,QAAA+H,GAAAC,EAAAC,EAAAlB,GACAkB,KAAA,EACAD,EAAAC,MAAAlB,GACAkB,EACAD,EAAAC,MAAAA,EAAAlB,GAEAA,IAOA,QAAAmB,GAAAC,GACA,GAAAC,KAUA,OARA9H,GAAAqB,KAAAwG,EAAA,SAAAtG,GACAA,EAAAvB,EAAA+H,UAAAxG,GACAA,EAAAvB,EAAAgI,QAAAC,YAAA1G,IAAAvB,EAAAkI,SAAA3G,IAAAA,EACAA,EAAA4G,EAAA5G,GAEA,KAAAvB,EAAAoI,QAAA7G,EAAAuG,IAAAA,EAAAO,KAAA9G,KAGAuG,EAWA,QAAAQ,GAAAC,EAAAC,EAAAC,EAAAC,GAEA,GAAAb,GAAAD,EAAAW,EAGAvI,GAAA2I,QAAAF,KAAAA,EAAAzI,EAAA2I,QAAAF,GAGA,IAAAG,GAAA,GAAAC,EAAAL,GAAA,IAAAC,CACAK,UAAAJ,EAAA,IAAA,IAAAE,GAAA,IAAAC,EAAAH,GAIA,IAAAK,KAKA,OAJA/I,GAAAqB,KAAAwG,EAAA,SAAAtH,EAAAyI,GACAD,EAAAV,KAAAW,EAAA,IAAAJ,KAGAG,EAAAE,KAAA,MAsJA,QAAAC,GAAAlD,EAAAmD,GAEAA,IAAAnJ,EAAAoJ,UAAApD,IAAA,GAEAhG,EAAAgI,QAAAC,YAAAjC,GAAAoB,EAAAC,UAEArH,EAAAqJ,SAAArD,IACAsD,IAAA,SAAAC,GACA,GAAAC,GAAAxJ,EAAAuJ,GAAAE,IAAA,oBACA,OAAAD,GAAAF,IAAAtD,IAGA0D,IAAA,SAAAH,EAAAjI,GACA,GAAAkI,GAAAxJ,EAAAuJ,GAAAE,IAAA,oBACAD,GAAAG,cAAA3D,EAAA1E,GAEAtB,EAAAuJ,GAAAE,KAAAG,oBAAAJ,MASA,QAAArB,GAAAZ,GACA,MAAAA,GAAA7E,QAAA,WAAA,SAAAmH,GAAA,MAAA,IAAAA,EAAA7I,gBAUA,QAAA8I,GAAAvJ,EAAAwJ,GACA,MAAA,gBAAAxJ,IAAAA,EAAAwD,MAAA,gBAGA,GAAAxD,EAAAwJ,EAFAxJ,EAYA,QAAAsI,GAAAL,GACA,GAAAjI,GAAAiI,CAKA,OAFAxI,GAAAgK,GAAAC,OAAA1J,KAAAA,EAAAP,EAAAgK,GAAAC,OAAA1J,IAEAuJ,EAAAvJ,EAAA,MAvqBAP,EAAAgI,SACAkC,QAAA,QAIAjC,aACAkC,WAAA,SACAC,YAAA,SACAC,aAAA,SACAC,UAAA,SACAC,YAAA,UACAC,aAAA,UACAC,cAAA,UACAC,WAAA,WAIAC,SAAA,EAGAC,kBAAA,EAGA,IAAAjE,GAAA7E,SAAA+I,cAAA,OACAzD,KA2BA0D,EAAA3I,UAAAC,UAAApB,cAAAlB,QAAA,UAAA,EAGAsH,GAAA2D,WAAArE,EAAA,cACAU,EAAA4D,gBAAAtE,EAAA,mBACAU,EAAAC,UAAAX,EAAA,aACAU,EAAA6D,gBAAAvE,EAAA,mBACAU,EAAA8D,YAAA/D,GAEA,IAAAgE,IACAJ,WAAA,gBACAK,cAAA,gBACAC,YAAA,iBACAC,iBAAA,sBACAC,aAAA,mBAIAC,EAAApE,EAAAoE,cAAAL,EAAA/D,EAAA2D,aAAA,IAKA,KAAA,GAAAxJ,KAAA6F,GACAA,EAAAqE,eAAAlK,IAAA,mBAAAvB,GAAAoH,QAAA7F,KACAvB,EAAAoH,QAAA7F,GAAA6F,EAAA7F,GAKAoF,GAAA,KAIA3G,EAAA2I,SACA+C,SAAA,OACAC,KAAA,UACAC,IAAA,WACAC,SAAA,cACAC,KAAA,yBAEAC,aAAA,gCACAC,eAAA,iCACAC,WAAA,gCACAC,YAAA,gCACAC,cAAA,kCACAC,WAAA,kCACAC,YAAA,4BACAC,cAAA,wBACAC,WAAA,iCACAC,YAAA,gCACAC,cAAA,mCACAC,YAAA,kCACAC,aAAA,+BACAC,eAAA,6BACAC,YAAA,kCACAC,aAAA,4BACAC,eAAA,4BACAC,WAAA,gCACAC,YAAA,gCACAC,cAAA,iCACAC,WAAA,kCACAC,YAAA,qCACAC,cAAA,oCAWArN,EAAAqJ,SAAA,sBAEAC,IAAA,SAAAC,GACA,MAAAvJ,GAAAuJ,GAAApI,KAAA,cAAA,GAAAmG,IAIAoC,IAAA,SAAAH,EAAA+D,GACA,GAAAhM,GAAAgM,CAEAhM,aAAAgG,KACAhG,EAAA,GAAAgG,GAAAhG,IAQA,oBAAA8F,EAAAC,WAAAyD,EAGAvB,EAAA3C,MAAAQ,EAAAC,WAAA/F,EAAAiM,WAFAhE,EAAA3C,MAAAQ,EAAAC,WAAA/F,EAAAiM,UAAA,GAKAvN,EAAAuJ,GAAApI,KAAA,YAAAG,KAOAtB,EAAAqJ,SAAAhC,WACAqC,IAAA1J,EAAAqJ,SAAA,qBAAAK,KAKA1J,EAAAyG,GAAA+G,OAAA,QAOAxN,EAAAqJ,SAAA4B,iBACA3B,IAAA,SAAAC,GACA,MAAAA,GAAA3C,MAAAQ,EAAA6D,kBAEAvB,IAAA,SAAAH,EAAAjI,GACAiI,EAAA3C,MAAAQ,EAAA6D,iBAAA3J,IASAtB,EAAAqJ,SAAA0B,YACAzB,IAAA,SAAAC,GACA,MAAAA,GAAA3C,MAAAQ,EAAA2D,aAEArB,IAAA,SAAAH,EAAAjI,GACAiI,EAAA3C,MAAAQ,EAAA2D,YAAAzJ,KAOA4H,EAAA,SACAA,EAAA,aACAA,EAAA,UACAA,EAAA,WACAA,EAAA,WACAA,EAAA,YACAA,EAAA,eACAA,EAAA,SACAA,EAAA,SACAA,EAAA,KAAA,GACAA,EAAA,KAAA,GA8BA5B,EAAAhI,WAOAqK,cAAA,SAAA3D,EAAAnF,GACA,GAAA4M,GACA,gBAAA5M,GAAAA,EAAAH,MAAA,KACAG,EAAA6M,cAAArO,MAAAwB,GACAA,EAEA4M,GAAAE,QAAA3H,GAEAsB,EAAAhI,UAAAoK,IAAAkE,MAAAlO,KAAA+N,IAQA/D,IAAA,SAAA1D,GACA,GAAAyH,GAAApO,MAAAC,UAAAuO,MAAAD,MAAAE,WAAA,GACApO,MAAAqO,OAAA/H,GACAtG,KAAAqO,OAAA/H,GAAA4H,MAAAlO,KAAA+N,GAEA/N,KAAAsG,GAAAyH,EAAAxE,KAAA,MAIAK,IAAA,SAAAtD,GACA,MAAAtG,MAAAsO,OAAAhI,GACAtG,KAAAsO,OAAAhI,GAAA4H,MAAAlO,MAEAA,KAAAsG,IAAA,GAIA+H,QAQAE,OAAA,SAAAC,GACAxO,KAAAuO,OAAAnE,EAAAoE,EAAA,QAGAC,QAAA,SAAAD,GACAxO,KAAAyO,QAAArE,EAAAoE,EAAA,QAGAE,QAAA,SAAAF,GACAxO,KAAA0O,QAAAtE,EAAAoE,EAAA,QAQAG,MAAA,SAAAC,EAAAC,GACArK,SAAAqK,IAAAA,EAAAD,GACA5O,KAAA2O,MAAAC,EAAA,IAAAC,GAIAC,MAAA,SAAAF,GACA5O,KAAA8O,MAAA1E,EAAAwE,EAAA,QAGAG,MAAA,SAAAF,GACA7O,KAAA+O,MAAA3E,EAAAyE,EAAA,QAIAG,YAAA,SAAAC,GACAjP,KAAAgP,YAAA5E,EAAA6E,EAAA,OASAL,EAAA,SAAAA,GACA5O,KAAAgK,IAAA,YAAA4E,EAAA,OAGAC,EAAA,SAAAA,GACA7O,KAAAgK,IAAA,YAAA,KAAA6E,IAQAK,UAAA,SAAAN,EAAAC,GACArK,SAAAxE,KAAAmP,cAAAnP,KAAAmP,YAAA,GACA3K,SAAAxE,KAAAoP,cAAApP,KAAAoP,YAAA,GAEA,OAAAR,GAAApK,SAAAoK,IAAA5O,KAAAmP,YAAA/E,EAAAwE,EAAA,OACA,OAAAC,GAAArK,SAAAqK,IAAA7O,KAAAoP,YAAAhF,EAAAyE,EAAA,OAEA7O,KAAAkP,UAAAlP,KAAAmP,YAAA,IAAAnP,KAAAoP,cAIAd,QACAM,EAAA,WACA,MAAA5O,MAAAmP,aAAA,GAGAN,EAAA,WACA,MAAA7O,MAAAoP,aAAA,GAGAT,MAAA,WACA,GAAAU,IAAArP,KAAA2O,OAAA,OAAA3N,MAAA,IAMA,OALAqO,GAAA,KAAAA,EAAA,GAAAC,WAAAD,EAAA,KACAA,EAAA,KAAAA,EAAA,GAAAC,WAAAD,EAAA,KAIAA,EAAA,KAAAA,EAAA,GAAAA,EAAA,GAAAA,GAGAE,SAAA,WAEA,IAAA,GADAF,IAAArP,KAAAuP,UAAA,cAAAvO,MAAA,KACAH,EAAA,EAAA,GAAAA,IAAAA,EACAwO,EAAAxO,KAAAwO,EAAAxO,GAAAyO,WAAAD,EAAAxO,IAIA,OAFAwO,GAAA,KAAAA,EAAA,GAAAjF,EAAAiF,EAAA,GAAA,QAEAA,IAMAvH,MAAA,SAAAD,GACA,GAAAG,GAAAhI,IACA6H,GAAA7E,QAAA,2BAAA,SAAA4L,EAAAtI,EAAAnF,GACA6G,EAAAiC,cAAA3D,EAAAnF,MAOA0M,SAAA,SAAA2B,GACA,GAAApH,KAEA,KAAA,GAAAvH,KAAAb,MACA,GAAAA,KAAA+L,eAAAlL,GAAA,CAEA,IAAA6G,EAAA8D,cACA,YAAA3K,GACA,YAAAA,GACA,gBAAAA,GACA,oBAAAA,GAAA,QAEA,OAAAA,EAAA,KACA2O,GAAA,UAAA3O,EACAuH,EAAAO,KAAA9H,EAAA,MAAAb,KAAAa,GAAA,OACA2O,GAAA,cAAA3O,EACAuH,EAAAO,KAAA9H,EAAA,MAAAb,KAAAa,GAAA,OAEAuH,EAAAO,KAAA9H,EAAA,IAAAb,KAAAa,GAAA,MAMA,MAAAuH,GAAAmB,KAAA,OAsFAjJ,EAAAyG,GAAAsE,WAAA/K,EAAAyG,GAAAuB,QAAA,SAAAO,EAAAC,EAAAC,EAAA0G,GACA,GAAAzH,GAAAhI,KACAgJ,EAAA,EACAf,GAAA,CAGA,mBAAAa,KACA2G,EAAA3G,EACAA,EAAAtE,QAIA,kBAAAuE,KACA0G,EAAA1G,EACAA,EAAAvE,QAIA,mBAAAqE,GAAAE,SACAA,EAAAF,EAAAE,aACAF,GAAAE,QAGA,mBAAAF,GAAAC,WACAA,EAAAD,EAAAC,eACAD,GAAAC,UAGA,mBAAAD,GAAA6G,WACAD,EAAA5G,EAAA6G,eACA7G,GAAA6G,UAGA,mBAAA7G,GAAAZ,QACAA,EAAAY,EAAAZ,YACAY,GAAAZ,OAGA,mBAAAY,GAAAG,QACAA,EAAAH,EAAAG,YACAH,GAAAG,OAIA,mBAAAF,KAAAA,EAAAxI,EAAAgK,GAAAC,OAAAyB,UACA,mBAAAjD,KAAAA,EAAAzI,EAAA2I,QAAA+C,UAEAlD,EAAAK,EAAAL,EAGA,IAAA6G,GAAA/G,EAAAC,EAAAC,EAAAC,EAAAC,GAIA4G,EAAAtP,EAAAgI,QAAA2C,SAAAvD,EAAA2D,WACAxK,EAAA+O,EAAAxG,SAAAN,EAAA,IAAAM,SAAAJ,EAAA,IAAA,CAGA,IAAA,IAAAnI,EAAA,CACA,GAAAkG,GAAA,SAAA8I,GACA7H,EAAA+B,IAAAlB,GACA4G,GAAAA,EAAAvB,MAAAlG,GACA6H,GAAAA,IAIA,OADA9H,GAAAC,EAAAC,EAAAlB,GACAiB,EAIA,GAAA8H,MAEAC,EAAA,SAAAC,GACA,GAAAC,IAAA,EAGAC,EAAA,WACAD,GAAAjI,EAAAmI,OAAArE,EAAAoE,GAEArP,EAAA,GACAmH,EAAArG,KAAA,WACA3B,KAAAkH,MAAAQ,EAAA2D,YAAAyE,EAAA9P,OAAA,OAIA,kBAAAyP,IAAAA,EAAAvB,MAAAlG,GACA,kBAAAgI,IAAAA,IAGAnP,GAAA,GAAA,GAAAP,EAAAgI,QAAA,kBAEA2H,GAAA,EACAjI,EAAAoI,KAAAtE,EAAAoE,IAGAjP,OAAAoP,WAAAH,EAAArP,GAIAmH,EAAArG,KAAA,WACAd,EAAA,IACAb,KAAAkH,MAAAQ,EAAA2D,YAAAsE,GAEArP,EAAAN,MAAA+J,IAAAlB,MAMAyH,EAAA,SAAAT,GACA7P,KAAAuQ,YACAR,EAAAF,GAOA,OAHA9H,GAAAC,EAAAC,EAAAqI,GAGAtQ,MA+DAM,EAAAgI,QAAAkI,mBAAA5H,IChqBAvI,OAAA,2BAAA,SAAA,uBAAA,SAAAkE,IACA,SAAAjE,EAAAW,EAAAmB,EAAAoC,GAcA,QAAAiM,GAAA/L,EAAAC,GACA3E,KAAA0E,QAAAA,EACA1E,KAAA4E,SAAAtE,EAAAoE,GACA1E,KAAA6E,SAAA7E,KAAA4E,SAAAnD,KAAA,mBACAzB,KAAA2E,QAAArE,EAAA0E,UAAAC,EAAAN,EAAA3E,KAAA6E,UACA7E,KAAAkF,UAAAD,EACAjF,KAAAmF,MAAAC,EACApF,KAAAqF,OAnBA,GAAAD,GAAA,UACAH,GACAM,YAAA,YACAmL,aAAA,eACAC,SAAA,EACAC,YAAA,IACAC,QAAA,sBACApK,QAAA,sBACAqK,WAAA,EAcAL,GAAA7Q,WACAyF,KAAA,WACA,GACA0L,GADAvL,EAAAxF,IAGAwF,GAAAwL,SAAAhR,KAAA4E,SAAAqM,SAAAzL,EAAAb,QAAAkM,SACArL,EAAA0L,SAAAlR,KAAA4E,SAAAqM,SAAAzL,EAAAb,QAAA8B,SACA,IAAAjB,EAAA0L,SAAAjR,SACAuF,EAAA0L,SAAAlR,KAAA4E,SAAAuM,QAAA3L,EAAAb,QAAA8B,UAGAsK,EAAAvL,EAAA0L,SAAAzP,KAAA,iBACAsP,GAAAvL,EAAAb,QAAAmM,WAEAtL,EAAA0L,SAAApL,GAAA,0BAAA,WAAAN,EAAA4L,WACA5L,EAAA0L,SAAApL,GAAA,4BAAA,WAAAN,EAAA6L,cAEA7L,EAAA0L,SAAApL,GAAA,gBAAA,WAAAN,EAAAU,WAGAV,EAAA8L,UAAA,EACA9L,EAAAZ,SAAAmF,KAAAwH,QAAA,UAGAC,SAAA,SAAAC,EAAAC,EAAAjC,GACA,GAAAjK,GAAAxF,IAKA,OAHA,kBAAAyP,KACAA,EAAA,cAEAjK,EAAAb,QAAAgM,SAMAnL,EAAAZ,SACA4B,SAAAhB,EAAAb,QAAA+L,cACA3G,KACA4H,SAAA,SACAC,OAAAH,QAGAjM,GAAAZ,SAAAyG,YAAAuG,OAAAF,GAAAlM,EAAAb,QAAAiM,YAAA,WACApL,EAAAZ,SAAAmF,KACA4H,SAAA,GACAC,OAAA,KAEApM,EAAAZ,SAAA8B,YAAAlB,EAAAb,QAAA+L,cACAjB,WAlBAA,MAsBA2B,OAAA,WACA,GACAK,GADAjM,EAAAxF,KAEA0R,EAAAlM,EAAAZ,SAAAmF,IAAA,SACA,OAAAvE,GAAA8L,UACA,GAGAG,EAAA,IAAAjM,EAAAwL,SAAA/Q,OAAA,EAAAuF,EAAAwL,SAAAjH,IAAA,UACAvE,EAAA8L,UAAA,EACA9L,EAAAwL,SACAtK,YAAAlB,EAAAb,QAAAY,aACAwE,KAAAwH,QAAA,SACA/L,EAAAZ,SACA4B,SAAAhB,EAAAb,QAAAY,aACAwE,KAAAwH,QAAA,KACA9K,QAAA,kBAEAjB,EAAAgM,SAAAC,EAAAC,IACA,IAGAL,SAAA,WACA,GAEAK,GAFAlM,EAAAxF,KACAyR,EAAAjM,EAAAZ,SAAAmF,IAAA,SAEA,OAAAvE,GAAA8L,UAIAI,EAAA,IAAAlM,EAAAwL,SAAA/Q,OAAA,EAAAuF,EAAAwL,SAAAjH,IAAA,UACAvE,EAAA8L,UAAA,EACA9L,EAAAwL,SAAAxK,SAAAhB,EAAAb,QAAAY,aACAC,EAAAZ,SACA8B,YAAAlB,EAAAb,QAAAY,aACAkB,QAAA,oBAEAjB,EAAAgM,SAAAC,EAAAC,EAAA,WACAlM,EAAAZ,SAAAmF,KAAAwH,QAAA,SACA/L,EAAAwL,SAAAjH,KAAAwH,QAAA,QAEA,IAdA,GAiBArL,OAAA,WACA,GAAAV,GAAAxF,IACAwF,GAAA8L,SACA9L,EAAA6L,WAEA7L,EAAA4L,UAIAxK,QAAA,WACA,GAAApB,GAAAxF,IAEAwF,GAAAZ,SACA8B,YAAAlB,EAAAb,QAAAY,aACAwE,KAAAwH,QAAA,KACA/L,EAAAwL,SACAtK,YAAAlB,EAAAb,QAAAY,aACAwE,KAAAwH,QAAA,KAEA/L,EAAA0L,SACApK,IAAA,2BACAA,IAAA,6BACAA,IAAA,iBAEAtB,EAAAZ,SAAAiC,WAAA,UAAAzB,KAMA9E,EAAAyG,GAAA3B,GAAA,SAAAT,GACA,MAAA3E,MAAA2B,KAAA,WACArB,EAAAmB,KAAAzB,KAAA,UAAAoF,IACA9E,EAAAmB,KAAAzB,KAAA,UAAAoF,EACA,GAAAqL,GAAAzQ,KAAA2E,QAKAJ,EAAAtD,OAAAmB,YC3KA/B,OAAA,4BAAA,UAAA,SAAAkE,IACA,SAAAjE,EAAAW,EAAAmB,EAAAoC,GAWA,QAAAqN,GAAAnN,EAAAC,GACA3E,KAAA0E,QAAAA,EACA1E,KAAA4E,SAAAtE,EAAAoE,GAEA1E,KAAA6E,SAAA7E,KAAA4E,SAAAnD,KAAA,oBACAzB,KAAA2E,QAAArE,EAAA0E,UAAAC,EAAAN,EAAA3E,KAAA6E,UACA7E,KAAAkF,UAAAD,EAEAjF,KAAAmF,MAAAC,EACApF,KAAAqF,OAlBA,GAAAD,GAAA,WACAH,GACA6M,UAAA,GACAC,YAAA,gCACAC,eAAA,mCACAC,OAAA,MAgBAJ,GAAAjS,WACAyF,KAAA,WACA,GAEA6M,GAFA1M,EAAAxF,KACAmS,EAAA3M,EAAAZ,QAQA,OALAsN,GAAAC,EAAAC,WAAAC,IAAA,SAAAC,SAEA9M,EAAA+M,eAAAJ,GACA3M,EAAAgN,UAAAL,GAEAA,EAAAxL,OAAA1G,QAAAuF,EAAAb,QAAAmN,cAEAtM,GAAAoB,WAGApB,EAAAwL,SAAA1Q,EAAAkF,EAAAb,QAAAqN,gBAAAS,OAAAjN,EAAAkN,eAAAP,IACA3M,EAAAmN,MAAArS,EAAAkF,EAAAb,QAAAoN,aAAAU,OAAAN,EAAAC,gBAEAD,GAAAS,KAAA,IAAAH,OAAAjN,EAAAmN,MAAAnN,EAAAwL,SAAAkB,KAGAW,SAAA,SAAAC,EAAAC,EAAAd,GACA,GAAA1L,GAAA,GACAyM,EAAA,IACAC,GAAA,IAAA,IAAA,IAAA,KACAC,EAAA,EACA,IAAA,IAAAH,EACA,MAAA,EAEA,IAAAD,EAAA7S,QAAA8S,EAEA,MAAAD,EAEAvM,GAAAuM,EAAAK,UAAA,EAAAJ,EAAAd,EAAAhS,QACAiT,EAAA3M,EAAA6M,YAAAJ,GACA,KAAAE,IACA3M,EAAAA,EAAA4H,MAAA,EAAA+E,GAIA,KAAA,GAAArS,GAAA,EAAAA,EAAAoS,EAAAhT,OAAAY,IACA,GAAA0F,EAAAc,OAAAd,EAAAtG,OAAA,KAAAgT,EAAApS,GAAA,CACA0F,EAAAA,EAAA4M,UAAA,EAAA5M,EAAAtG,OAAA,EACA,OAIA,MADAsG,IAAA0L,GAIAS,eAAA,SAAAP,GACA,GAAA3M,GAAAxF,KACA8S,EAAAX,EAAAkB,KAAA,KAAAC,QAAA3M,OACAqK,EAAA1Q,EAAA,QAIA,OAAA0Q,GAAArK,KAAAnB,EAAAqN,SAAAC,EAAAtN,EAAAb,QAAAmN,UAAAtM,EAAAb,QAAAsN,UAGAO,UAAA,SAAAL,GACAA,EAAAkB,KAAA,KAAA1R,KAAA,WACA,GAAA4R,GAAAjT,EAAAN,MACA2G,EAAArG,EAAAkT,KAAAD,EAAAX,SACA,KAAAjM,GAAA,WAAAA,IACA4M,EAAAE,YAKAlB,eAAA,SAAAJ,GAEA,MAAA,KAAAA,EAAAC,WAAAnS,QACAkS,EAAAuB,UAAA,UACA,GAGA,IAAAvB,EAAAC,WAAAC,IAAA,MAAApS,QAGAkS,EAAAwB,WAAAC,OAAA,WAAA,MAAA,KAAA5T,KAAA6T,WACAC,KAAA,SAAAC,MACAH,OAAA,MAAAH,UACA,IAEA,GAGA7M,QAAA,WACA,GAAApB,GAAAxF,IAEAwF,GAAAZ,SAAAiC,WAAA,UAAAzB,KAMA9E,EAAAyG,GAAA3B,GAAA,SAAAT,GACA,MAAA3E,MAAA2B,KAAA,WACArB,EAAAmB,KAAAzB,KAAA,UAAAoF,IACA9E,EAAAmB,KAAAzB,KAAA,UAAAoF,EACA,GAAAyM,GAAA7R,KAAA2E,QAKAJ,EAAAtD,OAAAmB,YAEA/B,OAAA,uBAAA,SAAA,0BAAA,yBAAA,0BAAA,4BAAA,SAAAC,EAAA0T,GC7IA,MAFAxT,SAAAC,IAAA,WAGA4E,KAAA,WAoCA,QAAA4O,KACA3T,EAAA,6BAAAyQ,QAAAzL,YAAA,IACAhF,EAAA,qBAAA4T,SAAAzN,QAAA,8BAEA,QAAA0N,KACA,GAAApD,GAAAzQ,EAAA,6BAAAmB,KAAA,iBACAyS,EAAA5T,EAAA,qBAAAmB,KAAA,iBACAsP,IAAAA,EAAAnK,UACAsN,GAAAA,EAAAtN,UA3CA,GAAAwN,GAAA9T,EAAA,kCAGAA,GAAA,iBAAAyQ,SAGAqD,EAAAC,WACAD,EAAAf,KAAA,uBAAAtC,SACAqD,EAAAf,KAAA,kBACAa,SAAArD,QAAA,sBACAlP,KAAA,WACA,GAAA4R,GAAAjT,EAAAN,MACAkU,EAAAX,EAAA9R,KAAA,kBACA6S,EAAAJ,EAAAtP,SAAAyO,KAAA,UACAkB,EAAAL,EAAAlD,SAAAqC,KAAA,UACAnC,EAAAgD,EAAAhD,QAEAqC,GAAAzN,GAAA,iBAAA,WAAAwO,EAAA7B,OAAAvB,KACAqC,EAAAzN,GAAA,mBAAA,WAAAyO,EAAA9B,OAAAvB,KACAoD,EAAAE,IAAAD,GAAA9B,OAAA,KAGA8B,EAAA9B,OAAAvB,KAIA5Q,EAAA,sBAAAyQ,QAAAzL,YAAA,IACAhF,EAAA,cAAA4T,SAAAzN,QAAA,uBAkBAuN,EAAA/P,SAAA,IAAAgQ,EAAAE;ANjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA,ADgBA;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvJA,ADwJA;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"core/modules/togglr.js","sourcesContent":["/* Extensions to existing objects/javascript built-in stuff */\r\n\r\n// Array.contains and String.contains helper methods - added directly to objects\r\nArray.prototype.contains = function (a) {\r\n var b = this.length;\r\n while (b--) {\r\n if (this[b] === a) return true;\r\n }\r\n return false;\r\n}\r\nif (typeof String.prototype.contains === 'undefined') {\r\n String.prototype.contains = function (it) { return this.indexOf(it) != -1; };\r\n}\r\n\r\n// Return helper functions\r\ndefine('core/global/helpers',[\"jquery\", \"underscore\"], function($, _) {\r\n console.log('global/helpers');\r\n return {\r\n //************** CONVERT STRING TO FUNCTION ***********\r\n // get a function from the string of the function name\r\n // used so we can have namespaced functions defined as callbacks in string html attributes\r\n // e.g.
\r\n getFuncFromString: function(fnName) {\r\n var temp, i, il, func;\r\n\r\n if (typeof (fnName) !== \"function\") {\r\n // split function name into pieces\r\n temp = fnName.split('.');\r\n il = temp.length;\r\n\r\n // loop through\r\n for (i = 0; i < il; i++) {\r\n if (func == null) {\r\n func = window[temp[i]];\r\n continue;\r\n }\r\n func = func[temp[i]];\r\n }\r\n } else {\r\n func = fnName;\r\n }\r\n\r\n return func;\r\n },\r\n\r\n // takes in a string or bool value and returns a boolean\r\n toBool: function(val) {\r\n if (_.isBoolean(val)) {\r\n return val;\r\n } else if (_.isString(val)) {\r\n return (val.toLowerCase() === \"true\");\r\n } else {\r\n throw new Error(\"The toBool() function only works with strings and booleans.\");\r\n }\r\n },\r\n\r\n mapKeys: function(data, map) {\r\n _.each(data, function(value, key, list) {\r\n var newKey = map[key];\r\n if (newKey) {\r\n data[newKey] = value;\r\n delete data[key];\r\n }\r\n });\r\n return data;\r\n },\r\n\r\n constructUrl: function(params) {\r\n var newurl;\r\n newurl = $.param(params);\r\n if (newurl.length > 0) {\r\n // Create a new query string\r\n newurl = '?' + newurl;\r\n } else {\r\n // Clear the query string\r\n newurl = document.location.pathname;\r\n }\r\n return newurl;\r\n },\r\n\r\n isMobile: function () {\r\n return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));\r\n },\r\n\r\n\r\n validate: function (validationType, value) { //find a way to reference this without it being in the component if we care enough\r\n var isValid = true; //we could probably use http://caniuse.com/#feat=input-pattern instead of doing this validate method\r\n\r\n switch (validationType) {\r\n case \"name\":\r\n if (value) { //empty value is valid\r\n var nameRegex = /^[a-zA-Z \\-]+$/i;\r\n isValid = nameRegex.test(value);\r\n }\r\n break;\r\n case \"email\": //everything i've read says to let the browser do this instead of using some regex\r\n if (value) { //empty value is valid\r\n var emailRegex = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\r\n isValid = emailRegex.test(value);\r\n }\r\n break;\r\n case \"phone\":\r\n if (value) { //empty value is valid\r\n value = value.replace(/[.()-]/g, '').replace(/ /, '');\r\n var phoneRegex = /^[0-9]{7,25}$/;\r\n isValid = phoneRegex.test(value);\r\n }\r\n break;\r\n case \"passport\":\r\n if (value) { //empty value is valid\r\n var passportRegex = /^[\\w\\d]{1,12}$/;\r\n isValid = passportRegex.test(value);\r\n }\r\n break;\r\n case \"countryCode\":\r\n if (value) { //empty value is valid\n var countryCodeRegex = /^[a-zA-Z]{3,}$/;\r\n isValid = countryCodeRegex.test(value);\r\n }\r\n break;\r\n case (\"date\"): // Checks html5 date (YYYY-MM-DD)\r\n if (value) { //empty value is valid\r\n var expirationDateRegex = /^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/;\r\n isValid = expirationDateRegex.test(value);\r\n }\r\n break;\r\n case (\"dateTextInput\"): // Checks date (MM/DD/YYYY)\r\n if (value) { //empty value is valid\r\n var expirationDateRegex = /^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$/;\r\n isValid = expirationDateRegex.test(value);\r\n }\r\n break;\r\n }\r\n return Boolean(isValid);\r\n },\r\n\r\n getCurrentDate: function () {\r\n var d = new Date();\r\n var curr_date = d.getDate();\r\n var curr_month = d.getMonth() + 1; //Months are zero based\r\n var curr_year = d.getFullYear();\r\n return curr_month + \"/\" + curr_date + \"/\" + curr_year;\r\n }\r\n };\r\n});\r\n\n","define('core/modules/breakdance',[\"jquery\", \"libs/enquire\", \"core/global/helpers\"], function ($, enquire, helpers) {\r\n return {\r\n register: function (bp, matchCallback, unmatchCallback) {\r\n enquire.register(\"screen and (max-width : \" + bp + \"px)\", { \r\n match: function () {\r\n matchCallback = helpers.getFuncFromString(matchCallback);\r\n matchCallback();\r\n },\r\n unmatch: function () {\r\n unmatchCallback = helpers.getFuncFromString(unmatchCallback);\r\n unmatchCallback();\r\n } \r\n });\r\n }\r\n }\r\n});\n","/* \r\n * TOGGLR\r\n * a plugin for toggling things\r\n * ============================\r\n *\r\n * When the user clicks an element, Togglr will update the text on the\r\n * element and toggle an \"active\" class. If the element is a label for\r\n * a radio button or checkbox, Togglr will also toggle the value of\r\n * that radio button or checkbox.\r\n * \r\n * Other plugins can hook into the togglr-activate and togglr-deactivate\r\n * events.\r\n *\r\n */\r\n\r\n; define('core/ef_plugins/togglr',[\"jquery\"], function (jQuery) {\r\n (function ($, window, document, undefined) {\r\n \"use strict\";\r\n var pluginName = 'togglr',\r\n defaults = {\r\n activeText: 'less',\r\n inactiveText: 'more',\r\n toggleText: true, // Toggle between the active text and inactive when the trigger is clicked? \r\n activeClass: 'is-active' // Class applied to the element when togglr is active.\r\n };\r\n\r\n // ReSharper disable once InconsistentNaming\r\n function Togglr(element, options) {\r\n this.element = element;\r\n this.$element = $(element);\r\n\r\n // We're not following the usual data-plugin-options attribute here because in some of our views,\r\n // it's not possible to generate JSON in the required format.\r\n this.metadata = {\r\n activeText: this.$element.data('togglr-active-text'),\r\n inactiveText: this.$element.data('togglr-inactive-text'),\r\n };\r\n this.options = $.extend({}, defaults, options, this.metadata);\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n this.init();\r\n }\r\n\r\n Togglr.prototype = {\r\n init: function () {\r\n var plugin = this;\r\n plugin.$radios = $(); // If plugin.options.input is a radio button, store all the radio buttons with the same name attribute.\r\n plugin.$input = $();\r\n plugin._active = false; // Set inactive state as default. External JS should check isActive(), not _active.\r\n\r\n if (plugin.element.tagName === 'LABEL') {\r\n /* If the element is a label, the open/close state is stored in the\r\n ** associated input's \"checked\" attribute. */\r\n plugin.$input = $('#' + plugin.$element.attr('for'));\r\n if (plugin.$input.length === 0) {\r\n throw new Error(\"Togglr: The label must have a 'for' attribute and an associated input.\");\r\n }\r\n if (plugin.$input.attr('type') === 'checkbox') {\r\n plugin.$input.on('change.togglr', function () {\r\n plugin._update();\r\n });\r\n } else if (plugin.$input.attr('type') === 'radio') {\r\n plugin.$radios = $('input[name=' + plugin.$input.attr('name') + ']');\r\n if (!plugin.options.$input.attr('name')) {\r\n throw new Error(\"Togglr: Radio inputs must have 'name' attributes.\");\r\n }\r\n plugin.$radios.on('change.togglr', function () {\r\n plugin._update();\r\n });\r\n } else {\r\n throw new Error(\"Togglr: Only checkbox and radio inputs are supported.\");\r\n }\r\n\r\n } else {\r\n // If the trigger is not a label, the open/close state is stored in a variable.\r\n plugin.$element.on('click.togglr', function (event) {\r\n event.preventDefault();\r\n plugin.toggle();\r\n });\r\n }\r\n\r\n // Also update on init in case the trigger text in the HTML isn't right.\r\n plugin._update(true);\r\n return true; // Init was successful!\r\n },\r\n\r\n isActive: function () {\r\n var plugin = this,\r\n active;\r\n if (plugin.$input.length === 1) {\r\n active = plugin.$input.is(':checked');\r\n } else {\r\n active = plugin._active;\r\n }\r\n return active;\r\n },\r\n\r\n toggle: function() {\r\n var plugin = this;\r\n if (plugin.$input.length === 1) {\r\n plugin.options.prop('checked', !plugin.isActive());\r\n } else {\r\n plugin._active = !plugin._active;\r\n }\r\n plugin._update();\r\n },\r\n\r\n _update: function () {\r\n var plugin = this,\r\n newText = '';\r\n\r\n if (plugin.isActive()) {\r\n plugin.$element.addClass(plugin.options.activeClass);\r\n newText = plugin.options.activeText;\r\n plugin.$element.trigger('togglr-activate');\r\n } else {\r\n plugin.$element.removeClass(plugin.options.activeClass);\r\n newText = plugin.options.inactiveText;\r\n plugin.$element.trigger('togglr-deactivate');\r\n }\r\n \r\n if (plugin.options.toggleText) {\r\n plugin.$element.text(newText);\r\n }\r\n },\r\n\r\n destroy: function () {\r\n var plugin = this,\r\n activeClass = plugin.options.activeClass;\r\n // Remove the data\r\n plugin.$element.removeData('plugin_' + pluginName);\r\n // Unbind listeners\r\n plugin.$input.off('change.togglr');\r\n plugin.$radios.off('change.togglr');\r\n plugin.$element.off('click.togglr');\r\n plugin.$element.removeClass(activeClass);\r\n }\r\n\r\n };\r\n\r\n // Turn this into a jquery plugin & prevent multiple instantiations\r\n $.fn[pluginName] = function (options) {\r\n return this.each(function () {\r\n if (!$.data(this, 'plugin_' + pluginName)) {\r\n $.data(this, 'plugin_' + pluginName,\r\n new Togglr(this, options));\r\n }\r\n });\r\n };\r\n\r\n })(jQuery, window, document);\r\n});\n","/*!\r\n * jQuery Transit - CSS3 transitions and transformations\r\n * (c) 2011-2012 Rico Sta. Cruz \r\n * MIT Licensed.\r\n *\r\n * http://ricostacruz.com/jquery.transit\r\n * http://github.com/rstacruz/jquery.transit\r\n */\r\n\r\ndefine('libs/jquery.transit',[\"jquery\"], function ($) {\r\n $.transit = {\r\n version: \"0.9.9\",\r\n\r\n // Map of $.css() keys to values for 'transitionProperty'.\r\n // See https://developer.mozilla.org/en/CSS/CSS_transitions#Properties_that_can_be_animated\r\n propertyMap: {\r\n marginLeft: 'margin',\r\n marginRight: 'margin',\r\n marginBottom: 'margin',\r\n marginTop: 'margin',\r\n paddingLeft: 'padding',\r\n paddingRight: 'padding',\r\n paddingBottom: 'padding',\r\n paddingTop: 'padding'\r\n },\r\n\r\n // Will simply transition \"instantly\" if false\r\n enabled: true,\r\n\r\n // Set this to false if you don't want to use the transition end property.\r\n useTransitionEnd: false\r\n };\r\n\r\n var div = document.createElement('div');\r\n var support = {};\r\n\r\n // Helper function to get the proper vendor property name.\r\n // (`transition` => `WebkitTransition`)\r\n function getVendorPropertyName(prop) {\r\n // Handle unprefixed versions (FF16+, for example)\r\n if (prop in div.style) return prop;\r\n\r\n var prefixes = ['Moz', 'Webkit', 'O', 'ms'];\r\n var prop_ = prop.charAt(0).toUpperCase() + prop.substr(1);\r\n\r\n if (prop in div.style) { return prop; }\r\n\r\n for (var i = 0; i < prefixes.length; ++i) {\r\n var vendorProp = prefixes[i] + prop_;\r\n if (vendorProp in div.style) { return vendorProp; }\r\n }\r\n }\r\n\r\n // Helper function to check if transform3D is supported.\r\n // Should return true for Webkits and Firefox 10+.\r\n function checkTransform3dSupport() {\r\n div.style[support.transform] = '';\r\n div.style[support.transform] = 'rotateY(90deg)';\r\n return div.style[support.transform] !== '';\r\n }\r\n\r\n var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;\r\n\r\n // Check for the browser's transitions support.\r\n support.transition = getVendorPropertyName('transition');\r\n support.transitionDelay = getVendorPropertyName('transitionDelay');\r\n support.transform = getVendorPropertyName('transform');\r\n support.transformOrigin = getVendorPropertyName('transformOrigin');\r\n support.transform3d = checkTransform3dSupport();\r\n\r\n var eventNames = {\r\n 'transition': 'transitionEnd',\r\n 'MozTransition': 'transitionend',\r\n 'OTransition': 'oTransitionEnd',\r\n 'WebkitTransition': 'webkitTransitionEnd',\r\n 'msTransition': 'MSTransitionEnd'\r\n };\r\n\r\n // Detect the 'transitionend' event needed.\r\n var transitionEnd = support.transitionEnd = eventNames[support.transition] || null;\r\n\r\n // Populate jQuery's `$.support` with the vendor prefixes we know.\r\n // As per [jQuery's cssHooks documentation](http://api.jquery.com/jQuery.cssHooks/),\r\n // we set $.support.transition to a string of the actual property name used.\r\n for (var key in support) {\r\n if (support.hasOwnProperty(key) && typeof $.support[key] === 'undefined') {\r\n $.support[key] = support[key];\r\n }\r\n }\r\n\r\n // Avoid memory leak in IE.\r\n div = null;\r\n\r\n // ## $.cssEase\r\n // List of easing aliases that you can use with `$.fn.transition`.\r\n $.cssEase = {\r\n '_default': 'ease',\r\n 'in': 'ease-in',\r\n 'out': 'ease-out',\r\n 'in-out': 'ease-in-out',\r\n 'snap': 'cubic-bezier(0,1,.5,1)',\r\n // Penner equations\r\n 'easeOutCubic': 'cubic-bezier(.215,.61,.355,1)',\r\n 'easeInOutCubic': 'cubic-bezier(.645,.045,.355,1)',\r\n 'easeInCirc': 'cubic-bezier(.6,.04,.98,.335)',\r\n 'easeOutCirc': 'cubic-bezier(.075,.82,.165,1)',\r\n 'easeInOutCirc': 'cubic-bezier(.785,.135,.15,.86)',\r\n 'easeInExpo': 'cubic-bezier(.95,.05,.795,.035)',\r\n 'easeOutExpo': 'cubic-bezier(.19,1,.22,1)',\r\n 'easeInOutExpo': 'cubic-bezier(1,0,0,1)',\r\n 'easeInQuad': 'cubic-bezier(.55,.085,.68,.53)',\r\n 'easeOutQuad': 'cubic-bezier(.25,.46,.45,.94)',\r\n 'easeInOutQuad': 'cubic-bezier(.455,.03,.515,.955)',\r\n 'easeInQuart': 'cubic-bezier(.895,.03,.685,.22)',\r\n 'easeOutQuart': 'cubic-bezier(.165,.84,.44,1)',\r\n 'easeInOutQuart': 'cubic-bezier(.77,0,.175,1)',\r\n 'easeInQuint': 'cubic-bezier(.755,.05,.855,.06)',\r\n 'easeOutQuint': 'cubic-bezier(.23,1,.32,1)',\r\n 'easeInOutQuint': 'cubic-bezier(.86,0,.07,1)',\r\n 'easeInSine': 'cubic-bezier(.47,0,.745,.715)',\r\n 'easeOutSine': 'cubic-bezier(.39,.575,.565,1)',\r\n 'easeInOutSine': 'cubic-bezier(.445,.05,.55,.95)',\r\n 'easeInBack': 'cubic-bezier(.6,-.28,.735,.045)',\r\n 'easeOutBack': 'cubic-bezier(.175, .885,.32,1.275)',\r\n 'easeInOutBack': 'cubic-bezier(.68,-.55,.265,1.55)'\r\n };\r\n\r\n // ## 'transform' CSS hook\r\n // Allows you to use the `transform` property in CSS.\r\n //\r\n // $(\"#hello\").css({ transform: \"rotate(90deg)\" });\r\n //\r\n // $(\"#hello\").css('transform');\r\n // //=> { rotate: '90deg' }\r\n //\r\n $.cssHooks['transit:transform'] = {\r\n // The getter returns a `Transform` object.\r\n get: function (elem) {\r\n return $(elem).data('transform') || new Transform();\r\n },\r\n\r\n // The setter accepts a `Transform` object or a string.\r\n set: function (elem, v) {\r\n var value = v;\r\n\r\n if (!(value instanceof Transform)) {\r\n value = new Transform(value);\r\n }\r\n\r\n // We've seen the 3D version of Scale() not work in Chrome when the\r\n // element being scaled extends outside of the viewport. Thus, we're\r\n // forcing Chrome to not use the 3d transforms as well. Not sure if\r\n // translate is affectede, but not risking it. Detection code from\r\n // http://davidwalsh.name/detecting-google-chrome-javascript\r\n if (support.transform === 'WebkitTransform' && !isChrome) {\r\n elem.style[support.transform] = value.toString(true);\r\n } else {\r\n elem.style[support.transform] = value.toString();\r\n }\r\n\r\n $(elem).data('transform', value);\r\n }\r\n };\r\n\r\n // Add a CSS hook for `.css({ transform: '...' })`.\r\n // In jQuery 1.8+, this will intentionally override the default `transform`\r\n // CSS hook so it'll play well with Transit. (see issue #62)\r\n $.cssHooks.transform = {\r\n set: $.cssHooks['transit:transform'].set\r\n };\r\n\r\n // jQuery 1.8+ supports prefix-free transitions, so these polyfills will not\r\n // be necessary.\r\n if ($.fn.jquery < \"1.8\") {\r\n // ## 'transformOrigin' CSS hook\r\n // Allows the use for `transformOrigin` to define where scaling and rotation\r\n // is pivoted.\r\n //\r\n // $(\"#hello\").css({ transformOrigin: '0 0' });\r\n //\r\n $.cssHooks.transformOrigin = {\r\n get: function (elem) {\r\n return elem.style[support.transformOrigin];\r\n },\r\n set: function (elem, value) {\r\n elem.style[support.transformOrigin] = value;\r\n }\r\n };\r\n\r\n // ## 'transition' CSS hook\r\n // Allows you to use the `transition` property in CSS.\r\n //\r\n // $(\"#hello\").css({ transition: 'all 0 ease 0' });\r\n //\r\n $.cssHooks.transition = {\r\n get: function (elem) {\r\n return elem.style[support.transition];\r\n },\r\n set: function (elem, value) {\r\n elem.style[support.transition] = value;\r\n }\r\n };\r\n }\r\n\r\n // ## Other CSS hooks\r\n // Allows you to rotate, scale and translate.\r\n registerCssHook('scale');\r\n registerCssHook('translate');\r\n registerCssHook('rotate');\r\n registerCssHook('rotateX');\r\n registerCssHook('rotateY');\r\n registerCssHook('rotate3d');\r\n registerCssHook('perspective');\r\n registerCssHook('skewX');\r\n registerCssHook('skewY');\r\n registerCssHook('x', true);\r\n registerCssHook('y', true);\r\n\r\n // ## Transform class\r\n // This is the main class of a transformation property that powers\r\n // `$.fn.css({ transform: '...' })`.\r\n //\r\n // This is, in essence, a dictionary object with key/values as `-transform`\r\n // properties.\r\n //\r\n // var t = new Transform(\"rotate(90) scale(4)\");\r\n //\r\n // t.rotate //=> \"90deg\"\r\n // t.scale //=> \"4,4\"\r\n //\r\n // Setters are accounted for.\r\n //\r\n // t.set('rotate', 4)\r\n // t.rotate //=> \"4deg\"\r\n //\r\n // Convert it to a CSS string using the `toString()` and `toString(true)` (for WebKit)\r\n // functions.\r\n //\r\n // t.toString() //=> \"rotate(90deg) scale(4,4)\"\r\n // t.toString(true) //=> \"rotate(90deg) scale3d(4,4,0)\" (WebKit version)\r\n //\r\n function Transform(str) {\r\n if (typeof str === 'string') { this.parse(str); }\r\n return this;\r\n }\r\n\r\n Transform.prototype = {\r\n // ### setFromString()\r\n // Sets a property from a string.\r\n //\r\n // t.setFromString('scale', '2,4');\r\n // // Same as set('scale', '2', '4');\r\n //\r\n setFromString: function (prop, val) {\r\n var args =\r\n (typeof val === 'string') ? val.split(',') :\r\n (val.constructor === Array) ? val :\r\n [val];\r\n\r\n args.unshift(prop);\r\n\r\n Transform.prototype.set.apply(this, args);\r\n },\r\n\r\n // ### set()\r\n // Sets a property.\r\n //\r\n // t.set('scale', 2, 4);\r\n //\r\n set: function (prop) {\r\n var args = Array.prototype.slice.apply(arguments, [1]);\r\n if (this.setter[prop]) {\r\n this.setter[prop].apply(this, args);\r\n } else {\r\n this[prop] = args.join(',');\r\n }\r\n },\r\n\r\n get: function (prop) {\r\n if (this.getter[prop]) {\r\n return this.getter[prop].apply(this);\r\n } else {\r\n return this[prop] || 0;\r\n }\r\n },\r\n\r\n setter: {\r\n // ### rotate\r\n //\r\n // .css({ rotate: 30 })\r\n // .css({ rotate: \"30\" })\r\n // .css({ rotate: \"30deg\" })\r\n // .css({ rotate: \"30deg\" })\r\n //\r\n rotate: function (theta) {\r\n this.rotate = unit(theta, 'deg');\r\n },\r\n\r\n rotateX: function (theta) {\r\n this.rotateX = unit(theta, 'deg');\r\n },\r\n\r\n rotateY: function (theta) {\r\n this.rotateY = unit(theta, 'deg');\r\n },\r\n\r\n // ### scale\r\n //\r\n // .css({ scale: 9 }) //=> \"scale(9,9)\"\r\n // .css({ scale: '3,2' }) //=> \"scale(3,2)\"\r\n //\r\n scale: function (x, y) {\r\n if (y === undefined) { y = x; }\r\n this.scale = x + \",\" + y;\r\n },\r\n\r\n // ### skewX + skewY\r\n skewX: function (x) {\r\n this.skewX = unit(x, 'deg');\r\n },\r\n\r\n skewY: function (y) {\r\n this.skewY = unit(y, 'deg');\r\n },\r\n\r\n // ### perspectvie\r\n perspective: function (dist) {\r\n this.perspective = unit(dist, 'px');\r\n },\r\n\r\n // ### x / y\r\n // Translations. Notice how this keeps the other value.\r\n //\r\n // .css({ x: 4 }) //=> \"translate(4px, 0)\"\r\n // .css({ y: 10 }) //=> \"translate(4px, 10px)\"\r\n //\r\n x: function (x) {\r\n this.set('translate', x, null);\r\n },\r\n\r\n y: function (y) {\r\n this.set('translate', null, y);\r\n },\r\n\r\n // ### translate\r\n // Notice how this keeps the other value.\r\n //\r\n // .css({ translate: '2, 5' }) //=> \"translate(2px, 5px)\"\r\n //\r\n translate: function (x, y) {\r\n if (this._translateX === undefined) { this._translateX = 0; }\r\n if (this._translateY === undefined) { this._translateY = 0; }\r\n\r\n if (x !== null && x !== undefined) { this._translateX = unit(x, 'px'); }\r\n if (y !== null && y !== undefined) { this._translateY = unit(y, 'px'); }\r\n\r\n this.translate = this._translateX + \",\" + this._translateY;\r\n }\r\n },\r\n\r\n getter: {\r\n x: function () {\r\n return this._translateX || 0;\r\n },\r\n\r\n y: function () {\r\n return this._translateY || 0;\r\n },\r\n\r\n scale: function () {\r\n var s = (this.scale || \"1,1\").split(',');\r\n if (s[0]) { s[0] = parseFloat(s[0]); }\r\n if (s[1]) { s[1] = parseFloat(s[1]); }\r\n\r\n // \"2.5,2.5\" => 2.5\r\n // \"2.5,1\" => [2.5,1]\r\n return (s[0] === s[1]) ? s[0] : s;\r\n },\r\n\r\n rotate3d: function () {\r\n var s = (this.rotate3d || \"0,0,0,0deg\").split(',');\r\n for (var i = 0; i <= 3; ++i) {\r\n if (s[i]) { s[i] = parseFloat(s[i]); }\r\n }\r\n if (s[3]) { s[3] = unit(s[3], 'deg'); }\r\n\r\n return s;\r\n }\r\n },\r\n\r\n // ### parse()\r\n // Parses from a string. Called on constructor.\r\n parse: function (str) {\r\n var self = this;\r\n str.replace(/([a-zA-Z0-9]+)\\((.*?)\\)/g, function (x, prop, val) {\r\n self.setFromString(prop, val);\r\n });\r\n },\r\n\r\n // ### toString()\r\n // Converts to a `transition` CSS property string. If `use3d` is given,\r\n // it converts to a `-webkit-transition` CSS property string instead.\r\n toString: function (use3d) {\r\n var re = [];\r\n\r\n for (var i in this) {\r\n if (this.hasOwnProperty(i)) {\r\n // Don't use 3D transformations if the browser can't support it.\r\n if ((!support.transform3d) && (\r\n (i === 'rotateX') ||\r\n (i === 'rotateY') ||\r\n (i === 'perspective') ||\r\n (i === 'transformOrigin'))) { continue; }\r\n\r\n if (i[0] !== '_') {\r\n if (use3d && (i === 'scale')) {\r\n re.push(i + \"3d(\" + this[i] + \",1)\");\r\n } else if (use3d && (i === 'translate')) {\r\n re.push(i + \"3d(\" + this[i] + \",0)\");\r\n } else {\r\n re.push(i + \"(\" + this[i] + \")\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n return re.join(\" \");\r\n }\r\n };\r\n\r\n function callOrQueue(self, queue, fn) {\r\n if (queue === true) {\r\n self.queue(fn);\r\n } else if (queue) {\r\n self.queue(queue, fn);\r\n } else {\r\n fn();\r\n }\r\n }\r\n\r\n // ### getProperties(dict)\r\n // Returns properties (for `transition-property`) for dictionary `props`. The\r\n // value of `props` is what you would expect in `$.css(...)`.\r\n function getProperties(props) {\r\n var re = [];\r\n\r\n $.each(props, function (key) {\r\n key = $.camelCase(key); // Convert \"text-align\" => \"textAlign\"\r\n key = $.transit.propertyMap[key] || $.cssProps[key] || key;\r\n key = uncamel(key); // Convert back to dasherized\r\n\r\n if ($.inArray(key, re) === -1) { re.push(key); }\r\n });\r\n\r\n return re;\r\n }\r\n\r\n // ### getTransition()\r\n // Returns the transition string to be used for the `transition` CSS property.\r\n //\r\n // Example:\r\n //\r\n // getTransition({ opacity: 1, rotate: 30 }, 500, 'ease');\r\n // //=> 'opacity 500ms ease, -webkit-transform 500ms ease'\r\n //\r\n function getTransition(properties, duration, easing, delay) {\r\n // Get the CSS properties needed.\r\n var props = getProperties(properties);\r\n\r\n // Account for aliases (`in` => `ease-in`).\r\n if ($.cssEase[easing]) { easing = $.cssEase[easing]; }\r\n\r\n // Build the duration/easing/delay attributes for it.\r\n var attribs = '' + toMS(duration) + ' ' + easing;\r\n if (parseInt(delay, 10) > 0) { attribs += ' ' + toMS(delay); }\r\n\r\n // For more properties, add them this way:\r\n // \"margin 200ms ease, padding 200ms ease, ...\"\r\n var transitions = [];\r\n $.each(props, function (i, name) {\r\n transitions.push(name + ' ' + attribs);\r\n });\r\n\r\n return transitions.join(', ');\r\n }\r\n\r\n // ## $.fn.transition\r\n // Works like $.fn.animate(), but uses CSS transitions.\r\n //\r\n // $(\"...\").transition({ opacity: 0.1, scale: 0.3 });\r\n //\r\n // // Specific duration\r\n // $(\"...\").transition({ opacity: 0.1, scale: 0.3 }, 500);\r\n //\r\n // // With duration and easing\r\n // $(\"...\").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in');\r\n //\r\n // // With callback\r\n // $(\"...\").transition({ opacity: 0.1, scale: 0.3 }, function() { ... });\r\n //\r\n // // With everything\r\n // $(\"...\").transition({ opacity: 0.1, scale: 0.3 }, 500, 'in', function() { ... });\r\n //\r\n // // Alternate syntax\r\n // $(\"...\").transition({\r\n // opacity: 0.1,\r\n // duration: 200,\r\n // delay: 40,\r\n // easing: 'in',\r\n // complete: function() { /* ... */ }\r\n // });\r\n //\r\n $.fn.transition = $.fn.transit = function (properties, duration, easing, callback) {\r\n var self = this;\r\n var delay = 0;\r\n var queue = true;\r\n\r\n // Account for `.transition(properties, callback)`.\r\n if (typeof duration === 'function') {\r\n callback = duration;\r\n duration = undefined;\r\n }\r\n\r\n // Account for `.transition(properties, duration, callback)`.\r\n if (typeof easing === 'function') {\r\n callback = easing;\r\n easing = undefined;\r\n }\r\n\r\n // Alternate syntax.\r\n if (typeof properties.easing !== 'undefined') {\r\n easing = properties.easing;\r\n delete properties.easing;\r\n }\r\n\r\n if (typeof properties.duration !== 'undefined') {\r\n duration = properties.duration;\r\n delete properties.duration;\r\n }\r\n\r\n if (typeof properties.complete !== 'undefined') {\r\n callback = properties.complete;\r\n delete properties.complete;\r\n }\r\n\r\n if (typeof properties.queue !== 'undefined') {\r\n queue = properties.queue;\r\n delete properties.queue;\r\n }\r\n\r\n if (typeof properties.delay !== 'undefined') {\r\n delay = properties.delay;\r\n delete properties.delay;\r\n }\r\n\r\n // Set defaults. (`400` duration, `ease` easing)\r\n if (typeof duration === 'undefined') { duration = $.fx.speeds._default; }\r\n if (typeof easing === 'undefined') { easing = $.cssEase._default; }\r\n\r\n duration = toMS(duration);\r\n\r\n // Build the `transition` property.\r\n var transitionValue = getTransition(properties, duration, easing, delay);\r\n\r\n // Compute delay until callback.\r\n // If this becomes 0, don't bother setting the transition property.\r\n var work = $.transit.enabled && support.transition;\r\n var i = work ? (parseInt(duration, 10) + parseInt(delay, 10)) : 0;\r\n\r\n // If there's nothing to do...\r\n if (i === 0) {\r\n var fn = function (next) {\r\n self.css(properties);\r\n if (callback) { callback.apply(self); }\r\n if (next) { next(); }\r\n };\r\n\r\n callOrQueue(self, queue, fn);\r\n return self;\r\n }\r\n\r\n // Save the old transitions of each element so we can restore it later.\r\n var oldTransitions = {};\r\n\r\n var run = function (nextCall) {\r\n var bound = false;\r\n\r\n // Prepare the callback.\r\n var cb = function () {\r\n if (bound) { self.unbind(transitionEnd, cb); }\r\n\r\n if (i > 0) {\r\n self.each(function () {\r\n this.style[support.transition] = (oldTransitions[this] || null);\r\n });\r\n }\r\n\r\n if (typeof callback === 'function') { callback.apply(self); }\r\n if (typeof nextCall === 'function') { nextCall(); }\r\n };\r\n\r\n if ((i > 0) && (transitionEnd) && ($.transit.useTransitionEnd)) {\r\n // Use the 'transitionend' event if it's available.\r\n bound = true;\r\n self.bind(transitionEnd, cb);\r\n } else {\r\n // Fallback to timers if the 'transitionend' event isn't supported.\r\n window.setTimeout(cb, i);\r\n }\r\n\r\n // Apply transitions.\r\n self.each(function () {\r\n if (i > 0) {\r\n this.style[support.transition] = transitionValue;\r\n }\r\n $(this).css(properties);\r\n });\r\n };\r\n\r\n // Defer running. This allows the browser to paint any pending CSS it hasn't\r\n // painted yet before doing the transitions.\r\n var deferredRun = function (next) {\r\n this.offsetWidth; // force a repaint\r\n run(next);\r\n };\r\n\r\n // Use jQuery's fx queue.\r\n callOrQueue(self, queue, deferredRun);\r\n\r\n // Chainability.\r\n return this;\r\n };\r\n\r\n function registerCssHook(prop, isPixels) {\r\n // For certain properties, the 'px' should not be implied.\r\n if (!isPixels) { $.cssNumber[prop] = true; }\r\n\r\n $.transit.propertyMap[prop] = support.transform;\r\n\r\n $.cssHooks[prop] = {\r\n get: function (elem) {\r\n var t = $(elem).css('transit:transform');\r\n return t.get(prop);\r\n },\r\n\r\n set: function (elem, value) {\r\n var t = $(elem).css('transit:transform');\r\n t.setFromString(prop, value);\r\n\r\n $(elem).css({ 'transit:transform': t });\r\n }\r\n };\r\n\r\n }\r\n\r\n // ### uncamel(str)\r\n // Converts a camelcase string to a dasherized string.\r\n // (`marginLeft` => `margin-left`)\r\n function uncamel(str) {\r\n return str.replace(/([A-Z])/g, function (letter) { return '-' + letter.toLowerCase(); });\r\n }\r\n\r\n // ### unit(number, unit)\r\n // Ensures that number `number` has a unit. If no unit is found, assume the\r\n // default is `unit`.\r\n //\r\n // unit(2, 'px') //=> \"2px\"\r\n // unit(\"30deg\", 'rad') //=> \"30deg\"\r\n //\r\n function unit(i, units) {\r\n if ((typeof i === \"string\") && (!i.match(/^[\\-0-9\\.]+$/))) {\r\n return i;\r\n } else {\r\n return \"\" + i + units;\r\n }\r\n }\r\n\r\n // ### toMS(duration)\r\n // Converts given `duration` to a millisecond string.\r\n //\r\n // toMS('fast') //=> '400ms'\r\n // toMS(10) //=> '10ms'\r\n //\r\n function toMS(duration) {\r\n var i = duration;\r\n\r\n // Allow for string durations like 'fast'.\r\n if ($.fx.speeds[i]) { i = $.fx.speeds[i]; }\r\n\r\n return unit(i, 'ms');\r\n }\r\n\r\n // Export some functions for testable-ness.\r\n $.transit.getTransitionValue = getTransition;\r\n});\n","/* \r\n * EXPANDO\r\n * ===========================================\r\n * Expando lets you expand and collapse things, similar to jQuery's show, hide,\r\n * and toggle functions. Unlike those functions, it can:\r\n *\r\n * - Switch between an exerpt and full text\r\n * - Toggle CSS classes\r\n * - Use CSS3 animation\r\n * - Apply minimal inline CSS (set only display: none, not display: block)\r\n * - Offer a data attribute API and custom events (expando-collapse and expando-expand)\r\n * - Make coffee! (Ok, not really)\r\n * \r\n * Expando can be combined with togglr to build tabs, accordions, and the like\r\n * without using a heavy UI library such as jQuery UI.\r\n *\r\n * Expando will listen to togglr's activate/deactivate events if togglr is \r\n * available. In order to take advantage of this feature, call togglr before\r\n * calling expando, and make sure require loads both plugins.\r\n */\r\n\r\n; define('core/ef_plugins/expando',[\"jquery\", \"libs/jquery.transit\"], function (jQuery) {\r\n (function ($, window, document, undefined) {\r\n\r\n var pluginName = 'expando',\r\n defaults = {\r\n activeClass: 'is-active', // Class applied when to $element or the excerpt when it is shown.\r\n animateClass: 'is-animating', // Class applied to the trigger and the target when togglr is animating.\r\n animate: true, // Animate transition from excerpt to full text?\r\n animateTime: 300, // Length of animation (in ms)\r\n excerpt: \".js-expando-excerpt\", // Selector for excerpt to show when expando closed. Must be a sibling of the element on which expando is called.\r\n trigger: \".js-expando-trigger\", // Selector for an element that will toggle the expando when clicked. Must be a sibling or parent of the element on which expando is called. Alternately, you could manually set up click listener and call .toggle() from in there.\r\n useTogglr: true, // If the trigger uses the togglr plugin, use togglr events instead of the click event.\r\n };\r\n\r\n // ReSharper disable once InconsistentNaming\r\n function Expando(element, options) {\r\n this.element = element;\r\n this.$element = $(element);\r\n this.metadata = this.$element.data('expando-options');\r\n this.options = $.extend({}, defaults, options, this.metadata);\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n this.init();\r\n }\r\n\r\n Expando.prototype = {\r\n init: function () {\r\n var plugin = this,\r\n togglr;\r\n // Find elements.\r\n plugin.$excerpt = this.$element.siblings(plugin.options.excerpt);\r\n plugin.$trigger = this.$element.siblings(plugin.options.trigger);\r\n if (plugin.$trigger.length === 0) {\r\n plugin.$trigger = this.$element.parents(plugin.options.trigger);\r\n }\r\n // Set up event listeners.\r\n togglr = plugin.$trigger.data('plugin_togglr');\r\n if (togglr && plugin.options.useTogglr) {\r\n // Stay in sync with togglr state.\r\n plugin.$trigger.on('togglr-activate.expando', function () { plugin.expand(); });\r\n plugin.$trigger.on('togglr-deactivate.expando', function () { plugin.collapse(); });\r\n } else {\r\n plugin.$trigger.on('click.expando', function () { plugin.toggle(); });\r\n }\r\n // Set collapsed state as the default.\r\n plugin.expanded = false;\r\n plugin.$element.css({ 'display': 'none' });\r\n },\r\n\r\n _animate: function(startHeight, endHeight, callback) {\r\n var plugin = this;\r\n\r\n if (typeof callback !== 'function') {\r\n callback = function() {};\r\n }\r\n if (!plugin.options.animate) {\r\n callback();\r\n return;\r\n }\r\n\r\n // Set up initial state.\r\n plugin.$element\r\n .addClass(plugin.options.animateClass)\r\n .css({\r\n 'overflow': 'hidden',\r\n 'height': startHeight\r\n });\r\n // Animate and call the callback.\r\n plugin.$element.transition({ height: endHeight }, plugin.options.animateTime, function () {\r\n plugin.$element.css({\r\n 'overflow': '',\r\n 'height': '',\r\n });\r\n plugin.$element.removeClass(plugin.options.animateClass);\r\n callback();\r\n });\r\n },\r\n\r\n expand: function () {\r\n var plugin = this,\r\n startHeight,\r\n endHeight = plugin.$element.css('height');\r\n if (plugin.expanded) {\r\n return false;\r\n }\r\n\r\n startHeight = (plugin.$excerpt.length === 0) ? 0 : plugin.$excerpt.css('height');\r\n plugin.expanded = true;\r\n plugin.$excerpt\r\n .removeClass(plugin.options.activeClass)\r\n .css({ 'display': 'none' });\r\n plugin.$element\r\n .addClass(plugin.options.activeClass)\r\n .css({ 'display': '' })\r\n .trigger('expando-expand');\r\n \r\n plugin._animate(startHeight, endHeight);\r\n return true;\r\n },\r\n\r\n collapse: function () {\r\n var plugin = this,\r\n startHeight = plugin.$element.css('height'),\r\n endHeight;\r\n if (!plugin.expanded) {\r\n return false;\r\n }\r\n\r\n endHeight = (plugin.$excerpt.length === 0) ? 0 : plugin.$excerpt.css('height');\r\n plugin.expanded = false;\r\n plugin.$excerpt.addClass(plugin.options.activeClass);\r\n plugin.$element\r\n .removeClass(plugin.options.activeClass)\r\n .trigger('expando-collapse');\r\n \r\n plugin._animate(startHeight, endHeight, function() {\r\n plugin.$element.css({ 'display': 'none' });\r\n plugin.$excerpt.css({ 'display': '' });\r\n });\r\n return true;\r\n },\r\n\r\n toggle: function() {\r\n var plugin = this;\r\n if (plugin.expanded) {\r\n plugin.collapse();\r\n } else {\r\n plugin.expand();\r\n }\r\n },\r\n\r\n destroy: function () {\r\n var plugin = this;\r\n // reset the markup\r\n plugin.$element\r\n .removeClass(plugin.options.activeClass)\r\n .css({ 'display': '' });\r\n plugin.$excerpt\r\n .removeClass(plugin.options.activeClass)\r\n .css({ 'display': '' });\r\n // unbind the listeners\r\n plugin.$trigger\r\n .off('togglr-activate.expando')\r\n .off('togglr-deactivate.expando')\r\n .off('click.expando');\r\n // remove the data\r\n plugin.$element.removeData('plugin_' + pluginName);\r\n }\r\n\r\n };\r\n\r\n // Turn this into a jquery plugin & prevent multiple instantiations\r\n $.fn[pluginName] = function (options) {\r\n return this.each(function () {\r\n if (!$.data(this, 'plugin_' + pluginName)) {\r\n $.data(this, 'plugin_' + pluginName,\r\n new Expando(this, options));\r\n }\r\n });\r\n }\r\n\r\n })(jQuery, window, document);\r\n});\n","/* \r\n * TRUNCATR\r\n * truncation as progressive enhancement\r\n * =====================================\r\n *\r\n * Given an element containing text, truncatr will create a full text element and\r\n * an excerpt element. You can then show one and hide the other as you'd like.\r\n * Because we're doing truncation on the client and not the server, browsers\r\n * that haven't loaded the JS yet will see the full text.\r\n */ \r\n\r\n; define('core/ef_plugins/truncatr',[\"jquery\"], function (jQuery) {\r\n (function ($, window, document, undefined) {\r\n\r\n var pluginName = 'truncatr',\r\n defaults = {\r\n maxLength: 85, // Max length of excerpt, in chars. Breaks at word.\r\n fullWrapper: '
', // We're using \"quick-closing\" tags: http://api.jquery.com/jQuery/#jQuery2\r\n excerptWrapper: '
',\r\n ending: '...', // Text to be added to the end of the excerpt.\r\n };\r\n\r\n // ReSharper disable once InconsistentNaming\r\n function Truncatr(element, options) {\r\n this.element = element;\r\n this.$element = $(element);\r\n\r\n this.metadata = this.$element.data('truncatr-options');\r\n this.options = $.extend({}, defaults, options, this.metadata);\r\n this._defaults = defaults;\r\n\r\n this._name = pluginName;\r\n this.init();\r\n }\r\n\r\n Truncatr.prototype = {\r\n init: function () {\r\n var plugin = this,\r\n $el = plugin.$element,\r\n $children;\r\n // Temporarily detach children so we don't overwrite them.\r\n $children = $el.children().not('br, p').detach();\r\n // Clean up HTML.\r\n plugin._wrapTextWithP($el);\r\n plugin._sanitize($el);\r\n // Create the excerpt and full text objects.\r\n if ($el.text().length <= plugin.options.maxLength) {\r\n // Text isn't long enough for an excerpt. Abort!\r\n plugin.destroy();\r\n return;\r\n }\r\n plugin.$excerpt = $(plugin.options.excerptWrapper).append(plugin._createExcerpt($el));\r\n plugin.$full = $(plugin.options.fullWrapper).append($el.children());\r\n // Clear out the element. Append the excerpt and full text. Re-attach the children.\r\n $el.html('').append(plugin.$full, plugin.$excerpt, $children);\r\n },\r\n\r\n truncate: function (origText, max, ending) {\r\n var newText = '',\r\n separator = ' ',\r\n punctuation = [',', '.', '!', '?'],\r\n indexOfLastSeparator = -1;\r\n if (max === 0) {\r\n return '';\r\n }\r\n if (origText.length <= max) {\r\n // Text is already under max and doesn't need to be truncated.\r\n return origText;\r\n }\r\n newText = origText.substring(0, max - ending.length);\r\n indexOfLastSeparator = newText.lastIndexOf(separator);\r\n if (indexOfLastSeparator !== -1) {\r\n newText = newText.slice(0, indexOfLastSeparator);\r\n // If there are no spaces, just cut the text off at the max.\r\n }\r\n // If new text ends with punctuation, remove it.\r\n for (var i = 0; i < punctuation.length; i++) {\r\n if (newText.charAt(newText.length - 1) === punctuation[i]) {\r\n newText = newText.substring(0, newText.length - 1);\r\n break;\r\n }\r\n }\r\n newText += ending;\r\n return newText;\r\n },\r\n\r\n _createExcerpt: function ($el) {\r\n var plugin = this,\r\n origText = $el.find('p').first().text(),\r\n $excerpt = $('

');\r\n // We're grabbing just text from the first paragraph. If that\r\n // paragraph's text is under the max, we'll show the entire\r\n // paragraph in the excerpt, but not subsequent paragraphs.\r\n return $excerpt.text(plugin.truncate(origText, plugin.options.maxLength, plugin.options.ending));\r\n },\r\n\r\n _sanitize: function ($el) {\r\n $el.find('p').each(function () {\r\n var $this = $(this),\r\n text = $.trim($this.html());\r\n if (text === '' || text === ' ') { // Sigh.\r\n $this.remove();\r\n }\r\n });\r\n },\r\n\r\n _wrapTextWithP: function ($el) {\r\n // Wrap the text nodes inside $elem with p so that we can maniuplate them.\r\n if ($el.children().length === 0) {\r\n $el.wrapInner('

');\r\n return true;\r\n }\r\n\r\n if ($el.children().not('br').length === 0) {\r\n // Wrap each text node with paragraph tags, then remove the
tags.\r\n // Based on an example from http://api.jquery.com/contents/\r\n $el.contents().filter(function () { return this.nodeType === 3; })\r\n .wrap('

').end()\r\n .filter('br').remove();\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n destroy: function () {\r\n var plugin = this;\r\n // remove the data\r\n plugin.$element.removeData('plugin_' + pluginName);\r\n }\r\n\r\n };\r\n\r\n // Turn this into a jquery plugin & prevent multiple instantiations\r\n $.fn[pluginName] = function (options) {\r\n return this.each(function () {\r\n if (!$.data(this, 'plugin_' + pluginName)) {\r\n $.data(this, 'plugin_' + pluginName,\r\n new Truncatr(this, options));\r\n }\r\n });\r\n }\r\n\r\n })(jQuery, window, document);\r\n});\n","define('core/modules/togglr',[\"jquery\", \"core/modules/breakdance\", \"core/ef_plugins/togglr\", \"core/ef_plugins/expando\", \"core/ef_plugins/truncatr\"], function($, breakdance) {\r\n console.log('togglr');\r\n\r\n return {\r\n init: function () {\r\n var $expando = $('.js-expando, .js-expando-mobile');\r\n\r\n // Toggle\r\n $('.toggle-label').togglr();\r\n\r\n // Expando\r\n $expando.truncatr();\r\n $expando.find('.js-expando-trigger').togglr();\r\n $expando.find('.truncatr-full')\r\n .expando({ excerpt: '.truncatr-excerpt' })\r\n .each(function () {\r\n var $this = $(this),\r\n expando = $this.data('plugin_expando'),\r\n $fullP = expando.$element.find('p:last'),\r\n $excerptP = expando.$excerpt.find('p:last'),\r\n $trigger = expando.$trigger;\r\n // Put the trigger in the active content.\r\n $this.on('expando-expand', function () { $fullP.append($trigger); });\r\n $this.on('expando-collapse', function () { $excerptP.append($trigger); });\r\n $fullP.add($excerptP).append(' ');\r\n // Put the trigger in the excerpt on init. If there is no excerpt\r\n // (becuase the content is too short), this line will remove the trigger.\r\n $excerptP.append($trigger);\r\n });\r\n \r\n // Drawer\r\n $('.js-drawer-trigger').togglr({ toggleText: false });\r\n $('.js-drawer').expando({ trigger: '.js-drawer-trigger' });\r\n\r\n // Mobile Drawer\r\n // Where possible, it's simplest to handle the mobile/desktop switch\r\n // in CSS: hide the trigger; show the expando. In the drawer on the\r\n // review page, we're showing the trigger on desktop, so we need to\r\n // actually destroy and re-create the plugin when we switch breakpoints.\r\n\r\n function createMobileDrawer() {\r\n $('.js-drawer-trigger-mobile').togglr({ toggleText: false });\r\n $('.js-drawer-mobile').expando({ trigger: '.js-drawer-trigger-mobile' });\r\n }\r\n function destroyMobileDrawer() {\r\n var togglr = $('.js-drawer-trigger-mobile').data('plugin_togglr'),\r\n expando = $('.js-drawer-mobile').data('plugin_expando');\r\n if (togglr) { togglr.destroy(); }\r\n if (expando) { expando.destroy(); }\r\n }\r\n breakdance.register(749, createMobileDrawer, destroyMobileDrawer);\r\n }\r\n };\r\n});\n"]}