{"version":3,"sources":["webpack:///./app/webpacker/src/javascript/helpers/url_helper.js","webpack:///./node_modules/mustache/mustache.js","webpack:///./app/webpacker/images/meeting_points/active-meeting-point.png","webpack:///./app/webpacker/images/meeting_points/meeting-point.png","webpack:///./app/webpacker/images/meeting_points/pin-pointer.png","webpack:///./app/webpacker/src/javascript/jquery.geocomplete.js","webpack:///./app/webpacker/images/buttercms/logo.png","webpack:///./app/webpacker/images/footer/illu.png","webpack:///./node_modules/jquery-autocomplete/jquery.autocomplete.js","webpack:///./app/webpacker/images/admin/button_types.png","webpack:///./app/webpacker/images/apple-store-badge.svg","webpack:///./app/webpacker/images/buttercms/blog.svg","webpack:///./app/webpacker/images/buttercms/logo-blog.svg","webpack:///./app/webpacker/images/buttercms/logo-evs.svg","webpack:///./app/webpacker/images/buttercms/logo-evs-text-white.svg","webpack:///./app/webpacker/images/buttercms/small-logo-blog.svg","webpack:///./app/webpacker/images/default_avatar.png","webpack:///./app/webpacker/images/discord.svg","webpack:///./app/webpacker/images/driving_school/error_series.png","webpack:///./app/webpacker/images/driving_school/lesson_cdr.png","webpack:///./app/webpacker/images/driving_school/question_series.png","webpack:///./app/webpacker/images/driving_school/results_series.png","webpack:///./app/webpacker/images/driving_school/series_thematic.png","webpack:///./app/webpacker/images/driving_school/stats.png","webpack:///./app/webpacker/images/driving_school/take-the-keys-just-hands.svg","webpack:///./app/webpacker/images/enseignant_eleve_voiture.png","webpack:///./app/webpacker/images/facebook.svg","webpack:///./app/webpacker/images/footer/icon-arrow.svg","webpack:///./app/webpacker/images/footer/illu-mobile.svg","webpack:///./app/webpacker/images/footer/pattern-way.svg","webpack:///./app/webpacker/images/google-play-badge.svg","webpack:///./app/webpacker/images/grey-car.png","webpack:///./app/webpacker/images/happening/logo-macif.png","webpack:///./app/webpacker/images/home-large2x.jpg","webpack:///./app/webpacker/images/home/blue-rounded-background.svg","webpack:///./app/webpacker/images/home/road-background.svg","webpack:///./app/webpacker/images/icons/calendar.svg","webpack:///./app/webpacker/images/icons/close.svg","webpack:///./app/webpacker/images/icons/exam.svg","webpack:///./app/webpacker/images/icons/geolocation.svg","webpack:///./app/webpacker/images/icons/home.svg","webpack:///./app/webpacker/images/icons/icon_2_user.svg","webpack:///./app/webpacker/images/icons/icon_buy.svg","webpack:///./app/webpacker/images/icons/icon_driving.svg","webpack:///./app/webpacker/images/icons/icon_money.svg","webpack:///./app/webpacker/images/icons/location.svg","webpack:///./app/webpacker/images/icons/location_bis.svg","webpack:///./app/webpacker/images/icons/phone.svg","webpack:///./app/webpacker/images/icons/phone-black.svg","webpack:///./app/webpacker/images/icons/telephone-fill.svg","webpack:///./app/webpacker/images/icons/telephone-fill-on.svg","webpack:///./app/webpacker/images/illusration-car-and-teacher.png","webpack:///./app/webpacker/images/instagram.svg","webpack:///./app/webpacker/images/logo.svg","webpack:///./app/webpacker/images/logo-blog.svg","webpack:///./app/webpacker/images/logo-evs.svg","webpack:///./app/webpacker/images/logo-evs-text-white.svg","webpack:///./app/webpacker/images/logo-footer.png","webpack:///./app/webpacker/images/masks/avatar-group.svg","webpack:///./app/webpacker/images/masks/avatar-group-hover.svg","webpack:///./app/webpacker/images/masks/avatar-group-hover-last.svg","webpack:///./app/webpacker/images/masks/avatar-status.svg","webpack:///./app/webpacker/images/meeting_points/lesson.png","webpack:///./app/webpacker/images/meeting_points/pin-location.svg","webpack:///./app/webpacker/images/meta/fb_image-default.png","webpack:///./app/webpacker/images/offers/big_pack.svg","webpack:///./app/webpacker/images/offers/code.svg","webpack:///./app/webpacker/images/offers/code_exam.svg","webpack:///./app/webpacker/images/offers/driving_exam.svg","webpack:///./app/webpacker/images/offers/eval.svg","webpack:///./app/webpacker/images/offers/hour.svg","webpack:///./app/webpacker/images/offers/hour_pack.svg","webpack:///./app/webpacker/images/offers/small_pack.svg","webpack:///./app/webpacker/images/orion_pictos/couch.svg","webpack:///./app/webpacker/images/orion_pictos/driving.svg","webpack:///./app/webpacker/images/orion_pictos/examinateur.png","webpack:///./app/webpacker/images/orion_pictos/help.svg","webpack:///./app/webpacker/images/orion_pictos/here-pointer.svg","webpack:///./app/webpacker/images/orion_pictos/lifebelt.svg","webpack:///./app/webpacker/images/orion_pictos/money.svg","webpack:///./app/webpacker/images/orion_pictos/money-box.svg","webpack:///./app/webpacker/images/orion_pictos/orion-car.svg","webpack:///./app/webpacker/images/orion_pictos/orion-customer-support.svg","webpack:///./app/webpacker/images/orion_pictos/orion-iphone.svg","webpack:///./app/webpacker/images/orion_pictos/orion-svg-sprite.svg","webpack:///./app/webpacker/images/orion_pictos/orion-svg-sprite-footer.svg","webpack:///./app/webpacker/images/orion_pictos/orion-svg-sprite-theme.svg","webpack:///./app/webpacker/images/orion_pictos/phone_help.svg","webpack:///./app/webpacker/images/orion_pictos/school.svg","webpack:///./app/webpacker/images/orion_pictos/serenity.svg","webpack:///./app/webpacker/images/orion_pictos/tick.svg","webpack:///./app/webpacker/images/orion_pictos/white-map-pin.svg","webpack:///./app/webpacker/images/tiktok.svg","webpack:///./app/webpacker/images/tunnel_emoji/face-with-rolling-eyes.png","webpack:///./app/webpacker/images/twitter.svg","webpack:///./app/webpacker/images/youtube_play_button.png","webpack:///./frontend/components/index.js","webpack:///./frontend/components/footnote/footnote.js","webpack:///./frontend/components/video/video.js","webpack:///./frontend/components/teacher_income_simulator/teacher_income_simulator.js","webpack:///./frontend/components/address/address.js","webpack:///./frontend/components/recommendation/recommendation.js","webpack:///./frontend/components/slider_generic/slider_generic.js","webpack:///./frontend/components/slider_teacher/slider_teacher.js","webpack:///./frontend/components/tabs/tabs.js","webpack:///./app/webpacker/src/javascript/iframe/iframe_service.js","webpack:///./app/webpacker/src/javascript/iframe/iframe_message.js","webpack:///./app/webpacker/src/javascript/iframe/iframe_listener.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/webpacker/images sync ^\\.\\/.*$","webpack:///./app/webpacker/images/buttercms/logo.svg","webpack:///./app/webpacker/images/footer/illu.svg","webpack:///./app/webpacker/src/javascript/iframe/iframe.js","webpack:///./app/webpacker/src/javascript/navbar.js","webpack:///./app/webpacker/packs/application.js","webpack:///./app/webpacker/src/javascript/views/links.js"],"names":["validURL","str","RegExp","test","getGroup","data","search","res","undefined","$","each","key","value","v","String","hasOwnProperty","match","regex","replace","findElementInUrlParams","elt","array","result","item","tmp","split","javascriptVoidLink","link","getNbStoredUrls","Object","keys","sessionStorage","filter","length","legacy_domains","module","exports","objectToString","prototype","toString","isArray","Array","object","call","isFunction","typeStr","obj","escapeRegExp","string","hasProperty","propName","primitiveHasOwnProperty","primitive","regExpTest","testRegExp","re","nonSpaceRe","isWhitespace","entityMap","escapeHtml","s","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","parseTemplate","template","tags","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","sections","tokens","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","pop","compileTags","tagsToCompile","Error","mustache","start","type","chr","token","openSection","scanner","Scanner","eos","pos","scanUntil","i","valueLength","charAt","push","scan","nestTokens","squashTokens","lastToken","squashedTokens","numTokens","nestedTokens","collector","this","tail","Context","view","parentContext","cache","parent","Writer","templateCache","_cache","set","get","clear","index","substring","lookup","name","intermediateValue","names","context","lookupHit","indexOf","clearCache","parse","cacheKey","join","isCacheEnabled","render","partials","config","getConfigTags","renderTokens","originalTemplate","symbol","buffer","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","self","subRender","j","slice","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","escape","getConfigEscape","version","defaultWriter","TypeError","factory","window","document","defaults","bounds","country","map","details","detailsAttribute","detailsScope","autoselect","location","mapOptions","zoom","scrollwheel","mapTypeId","markerOptions","draggable","maxZoom","types","blur","geocodeAfterResult","restoreValueAfterBlur","componentTypes","placesDetails","GeoComplete","input","options","extend","$input","_defaults","_name","init","initMap","initMarker","initGeocoder","initDetails","initLocation","setCenter","google","maps","Map","event","addListener","proxy","mapClicked","mapDragged","mapIdle","mapZoomed","disabled","marker","Marker","markerDragged","componentRestrictions","autocomplete","places","Autocomplete","geocoder","Geocoder","bindTo","placeChanged","on","keyCode","bind","selected","find","lastInputVal","val","setTimeout","restoreLastValue","$details","parents","attribute","setDetail","latLng","LatLng","setPosition","destroy","clearInstanceListeners","unbindAll","removeData","off","unbind","address","geocode","request","getBounds","region","handleGeocode","selectFirstResult","$span1","text","$span2","firstResult","results","status","GeocoderStatus","OK","formatted_address","update","trigger","argument","center","geometry","viewport","fitBounds","getZoom","setZoom","setAnimation","animation","fillDetails","address_components","long_name","short_name","location_type","lat","lng","$detail","$element","toUrlValue","is","getCenter","resetMarker","place","getPlace","autoSelection","fn","geocomplete","instance","prop","apply","arguments","jQuery","defaultSetting","ctrlDown","publics","accent_map","accentReplace","ret","isset","safe_call","callback","args","callback2","defaultValue","__safe","callbackName","source","undefinedVar","__get","property","loadRemote","url","sourceObject","done","debug","xhr","abort","ajax","async","dataType","makeArray","fail","jqXHR","textStatus","console","log","findRight","query","right","processData","preparseData","collectData","datasource","items","appendMethod","concat","minLength","resp","renderData","$div","$divs","limit","getItem","dataset","getValue","decodeURIComponent","html","that","hasClass","intervalForVisibility","$box","$dropdown","$hint","iOpen","currentValue","active","e","preventDefault","stopPropagation","_act","top","position","actHght","outerHeight","scrlTop","scrollTop","hght","height","Math","abs","css","style","addClass","attr","xDown","yDown","isSwipe","removeClass","originalEvent","touches","clientX","clientY","xUp","yUp","xDiff","yDiff","after","_value","eq","children","first","afterSelected","setSelectionRange","focus","createTextRange","range","collapse","moveEnd","moveStart","select","setCaretPosition","manageKey","manageData","openOnFocus","closeOnBlur","append","olderBackground","timerUpdate","clearTimeout","left","parseInt","offsetHeight","marginLeft","marginRight","width","dropdownWidth","offsetWidth","dropdownStyle","showHint","getComputedStyle","cssText","boxSizing","borderStyle","borderCollapse","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","paddingBottom","marginBottom","paddingTop","marginTop","paddingLeft","paddingRight","maxHeight","minHeight","maxWidth","minWidth","letterSpacing","lineHeight","outlineWidth","fontFamily","fontVariant","fontStyle","fontSize","fontWeight","flex","justifyContent","borderRadius","innerHeight","zIndex","borderColor","outlineColor","background","hintStyle","setProperty","timeoutUpdate","setInterval","clearInterval","hide","out","itemStyle","visibleHeight","visibleLimit","defaultHeightItem","show","remove","title","substr","shiftKey","ctrlKey","selectionStart","selection","sel","createRange","selLen","getCaretPosition","next","timepick","getPixelSize","element","rootSize","sizeWithSuffix","size","parseFloat","suffix","parentElement","currentStyle","clientWidth","clientHeight","setShortStyleProperty","borderSuffix","t","r","b","l","CSSStyleDeclaration","float","constructor","getPropertyPriority","getPropertyValue","removeProperty","getPropertyCSSValue","valueKey","titleKey","highlight","accents","replaceAccentsForRemote","encodeURIComponent","equal","toLowerCase","valid","preparse","getTitle","pid","c","h","_query","_title","hilite_hints","highlighted","spos","_options","isPlainObject","setSource","_newsource","id","isNaN","getSource","_second","_third","processFootnoteOnPage","footnote","span","getElementsByTagName","getAttribute","originalText","innerText","setAttribute","linkToFootnote","body","innerHTML","ready","footnotes","getElementsByClassName","_step","_iterator","_createForOfIteratorHelper","n","err","f","linksToFootnote","querySelectorAll","_step2","_iterator2","parentNode","removeChild","clearFootnoteContent","replaceWith","href","oilPrice","setNumberDisplay","x","round","simulateTeacherWages","annualKms","ca","container","container_modal","expenses","hoursPerWeek","monthHours","monthOil","taxes","wages","fadeIn","response","responseText","JSON","submit","initGeocomplete","btn","click","geocompleteButton","clearButton","geocompleteClearInput","geocompleteMeetingPointsMaps","Flickity","autoPlay","cellAlign","contain","prevNextButtons","pageDots","wrapAround","freeScroll","_step3","_iterator3","changeTitle","imagesLoaded","groupCells","hidden","iframeService","actions","array_matching","is_guest","_classCallCheck","back_button","evs_app_domain","evs_app_port","includes","hostname","url_helpers","encodeURI","origin","tab_paths","pathname","modal","backdrop","keyboard","listener","domain","port","target","returnValue","app_domain","app_port","URL","exitToApp","sendPostMsg","urlForSiteOpener","found","url_without_params","forEach","switchFromCmsToLegacy","next_url","link_value","link_url","current_group","hash","dest_group","sessionStorageLength","removeItem","history","back","c_url","url_search","setItem","tagName","new_param","url_parent","parts","cookie","shift","now","Date","time","getTime","setTime","msgReceived","iframeListener","iframe_service","current_user","is_debug","service","addEventListener","msg_received","str_msg","stringify","login_url_with_token","login_url","msg","error","setArrayMatching","setBackBtn","notifyPpuResolved","notifyUserLogged","setClientId","pushFromMsgToDatalayer","sendUpdateStudent","goingOut","triggerActions","insertUrlParams","processTunnelBackButton","ga","ga_tracking_id","clientId","dataLayer","field","processBackBtn","getActionsFromMsg","setActions","applyCss","setAllUrlToAbsolute","params","postMessage","setBackButton","sub_data","action","histo_nav","values","urls_for_student_update","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","content","cspNonce","expando","m","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","csrfParam","csrfToken","meta","CSRFProtection","setRequestHeader","refreshCSRFTokens","param","CustomEvent","fire","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","defaultPrevented","defineProperty","dispatchEvent","stopEverything","stopImmediatePropagation","delegate","eventType","handler","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","script","getResponseHeader","floor","success","statusText","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","toUpperCase","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","createElement","head","appendChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","option","checked","formElements","form","el","allowAction","handleConfirm","confirm","message","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","removeEventListener","handleMethod","formContent","method","display","isRemote","handleRemote","button","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","rails","ajaxPrefilter","originalOptions","_rails_loaded","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","resolve","generate_connect_buttons","getElementById","template_name","rendered","Mustache","render_template","iframe_listener","iframe_rendering","getCookie","hideMarkedElements","styleForApp","updateSessionListUrls","processDataFromAnotherDomain","listenEvents","toggleTooltipClass","displayCpfTooltipOnResizeHandler","innerWidth","addMouseEventsToCpfTooltip","displayContactTooltipOnResizeHandler","addMouseEventsToContactTooltip","onCpfNavbarSupportedContentCollapse","onContactNavbarSupportedContentCollapse","mouseHoverCpfTooltipContent","mouseHoverContactTooltipContent","toggleCpfHelpSubItem","toggleClass","toggleContactSubItem","handleBtnLink","unobfuscateLink","clickMode","insertAfter","computeCpfTooltipPosition","computeContactTooltipPosition","cpfNavBarHeight","cpfParentHeight","$tag","atob","has","require","isRelativeUrl","linkUrl","hasExternalDomain"],"mappings":"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AK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,EAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,EAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,EAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SA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sE,kBCA3CD,EAAOC,QAAU,IAA0B,+D,kBCA3CD,EAAOC,QAAU,IAA0B,qE,kBCA3CD,EAAOC,QAAU,IAA0B,wE,kBCA3CD,EAAOC,QAAU,IAA0B,2E,kBCA3CD,EAAOC,QAAU,IAA0B,+E,kBCA3CD,EAAOC,QAAU,IAA0B,6D,kBCA3CD,EAAOC,QAAU,IAA0B,wD,kBCA3CD,EAAOC,QAAU,IAA0B,6D,kBCA3CD,EAAOC,QAAU,IAA0B,4D,kBCA3CD,EAAOC,QAAU,IAA0B,uE,kBCA3CD,EAAOC,QAAU,IAA0B,+D,kBCA3CD,EAAOC,QAAU,IAA0B,sE,kBCA3CD,EAAOC,QAAU,IAA0B,4E,kBCA3CD,EAAOC,QAAU,IAA0B,iF,kBCA3CD,EAAOC,QAAU,IAA0B,uE,kBCA3CD,EAAOC,QAAU,IAA0B,yE,kBCA3CD,EAAOC,QAAU,IAA0B,+E,kBCA3CD,EAAOC,QAAU,IAA0B,yE,kBCA3CD,EAAOC,QAAU,IAA0B,mE,kBCA3CD,EAAOC,QAAU,IAA0B,+D,kBCA3CD,EAAOC,QAAU,IAA0B,oE,kBCA3CD,EAAOC,QAAU,IAA0B,uE,kBCA3CD,EAAOC,QAAU,IAA0B,+D,kBCA3CD,EAAOC,QAAU,IAA0B,+D,kBCA3CD,EAAOC,QAAU,IAA0B,oE,kBCA3CD,EAAOC,QAAU,IAA0B,qE,kBCA3CD,EAAOC,QAAU,IAA0B,sE,kBCA3CD,EAAOC,QAAU,IAA0B,wE,kBCA3CD,EAAOC,QAAU,IAA0B,4E,kBCA3CD,EAAOC,QAAU,IAA0B,qE,kBCA3CD,EAAOC,QAAU,IAA0B,6E,kBCA3CD,EAAOC,QAAU,IAA0B,yE,kBCA3CD,EAAOC,QAAU,IAA0B,sE,kBCA3CD,EAAOC,QAAU,IAA0B,0E,kBCA3CD,EAAOC,QAAU,IAA0B,0E,kBCA3CD,EAAOC,QAAU,IAA0B,uF,kBCA3CD,EAAOC,QAAU,IAA0B,6E,kBCA3CD,EAAOC,QAAU,IAA0B,iF,kBCA3CD,EAAOC,QAAU,IAA0B,wF,kBCA3CD,EAAOC,QAAU,IAA0B,uF,kBCA3CD,EAAOC,QAAU,IAA0B,2E,kBCA3CD,EAAOC,QAAU,IAA0B,uE,kBCA3CD,EAAOC,QAAU,IA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","file":"js/application-48f7891cda693ae3c1ee.chunk.js","sourcesContent":["export function validURL(str) {\n var pattern = new RegExp('^((https?:)?\\\\/\\\\/)?'+ // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|'+ // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))'+ // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*'+ // port and path\n '(\\\\?[;&a-z\\\\d%_.,@~+=-]*)?'+ // query string\n '(\\\\#[-a-z\\\\d_]*)?$','i'); // fragment locator\n return pattern.test(str);\n}\n\nexport function getGroup(data, search) {\n var res = undefined;\n $.each(data, function(key,value) {\n for (var v in value) {\n if ((typeof value[v] === 'string' || value[v] instanceof String) && value[v] == search) {\n res = key;\n return false;\n }\n else if (typeof value[v] == 'object' && value[v].hasOwnProperty('regex') && search.match(new RegExp(value[v].regex.replace('/','\\/')))) {\n res = key\n return false;\n }\n }\n });\n return res;\n}\n\nexport function insideWhiteList(whitelist, search) {\n var found = false\n whitelist.forEach(elt => {\n if (((typeof elt === 'string' || elt instanceof String) && elt == search) || (typeof elt == 'object' && elt.hasOwnProperty('regex') && search.match(new RegExp(elt.regex.replace('/','\\/'))))){\n found = true;\n }\n });\n return found;\n}\n\nexport function inArray(target, array)\n{\n for(var i = 0; i < array.length; i++)\n {\n if(array[i].includes(target))\n {\n return true;\n }\n }\n\n return false;\n}\n\nexport function findElementInUrlParams(elt, array){\n var result = undefined;\n for (var item in array) {\n var tmp = array[item].split(\"=\");\n if (tmp[0] === elt) result = tmp[1];\n }\n return result;\n}\n\nexport function javascriptVoidLink(link) {\n var javascript_void_link_regex = /^javascript:void\\(0\\)(;)*$/;\n return javascript_void_link_regex.test(link);\n}\n\nexport function getNbStoredUrls() {\n let keys = Object.keys(sessionStorage);\n let nb_filtered_keys = keys.filter(key => key.match(/url_[0-9]/));\n return nb_filtered_keys.length;\n}\n\nvar legacy_domains = [\"dev.envoituresimone.com\", \"account.envoituresimone.com\", \"account-dev.envoituresimone.com\", \"driving.envoituresimone.com\", \"driving-dev.envoituresimone.com\"];\nexport default legacy_domains;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.Mustache = factory());\n})(this, function () {\n 'use strict';\n\n /*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill(object) {\n return objectToString.call(object) === '[object Array]';\n };\n function isFunction(object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr(obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n function escapeRegExp(string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty(obj, propName) {\n return obj != null && typeof obj === 'object' && propName in obj;\n }\n\n /**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\n function primitiveHasOwnProperty(primitive, propName) {\n return primitive != null && typeof primitive !== 'object' && primitive.hasOwnProperty && primitive.hasOwnProperty(propName);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp(re, string) {\n return regExpTest.call(re, string);\n }\n var nonSpaceRe = /\\S/;\n function isWhitespace(string) {\n return !testRegExp(nonSpaceRe, string);\n }\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n function escapeHtml(string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap(s) {\n return entityMap[s];\n });\n }\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\n function parseTemplate(template, tags) {\n if (!template) return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace() {\n if (hasTag && !nonSpace) {\n while (spaces.length) delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n hasTag = false;\n nonSpace = false;\n }\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags(tagsToCompile) {\n if (typeof tagsToCompile === 'string') tagsToCompile = tagsToCompile.split(spaceRe, 2);\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2) throw new Error('Invalid tags: ' + tagsToCompile);\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n compileTags(tags || mustache.tags);\n var scanner = new Scanner(template);\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n tokens.push(['text', chr, start, start + 1]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe)) break;\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe)) throw new Error('Unclosed tag at ' + scanner.pos);\n if (type == '>') {\n token = [type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace];\n } else {\n token = [type, value, start, scanner.pos];\n }\n tagIndex++;\n tokens.push(token);\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n if (!openSection) throw new Error('Unopened section \"' + value + '\" at ' + start);\n if (openSection[1] !== value) throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n if (openSection) throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens(tokens) {\n var squashedTokens = [];\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens(tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner(string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos() {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan(re) {\n var match = this.tail.match(re);\n if (!match || match.index !== 0) return '';\n var string = match[0];\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil(re) {\n var index = this.tail.search(re),\n match;\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n this.pos += match.length;\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context(view, parentContext) {\n this.view = view;\n this.cache = {\n '.': this.view\n };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push(view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup(name) {\n var cache = this.cache;\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this,\n intermediateValue,\n names,\n index,\n lookupHit = false;\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1) lookupHit = hasProperty(intermediateValue, names[index]) || primitiveHasOwnProperty(intermediateValue, names[index]);\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n context = context.parent;\n }\n cache[name] = value;\n }\n if (isFunction(value)) value = value.call(this.view);\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer() {\n this.templateCache = {\n _cache: {},\n set: function set(key, value) {\n this._cache[key] = value;\n },\n get: function get(key) {\n return this._cache[key];\n },\n clear: function clear() {\n this._cache = {};\n }\n };\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache() {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n };\n\n /**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse(template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\n Writer.prototype.render = function render(template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = view instanceof Context ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens(tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);else if (symbol === '>') value = this.renderPartial(token, context, partials, config);else if (symbol === '&') value = this.unescapedValue(token, context);else if (symbol === 'name') value = this.escapedValue(token, context, config);else if (symbol === 'text') value = this.rawValue(token);\n if (value !== undefined) buffer += value;\n }\n return buffer;\n };\n Writer.prototype.renderSection = function renderSection(token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender(template) {\n return self.render(template, context, partials, config);\n }\n if (!value) return;\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string') throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n if (value != null) buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n };\n Writer.prototype.renderInverted = function renderInverted(token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || isArray(value) && value.length === 0) return this.renderTokens(token[4], context, partials, originalTemplate, config);\n };\n Writer.prototype.indentPartial = function indentPartial(partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n };\n Writer.prototype.renderPartial = function renderPartial(token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n };\n Writer.prototype.unescapedValue = function unescapedValue(token, context) {\n var value = context.lookup(token[1]);\n if (value != null) return value;\n };\n Writer.prototype.escapedValue = function escapedValue(token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null) return typeof value === 'number' && escape === mustache.escape ? String(value) : escape(value);\n };\n Writer.prototype.rawValue = function rawValue(token) {\n return token[1];\n };\n Writer.prototype.getConfigTags = function getConfigTags(config) {\n if (isArray(config)) {\n return config;\n } else if (config && typeof config === 'object') {\n return config.tags;\n } else {\n return undefined;\n }\n };\n Writer.prototype.getConfigEscape = function getConfigEscape(config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n } else {\n return undefined;\n }\n };\n var mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: ['{{', '}}'],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache(cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache() {\n return defaultWriter.templateCache;\n }\n };\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache() {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse(template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\n mustache.render = function render(template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' + 'but \"' + typeStr(template) + '\" was given as the first ' + 'argument for mustache#render(template, view, partials)');\n }\n return defaultWriter.render(template, view, partials, config);\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n return mustache;\n});","module.exports = __webpack_public_path__ + \"media/images/meeting_points/active-meeting-point-de8f13519a8aafd7b02e6711104df43c.png\";","module.exports = __webpack_public_path__ + \"media/images/meeting_points/meeting-point-db43dc9f063925d05e1e67547c3b5ccb.png\";","module.exports = __webpack_public_path__ + \"media/images/meeting_points/pin-pointer-a8efe02d007438f31c02b2c9f4d6cefc.png\";","/**\n * jQuery Geocoding and Places Autocomplete Plugin - V 1.7.0\n *\n * @author Martin Kleppe , 2016\n * @author Ubilabs http://ubilabs.net, 2016\n * @license MIT License \n */\n\n// # $.geocomplete()\n// ## jQuery Geocoding and Places Autocomplete Plugin\n//\n// * https://github.com/ubilabs/geocomplete/\n// * by Martin Kleppe \n\n(function($, window, document, undefined){\n\n // ## Options\n // The default options for this plugin.\n //\n // * `map` - Might be a selector, an jQuery object or a DOM element. Default is `false` which shows no map.\n // * `details` - The container that should be populated with data. Defaults to `false` which ignores the setting.\n // * 'detailsScope' - Allows you to scope the 'details' container and have multiple geocomplete fields on one page. Must be a parent of the input. Default is 'null'\n // * `location` - Location to initialize the map on. Might be an address `string` or an `array` with [latitude, longitude] or a `google.maps.LatLng`object. Default is `false` which shows a blank map.\n // * `bounds` - Whether to snap geocode search to map bounds. Default: `true` if false search globally. Alternatively pass a custom `LatLngBounds object.\n // * `autoselect` - Automatically selects the highlighted item or the first item from the suggestions list on Enter.\n // * `detailsAttribute` - The attribute's name to use as an indicator. Default: `\"name\"`\n // * `mapOptions` - Options to pass to the `google.maps.Map` constructor. See the full list [here](http://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions).\n // * `mapOptions.zoom` - The inital zoom level. Default: `14`\n // * `mapOptions.scrollwheel` - Whether to enable the scrollwheel to zoom the map. Default: `false`\n // * `mapOptions.mapTypeId` - The map type. Default: `\"roadmap\"`\n // * `markerOptions` - The options to pass to the `google.maps.Marker` constructor. See the full list [here](http://code.google.com/apis/maps/documentation/javascript/reference.html#MarkerOptions).\n // * `markerOptions.draggable` - If the marker is draggable. Default: `false`. Set to true to enable dragging.\n // * `markerOptions.disabled` - Do not show marker. Default: `false`. Set to true to disable marker.\n // * `maxZoom` - The maximum zoom level too zoom in after a geocoding response. Default: `16`\n // * `types` - An array containing one or more of the supported types for the places request. Default: `['geocode']` See the full list [here](http://code.google.com/apis/maps/documentation/javascript/places.html#place_search_requests).\n // * `blur` - Trigger geocode when input loses focus.\n // * `geocodeAfterResult` - If blur is set to true, choose whether to geocode if user has explicitly selected a result before blur.\n // * `restoreValueAfterBlur` - Restores the input's value upon blurring. Default is `false` which ignores the setting.\n\n var defaults = {\n bounds: true,\n country: null,\n map: false,\n details: false,\n detailsAttribute: \"name\",\n detailsScope: null,\n autoselect: true,\n location: false,\n\n mapOptions: {\n zoom: 14,\n scrollwheel: false,\n mapTypeId: \"roadmap\"\n },\n\n markerOptions: {\n draggable: false\n },\n\n maxZoom: 16,\n types: ['geocode'],\n blur: false,\n geocodeAfterResult: false,\n restoreValueAfterBlur: false\n };\n\n // See: [Geocoding Types](https://developers.google.com/maps/documentation/geocoding/#Types)\n // on Google Developers.\n var componentTypes = (\"street_address route intersection political \" +\n \"country administrative_area_level_1 administrative_area_level_2 \" +\n \"administrative_area_level_3 colloquial_area locality sublocality \" +\n \"neighborhood premise subpremise postal_code natural_feature airport \" +\n \"park point_of_interest post_box street_number floor room \" +\n \"lat lng viewport location \" +\n \"formatted_address location_type bounds\").split(\" \");\n\n // See: [Places Details Responses](https://developers.google.com/maps/documentation/javascript/places#place_details_responses)\n // on Google Developers.\n var placesDetails = (\"id place_id url website vicinity reference name rating \" +\n \"international_phone_number icon formatted_phone_number\").split(\" \");\n\n // The actual plugin constructor.\n function GeoComplete(input, options) {\n\n this.options = $.extend(true, {}, defaults, options);\n\n // This is a fix to allow types:[] not to be overridden by defaults\n // so search results includes everything\n if (options && options.types) {\n this.options.types = options.types;\n }\n\n this.input = input;\n this.$input = $(input);\n\n this._defaults = defaults;\n this._name = 'geocomplete';\n\n this.init();\n }\n\n // Initialize all parts of the plugin.\n $.extend(GeoComplete.prototype, {\n init: function(){\n this.initMap();\n this.initMarker();\n this.initGeocoder();\n this.initDetails();\n this.initLocation();\n },\n\n // Initialize the map but only if the option `map` was set.\n // This will create a `map` within the given container\n // using the provided `mapOptions` or link to the existing map instance.\n initMap: function(){\n if (!this.options.map){ return; }\n\n if (typeof this.options.map.setCenter == \"function\"){\n this.map = this.options.map;\n return;\n }\n\n this.map = new google.maps.Map(\n $(this.options.map)[0],\n this.options.mapOptions\n );\n\n // add click event listener on the map\n google.maps.event.addListener(\n this.map,\n 'click',\n $.proxy(this.mapClicked, this)\n );\n\n // add dragend even listener on the map\n google.maps.event.addListener(\n this.map,\n 'dragend',\n $.proxy(this.mapDragged, this)\n );\n\n // add idle even listener on the map\n google.maps.event.addListener(\n this.map,\n 'idle',\n $.proxy(this.mapIdle, this)\n );\n\n google.maps.event.addListener(\n this.map,\n 'zoom_changed',\n $.proxy(this.mapZoomed, this)\n );\n },\n\n // Add a marker with the provided `markerOptions` but only\n // if the option was set. Additionally it listens for the `dragend` event\n // to notify the plugin about changes.\n initMarker: function(){\n if (!this.map){ return; }\n var options = $.extend(this.options.markerOptions, { map: this.map });\n\n if (options.disabled){ return; }\n\n this.marker = new google.maps.Marker(options);\n\n google.maps.event.addListener(\n this.marker,\n 'dragend',\n $.proxy(this.markerDragged, this)\n );\n },\n\n // Associate the input with the autocompleter and create a geocoder\n // to fall back when the autocompleter does not return a value.\n initGeocoder: function(){\n\n // Indicates is user did select a result from the dropdown.\n var selected = false;\n\n var options = {\n types: this.options.types,\n bounds: this.options.bounds === true ? null : this.options.bounds,\n componentRestrictions: this.options.componentRestrictions\n };\n\n if (this.options.country){\n options.componentRestrictions = {country: this.options.country};\n }\n\n this.autocomplete = new google.maps.places.Autocomplete(\n this.input, options\n );\n\n this.geocoder = new google.maps.Geocoder();\n\n // Bind autocomplete to map bounds but only if there is a map\n // and `options.bindToMap` is set to true.\n if (this.map && this.options.bounds === true){\n this.autocomplete.bindTo('bounds', this.map);\n }\n\n // Watch `place_changed` events on the autocomplete input field.\n google.maps.event.addListener(\n this.autocomplete,\n 'place_changed',\n $.proxy(this.placeChanged, this)\n );\n\n // Prevent parent form from being submitted if user hit enter.\n this.$input.on('keypress.' + this._name, function(event){\n if (event.keyCode === 13){ return false; }\n });\n\n // Assume that if user types anything after having selected a result,\n // the selected location is not valid any more.\n if (this.options.geocodeAfterResult === true){\n this.$input.bind('keypress.' + this._name, $.proxy(function(){\n if (event.keyCode != 9 && this.selected === true){\n this.selected = false;\n }\n }, this));\n }\n\n // Listen for \"geocode\" events and trigger find action.\n this.$input.bind('geocode.' + this._name, $.proxy(function(){\n this.find();\n }, this));\n\n // Saves the previous input value\n this.$input.bind('geocode:result.' + this._name, $.proxy(function(){\n this.lastInputVal = this.$input.val();\n }, this));\n\n // Trigger find action when input element is blurred out and user has\n // not explicitly selected a result.\n // (Useful for typing partial location and tabbing to the next field\n // or clicking somewhere else.)\n if (this.options.blur === true){\n this.$input.on('blur.' + this._name, $.proxy(function(){\n if (this.options.geocodeAfterResult === true && this.selected === true) { return; }\n\n if (this.options.restoreValueAfterBlur === true && this.selected === true) {\n setTimeout($.proxy(this.restoreLastValue, this), 0);\n } else {\n this.find();\n }\n }, this));\n }\n },\n\n // Prepare a given DOM structure to be populated when we got some data.\n // This will cycle through the list of component types and map the\n // corresponding elements.\n initDetails: function(){\n if (!this.options.details){ return; }\n\n if(this.options.detailsScope) {\n var $details = $(this.input).parents(this.options.detailsScope).find(this.options.details);\n } else {\n var $details = $(this.options.details);\n }\n\n var attribute = this.options.detailsAttribute,\n details = {};\n\n function setDetail(value){\n details[value] = $details.find(\"[\" + attribute + \"=\" + value + \"]\");\n }\n\n $.each(componentTypes, function(index, key){\n setDetail(key);\n setDetail(key + \"_short\");\n });\n\n $.each(placesDetails, function(index, key){\n setDetail(key);\n });\n\n this.$details = $details;\n this.details = details;\n },\n\n // Set the initial location of the plugin if the `location` options was set.\n // This method will care about converting the value into the right format.\n initLocation: function() {\n\n var location = this.options.location, latLng;\n\n if (!location) { return; }\n\n if (typeof location == 'string') {\n this.find(location);\n return;\n }\n\n if (location instanceof Array) {\n latLng = new google.maps.LatLng(location[0], location[1]);\n }\n\n if (location instanceof google.maps.LatLng){\n latLng = location;\n }\n\n if (latLng){\n if (this.map){ this.map.setCenter(latLng); }\n if (this.marker){ this.marker.setPosition(latLng); }\n }\n },\n\n destroy: function(){\n if (this.map) {\n google.maps.event.clearInstanceListeners(this.map);\n google.maps.event.clearInstanceListeners(this.marker);\n }\n\n this.autocomplete.unbindAll();\n google.maps.event.clearInstanceListeners(this.autocomplete);\n google.maps.event.clearInstanceListeners(this.input);\n this.$input.removeData();\n this.$input.off(this._name);\n this.$input.unbind('.' + this._name);\n },\n\n // Look up a given address. If no `address` was specified it uses\n // the current value of the input.\n find: function(address){\n this.geocode({\n address: address || this.$input.val()\n });\n },\n\n // Requests details about a given location.\n // Additionally it will bias the requests to the provided bounds.\n geocode: function(request){\n // Don't geocode if the requested address is empty\n if (!request.address) {\n return;\n }\n if (this.options.bounds && !request.bounds){\n if (this.options.bounds === true){\n request.bounds = this.map && this.map.getBounds();\n } else {\n request.bounds = this.options.bounds;\n }\n }\n\n if (this.options.country){\n request.region = this.options.country;\n }\n\n this.geocoder.geocode(request, $.proxy(this.handleGeocode, this));\n },\n\n // Get the selected result. If no result is selected on the list, then get\n // the first result from the list.\n selectFirstResult: function() {\n //$(\".pac-container\").hide();\n\n var selected = '';\n // Check if any result is selected.\n if ($(\".pac-item-selected\")[0]) {\n selected = '-selected';\n }\n\n // Get the first suggestion's text.\n var $span1 = $(\".pac-container:visible .pac-item\" + selected + \":first span:nth-child(2)\").text();\n var $span2 = $(\".pac-container:visible .pac-item\" + selected + \":first span:nth-child(3)\").text();\n\n // Adds the additional information, if available.\n var firstResult = $span1;\n if ($span2) {\n firstResult += \" - \" + $span2;\n }\n\n this.$input.val(firstResult);\n\n return firstResult;\n },\n\n // Restores the input value using the previous value if it exists\n restoreLastValue: function() {\n if (this.lastInputVal){ this.$input.val(this.lastInputVal); }\n },\n\n // Handles the geocode response. If more than one results was found\n // it triggers the \"geocode:multiple\" events. If there was an error\n // the \"geocode:error\" event is fired.\n handleGeocode: function(results, status){\n if (status === google.maps.GeocoderStatus.OK) {\n var result = results[0];\n this.$input.val(result.formatted_address);\n this.update(result);\n\n if (results.length > 1){\n this.trigger(\"geocode:multiple\", results);\n }\n\n } else {\n this.trigger(\"geocode:error\", status);\n }\n },\n\n // Triggers a given `event` with optional `arguments` on the input.\n trigger: function(event, argument){\n this.$input.trigger(event, [argument]);\n },\n\n // Set the map to a new center by passing a `geometry`.\n // If the geometry has a viewport, the map zooms out to fit the bounds.\n // Additionally it updates the marker position.\n center: function(geometry){\n if (geometry.viewport){\n this.map.fitBounds(geometry.viewport);\n if (this.map.getZoom() > this.options.maxZoom){\n this.map.setZoom(this.options.maxZoom);\n }\n } else {\n this.map.setZoom(this.options.maxZoom);\n this.map.setCenter(geometry.location);\n }\n\n if (this.marker){\n this.marker.setPosition(geometry.location);\n this.marker.setAnimation(this.options.markerOptions.animation);\n }\n },\n\n // Update the elements based on a single places or geocoding response\n // and trigger the \"geocode:result\" event on the input.\n update: function(result){\n\n if (this.map){\n this.center(result.geometry);\n }\n\n if (this.$details){\n this.fillDetails(result);\n }\n\n this.trigger(\"geocode:result\", result);\n },\n\n // Populate the provided elements with new `result` data.\n // This will lookup all elements that has an attribute with the given\n // component type.\n fillDetails: function(result){\n\n var data = {},\n geometry = result.geometry,\n viewport = geometry.viewport,\n bounds = geometry.bounds;\n\n // Create a simplified version of the address components.\n $.each(result.address_components, function(index, object){\n var name = object.types[0];\n\n $.each(object.types, function(index, name){\n data[name] = object.long_name;\n data[name + \"_short\"] = object.short_name;\n });\n });\n\n // Add properties of the places details.\n $.each(placesDetails, function(index, key){\n data[key] = result[key];\n });\n\n // Add infos about the address and geometry.\n $.extend(data, {\n formatted_address: result.formatted_address,\n location_type: geometry.location_type || \"PLACES\",\n viewport: viewport,\n bounds: bounds,\n location: geometry.location,\n lat: geometry.location.lat(),\n lng: geometry.location.lng()\n });\n\n // Set the values for all details.\n $.each(this.details, $.proxy(function(key, $detail){\n var value = data[key];\n this.setDetail($detail, value);\n }, this));\n\n this.data = data;\n },\n\n // Assign a given `value` to a single `$element`.\n // If the element is an input, the value is set, otherwise it updates\n // the text content.\n setDetail: function($element, value){\n\n if (value === undefined){\n value = \"\";\n } else if (typeof value.toUrlValue == \"function\"){\n value = value.toUrlValue();\n }\n\n if ($element.is(\":input\")){\n $element.val(value);\n } else {\n $element.text(value);\n }\n },\n\n // Fire the \"geocode:dragged\" event and pass the new position.\n markerDragged: function(event){\n this.trigger(\"geocode:dragged\", event.latLng);\n },\n\n mapClicked: function(event) {\n this.trigger(\"geocode:click\", event.latLng);\n },\n\n // Fire the \"geocode:mapdragged\" event and pass the current position of the map center.\n mapDragged: function(event) {\n this.trigger(\"geocode:mapdragged\", this.map.getCenter());\n },\n\n // Fire the \"geocode:idle\" event and pass the current position of the map center.\n mapIdle: function(event) {\n this.trigger(\"geocode:idle\", this.map.getCenter());\n },\n\n mapZoomed: function(event) {\n this.trigger(\"geocode:zoom\", this.map.getZoom());\n },\n\n // Restore the old position of the marker to the last knwon location.\n resetMarker: function(){\n this.marker.setPosition(this.data.location);\n this.setDetail(this.details.lat, this.data.location.lat());\n this.setDetail(this.details.lng, this.data.location.lng());\n },\n\n // Update the plugin after the user has selected an autocomplete entry.\n // If the place has no geometry it passes it to the geocoder.\n placeChanged: function(){\n var place = this.autocomplete.getPlace();\n this.selected = true;\n\n if (!place.geometry){\n if (this.options.autoselect) {\n // Automatically selects the highlighted item or the first item from the\n // suggestions list.\n var autoSelection = this.selectFirstResult();\n this.find(autoSelection);\n }\n } else {\n // Use the input text if it already gives geometry.\n this.update(place);\n }\n }\n });\n\n // A plugin wrapper around the constructor.\n // Pass `options` with all settings that are different from the default.\n // The attribute is used to prevent multiple instantiations of the plugin.\n $.fn.geocomplete = function(options) {\n\n var attribute = 'plugin_geocomplete';\n\n // If you call `.geocomplete()` with a string as the first parameter\n // it returns the corresponding property or calls the method with the\n // following arguments.\n if (typeof options == \"string\"){\n\n var instance = $(this).data(attribute) || $(this).geocomplete().data(attribute),\n prop = instance[options];\n\n if (typeof prop == \"function\"){\n prop.apply(instance, Array.prototype.slice.call(arguments, 1));\n return $(this);\n } else {\n if (arguments.length == 2){\n prop = arguments[1];\n }\n return prop;\n }\n } else {\n return this.each(function() {\n // Prevent against multiple instantiations.\n var instance = $.data(this, attribute);\n if (!instance) {\n instance = new GeoComplete( this, options );\n $.data(this, attribute, instance);\n }\n });\n }\n };\n\n})( jQuery, window, document );\n","module.exports = __webpack_public_path__ + \"media/images/buttercms/logo-9872718e39a5866d2f7fed6fa11c63e5.png\";","module.exports = __webpack_public_path__ + \"media/images/footer/illu-a3d3719d2a28b64a0081a039614225be.png\";","/**\r\n * @preserve jQuery Autocomplete plugin v1.2.6\r\n * @homepage http://xdsoft.net/jqplugins/autocomplete/\r\n * @license MIT - MIT-LICENSE.txt\r\n * (c) 2014, Chupurnov Valeriy \r\n */\n(function ($) {\n 'use strict';\n\n var ARROWLEFT = 37,\n ARROWRIGHT = 39,\n ARROWUP = 38,\n ARROWDOWN = 40,\n TAB = 9,\n CTRLKEY = 17,\n SHIFTKEY = 16,\n DEL = 46,\n ENTER = 13,\n ESC = 27,\n BACKSPACE = 8,\n AKEY = 65,\n CKEY = 67,\n VKEY = 86,\n ZKEY = 90,\n YKEY = 89,\n defaultSetting = {},\n //currentInput = false,\n ctrlDown = false,\n shiftDown = false,\n publics = {},\n accent_map = {\n 'ẚ': 'a',\n 'Á': 'a',\n 'á': 'a',\n 'À': 'a',\n 'à': 'a',\n 'Ă': 'a',\n 'ă': 'a',\n 'Ắ': 'a',\n 'ắ': 'a',\n 'Ằ': 'a',\n 'ằ': 'a',\n 'Ẵ': 'a',\n 'ẵ': 'a',\n 'Ẳ': 'a',\n 'Ẫ': 'a',\n 'ẫ': 'a',\n 'Ẩ': 'a',\n 'ẩ': 'a',\n 'Ǎ': 'a',\n 'ǎ': 'a',\n 'Å': 'a',\n 'å': 'a',\n 'Ǻ': 'a',\n 'ǻ': 'a',\n 'Ä': 'a',\n 'ä': 'a',\n 'Ǟ': 'a',\n 'ǟ': 'a',\n 'Ã': 'a',\n 'ã': 'a',\n 'Ȧ': 'a',\n 'ȧ': 'a',\n 'Ǡ': 'a',\n 'ǡ': 'a',\n 'Ą': 'a',\n 'ą': 'a',\n 'Ā': 'a',\n 'ā': 'a',\n 'Ả': 'a',\n 'ả': 'a',\n 'Ȁ': 'a',\n 'ȁ': 'a',\n 'Ȃ': 'a',\n 'ȃ': 'a',\n 'Ạ': 'a',\n 'ạ': 'a',\n 'Ặ': 'a',\n 'ặ': 'a',\n 'Ậ': 'a',\n 'ậ': 'a',\n 'Ḁ': 'a',\n 'ḁ': 'a',\n 'Ⱥ': 'a',\n 'ⱥ': 'a',\n 'Ǽ': 'a',\n 'ǽ': 'a',\n 'Ǣ': 'a',\n 'ǣ': 'a',\n 'Ḃ': 'b',\n 'ḃ': 'b',\n 'Ḅ': 'b',\n 'ḅ': 'b',\n 'Ḇ': 'b',\n 'ḇ': 'b',\n 'Ƀ': 'b',\n 'ƀ': 'b',\n 'ᵬ': 'b',\n 'Ɓ': 'b',\n 'ɓ': 'b',\n 'Ƃ': 'b',\n 'ƃ': 'b',\n 'Ć': 'c',\n 'ć': 'c',\n 'Ĉ': 'c',\n 'ĉ': 'c',\n 'Č': 'c',\n 'č': 'c',\n 'Ċ': 'c',\n 'ċ': 'c',\n 'Ç': 'c',\n 'ç': 'c',\n 'Ḉ': 'c',\n 'ḉ': 'c',\n 'Ȼ': 'c',\n 'ȼ': 'c',\n 'Ƈ': 'c',\n 'ƈ': 'c',\n 'ɕ': 'c',\n 'Ď': 'd',\n 'ď': 'd',\n 'Ḋ': 'd',\n 'ḋ': 'd',\n 'Ḑ': 'd',\n 'ḑ': 'd',\n 'Ḍ': 'd',\n 'ḍ': 'd',\n 'Ḓ': 'd',\n 'ḓ': 'd',\n 'Ḏ': 'd',\n 'ḏ': 'd',\n 'Đ': 'd',\n 'đ': 'd',\n 'ᵭ': 'd',\n 'Ɖ': 'd',\n 'ɖ': 'd',\n 'Ɗ': 'd',\n 'ɗ': 'd',\n 'Ƌ': 'd',\n 'ƌ': 'd',\n 'ȡ': 'd',\n 'ð': 'd',\n 'É': 'e',\n 'Ə': 'e',\n 'Ǝ': 'e',\n 'ǝ': 'e',\n 'é': 'e',\n 'È': 'e',\n 'è': 'e',\n 'Ĕ': 'e',\n 'ĕ': 'e',\n 'Ê': 'e',\n 'ê': 'e',\n 'Ế': 'e',\n 'ế': 'e',\n 'Ề': 'e',\n 'ề': 'e',\n 'Ễ': 'e',\n 'ễ': 'e',\n 'Ể': 'e',\n 'ể': 'e',\n 'Ě': 'e',\n 'ě': 'e',\n 'Ë': 'e',\n 'ë': 'e',\n 'Ẽ': 'e',\n 'ẽ': 'e',\n 'Ė': 'e',\n 'ė': 'e',\n 'Ȩ': 'e',\n 'ȩ': 'e',\n 'Ḝ': 'e',\n 'ḝ': 'e',\n 'Ę': 'e',\n 'ę': 'e',\n 'Ē': 'e',\n 'ē': 'e',\n 'Ḗ': 'e',\n 'ḗ': 'e',\n 'Ḕ': 'e',\n 'ḕ': 'e',\n 'Ẻ': 'e',\n 'ẻ': 'e',\n 'Ȅ': 'e',\n 'ȅ': 'e',\n 'Ȇ': 'e',\n 'ȇ': 'e',\n 'Ẹ': 'e',\n 'ẹ': 'e',\n 'Ệ': 'e',\n 'ệ': 'e',\n 'Ḙ': 'e',\n 'ḙ': 'e',\n 'Ḛ': 'e',\n 'ḛ': 'e',\n 'Ɇ': 'e',\n 'ɇ': 'e',\n 'ɚ': 'e',\n 'ɝ': 'e',\n 'Ḟ': 'f',\n 'ḟ': 'f',\n 'ᵮ': 'f',\n 'Ƒ': 'f',\n 'ƒ': 'f',\n 'Ǵ': 'g',\n 'ǵ': 'g',\n 'Ğ': 'g',\n 'ğ': 'g',\n 'Ĝ': 'g',\n 'ĝ': 'g',\n 'Ǧ': 'g',\n 'ǧ': 'g',\n 'Ġ': 'g',\n 'ġ': 'g',\n 'Ģ': 'g',\n 'ģ': 'g',\n 'Ḡ': 'g',\n 'ḡ': 'g',\n 'Ǥ': 'g',\n 'ǥ': 'g',\n 'Ɠ': 'g',\n 'ɠ': 'g',\n 'Ĥ': 'h',\n 'ĥ': 'h',\n 'Ȟ': 'h',\n 'ȟ': 'h',\n 'Ḧ': 'h',\n 'ḧ': 'h',\n 'Ḣ': 'h',\n 'ḣ': 'h',\n 'Ḩ': 'h',\n 'ḩ': 'h',\n 'Ḥ': 'h',\n 'ḥ': 'h',\n 'Ḫ': 'h',\n 'ḫ': 'h',\n 'H': 'h',\n '̱': 'h',\n 'ẖ': 'h',\n 'Ħ': 'h',\n 'ħ': 'h',\n 'Ⱨ': 'h',\n 'ⱨ': 'h',\n 'Í': 'i',\n 'í': 'i',\n 'Ì': 'i',\n 'ì': 'i',\n 'Ĭ': 'i',\n 'ĭ': 'i',\n 'Î': 'i',\n 'î': 'i',\n 'Ǐ': 'i',\n 'ǐ': 'i',\n 'Ï': 'i',\n 'ï': 'i',\n 'Ḯ': 'i',\n 'ḯ': 'i',\n 'Ĩ': 'i',\n 'ĩ': 'i',\n 'İ': 'i',\n 'i': 'i',\n 'Į': 'i',\n 'į': 'i',\n 'Ī': 'i',\n 'ī': 'i',\n 'Ỉ': 'i',\n 'ỉ': 'i',\n 'Ȉ': 'i',\n 'ȉ': 'i',\n 'Ȋ': 'i',\n 'ȋ': 'i',\n 'Ị': 'i',\n 'ị': 'i',\n 'Ḭ': 'i',\n 'ḭ': 'i',\n 'I': 'i',\n 'ı': 'i',\n 'Ɨ': 'i',\n 'ɨ': 'i',\n 'Ĵ': 'j',\n 'ĵ': 'j',\n 'J': 'j',\n '̌': 'j',\n 'ǰ': 'j',\n 'ȷ': 'j',\n 'Ɉ': 'j',\n 'ɉ': 'j',\n 'ʝ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'Ḱ': 'k',\n 'ḱ': 'k',\n 'Ǩ': 'k',\n 'ǩ': 'k',\n 'Ķ': 'k',\n 'ķ': 'k',\n 'Ḳ': 'k',\n 'ḳ': 'k',\n 'Ḵ': 'k',\n 'ḵ': 'k',\n 'Ƙ': 'k',\n 'ƙ': 'k',\n 'Ⱪ': 'k',\n 'ⱪ': 'k',\n 'Ĺ': 'a',\n 'ĺ': 'l',\n 'Ľ': 'l',\n 'ľ': 'l',\n 'Ļ': 'l',\n 'ļ': 'l',\n 'Ḷ': 'l',\n 'ḷ': 'l',\n 'Ḹ': 'l',\n 'ḹ': 'l',\n 'Ḽ': 'l',\n 'ḽ': 'l',\n 'Ḻ': 'l',\n 'ḻ': 'l',\n 'Ł': 'l',\n 'ł': 'l',\n '̣': 'l',\n 'Ŀ': 'l',\n 'ŀ': 'l',\n 'Ƚ': 'l',\n 'ƚ': 'l',\n 'Ⱡ': 'l',\n 'ⱡ': 'l',\n 'Ɫ': 'l',\n 'ɫ': 'l',\n 'ɬ': 'l',\n 'ɭ': 'l',\n 'ȴ': 'l',\n 'Ḿ': 'm',\n 'ḿ': 'm',\n 'Ṁ': 'm',\n 'ṁ': 'm',\n 'Ṃ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'Ń': 'n',\n 'ń': 'n',\n 'Ǹ': 'n',\n 'ǹ': 'n',\n 'Ň': 'n',\n 'ň': 'n',\n 'Ñ': 'n',\n 'ñ': 'n',\n 'Ṅ': 'n',\n 'ṅ': 'n',\n 'Ņ': 'n',\n 'ņ': 'n',\n 'Ṇ': 'n',\n 'ṇ': 'n',\n 'Ṋ': 'n',\n 'ṋ': 'n',\n 'Ṉ': 'n',\n 'ṉ': 'n',\n 'Ɲ': 'n',\n 'ɲ': 'n',\n 'Ƞ': 'n',\n 'ƞ': 'n',\n 'ɳ': 'n',\n 'ȵ': 'n',\n 'N': 'n',\n '̈': 'n',\n 'n': 'n',\n 'Ó': 'o',\n 'ó': 'o',\n 'Ò': 'o',\n 'ò': 'o',\n 'Ŏ': 'o',\n 'ŏ': 'o',\n 'Ô': 'o',\n 'ô': 'o',\n 'Ố': 'o',\n 'ố': 'o',\n 'Ồ': 'o',\n 'ồ': 'o',\n 'Ỗ': 'o',\n 'ỗ': 'o',\n 'Ổ': 'o',\n 'ổ': 'o',\n 'Ǒ': 'o',\n 'ǒ': 'o',\n 'Ö': 'o',\n 'ö': 'o',\n 'Ȫ': 'o',\n 'ȫ': 'o',\n 'Ő': 'o',\n 'ő': 'o',\n 'Õ': 'o',\n 'õ': 'o',\n 'Ṍ': 'o',\n 'ṍ': 'o',\n 'Ṏ': 'o',\n 'ṏ': 'o',\n 'Ȭ': 'o',\n 'ȭ': 'o',\n 'Ȯ': 'o',\n 'ȯ': 'o',\n 'Ȱ': 'o',\n 'ȱ': 'o',\n 'Ø': 'o',\n 'ø': 'o',\n 'Ǿ': 'o',\n 'ǿ': 'o',\n 'Ǫ': 'o',\n 'ǫ': 'o',\n 'Ǭ': 'o',\n 'ǭ': 'o',\n 'Ō': 'o',\n 'ō': 'o',\n 'Ṓ': 'o',\n 'ṓ': 'o',\n 'Ṑ': 'o',\n 'ṑ': 'o',\n 'Ỏ': 'o',\n 'ỏ': 'o',\n 'Ȍ': 'o',\n 'ȍ': 'o',\n 'Ȏ': 'o',\n 'ȏ': 'o',\n 'Ơ': 'o',\n 'ơ': 'o',\n 'Ớ': 'o',\n 'ớ': 'o',\n 'Ờ': 'o',\n 'ờ': 'o',\n 'Ỡ': 'o',\n 'ỡ': 'o',\n 'Ở': 'o',\n 'ở': 'o',\n 'Ợ': 'o',\n 'ợ': 'o',\n 'Ọ': 'o',\n 'ọ': 'o',\n 'Ộ': 'o',\n 'ộ': 'o',\n 'Ɵ': 'o',\n 'ɵ': 'o',\n 'Ṕ': 'p',\n 'ṕ': 'p',\n 'Ṗ': 'p',\n 'ṗ': 'p',\n 'Ᵽ': 'p',\n 'Ƥ': 'p',\n 'ƥ': 'p',\n 'P': 'p',\n '̃': 'p',\n 'p': 'p',\n 'ʠ': 'q',\n 'Ɋ': 'q',\n 'ɋ': 'q',\n 'Ŕ': 'r',\n 'ŕ': 'r',\n 'Ř': 'r',\n 'ř': 'r',\n 'Ṙ': 'r',\n 'ṙ': 'r',\n 'Ŗ': 'r',\n 'ŗ': 'r',\n 'Ȑ': 'r',\n 'ȑ': 'r',\n 'Ȓ': 'r',\n 'ȓ': 'r',\n 'Ṛ': 'r',\n 'ṛ': 'r',\n 'Ṝ': 'r',\n 'ṝ': 'r',\n 'Ṟ': 'r',\n 'ṟ': 'r',\n 'Ɍ': 'r',\n 'ɍ': 'r',\n 'ᵲ': 'r',\n 'ɼ': 'r',\n 'Ɽ': 'r',\n 'ɽ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ß': 's',\n 'Ś': 's',\n 'ś': 's',\n 'Ṥ': 's',\n 'ṥ': 's',\n 'Ŝ': 's',\n 'ŝ': 's',\n 'Š': 's',\n 'š': 's',\n 'Ṧ': 's',\n 'ṧ': 's',\n 'Ṡ': 's',\n 'ṡ': 's',\n 'ẛ': 's',\n 'Ş': 's',\n 'ş': 's',\n 'Ṣ': 's',\n 'ṣ': 's',\n 'Ṩ': 's',\n 'ṩ': 's',\n 'Ș': 's',\n 'ș': 's',\n 'ʂ': 's',\n 'S': 's',\n '̩': 's',\n 's': 's',\n 'Þ': 't',\n 'þ': 't',\n 'Ť': 't',\n 'ť': 't',\n 'T': 't',\n 'ẗ': 't',\n 'Ṫ': 't',\n 'ṫ': 't',\n 'Ţ': 't',\n 'ţ': 't',\n 'Ṭ': 't',\n 'ṭ': 't',\n 'Ț': 't',\n 'ț': 't',\n 'Ṱ': 't',\n 'ṱ': 't',\n 'Ṯ': 't',\n 'ṯ': 't',\n 'Ŧ': 't',\n 'ŧ': 't',\n 'Ⱦ': 't',\n 'ⱦ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'Ƭ': 't',\n 'ƭ': 't',\n 'Ʈ': 't',\n 'ʈ': 't',\n 'ȶ': 't',\n 'Ú': 'u',\n 'ú': 'u',\n 'Ù': 'u',\n 'ù': 'u',\n 'Ŭ': 'u',\n 'ŭ': 'u',\n 'Û': 'u',\n 'û': 'u',\n 'Ǔ': 'u',\n 'ǔ': 'u',\n 'Ů': 'u',\n 'ů': 'u',\n 'Ü': 'u',\n 'ü': 'u',\n 'Ǘ': 'u',\n 'ǘ': 'u',\n 'Ǜ': 'u',\n 'ǜ': 'u',\n 'Ǚ': 'u',\n 'ǚ': 'u',\n 'Ǖ': 'u',\n 'ǖ': 'u',\n 'Ű': 'u',\n 'ű': 'u',\n 'Ũ': 'u',\n 'ũ': 'u',\n 'Ṹ': 'u',\n 'ṹ': 'u',\n 'Ų': 'u',\n 'ų': 'u',\n 'Ū': 'u',\n 'ū': 'u',\n 'Ṻ': 'u',\n 'ṻ': 'u',\n 'Ủ': 'u',\n 'ủ': 'u',\n 'Ȕ': 'u',\n 'ȕ': 'u',\n 'Ȗ': 'u',\n 'ȗ': 'u',\n 'Ư': 'u',\n 'ư': 'u',\n 'Ứ': 'u',\n 'ứ': 'u',\n 'Ừ': 'u',\n 'ừ': 'u',\n 'Ữ': 'u',\n 'ữ': 'u',\n 'Ử': 'u',\n 'ử': 'u',\n 'Ự': 'u',\n 'ự': 'u',\n 'Ụ': 'u',\n 'ụ': 'u',\n 'Ṳ': 'u',\n 'ṳ': 'u',\n 'Ṷ': 'u',\n 'ṷ': 'u',\n 'Ṵ': 'u',\n 'ṵ': 'u',\n 'Ʉ': 'u',\n 'ʉ': 'u',\n 'Ṽ': 'v',\n 'ṽ': 'v',\n 'Ṿ': 'v',\n 'ṿ': 'v',\n 'Ʋ': 'v',\n 'ʋ': 'v',\n 'Ẃ': 'w',\n 'ẃ': 'w',\n 'Ẁ': 'w',\n 'ẁ': 'w',\n 'Ŵ': 'w',\n 'ŵ': 'w',\n 'W': 'w',\n '̊': 'w',\n 'ẘ': 'w',\n 'Ẅ': 'w',\n 'ẅ': 'w',\n 'Ẇ': 'w',\n 'ẇ': 'w',\n 'Ẉ': 'w',\n 'ẉ': 'w',\n 'Ẍ': 'x',\n 'ẍ': 'x',\n 'Ẋ': 'x',\n 'ẋ': 'x',\n 'Ý': 'y',\n 'ý': 'y',\n 'Ỳ': 'y',\n 'ỳ': 'y',\n 'Ŷ': 'y',\n 'ŷ': 'y',\n 'Y': 'y',\n 'ẙ': 'y',\n 'Ÿ': 'y',\n 'ÿ': 'y',\n 'Ỹ': 'y',\n 'ỹ': 'y',\n 'Ẏ': 'y',\n 'ẏ': 'y',\n 'Ȳ': 'y',\n 'ȳ': 'y',\n 'Ỷ': 'y',\n 'ỷ': 'y',\n 'Ỵ': 'y',\n 'ỵ': 'y',\n 'ʏ': 'y',\n 'Ɏ': 'y',\n 'ɏ': 'y',\n 'Ƴ': 'y',\n 'ƴ': 'y',\n 'Ź': 'z',\n 'ź': 'z',\n 'Ẑ': 'z',\n 'ẑ': 'z',\n 'Ž': 'z',\n 'ž': 'z',\n 'Ż': 'z',\n 'ż': 'z',\n 'Ẓ': 'z',\n 'ẓ': 'z',\n 'Ẕ': 'z',\n 'ẕ': 'z',\n 'Ƶ': 'z',\n 'ƶ': 'z',\n 'Ȥ': 'z',\n 'ȥ': 'z',\n 'ʐ': 'z',\n 'ʑ': 'z',\n 'Ⱬ': 'z',\n 'ⱬ': 'z',\n 'Ǯ': 'z',\n 'ǯ': 'z',\n 'ƺ': 'z',\n '2': '2',\n '6': '6',\n 'B': 'B',\n 'F': 'F',\n 'J': 'J',\n 'N': 'N',\n 'R': 'R',\n 'V': 'V',\n 'Z': 'Z',\n 'b': 'b',\n 'f': 'f',\n 'j': 'j',\n 'n': 'n',\n 'r': 'r',\n 'v': 'v',\n 'z': 'z',\n '1': '1',\n '5': '5',\n '9': '9',\n 'A': 'A',\n 'E': 'E',\n 'I': 'I',\n 'M': 'M',\n 'Q': 'Q',\n 'U': 'U',\n 'Y': 'Y',\n 'a': 'a',\n 'e': 'e',\n 'i': 'i',\n 'm': 'm',\n 'q': 'q',\n 'u': 'u',\n 'y': 'y',\n '0': '0',\n '4': '4',\n '8': '8',\n 'D': 'D',\n 'H': 'H',\n 'L': 'L',\n 'P': 'P',\n 'T': 'T',\n 'X': 'X',\n 'd': 'd',\n 'h': 'h',\n 'l': 'l',\n 'p': 'p',\n 't': 't',\n 'x': 'x',\n '3': '3',\n '7': '7',\n 'C': 'C',\n 'G': 'G',\n 'K': 'K',\n 'O': 'O',\n 'S': 'S',\n 'W': 'W',\n 'c': 'c',\n 'g': 'g',\n 'k': 'k',\n 'o': 'o',\n 's': 's',\n 'w': 'w',\n 'ẳ': 'a',\n 'Â': 'a',\n 'â': 'a',\n 'Ấ': 'a',\n 'ấ': 'a',\n 'Ầ': 'a',\n 'ầ': 'a'\n };\n if (window.getComputedStyle === undefined) {\n window.getComputedStyle = function () {\n function getPixelSize(element, style, property, fontSize) {\n var sizeWithSuffix = style[property],\n size = parseFloat(sizeWithSuffix),\n suffix = sizeWithSuffix.split(/\\d/)[0],\n rootSize;\n fontSize = fontSize !== null ? fontSize : /%|em/.test(suffix) && element.parentElement ? getPixelSize(element.parentElement, element.parentElement.currentStyle, 'fontSize', null) : 16;\n rootSize = property === 'fontSize' ? fontSize : /width/i.test(property) ? element.clientWidth : element.clientHeight;\n return suffix === 'em' ? size * fontSize : suffix === 'in' ? size * 96 : suffix === 'pt' ? size * 96 / 72 : suffix === '%' ? size / 100 * rootSize : size;\n }\n function setShortStyleProperty(style, property) {\n var borderSuffix = property === 'border' ? 'Width' : '',\n t = property + 'Top' + borderSuffix,\n r = property + 'Right' + borderSuffix,\n b = property + 'Bottom' + borderSuffix,\n l = property + 'Left' + borderSuffix;\n style[property] = (style[t] === style[r] === style[b] === style[l] ? [style[t]] : style[t] === style[b] && style[l] === style[r] ? [style[t], style[r]] : style[l] === style[r] ? [style[t], style[r], style[b]] : [style[t], style[r], style[b], style[l]]).join(' ');\n }\n function CSSStyleDeclaration(element) {\n var currentStyle = element.currentStyle,\n style = this,\n property,\n fontSize = getPixelSize(element, currentStyle, 'fontSize', null);\n for (property in currentStyle) {\n if (Object.prototype.hasOwnProperty.call(currentStyle, property)) {\n if (/width|height|margin.|padding.|border.+W/.test(property) && style[property] !== 'auto') {\n style[property] = getPixelSize(element, currentStyle, property, fontSize) + 'px';\n } else if (property === 'styleFloat') {\n style.float = currentStyle[property];\n } else {\n style[property] = currentStyle[property];\n }\n }\n }\n setShortStyleProperty(style, 'margin');\n setShortStyleProperty(style, 'padding');\n setShortStyleProperty(style, 'border');\n style.fontSize = fontSize + 'px';\n return style;\n }\n CSSStyleDeclaration.prototype = {\n constructor: CSSStyleDeclaration,\n getPropertyPriority: function () {},\n getPropertyValue: function (prop) {\n return this[prop] || '';\n },\n item: function () {},\n removeProperty: function () {},\n setProperty: function () {},\n getPropertyCSSValue: function () {}\n };\n function getComputedStyle(element) {\n return new CSSStyleDeclaration(element);\n }\n return getComputedStyle;\n }(this);\n }\n $(document).on('keydown.xdsoftctrl', function (e) {\n if (e.keyCode === CTRLKEY) {\n ctrlDown = true;\n }\n if (e.keyCode === SHIFTKEY) {\n ctrlDown = true;\n }\n }).on('keyup.xdsoftctrl', function (e) {\n if (e.keyCode === CTRLKEY) {\n ctrlDown = false;\n }\n if (e.keyCode === SHIFTKEY) {\n ctrlDown = false;\n }\n });\n function accentReplace(s) {\n if (!s) {\n return '';\n }\n var ret = '',\n i;\n for (i = 0; i < s.length; i += 1) {\n ret += accent_map[s.charAt(i)] || s.charAt(i);\n }\n return ret;\n }\n function escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n }\n function getCaretPosition(input) {\n if (!input) {\n return;\n }\n if (input.selectionStart) {\n return input.selectionStart;\n }\n if (document.selection) {\n input.focus();\n var sel = document.selection.createRange(),\n selLen = document.selection.createRange().text.length;\n sel.moveStart('character', -input.value.length);\n return sel.text.length - selLen;\n }\n }\n function setCaretPosition(input, pos) {\n if (input.setSelectionRange) {\n input.focus();\n input.setSelectionRange(pos, pos);\n } else if (input.createTextRange) {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveEnd('character', pos);\n range.moveStart('character', pos);\n range.select();\n }\n }\n function isset(value) {\n return value !== undefined;\n }\n function safe_call(callback, args, callback2, defaultValue) {\n if (isset(callback) && !$.isArray(callback)) {\n return $.isFunction(callback) ? callback.apply(this, args) : defaultValue;\n }\n if (isset(callback2)) {\n return safe_call.call(this, callback2, args);\n }\n return defaultValue;\n }\n ;\n function __safe(callbackName, source, args, defaultValue) {\n var undefinedVar;\n return safe_call.call(this, isset(this.source[source]) && Object.prototype.hasOwnProperty.call(this.source[source], callbackName) ? this.source[source][callbackName] : undefinedVar, args, function () {\n return safe_call.call(this, isset(this[callbackName][source]) ? this[callbackName][source] : isset(this[callbackName][0]) ? this[callbackName][0] : Object.prototype.hasOwnProperty.call(this, callbackName) ? this[callbackName] : undefinedVar, args, defaultSetting[callbackName][source] || defaultSetting[callbackName][0] || defaultSetting[callbackName], defaultValue);\n }, defaultValue);\n }\n ;\n function __get(property, source) {\n if (!isset(source)) source = 0;\n if ($.isArray(this.source) && isset(this.source[source]) && isset(this.source[source][property])) return this.source[source][property];\n if (isset(this[property])) {\n if ($.isArray(this[property])) {\n if (isset(this[property][source])) return this[property][source];\n if (isset(this[property][0])) return this[property][0];\n return null;\n }\n return this[property];\n }\n return null;\n }\n ;\n function loadRemote(url, sourceObject, done, debug) {\n if (sourceObject.xhr) {\n sourceObject.xhr.abort();\n }\n sourceObject.xhr = $.ajax($.extend(true, {\n url: url,\n type: 'GET',\n async: true,\n cache: false,\n dataType: 'json'\n }, sourceObject.ajax)).done(function (data) {\n done && done.apply(this, $.makeArray(arguments));\n }).fail(function (jqXHR, textStatus) {\n if (debug) console.log(\"Request failed: \" + textStatus);\n });\n }\n function findRight(data, query) {\n var right = false,\n source;\n for (source = 0; source < data.length; source += 1) {\n if (right = __safe.call(this, \"findRight\", source, [data[source], query, source])) {\n return {\n right: right,\n source: source\n };\n }\n }\n return false;\n }\n function processData(data, query) {\n var source;\n preparseData.call(this, data, query);\n for (source = 0; source < data.length; source += 1) {\n data[source] = __safe.call(this, 'filter', source, [data[source], query, source], data[source]);\n }\n }\n ;\n function collectData(query, datasource, callback) {\n var options = this,\n source;\n if ($.isFunction(options.source)) {\n options.source.apply(options, [query, function (items) {\n datasource = [items];\n safe_call.call(options, callback, [query]);\n }, datasource, 0]);\n } else {\n for (source = 0; source < options.source.length; source += 1) {\n if ($.isArray(options.source[source])) {\n datasource[source] = options.source[source];\n } else if ($.isFunction(options.source[source])) {\n (function (source) {\n options.source[source].apply(options, [query, function (items) {\n if (!datasource[source]) {\n datasource[source] = [];\n }\n if (items && $.isArray(items)) {\n switch (options.appendMethod) {\n case 'replace':\n datasource[source] = items;\n break;\n default:\n datasource[source] = datasource[source].concat(items);\n }\n }\n safe_call.call(options, callback, [query]);\n }, datasource, source]);\n })(source);\n } else {\n switch (options.source[source].type) {\n case 'remote':\n if (isset(options.source[source].url)) {\n if (!isset(options.source[source].minLength) || query.length >= options.source[source].minLength) {\n var url = __safe.call(options, 'replace', source, [options.source[source].url, query], '');\n if (!datasource[source]) {\n datasource[source] = [];\n }\n (function (source) {\n loadRemote(url, options.source[source], function (resp) {\n datasource[source] = resp;\n safe_call.call(options, callback, [query]);\n }, options.debug);\n })(source);\n }\n }\n break;\n default:\n if (isset(options.source[source]['data'])) {\n datasource[source] = options.source[source]['data'];\n } else {\n datasource[source] = options.source[source];\n }\n }\n }\n }\n }\n safe_call.call(options, callback, [query]);\n }\n ;\n function preparseData(data, query) {\n for (var source = 0; source < data.length; source++) {\n data[source] = __safe.call(this, 'preparse', source, [data[source], query], data[source]);\n }\n }\n ;\n function renderData(data, query) {\n var source,\n i,\n $div,\n $divs = [];\n for (source = 0; source < data.length; source += 1) {\n for (i = 0; i < data[source].length; i += 1) {\n if ($divs.length >= this.limit) break;\n $div = $(__safe.call(this, 'render', source, [data[source][i], source, i, query], ''));\n $div.data('source', source);\n $div.data('pid', i);\n $div.data('item', data[source][i]);\n $divs.push($div);\n }\n }\n return $divs;\n }\n ;\n function getItem($div, dataset) {\n if (isset($div.data('source')) && isset($div.data('pid')) && isset(dataset[$div.data('source')]) && isset(dataset[$div.data('source')][$div.data('pid')])) {\n return dataset[$div.data('source')][$div.data('pid')];\n }\n return false;\n }\n ;\n function getValue($div, dataset) {\n var item = getItem($div, dataset);\n if (item) {\n return __safe.call(this, 'getValue', $div.data('source'), [item, $div.data('source')]);\n } else {\n if (isset($div.data('value'))) {\n return decodeURIComponent($div.data('value'));\n } else {\n return $div.html();\n }\n }\n }\n ;\n defaultSetting = {\n minLength: 0,\n valueKey: 'value',\n titleKey: 'title',\n highlight: true,\n showHint: true,\n dropdownWidth: '100%',\n dropdownStyle: {},\n itemStyle: {},\n hintStyle: false,\n style: false,\n debug: true,\n openOnFocus: false,\n closeOnBlur: true,\n autoselect: false,\n accents: true,\n replaceAccentsForRemote: true,\n limit: 20,\n visibleLimit: 20,\n visibleHeight: 0,\n defaultHeightItem: 30,\n timeoutUpdate: 10,\n get: function (property, source) {\n return __get.call(this, property, source);\n },\n replace: [function (url, query) {\n if (this.replaceAccentsForRemote) {\n query = accentReplace(query);\n }\n return url.replace('%QUERY%', encodeURIComponent(query));\n }],\n equal: function (value, query) {\n return query.toLowerCase() == value.substr(0, query.length).toLowerCase();\n },\n findRight: [function (items, query, source) {\n var results = [],\n value = '',\n i;\n if (items) {\n for (i = 0; i < items.length; i += 1) {\n value = __safe.call(this, 'getValue', source, [items[i], source]);\n if (__safe.call(this, 'equal', source, [value, query, source], false)) {\n return items[i];\n }\n }\n }\n return false;\n }],\n valid: [function (value, query) {\n if (this.accents) {\n value = accentReplace(value);\n query = accentReplace(query);\n }\n return value.toLowerCase().indexOf(query.toLowerCase()) != -1;\n }],\n filter: [function (items, query, source) {\n var results = [],\n value = '',\n i;\n if (items) {\n for (i = 0; i < items.length; i += 1) {\n value = isset(items[i][this.get('valueKey', source)]) ? items[i][this.get('valueKey', source)] : items[i].toString();\n if (__safe.call(this, 'valid', source, [value, query])) {\n results.push(items[i]);\n }\n }\n }\n return results;\n }],\n preparse: function (items) {\n return items;\n },\n getValue: [function (item, source) {\n return isset(item[this.get('valueKey', source)]) ? item[this.get('valueKey', source)] : item.toString();\n }],\n getTitle: [function (item, source) {\n return isset(item[this.get('titleKey', source)]) ? item[this.get('titleKey', source)] : item.toString();\n }],\n render: [function (item, source, pid, query) {\n var value = __safe.call(this, \"getValue\", source, [item, source], defaultSetting.getValue[0].call(this, item, source)),\n title = __safe.call(this, \"getTitle\", source, [item, source], defaultSetting.getTitle[0].call(this, item, source)),\n _value = '',\n _query = '',\n _title = '',\n hilite_hints = '',\n highlighted = '',\n c,\n h,\n i,\n spos = 0;\n if (this.highlight) {\n if (!this.accents) {\n title = title.replace(new RegExp('(' + escapeRegExp(query) + ')', 'i'), '$1');\n } else {\n _title = accentReplace(title).toLowerCase().replace(/[<>]+/g, ''), _query = accentReplace(query).toLowerCase().replace(/[<>]+/g, '');\n hilite_hints = _title.replace(new RegExp(escapeRegExp(_query), 'g'), '<' + _query + '>');\n for (i = 0; i < hilite_hints.length; i += 1) {\n c = title.charAt(spos);\n h = hilite_hints.charAt(i);\n if (h === '<') {\n highlighted += '';\n } else if (h === '>') {\n highlighted += '';\n } else {\n spos += 1;\n highlighted += c;\n }\n }\n title = highlighted;\n }\n }\n return '
' + title + '
';\n }],\n appendMethod: 'concat',\n // supported merge and replace \n source: [],\n afterSelected: function () {}\n };\n function init(that, options) {\n if ($(that).hasClass('xdsoft_input')) return;\n var $box = $('
'),\n $dropdown = $('
'),\n $hint = $(''),\n $input = $(that),\n timer1 = 0,\n intervalForVisibility,\n dataset = [],\n iOpen = false,\n value = '',\n currentValue = '',\n currentSelect = '',\n active = null,\n pos = 0;\n\n //it can be used to access settings\n $input.data('autocomplete_options', options);\n $dropdown.on('mousedown', function (e) {\n e.preventDefault();\n e.stopPropagation();\n }).on('updatescroll.xdsoft', function () {\n var _act = $dropdown.find('.active');\n if (!_act.length) {\n return;\n }\n var top = _act.position().top,\n actHght = _act.outerHeight(true),\n scrlTop = $dropdown.scrollTop(),\n hght = $dropdown.height();\n if (top < 0) {\n $dropdown.scrollTop(scrlTop - Math.abs(top));\n } else if (top + actHght > hght) {\n $dropdown.scrollTop(scrlTop + top + actHght - hght);\n }\n });\n $box.css({\n 'display': $input.css('display'),\n 'width': $input.css('width')\n });\n if (options.style) $box.css(options.style);\n $input.addClass('xdsoft_input').attr('autocomplete', 'off');\n var xDown = null;\n var yDown = null;\n var isSwipe = false;\n $dropdown.on('mousemove', 'div', function () {\n if ($(this).hasClass('active')) return true;\n $dropdown.find('div').removeClass('active');\n $(this).addClass('active');\n }).on('mousedown', 'div', function (e) {\n $dropdown.find('div').removeClass('active');\n $(this).addClass('active');\n $input.trigger('pick.xdsoft');\n }).on('touchstart', 'div', function (e) {\n xDown = e.originalEvent.touches[0].clientX;\n yDown = e.originalEvent.touches[0].clientY;\n }).on('touchend', 'div', function (e) {\n if (isSwipe === false) {\n $dropdown.find('div').removeClass('active');\n $(this).addClass('active');\n $input.trigger('pick.xdsoft');\n }\n isSwipe = false;\n }).on('touchmove', 'div', function (e) {\n if (!xDown || !yDown) {\n return;\n }\n var xUp = e.originalEvent.touches[0].clientX;\n var yUp = e.originalEvent.touches[0].clientY;\n var xDiff = xDown - xUp;\n var yDiff = yDown - yUp;\n if (Math.abs(xDiff) > Math.abs(yDiff)) {\n if (xDiff > 0) {\n isSwipe = 'left';\n } else {\n isSwipe = 'right';\n }\n } else {\n if (yDiff > 0) {\n isSwipe = 'top';\n } else {\n isSwipe = 'bottm';\n }\n }\n xDown = null;\n yDown = null;\n });\n function manageData() {\n if ($input.val() != currentValue) {\n currentValue = $input.val();\n } else {\n return;\n }\n if (currentValue.length < options.minLength) {\n $input.trigger('close.xdsoft');\n return;\n }\n collectData.call(options, currentValue, dataset, function (query) {\n if (query != currentValue) {\n return;\n }\n var right;\n processData.call(options, dataset, query);\n $input.trigger('updateContent.xdsoft');\n if (options.showHint && currentValue.length && currentValue.length <= $input.prop('size') && (right = findRight.call(options, dataset, currentValue))) {\n var title = __safe.call(options, 'getTitle', right.source, [right.right, right.source]);\n title = query + title.substr(query.length);\n $hint.val(title);\n } else {\n $hint.val('');\n }\n });\n return;\n }\n function manageKey(event) {\n var key = event.keyCode,\n right;\n switch (key) {\n case AKEY:\n case CKEY:\n case VKEY:\n case ZKEY:\n case YKEY:\n if (event.shiftKey || event.ctrlKey) {\n return true;\n }\n break;\n case SHIFTKEY:\n case CTRLKEY:\n return true;\n break;\n case ARROWRIGHT:\n case ARROWLEFT:\n if (ctrlDown || shiftDown || event.shiftKey || event.ctrlKey) {\n return true;\n }\n value = $input.val();\n pos = getCaretPosition($input[0]);\n if (key === ARROWRIGHT && pos === value.length) {\n if (right = findRight.call(options, dataset, value)) {\n $input.trigger('pick.xdsoft', [__safe.call(options, 'getValue', right.source, [right.right, right.source])]);\n } else {\n $input.trigger('pick.xdsoft');\n }\n event.preventDefault();\n return false;\n }\n return true;\n case TAB:\n return true;\n case ENTER:\n if (iOpen) {\n $input.trigger('pick.xdsoft');\n event.preventDefault();\n return false;\n } else {\n return true;\n }\n break;\n case ESC:\n $input.val(currentValue).trigger('close.xdsoft');\n event.preventDefault();\n return false;\n case ARROWDOWN:\n case ARROWUP:\n if (!iOpen) {\n $input.trigger('open.xdsoft');\n $input.trigger('updateContent.xdsoft');\n event.preventDefault();\n return false;\n }\n active = $dropdown.find('div.active');\n var next = key == ARROWDOWN ? 'next' : 'prev',\n timepick = true;\n if (active.length) {\n active.removeClass('active');\n if (active[next]().length) {\n active[next]().addClass('active');\n } else {\n $input.val(currentValue);\n timepick = false;\n }\n } else {\n $dropdown.children().eq(key == ARROWDOWN ? 0 : -1).addClass('active');\n }\n if (timepick) {\n $input.trigger('timepick.xdsoft');\n }\n $dropdown.trigger('updatescroll.xdsoft');\n event.preventDefault();\n return false;\n }\n return;\n }\n $input.data('xdsoft_autocomplete', dataset).after($box).on('pick.xdsoft', function (event, _value) {\n $input.trigger('timepick.xdsoft', _value);\n currentSelect = currentValue = $input.val();\n $input.trigger('close.xdsoft');\n\n //currentInput = false;\n\n active = $dropdown.find('div.active').eq(0);\n if (!active.length) active = $dropdown.children().first();\n $input.trigger('selected.xdsoft', [getItem(active, dataset)]);\n if (options.afterSelected) options.afterSelected();\n }).on('timepick.xdsoft', function (event, _value) {\n active = $dropdown.find('div.active');\n if (!active.length) active = $dropdown.children().first();\n if (active.length) {\n if (!isset(_value)) {\n $input.val(getValue.call(options, active, dataset));\n } else {\n $input.val(_value);\n }\n $input.trigger('autocompleted.xdsoft', [getItem(active, dataset)]);\n $hint.val('');\n setCaretPosition($input[0], $input.val().length);\n }\n }).on('keydown.xdsoft input.xdsoft cut.xdsoft paste.xdsoft', function (event) {\n var ret = manageKey(event);\n if (ret === false || ret === true) {\n return ret;\n }\n setTimeout(function () {\n manageData();\n }, 1);\n manageData();\n }).on('change.xdsoft', function (event) {\n currentValue = $input.val();\n });\n currentValue = $input.val();\n collectData.call(options, $input.val(), dataset, function (query) {\n processData.call(options, dataset, query);\n });\n if (options.openOnFocus) {\n $input.on('focusin.xdsoft', function () {\n $input.trigger('open.xdsoft');\n $input.trigger('updateContent.xdsoft');\n });\n }\n if (options.closeOnBlur) $input.on('focusout.xdsoft', function () {\n $input.trigger('close.xdsoft');\n });\n $box.append($input).append($dropdown);\n var olderBackground = false,\n timerUpdate = 0;\n $input.on('updateHelperPosition.xdsoft', function () {\n clearTimeout(timerUpdate);\n timerUpdate = setTimeout(function () {\n $box.css({\n 'display': $input.css('display'),\n 'width': $input.css('width')\n });\n $dropdown.css($.extend(true, {\n left: $input.position().left,\n top: $input.position().top + parseInt($input.css('marginTop')) + parseInt($input[0].offsetHeight),\n marginLeft: $input.css('marginLeft'),\n marginRight: $input.css('marginRight'),\n width: options.dropdownWidth == '100%' ? $input[0].offsetWidth : options.dropdownWidth\n }, options.dropdownStyle));\n if (options.showHint) {\n var style = getComputedStyle($input[0], \"\");\n $hint[0].style.cssText = style.cssText;\n $hint.css({\n 'box-sizing': style.boxSizing,\n borderStyle: 'solid',\n borderCollapse: style.borderCollapse,\n borderLeftWidth: style.borderLeftWidth,\n borderRightWidth: style.borderRightWidth,\n borderTopWidth: style.borderTopWidth,\n borderBottomWidth: style.borderBottomWidth,\n paddingBottom: style.paddingBottom,\n marginBottom: style.marginBottom,\n paddingTop: style.paddingTop,\n marginTop: style.marginTop,\n paddingLeft: style.paddingLeft,\n marginLeft: style.marginLeft,\n paddingRight: style.paddingRight,\n marginRight: style.marginRight,\n maxHeight: style.maxHeight,\n minHeight: style.minHeight,\n maxWidth: style.maxWidth,\n minWidth: style.minWidth,\n width: style.width,\n letterSpacing: style.letterSpacing,\n lineHeight: style.lineHeight,\n outlineWidth: style.outlineWidth,\n fontFamily: style.fontFamily,\n fontVariant: style.fontVariant,\n fontStyle: $input.css('fontStyle'),\n fontSize: $input.css('fontSize'),\n fontWeight: $input.css('fontWeight'),\n flex: style.flex,\n justifyContent: style.justifyContent,\n borderRadius: style.borderRadius,\n '-webkit-box-shadow': 'none',\n 'box-shadow': 'none'\n });\n $input.css('font-size', $input.css('fontSize')); // fix bug with em font size\n\n $hint.innerHeight($input.innerHeight());\n $hint.css($.extend(true, {\n position: 'absolute',\n zIndex: '1',\n borderColor: 'transparent',\n outlineColor: 'transparent',\n left: $input.position().left,\n top: $input.position().top,\n background: $input.css('background')\n }, options.hintStyle));\n if (olderBackground !== false) {\n $hint.css('background', olderBackground);\n } else {\n olderBackground = $input.css('background');\n }\n try {\n $input[0].style.setProperty('background', 'transparent', 'important');\n } catch (e) {\n $input.css('background', 'transparent');\n }\n $box.append($hint);\n }\n }, options.timeoutUpdate || 1);\n });\n if ($input.is(':visible')) {\n $input.trigger('updateHelperPosition.xdsoft');\n } else {\n intervalForVisibility = setInterval(function () {\n if ($input.is(':visible')) {\n $input.trigger('updateHelperPosition.xdsoft');\n clearInterval(intervalForVisibility);\n }\n }, 100);\n }\n $(window).on('resize', function () {\n $box.css({\n 'width': 'auto'\n });\n $input.trigger('updateHelperPosition.xdsoft');\n });\n $input.on('close.xdsoft', function () {\n if (!iOpen) {\n return;\n }\n $dropdown.hide();\n $hint.val('');\n if (!options.autoselect) {\n $input.val(currentValue);\n }\n iOpen = false;\n\n //currentInput = false;\n }).on('updateContent.xdsoft', function () {\n var out = renderData.call(options, dataset, $input.val()),\n hght = 10;\n if (out.length) {\n $input.trigger('open.xdsoft');\n } else {\n $input.trigger('close.xdsoft');\n return;\n }\n $(out).each(function () {\n this.css($.extend(true, {\n paddingLeft: $input.css('paddingLeft'),\n paddingRight: $input.css('paddingRight')\n }, options.itemStyle));\n });\n $dropdown.html(out);\n if (options.visibleHeight) {\n hght = options.visibleHeight;\n } else {\n hght = options.visibleLimit * ((out[0] ? out[0].outerHeight(true) : 0) || options.defaultHeightItem) + 5;\n }\n $dropdown.css('maxHeight', hght + 'px');\n }).on('open.xdsoft', function () {\n if (iOpen) return;\n $dropdown.show();\n iOpen = true;\n\n //currentInput = $input;\n }).on('destroy.xdsoft', function () {\n $input.removeClass('xdsoft');\n $box.after($input);\n $box.remove();\n clearTimeout(timer1);\n clearTimeout(intervalForVisibility);\n //currentInput = false;\n $input.data('xdsoft_autocomplete', null);\n $input.off('.xdsoft');\n });\n }\n ;\n publics = {\n destroy: function () {\n return this.trigger('destroy.xdsoft');\n },\n update: function () {\n return this.trigger('updateHelperPosition.xdsoft');\n },\n options: function (_options) {\n if (this.data('autocomplete_options') && $.isPlainObject(_options)) {\n this.data('autocomplete_options', $.extend(true, this.data('autocomplete_options'), _options));\n }\n return this;\n },\n setSource: function (_newsource, id) {\n if (this.data('autocomplete_options') && ($.isPlainObject(_newsource) || $.isFunction(_newsource) || $.isArray(_newsource))) {\n var options = this.data('autocomplete_options'),\n dataset = this.data('xdsoft_autocomplete'),\n source = options.source;\n if (id !== undefined && !isNaN(id)) {\n if ($.isPlainObject(_newsource) || $.isArray(_newsource)) {\n source[id] = $.extend(true, $.isArray(_newsource) ? [] : {}, _newsource);\n } else {\n source[id] = _newsource;\n }\n } else {\n if ($.isFunction(_newsource)) {\n this.data('autocomplete_options').source = _newsource;\n } else {\n $.extend(true, source, _newsource);\n }\n }\n collectData.call(options, this.val(), dataset, function (query) {\n processData.call(options, dataset, query);\n });\n }\n return this;\n },\n getSource: function (id) {\n if (this.data('autocomplete_options')) {\n var source = this.data('autocomplete_options').source;\n if (id !== undefined && !isNaN(id) && source[id]) {\n return source[id];\n } else {\n return source;\n }\n }\n return null;\n }\n };\n $.fn.autocomplete = function (_options, _second, _third) {\n if ($.type(_options) === 'string' && publics[_options]) {\n return publics[_options].call(this, _second, _third);\n }\n return this.each(function () {\n var options = $.extend(true, {}, defaultSetting, _options);\n init(this, options);\n });\n };\n})(jQuery);","module.exports = __webpack_public_path__ + \"media/images/admin/button_types-e48a9898076b47686491136acfe34ef4.png\";","module.exports = __webpack_public_path__ + \"media/images/apple-store-badge-20c3995e91dfde72283f793b981b6d77.svg\";","module.exports = __webpack_public_path__ + \"media/images/buttercms/blog-2b1c03cd9f38e617859b52bce5b0e557.svg\";","module.exports = __webpack_public_path__ + \"media/images/buttercms/logo-blog-28d7885d3c8bde00f3d1430b6b77dcbd.svg\";","module.exports = __webpack_public_path__ + \"media/images/buttercms/logo-evs-224250cae82956da1eb1e9e5b7473c5f.svg\";","module.exports = __webpack_public_path__ + \"media/images/buttercms/logo-evs-text-white-fb793751afe8f34ce8b932efcb7cb92d.svg\";","module.exports = __webpack_public_path__ + \"media/images/buttercms/small-logo-blog-e8189ad68c79c82ea7a191de5bbac93b.svg\";","module.exports = __webpack_public_path__ + \"media/images/default_avatar-581abac0cda2c9d8e2832b0c0cb10fa2.png\";","module.exports = __webpack_public_path__ + \"media/images/discord-06c94a7a365048414bee168ee0453217.svg\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/error_series-02032a278f8b76c12379855f6ea0462a.png\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/lesson_cdr-e792d343326efb439d37c825376e7ad9.png\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/question_series-e6202e902f43f60ff88c4e693986a3bc.png\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/results_series-188c875d78a892d986eb5653d8b3befb.png\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/series_thematic-35767dcbf236aa6f6855c5c4043a70fa.png\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/stats-dcdf75664bf7b24cd6d02c33e4b5cb96.png\";","module.exports = __webpack_public_path__ + \"media/images/driving_school/take-the-keys-just-hands-9d2c8dd8d4a1d07678ded712c9cea74c.svg\";","module.exports = __webpack_public_path__ + \"media/images/enseignant_eleve_voiture-6ca9759c72fa32e648b66e9786c6924b.png\";","module.exports = __webpack_public_path__ + \"media/images/facebook-940b757fcdd8b67c4252ccded1454c7e.svg\";","module.exports = __webpack_public_path__ + \"media/images/footer/icon-arrow-7c803c1bd34f7b16a7a4388ac78f4ac9.svg\";","module.exports = __webpack_public_path__ + \"media/images/footer/illu-mobile-3a3e0e7c826de7bafb2db7dce4c39e2b.svg\";","module.exports = __webpack_public_path__ + \"media/images/footer/pattern-way-6f7c342815983e4ffda56c07c508de8f.svg\";","module.exports = __webpack_public_path__ + \"media/images/google-play-badge-34b7353bfebb3a979e194a9a4173b882.svg\";","module.exports = __webpack_public_path__ + \"media/images/grey-car-723ca74918a9e2ceb50fe79679431de8.png\";","module.exports = __webpack_public_path__ + \"media/images/happening/logo-macif-9f948ec4ffbdb13b89585435e12d1d58.png\";","module.exports = __webpack_public_path__ + \"media/images/home-large2x-95464ba955fc24ee2bbfa20da2f31127.jpg\";","module.exports = __webpack_public_path__ + \"media/images/home/blue-rounded-background-cda635eab58c510859223febbbe13cd0.svg\";","module.exports = __webpack_public_path__ + \"media/images/home/road-background-d151ab2f1b1d05ea66c46c56f11c60de.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/calendar-61313caf9aa11f0a4dec39e2aa3d3664.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/close-7de0a36bcced2d13548a4d378b4d598c.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/exam-aaebfb7d9a4862442e6025880e7e1508.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/geolocation-25a589b0dfdeee761f8ac3dd357446aa.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/home-05af81a5ad5951a5dbc0c4ad7d9e8be0.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/icon_2_user-a0f2c3d0311ae31db66d939b39982a0b.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/icon_buy-f3edaaabc64d613c4d8008da581adf5d.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/icon_driving-faeb78d08a21384e5fe0796b165cd680.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/icon_money-151e887866021d33e714d9f06cd07ca4.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/location-b6772478827633b809f51e33c0e223f2.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/location_bis-1fcb0891b97f390864c4e63b2def1f5d.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/phone-ea466002f36bf8db420ddcde64eb482a.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/phone-black-5d724f2993ba5f71b27e15dc0679ea48.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/telephone-fill-92e390f92427328323834e1b8ab89138.svg\";","module.exports = __webpack_public_path__ + \"media/images/icons/telephone-fill-on-b70277852cbe34c38c55f18464b9fce4.svg\";","module.exports = __webpack_public_path__ + \"media/images/illusration-car-and-teacher-a2191bd0987d763943cae0c502e6b7d5.png\";","module.exports = __webpack_public_path__ + \"media/images/instagram-916ff63340ae3eddbaa06576eee875d9.svg\";","module.exports = __webpack_public_path__ + \"media/images/logo-799cc6b9049e7e56d573120ec02c5eb5.svg\";","module.exports = __webpack_public_path__ + \"media/images/logo-blog-28d7885d3c8bde00f3d1430b6b77dcbd.svg\";","module.exports = __webpack_public_path__ + \"media/images/logo-evs-224250cae82956da1eb1e9e5b7473c5f.svg\";","module.exports = __webpack_public_path__ + \"media/images/logo-evs-text-white-fb793751afe8f34ce8b932efcb7cb92d.svg\";","module.exports = __webpack_public_path__ + \"media/images/logo-footer-4f5e723af76a4565ca8e57f08971e74b.png\";","module.exports = __webpack_public_path__ + \"media/images/masks/avatar-group-94242b11fff3efd527fa2fff1fe6dab2.svg\";","module.exports = __webpack_public_path__ + \"media/images/masks/avatar-group-hover-754651d2ae4ecbf302d39546de0060e0.svg\";","module.exports = __webpack_public_path__ + \"media/images/masks/avatar-group-hover-last-ba70611669b351257fedab9368d4ad6b.svg\";","module.exports = __webpack_public_path__ + \"media/images/masks/avatar-status-508b8ad68f92fdbae5a686ca90ed94c0.svg\";","module.exports = __webpack_public_path__ + \"media/images/meeting_points/lesson-92fdbe80c8495eecab685b545d0dec86.png\";","module.exports = __webpack_public_path__ + \"media/images/meeting_points/pin-location-7d49d7f9d7e7c75a02d663092a326e11.svg\";","module.exports = __webpack_public_path__ + \"media/images/meta/fb_image-default-d65950c71afc0fbebf98bfc02d4df87c.png\";","module.exports = __webpack_public_path__ + \"media/images/offers/big_pack-fc6cbfb716d61de7c4612332c2d7e0c4.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/code-d200fa38915b95ded6f8f5db1086a3c7.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/code_exam-571369f8783bd9c40cd0b3afd2723487.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/driving_exam-571369f8783bd9c40cd0b3afd2723487.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/eval-571369f8783bd9c40cd0b3afd2723487.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/hour-571369f8783bd9c40cd0b3afd2723487.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/hour_pack-571369f8783bd9c40cd0b3afd2723487.svg\";","module.exports = __webpack_public_path__ + \"media/images/offers/small_pack-571369f8783bd9c40cd0b3afd2723487.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/couch-93b8031c5b08bfee2bd41982570c9472.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/driving-c2b8e0b8a12ad6cb8ad10080c23f022d.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/examinateur-b2421f53e51c69b240ea508e8d2d33a0.png\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/help-e517f0f1a56ddff1840ee45e7b90be07.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/here-pointer-823fe3a3ddb4b5c87e4a77f2c5a5c974.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/lifebelt-99dc9569dbf7024b2fcabb8a98980aaf.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/money-9ebb6ccd82fd9fbd339e64e2bc945f23.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/money-box-46a4da541230a18d2a52d20665732c27.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/orion-car-2a93385d21899399739326a1bcfa9735.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/orion-customer-support-3f3a196bdd2aa6fda31d1c7b90b57746.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/orion-iphone-e88d9ee3f92e49d664751addb8158fec.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/orion-svg-sprite-0dbc766a3ecd912f4e2d436d99c8e68a.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/orion-svg-sprite-footer-822d3d590ec9d17d367c29395162d880.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/orion-svg-sprite-theme-7bf0f0b52493bfdd3b705442a1b2b51f.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/phone_help-349c111cedb84050b07c71b8977bcb2e.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/school-8188ce9ebfcf11409a133e2be3723fd1.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/serenity-5721e9198daecf03c3c479d66af10872.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/tick-e81534b6d0c50447a377f2c190ee56ec.svg\";","module.exports = __webpack_public_path__ + \"media/images/orion_pictos/white-map-pin-817ee55456faa1ccb4597ff0e822bba3.svg\";","module.exports = __webpack_public_path__ + \"media/images/tiktok-6d6dbda5ad5cad6d55b9dc5380b63d6c.svg\";","module.exports = __webpack_public_path__ + \"media/images/tunnel_emoji/face-with-rolling-eyes-f3d8c11dbbecf3ae57dade9626f79690.png\";","module.exports = __webpack_public_path__ + \"media/images/twitter-70f705dafe2b801a6c570e78c3cd46f1.svg\";","module.exports = __webpack_public_path__ + \"media/images/youtube_play_button-e5aba2ec8946fef00d13380a98d65b3c.png\";","import \"footnote/footnote\"; // Footnote component - !! WARNING !! ALWAYS THE FIRST IMPORT\nimport \"offers/offers\";\nimport \"offer/offer\";\nimport \"text_image/text_image\"; // TextImage component\nimport \"video/video\"; // Video component\nimport \"cta/cta\"; // Cta component\nimport \"download_app/download_app\"; // DownloadApp component\nimport \"text/text\"; // Text component\nimport \"image/image\"; // Image component\nimport \"image_card/image_card\"; // Card component\nimport \"price_card/price_card\"; // PriceCard component\nimport \"teacher_income_simulator/teacher_income_simulator\"; // TeacherIncomeSimulator component\nimport \"meta/meta\"; // Meta component\nimport \"offers/offers\"; // Offers component\nimport \"address/address\"; // Address component\nimport \"faq/faq\"; // Faq component\nimport \"rich_text/rich_text\"; // RichText component\nimport \"picto/picto\"; // Picto component\nimport \"recommendation/recommendation\"; // Recommendation component\nimport \"cta_image/cta_image\"; // CtaImage component\nimport \"steps/steps\"; // Steps component\n\nimport \"checklist/checklist\"; // Checklist component\nimport \"slider_generic/slider_generic\"; // SliderGeneric component\nimport \"text_video/text_video\"; // TextVideo component\nimport \"slider_teacher/slider_teacher\"; // SliderTeacher component\n\nimport \"page_settings/page_settings\"; // PageSetting component\n\n\nimport \"heading/heading\"; // Heading component\nimport \"black/black\"; // Black component\nimport \"average_rating/average_rating\"; // AverageRating component\nimport \"rating_list/rating_list\"; // RatingList component\nimport \"department_list/department_list\"; // DepartmentList component\nimport \"fountain_form/fountain_form\"; // FountainForm component\nimport \"pre_footer/pre_footer\"; // PreFooter component\nimport \"tabs/tabs\"; // Tabs component","// Footnote JS\n\n\n// Calls - hooks\n$(document).ready(function() {\n var footnotes = document.getElementsByClassName('footnote');\n if (footnotes.length > 0)\n {\n for (let footnote of footnotes) {\n processFootnoteOnPage(footnote);\n };\n }\n\n //remove useless 'sup' link added in foonotes\n clearFootnoteContent();\n});\n\n\n// Parse a footnote, gets the original text, replace the index and add the index to the matching page text\nfunction processFootnoteOnPage(footnote)\n{\n span = footnote.getElementsByTagName(\"span\")[0];\n index = span.getAttribute(\"index\");\n originalText = span.getAttribute(\"data-content\");\n\n if(originalText == \"\") // safety if you forgot to fill the footnote original text\n {\n return\n }\n\n //index\n span.innerText = index + '.';\n\n //remove data-content\n span.setAttribute(\"data-content\", \"\");\n\n // Replace original text\n var re = new RegExp(originalText, \"g\");\n var linkToFootnote = \"\" + index + \"\";\n document.body.innerHTML = document.body.innerHTML.replace(re, originalText + \"\" + linkToFootnote + \"\");\n}\n\nfunction clearFootnoteContent()\n{\n var linksToFootnote = document.querySelectorAll('#footnotes sup');\n if (linksToFootnote.length > 0)\n {\n for (let link of linksToFootnote) {\n link.parentNode.removeChild(link);\n };\n }\n}","// video JS\n\n$(document).on('click', '[data-video-url]', function(e){\n var $this = $(this)\n $(this).replaceWith($(`` ));\n});\n","// TeacherIncomeSimulator JS\n\n// Computing oil price\nfunction getOilPrice(){\n var url = 'https://api.openeventdatabase.org/event/1c1a4ddd-48e0-45a5-9944-5164700cd5ed';\n\n var response = $.ajax({\n url: url,\n async: false\n }).responseText\n\n return JSON.parse(response)['properties']['carburants'][0]['prix'];\n}\n\nvar oilPrice = undefined;\n\n// Manage\nfunction teacherWagesSimulator() {\n var container;\n if ($('#teacher_income_simulator')) {\n simulateTeacherWages();\n container = $(\"#teacher_income_simulator #wages-wrapper\");\n container.find(\"form\").submit(function(e) {\n return e.preventDefault();\n });\n $(\"#teacher_income_simulator #wages-wrapper #hours-per-week-input,input[name='accre']\").on('change keyup', function() {\n return simulateTeacherWages();\n });\n }\n}\n\n// Pretty print\nfunction setNumberDisplay(x) {\n return Math.round(x).toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \" \");\n};\n\n\nfunction simulateTeacherWages() {\n var annualKms, ca, container, container_modal, expenses, hoursPerWeek, insurance, monthHours, monthOil, taxInputValue, taxRate, taxes, vehicule, wages;\n\n container = $(\"#teacher_income_simulator #wages-wrapper\");\n container_modal = $(\"#teacherWagesSimulatorDetails\");\n hoursPerWeek = parseInt(container.find(\"#hours-per-week-input\").val());\n if (isNaN(hoursPerWeek)) {\n hoursPerWeek = 0;\n }\n monthHours = hoursPerWeek * 4.33\n ca = monthHours * parseInt(container_modal.find(\"#wages-per-hour\").text())\n annualKms = monthHours * 12 * 30\n monthOil = monthHours * oilPrice * 5 * 30 / 100\n vehicule = parseInt(container_modal.find(\"#vehicule\").text())\n insurance = parseInt(container_modal.find(\"#insurance\").text())\n expenses = vehicule + monthOil + insurance\n\n taxInputValue = $(\"input[name='accre']:checked\").val() || \"without-accre\"\n\n if (taxInputValue === \"with-accre\") {\n taxRate = 0.11;\n } else {\n taxRate = 0.22;\n }\n\n taxes = ca * taxRate;\n wages = ca - expenses - taxes;\n\n container_modal.find(\"#ca\").html(setNumberDisplay(ca));\n container_modal.find(\"#month-hours\").html(setNumberDisplay(monthHours));\n container_modal.find(\"#annual-kms\").html(setNumberDisplay(annualKms));\n container_modal.find(\"#expenses\").html(setNumberDisplay(expenses));\n container.find(\"#oil-price\").html(oilPrice);\n container_modal.find(\"#month-oil\").html(setNumberDisplay(monthOil));\n container_modal.find(\"#taxes\").html(setNumberDisplay(taxes));\n container.find(\"#wages\").hide();\n container.find(\"#wages\").html(setNumberDisplay(wages));\n\n return container.find(\"#wages\").fadeIn();\n};\n\n\n// Calls - hooks\n$(document).ready(function() {\n if ($('#teacher_income_simulator').length > 0)\n {\n oilPrice = getOilPrice();\n teacherWagesSimulator();\n }\n})\n","// Address JS\nvar geocompleteMeetingPointsMaps = function(input) {\n if (input.length > 0) {\n return input.geocomplete({\n details: '#geocomplete-for-map-js',\n types: ['geocode', 'establishment']\n }).bind('geocode:result', function(event, result) {\n input.val($(this).val());\n $('#geocomplete-for-map-js').submit();\n });\n }\n};\n\nvar geocompleteButton = function(input) {\n let btn = $(\".btn-geocomplete-js\");\n\n if (btn) {\n btn.click(function () {\n input.trigger(\"geocode\");\n });\n }\n};\n\n\nvar geocompleteClearInput = function(input) {\n var btn = $(\".btn-geocomplete-js\");\n\n var clearButton = $('.clear-input-js');\n input.on('keyup', function() {\n if (this.value.length > 0) {\n clearButton.show()\n } else {\n clearButton.hide();\n btn.show();\n }\n });\n\n clearButton.click(function(){\n input.val(\"\");\n clearButton.hide();\n input.focus();\n btn.show();\n })\n};\n\nvar initGeocomplete = function() {\n let input = $(\".address-for-map-js\");\n\n if (input.length > 0) {\n geocompleteButton(input);\n geocompleteClearInput(input);\n geocompleteMeetingPointsMaps(input);\n }\n};\n$(document).ready(function() {\n initGeocomplete();\n});\n","// Recommendation JS\nimport * as Flickity from 'flickity/dist/flickity.pkgd'\n\n\n// jQuery\n// pass in the element, $element[0], not the jQuery object\n$(document).ready(function() {\n for (var elt of $('.block-press-recommendation.recommendation-carrousel-js')) {\n let options = {\n autoPlay: false,\n cellAlign: \"left\",\n contain: true,\n prevNextButtons: true,\n pageDots: false,\n wrapAround: true,\n freeScroll: true\n };\n\n new Flickity(elt, options)\n }\n\n for (var elt of $('.block-user-recommendation.recommendation-carrousel-js')) {\n let options = {autoPlay: true, cellAlign: \"left\", contain: true, prevNextButtons: false, pageDots: false, wrapAround: false};\n\n new Flickity(elt, options)\n }\n\n for (var elt of $('.block-partner-recommendation.recommendation-carrousel-js')) {\n let options = {autoPlay: true, cellAlign: \"left\", contain: true, prevNextButtons: false, pageDots: false, wrapAround: false};\n\n new Flickity(elt, options)\n }\n\n (typeof changeTitle !== 'undefined' && changeTitle) ? $('.block-recommendation h2').text('Nos élèves donnent leur avis') : null;\n})\n","// SliderGeneric JS\nimport * as Flickity from 'flickity/dist/flickity.pkgd'\n\n// jQuery\n// pass in the element, $element[0], not the jQuery object\n$(document).ready(function() {\n for (var elt of $('.slider-generic-carrousel-js')) {\n var flk = new Flickity(elt, $(elt).data('flickity'))\n }\n})\n","// SliderTeacher JS\nimport * as Flickity from 'flickity/dist/flickity.pkgd'\n\n// jQuery\n// pass in the element, $element[0], not the jQuery object\n$(document).ready(function() {\n for (var elt of $('.slider-teacher-carrousel-js')) {\n \n let options = {\n pageDots: false,\n cellAlign: \"left\",\n imagesLoaded: true,\n groupCells: 1,\n wrapAround: true\n };\n\n new Flickity(elt, options)\n }\n});","// Tabs JS\n$(document).ready(function(){\n $('.nav-pills .nav-link').click(function(){\n $('.nav-pills .nav-link').removeClass('active');\n $(this).addClass('active');\n $.each($('[data-associated-tab]'), function(index, value){\n value.hidden = true;\n });\n $.each($(\"[data-associated-tab='\"+this.getAttribute('data-tab-id')+\"']\"), function(index, value){\n value.hidden = false;\n });\n });\n});\n","import * as url_helpers from '../helpers/url_helper.js';\nimport legacy_domains from '../helpers/url_helper.js';\n\nexport default class iframeService {\n constructor(actions, array_matching, is_guest) {\n this.back_button = \"hide\";\n this.actions = actions;\n this.evs_app_domain = evs_app_domain;\n this.evs_app_port = evs_app_port;\n this.array_matching = array_matching;\n this.is_guest = is_guest;\n }\n\n //////////////////////////////////////\n /////////////// GET/SET\n //////////////////////////////////////\n setActions(actions){\n this.actions = actions;\n }\n\n setArrayMatching(array_matching){\n this.array_matching = array_matching;\n }\n\n setBackButton(back_button){\n this.back_button = back_button;\n }\n\n setIsGuest(is_guest){\n this.is_guest = is_guest;\n }\n\n getIsGuest(){\n return this.is_guest;\n }\n\n getBackButton(){\n return this.back_button;\n }\n\n //////////////////////////////////////\n /////////////// ACTIONS\n //////////////////////////////////////\n setAllUrlToAbsolute() {\n $( \"a\" ).each(function( i, e ) {\n var link = $(e).attr('href');\n\n if (link != null && typeof link != 'undefined' && !link.includes(window.location.hostname) && !url_helpers.validURL(encodeURI(link))) {\n if (link.substring(0,4) != 'tel:' && link.substring(0,6) != 'mailto:' && !url_helpers.javascriptVoidLink(link)) {\n if (link.substring(0,1) == '#')\n $(e).attr('href', window.location.href + link); //anchor\n else {\n if (link.substring(0,1) == \"/\") $(e).attr('href', window.location.origin + link); //e.href = window.location.hostname + l;\n else {\n var tab_paths = window.location.pathname.split(\"/\");\n if (tab_paths.length > 0) {\n tab_paths[tab_paths.length - 1] = link;\n $(e).attr('href', window.location.origin + tab_paths.join(\"/\"));\n }\n else {//no pathname\n $(e).attr('href', window.location.origin + \"/\" + link);\n }\n }\n }\n }\n }\n });\n }\n\n\n applyCss(type, name, value) {\n if (type == \"id\") $('#'+name).attr('style', value);\n else if (type == \"class\") $('.'+name).attr('style', value);\n }\n\n\n doNotEscapeFromModal(modal) {\n modal.modal({backdrop: 'static', keyboard: false});\n }\n\n\n goingOut(source, listener) {\n var domain = this.evs_app_domain;\n var port = this.evs_app_port;\n //$('a:not(\".fc-day-grid-event\")').off('click');//\n $('a:not(\".fc-day-grid-event\")').on('click', function(e) {\n if ( $(e.target) && ![\"post\", \"delete\", \"put\"].includes($(e.target).attr('data-method')) && ![\"modal\", \"collapse\"].includes($(e.target).attr('data-toggle')) && $(e.target).attr('data-dismiss') !== \"modal\") {\n var url = e.target.getAttribute('href');\n\n //exclude case of url requiring no actions\n if (url != null && typeof url != 'undefined' && !url_helpers.javascriptVoidLink(url) && url.substring(0,1) != '#' && url.substring(0,1) != '/') {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n e.stopPropagation();\n\n if (exitToApp(url, domain, port)) { //1 : got to app\n if (this.is_guest == 'false')\n listener.sendPostMsg('{\"action\": \"forceUserToLog\", \"value\": \"'+url+'\"}', source);\n else\n listener.sendPostMsg('{\"action\": \"redirect\", \"route\": \"\", \"url\": \"'+url+'\", \"id\": \"\"}', source);\n } else if( urlForSiteOpener(url) === true ) { //open file/aide -> sendPostMsg\n listener.sendPostMsg('{\"action\": \"siteOpener\", \"value\": \"'+url+'\"}', source);\n } else if( switchFromCmsToLegacy(url) === true ) { //go to legacy\n var next_url = url.includes('?') ? url+'&' : url+'?';\n if (!url.includes('url_parent=')) {\n next_url += 'url_parent='+source;\n }\n window.location.href = next_url;\n } else if ( shouldCheckRedirect(url) === true ) { //2 : check then redirect if needed\n var link_url = new URL(url);\n var current_group = url_helpers.getGroup(this.array_matching, window.location.pathname + window.location.hash);\n var dest_group = url_helpers.getGroup(this.array_matching, link_url.pathname+link_url.hash);\n\n if (typeof current_group != 'undefined' && typeof dest_group != 'undefined' && current_group != dest_group) {\n listener.sendPostMsg('{\"action\": \"redirect\", \"route\": \"' + dest_group + '\", \"url\": \"' + url + '\", \"id\": \"\"}', source);\n } else {\n window.location.href = url;\n }\n }\n else { //3: proceed to url\n window.location.href = url;\n }\n }\n }\n }.bind(this));\n }\n\n\n processBackBtn(source, listener) {\n var sessionStorageLength = url_helpers.getNbStoredUrls();\n if (sessionStorageLength == 1) {\n this.back_button = \"hide\";\n listener.sendPostMsg('{\"action\": \"backBtn\", \"value\": \"'+this.back_button+'\"}', source);\n }\n else {\n sessionStorage.removeItem(\"url_\"+sessionStorageLength);\n window.history.back();\n }\n }\n\n\n //hide elements of navigation (topnav, footer, breadcrumbs)\n // this looks for all '.hide-from-app' elements and hides them\n hideMarkedElements(){\n $('.hide-from-app').hide();\n }\n\n // This function tried to stylize the website for a better app display\n // It mostly removes useless spaces\n styleForApp(){\n $('.main-content').attr('style', 'margin-top: 0px!important');\n }\n\n removeClassGeneral() {\n $('div').removeClass(\"page-margin-top page-margin-bottom\");\n }\n\n\n updateSessionListUrls(c_url) {\n var url_search = new URL(c_url).search.substr(1).split('&');\n var sessionStorageLength = url_helpers.getNbStoredUrls();\n if (url_search.includes(\"iframe_rendering=true\")) {\n sessionStorage.clear();\n sessionStorage.setItem(\"url_1\", c_url);\n }\n else {\n if (sessionStorage.getItem(\"url_\"+sessionStorageLength) != c_url) {\n var i = sessionStorageLength + 1;\n sessionStorage.setItem(\"url_\" + i, c_url);\n }\n }\n }\n\n\n insertUrlParams(source) {\n $( \"a, form\" ).each(function( i, e ) {\n if(e.tagName.toLowerCase() == \"a\"){\n var url = $(e).attr('href');\n } else {\n var url = $(e).attr('action');\n }\n var new_param = url.includes('url_parent=') ? \"\" : (url.includes('?') ? \"&url_parent=\" + source : \"?url_parent=\" + source);\n if (url != null && typeof url != 'undefined' && url.includes(\"/tunnel\")) {\n $(e).attr('href', url + new_param);\n }\n });\n }\n\n\n processTunnelBackButton(source, listener) {\n //dont show previous btn of tunnel if first url opened\n var sessionStorageLength = url_helpers.getNbStoredUrls();\n if ( sessionStorageLength == 1 )\n $('.tunnel a.previous-question').attr('style', 'display: none!important');\n\n //on click on btn previous in tunnel, update links history stored in sessionStorage => update backBtn\n $('.tunnel a.previous-question').on('click', function(e) {\n if (sessionStorage.getItem(\"url_\"+sessionStorageLength) == window.location.href)\n if (sessionStorageLength == 1) {\n this.back_button = \"hide\";\n listener.sendPostMsg('{\"action\": \"backBtn\", \"value\": \"'+this.back_button+'\"}', source);\n }\n else {\n sessionStorage.removeItem(\"url_\"+sessionStorageLength);\n }\n }.bind(this));\n }\n\n processDataFromAnotherDomain(listener) {\n var url_parent = url_helpers.findElementInUrlParams(\"url_parent\", window.location.search.substr(1).split('&'));\n if (typeof url_parent != 'undefined') { //tell the parent(url_parent) who is in iframe\n listener.sendPostMsg('{\"action\": \"iframeSource\", \"value\": \"'+window.location.href+'\"}', url_parent);\n }\n }\n\n //////////////////////////////////////\n /////////////// COOKIES\n //////////////////////////////////////\n getCookie(name) {\n var value = \"; \" + document.cookie;\n var parts = value.split(\"; \" + name + \"=\");\n if (parts.length == 2) return parts.pop().split(\";\").shift();\n else return undefined;\n }\n\n setCookie(cookie) {\n var now = new Date();\n var time = now.getTime();\n time += 2 * 60 * 60 * 1000;\n now.setTime(time);\n document.cookie = cookie + \"; expires=\" + now + \"; path=/; SameSite=Lax; domain=.envoituresimone.com\";\n }\n}\n\n//////////////////////////////////////\n/////////////// CHECKS\n//////////////////////////////////////\nfunction shouldCheckRedirect(link)//true if we need to go to check redirect\n{\n var link_value = link || \"\";\n if ( link_value == \"#\" || link_value == window.location.origin + \"#\" ){//add here new conditions if needed\n return false;\n }\n else {\n return true;\n }\n}\n\nfunction exitToApp(url, app_domain, app_port) //true if url links to app\n{\n var link = new URL(url);\n if (link.hostname == app_domain && link.port == app_port)\n return true;\n else\n return false;\n}\n\nfunction switchFromCmsToLegacy(url) //check on origin, not in search params\n{\n var found = false;\n var link = new URL(url);\n var url_without_params = link.origin + link.pathname;\n legacy_domains.forEach(function(elt) {\n if(url_without_params.includes(elt)) found = true;\n });\n\n return found;\n}\n\nfunction urlForSiteOpener(url) {\n if ( url.includes('.pdf') || url.includes('aide.envoituresimone.com') || !url.includes('.envoituresimone.com') ) {\n return true;\n } else {\n return false;\n }\n}","//example from teacher-app\nvar msgReceived = {\n \"arrayMatching\": {\n \"lecons\": [\"/lessons\", \"/lessons/calendrier\", {\"regex\":\"/lesson/[0-9]+\"}],\n \"proposer\": [\"/lessons#new-lesson-by-teacher\"],\n \"disponibilites\": [\"/disponibilites\"],\n \"profil\": [\"/enseignants/mon-compte\", \"/enseignants/lieux-desservis\", \"/factures\", \"/users/edit\"]\n },\n \"nav\": {\n \"general\": {\n \"url\": {\n \"value\": \"*\",\n \"action\": [\n {\"type\": \"redirect\", \"value\": \"\", \"class\": \"alert-link\", \"whitelist\": []},\n {\"type\": \"absoluteUrl\", \"value\": \"\"}\n ]\n }\n },\n \"lessons\": {\n \"liste\": {\n \"url\": {\n \"value\": \"/lessons\",\n \"action\": [\n {\"type\": \"css\", \"value\": \"display: none\", \"id\": \"btn-new-lesson\"},\n {\"type\": \"redirect\", \"value\": \"/lessons#new-lesson-by-teacher\", \"whitelist\": [\"/lessons\", \"/lessons/calendrier\", {\"regex\":\"/lesson/[0-9]+\"}]},\n {\"type\": \"css\", \"value\": \"max-width: 100%;width: 100%;height: 100%\", \"id\": \"confirm-proposal-modal-dialog\"},\n {\"type\": \"css\", \"value\": \"border-radius: 0;height: 100%\", \"id\": \"confirm-proposal-modal-content\"}\n ]\n }\n },\n \"calendrier\": {\n \"url\": {\n \"value\": \"/lessons/calendrier\",\n \"action\": [\n {\"type\": \"css\", \"value\": \"display: none\", \"id\": \"btn-lessons-list\"},\n {\"type\": \"css\", \"value\": \"display: inline-block\", \"id\": \"btn-new-lesson\"},\n {\"type\": \"redirect\", \"value\": \"/lessons\", \"whitelist\": [\"/lessons\", \"/lessons/calendrier\", {\"regex\":\"/lesson/[0-9]+\"}]}\n ]\n }\n },\n \"lesson\": {\n \"url\": {\n \"regex\": \"/lesson/[1-9]+\",\n \"action\": []\n }\n }\n },\n \"proposer\": {\n \"url\": {\n \"value\": \"/lessons#new-lesson-by-teacher\",\n \"action\": [\n {\"type\": \"modale\", \"value\": \"show\", \"id\": \"new-lesson-by-teacher\"},\n {\"type\": \"css\", \"value\": \"display: none\", \"id\": \"btn-cancel\"},\n {\"type\": \"css\", \"value\": \"display: none\", \"id\": \"btn-close-modal\"},\n {\"type\": \"css\", \"value\": \"max-width: 100%;width: 100%;height: 100%\", \"id\": \"new-proposal-modal-dialog\"},\n {\"type\": \"css\", \"value\": \"border-radius: 0;height: 100%\", \"id\": \"new-proposal-modal-content\"}\n ]\n }\n },\n \"disponibilites\": {\n \"url\": {\n \"value\": \"/disponibilites\",\n \"action\": []\n }\n },\n \"profil\": {\n \"infos_perso\": {\n \"url\": {\n \"value\": \"/enseignants/mon-compte\",\n \"action\": [\n {\"type\": \"css\", \"value\": \"display:none\", \"id\": \"btn-facturation\"},\n {\"type\": \"css\", \"value\": \"display:none\", \"id\": \"btn-lieux-desservis\"}\n ]\n },\n \"modif-mot-de-passe\": {\n \"url\": {\n \"value\": \"/users/edit\",\n \"action\": []\n }\n }\n },\n \"lieux-desservis\": {\n \"url\": {\n \"value\": \"/enseignants/lieux-desservis\",\n \"action\": [\n {\"type\": \"css\", \"value\": \"display:none\", \"id\": \"back-link\"}\n ]\n }\n },\n \"facturation\": {\n \"url\": {\n \"value\": \"/factures\",\n \"action\": []\n }\n }\n }\n }\n};\nexport default msgReceived;","import msgReceived from './iframe_message.js';\nimport * as url_helpers from '../helpers/url_helper.js';\n\nexport default class iframeListener {\n constructor(iframe_service, current_user) {\n this.is_debug = false;\n this.array_matching = {};\n this.actions =[];\n this.service = iframe_service;\n this.current_user = current_user;\n }\n\n // --------------------------------------------------\n // GET/SET\n // --------------------------------------------------\n getDebugMode() {\n return this.is_debug\n };\n\n getActions() {\n return this.actions\n };\n\n setActions(actions){\n this.actions = actions;\n }\n\n getArrayMatching() {\n return this.array_matching\n };\n\n setDebugMode(is_debug) {\n this.is_debug = is_debug;\n };\n\n // --------------------------------------------------\n // LISTEN & TALK\n // --------------------------------------------------\n listenEvents() {\n window.addEventListener('message', function(event) {\n if (event.origin.includes('app.envoituresimone') || event.origin.includes('app-dev.envoituresimone') || event.origin.includes('herokuapp') || event.origin.includes('localhost') || this.is_debug) {\n if (event.origin != window.location.origin) {\n //msg received\n var msg_received = this.is_debug ? msgReceived : event.data;\n var str_msg = JSON.stringify(msg_received);\n var login_url_with_token = this.current_user.login_url;\n try {\n var msg = JSON.parse(str_msg);\n }\n catch (error) {\n console.error(\"tried to JSON.parse stringified msg and got error \", error);\n }\n\n //array matching url\n if(Object.keys(this.array_matching).length == 0 && msg.hasOwnProperty(\"arrayMatching\")) this.array_matching = msg[\"arrayMatching\"]; //set if not set yet\n this.service.setArrayMatching(this.array_matching);\n\n this.setBackBtn(event); //back_button\n\n if (this.current_user.is_guest == 'false') {\n this.notifyPpuResolved(login_url_with_token, event.origin);\n this.notifyUserLogged(login_url_with_token, event.origin);\n } else {\n this.setClientId(msg);\n }\n this.pushFromMsgToDatalayer(msg);\n\n //new actions updateStudent//\n if (this.sendUpdateStudent() === true) {\n this.sendPostMsg('{\"action\": \"updateStudent\", \"value\": \"\"}', event.origin);\n }\n\n this.service.goingOut(event.origin, this); //test on all click except exceptions, including forceLogOnClick(e.origin);\n\n this.triggerActions(msg, event.origin); //get actions from msg/ask service to process\n\n //event source url\n this.service.insertUrlParams(event.origin);\n\n this.service.processTunnelBackButton(event.origin, this); //manage previous btn in tunnel/synchronize it with back_btn\n }\n }\n }.bind(this));\n }\n\n\n notifyPpuResolved(login_url_with_token, source) {\n if (window.location.search.includes('ppu_resolved=true')) {\n this.sendPostMsg('{\"action\": \"userPpuResolved\", \"value\": \"'+login_url_with_token+'\"}', source);\n }\n }\n\n notifyUserLogged(login_url_with_token, source) {\n this.sendPostMsg('{\"action\": \"userLogged\", \"value\": \"'+login_url_with_token+'\"}', source);\n }\n\n setClientId(msg) {\n if (msg.hasOwnProperty(\"clientId\")) {\n if (typeof ga === 'function' && ga_tracking_id && ga_tracking_id.toString().length > 0) {\n ga('create', ga_tracking_id, 'auto', {\n clientId: msg[\"clientId\"]\n });\n }\n }\n }\n\n pushFromMsgToDatalayer(msg) {\n window.dataLayer = window.dataLayer || [];\n var data = {};\n var data_fields = ['clientId', 'ionic_platform', 'ionic_platforms']\n data_fields.forEach(function(field){\n if (msg.hasOwnProperty(field)) data[field] = msg[field];\n });\n if (Object.keys(data).length > 0) {\n data['event'] = 'iframe_pageview';\n window.dataLayer.push(data);\n }\n }\n\n triggerActions(msg, source) {\n if (msg.hasOwnProperty(\"action\") && msg[\"action\"] == \"goBack\") { //back history\n this.service.processBackBtn(source, this);\n }\n else {\n var res = this.getActionsFromMsg(msg[\"nav\"], this.actions);\n this.setActions(res);\n this.service.setActions(res);\n\n for(var r in res){\n var actionType = res[r].type;\n switch(actionType) {\n case \"css\":\n if(res[r].hasOwnProperty('id') && res[r].id != '') this.service.applyCss(\"id\", res[r].id, res[r].value);\n else if(res[r].hasOwnProperty('class') && res[r].class != '') this.service.applyCss(\"class\", res[r].class, res[r].value);\n break;\n case \"redirect\":\n //\n break;\n case \"modale\":\n //\n break;\n case \"absoluteUrl\":\n this.service.setAllUrlToAbsolute();\n break;\n default:\n console.log('action type not found');\n }\n }\n }\n }\n\n\n sendPostMsg(params, source) {\n if (this.is_debug) {\n console.log(params);\n }\n else {\n if (Array.isArray(source)) {\n for (var i = 0; i < source.length; i++) {\n window.parent.postMessage(params, source[i]);\n }\n }\n else {\n window.parent.postMessage(params, source);\n }\n }\n }\n\n setBackBtn(event) {\n var sessionStorageLength = url_helpers.getNbStoredUrls();\n var back_button = (sessionStorageLength > 1) ? \"show\" : \"hide\";\n this.service.setBackButton(back_button);\n this.sendPostMsg('{\"action\": \"backBtn\", \"value\": \"'+back_button+'\"}', event.origin);\n }\n\n getActionsFromMsg(data, actions) {\n for (var sub_data in data) {\n if (sub_data != 'url') {\n this.getActionsFromMsg(data[sub_data], actions);\n }\n else {\n var item = data[sub_data];\n if (item.hasOwnProperty('action')) {\n if (item.hasOwnProperty('value')) {\n var link = (item['value'] == \"*\") ? item['value'] : new URL(window.location.origin + item['value']);\n if (link == '*' || link.pathname == window.location.pathname) {\n for (var action in item['action']) {\n actions.push(item['action'][action]);\n }\n }\n }\n else if (item.hasOwnProperty('regex')) {\n if (window.location.pathname.match(new RegExp(item['regex'].replace('/','\\/')))) {\n for (var action in item['action']) {\n actions.push(item['action'][action]);\n }\n }\n }\n }\n };\n }\n return actions;\n }\n\n sendUpdateStudent() {\n var histo_nav = Object.values(sessionStorage);\n var urls_for_student_update = [\"/boutique/paiement/\", \"/tunnel/felicitations\", \"/examen-code/nouveau\", \"/examen-code/examens\"];\n var found = false;\n\n for (var url in histo_nav) {\n for (var item in urls_for_student_update) {\n if ( histo_nav[url].includes(urls_for_student_update[item]) ) found = true;\n }\n }\n return found;\n }\n}","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","var map = {\n\t\"./admin/button_types\": 15,\n\t\"./admin/button_types.png\": 15,\n\t\"./apple-store-badge\": 16,\n\t\"./apple-store-badge.svg\": 16,\n\t\"./buttercms/blog\": 17,\n\t\"./buttercms/blog.svg\": 17,\n\t\"./buttercms/logo\": 12,\n\t\"./buttercms/logo-blog\": 18,\n\t\"./buttercms/logo-blog.svg\": 18,\n\t\"./buttercms/logo-evs\": 19,\n\t\"./buttercms/logo-evs-text-white\": 20,\n\t\"./buttercms/logo-evs-text-white.svg\": 20,\n\t\"./buttercms/logo-evs.svg\": 19,\n\t\"./buttercms/logo.png\": 12,\n\t\"./buttercms/logo.svg\": 141,\n\t\"./buttercms/small-logo-blog\": 21,\n\t\"./buttercms/small-logo-blog.svg\": 21,\n\t\"./default_avatar\": 22,\n\t\"./default_avatar.png\": 22,\n\t\"./discord\": 23,\n\t\"./discord.svg\": 23,\n\t\"./driving_school/error_series\": 24,\n\t\"./driving_school/error_series.png\": 24,\n\t\"./driving_school/lesson_cdr\": 25,\n\t\"./driving_school/lesson_cdr.png\": 25,\n\t\"./driving_school/question_series\": 26,\n\t\"./driving_school/question_series.png\": 26,\n\t\"./driving_school/results_series\": 27,\n\t\"./driving_school/results_series.png\": 27,\n\t\"./driving_school/series_thematic\": 28,\n\t\"./driving_school/series_thematic.png\": 28,\n\t\"./driving_school/stats\": 29,\n\t\"./driving_school/stats.png\": 29,\n\t\"./driving_school/take-the-keys-just-hands\": 30,\n\t\"./driving_school/take-the-keys-just-hands.svg\": 30,\n\t\"./enseignant_eleve_voiture\": 31,\n\t\"./enseignant_eleve_voiture.png\": 31,\n\t\"./facebook\": 32,\n\t\"./facebook.svg\": 32,\n\t\"./footer/icon-arrow\": 33,\n\t\"./footer/icon-arrow.svg\": 33,\n\t\"./footer/illu\": 13,\n\t\"./footer/illu-mobile\": 34,\n\t\"./footer/illu-mobile.svg\": 34,\n\t\"./footer/illu.png\": 13,\n\t\"./footer/illu.svg\": 142,\n\t\"./footer/pattern-way\": 35,\n\t\"./footer/pattern-way.svg\": 35,\n\t\"./google-play-badge\": 36,\n\t\"./google-play-badge.svg\": 36,\n\t\"./grey-car\": 37,\n\t\"./grey-car.png\": 37,\n\t\"./happening/logo-macif\": 38,\n\t\"./happening/logo-macif.png\": 38,\n\t\"./home-large2x\": 39,\n\t\"./home-large2x.jpg\": 39,\n\t\"./home/blue-rounded-background\": 40,\n\t\"./home/blue-rounded-background.svg\": 40,\n\t\"./home/road-background\": 41,\n\t\"./home/road-background.svg\": 41,\n\t\"./icons/calendar\": 42,\n\t\"./icons/calendar.svg\": 42,\n\t\"./icons/close\": 43,\n\t\"./icons/close.svg\": 43,\n\t\"./icons/exam\": 44,\n\t\"./icons/exam.svg\": 44,\n\t\"./icons/geolocation\": 45,\n\t\"./icons/geolocation.svg\": 45,\n\t\"./icons/home\": 46,\n\t\"./icons/home.svg\": 46,\n\t\"./icons/icon_2_user\": 47,\n\t\"./icons/icon_2_user.svg\": 47,\n\t\"./icons/icon_buy\": 48,\n\t\"./icons/icon_buy.svg\": 48,\n\t\"./icons/icon_driving\": 49,\n\t\"./icons/icon_driving.svg\": 49,\n\t\"./icons/icon_money\": 50,\n\t\"./icons/icon_money.svg\": 50,\n\t\"./icons/location\": 51,\n\t\"./icons/location.svg\": 51,\n\t\"./icons/location_bis\": 52,\n\t\"./icons/location_bis.svg\": 52,\n\t\"./icons/phone\": 53,\n\t\"./icons/phone-black\": 54,\n\t\"./icons/phone-black.svg\": 54,\n\t\"./icons/phone.svg\": 53,\n\t\"./icons/telephone-fill\": 55,\n\t\"./icons/telephone-fill-on\": 56,\n\t\"./icons/telephone-fill-on.svg\": 56,\n\t\"./icons/telephone-fill.svg\": 55,\n\t\"./illusration-car-and-teacher\": 57,\n\t\"./illusration-car-and-teacher.png\": 57,\n\t\"./instagram\": 58,\n\t\"./instagram.svg\": 58,\n\t\"./logo\": 59,\n\t\"./logo-blog\": 60,\n\t\"./logo-blog.svg\": 60,\n\t\"./logo-evs\": 61,\n\t\"./logo-evs-text-white\": 62,\n\t\"./logo-evs-text-white.svg\": 62,\n\t\"./logo-evs.svg\": 61,\n\t\"./logo-footer\": 63,\n\t\"./logo-footer.png\": 63,\n\t\"./logo.svg\": 59,\n\t\"./masks/avatar-group\": 64,\n\t\"./masks/avatar-group-hover\": 65,\n\t\"./masks/avatar-group-hover-last\": 66,\n\t\"./masks/avatar-group-hover-last.svg\": 66,\n\t\"./masks/avatar-group-hover.svg\": 65,\n\t\"./masks/avatar-group.svg\": 64,\n\t\"./masks/avatar-status\": 67,\n\t\"./masks/avatar-status.svg\": 67,\n\t\"./meeting_points/active-meeting-point\": 7,\n\t\"./meeting_points/active-meeting-point.png\": 7,\n\t\"./meeting_points/lesson\": 68,\n\t\"./meeting_points/lesson.png\": 68,\n\t\"./meeting_points/meeting-point\": 8,\n\t\"./meeting_points/meeting-point.png\": 8,\n\t\"./meeting_points/pin-location\": 69,\n\t\"./meeting_points/pin-location.svg\": 69,\n\t\"./meeting_points/pin-pointer\": 9,\n\t\"./meeting_points/pin-pointer.png\": 9,\n\t\"./meta/fb_image-default\": 70,\n\t\"./meta/fb_image-default.png\": 70,\n\t\"./offers/big_pack\": 71,\n\t\"./offers/big_pack.svg\": 71,\n\t\"./offers/code\": 72,\n\t\"./offers/code.svg\": 72,\n\t\"./offers/code_exam\": 73,\n\t\"./offers/code_exam.svg\": 73,\n\t\"./offers/driving_exam\": 74,\n\t\"./offers/driving_exam.svg\": 74,\n\t\"./offers/eval\": 75,\n\t\"./offers/eval.svg\": 75,\n\t\"./offers/hour\": 76,\n\t\"./offers/hour.svg\": 76,\n\t\"./offers/hour_pack\": 77,\n\t\"./offers/hour_pack.svg\": 77,\n\t\"./offers/small_pack\": 78,\n\t\"./offers/small_pack.svg\": 78,\n\t\"./orion_pictos/couch\": 79,\n\t\"./orion_pictos/couch.svg\": 79,\n\t\"./orion_pictos/driving\": 80,\n\t\"./orion_pictos/driving.svg\": 80,\n\t\"./orion_pictos/examinateur\": 81,\n\t\"./orion_pictos/examinateur.png\": 81,\n\t\"./orion_pictos/help\": 82,\n\t\"./orion_pictos/help.svg\": 82,\n\t\"./orion_pictos/here-pointer\": 83,\n\t\"./orion_pictos/here-pointer.svg\": 83,\n\t\"./orion_pictos/lifebelt\": 84,\n\t\"./orion_pictos/lifebelt.svg\": 84,\n\t\"./orion_pictos/money\": 85,\n\t\"./orion_pictos/money-box\": 86,\n\t\"./orion_pictos/money-box.svg\": 86,\n\t\"./orion_pictos/money.svg\": 85,\n\t\"./orion_pictos/orion-car\": 87,\n\t\"./orion_pictos/orion-car.svg\": 87,\n\t\"./orion_pictos/orion-customer-support\": 88,\n\t\"./orion_pictos/orion-customer-support.svg\": 88,\n\t\"./orion_pictos/orion-iphone\": 89,\n\t\"./orion_pictos/orion-iphone.svg\": 89,\n\t\"./orion_pictos/orion-svg-sprite\": 90,\n\t\"./orion_pictos/orion-svg-sprite-footer\": 91,\n\t\"./orion_pictos/orion-svg-sprite-footer.svg\": 91,\n\t\"./orion_pictos/orion-svg-sprite-theme\": 92,\n\t\"./orion_pictos/orion-svg-sprite-theme.svg\": 92,\n\t\"./orion_pictos/orion-svg-sprite.svg\": 90,\n\t\"./orion_pictos/phone_help\": 93,\n\t\"./orion_pictos/phone_help.svg\": 93,\n\t\"./orion_pictos/school\": 94,\n\t\"./orion_pictos/school.svg\": 94,\n\t\"./orion_pictos/serenity\": 95,\n\t\"./orion_pictos/serenity.svg\": 95,\n\t\"./orion_pictos/tick\": 96,\n\t\"./orion_pictos/tick.svg\": 96,\n\t\"./orion_pictos/white-map-pin\": 97,\n\t\"./orion_pictos/white-map-pin.svg\": 97,\n\t\"./tiktok\": 98,\n\t\"./tiktok.svg\": 98,\n\t\"./tunnel_emoji/face-with-rolling-eyes\": 99,\n\t\"./tunnel_emoji/face-with-rolling-eyes.png\": 99,\n\t\"./twitter\": 100,\n\t\"./twitter.svg\": 100,\n\t\"./youtube_play_button\": 101,\n\t\"./youtube_play_button.png\": 101\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 140;","module.exports = __webpack_public_path__ + \"media/images/buttercms/logo-799cc6b9049e7e56d573120ec02c5eb5.svg\";","module.exports = __webpack_public_path__ + \"media/images/footer/illu-dda020e455ca9e190101e863b2afdee6.svg\";","import iframeListener from './iframe_listener.js';\nimport iframeService from './iframe_service.js';\nimport * as Mustache from \"mustache\";\n\n\nvar is_guest = \"false\";\n\nfunction render_template(template_name, container, data) {\n var template = document.getElementById(template_name).innerHTML;\n var rendered = Mustache.render(template, data);\n\n container.innerHTML = rendered;\n}\n\nfunction generate_connect_buttons() {\n let container = document.getElementById(\"container-omniauth-connect-js\")\n let template_name = \"template-omniauth-connect-js\"\n let data = null;\n\n if(container) {\n render_template(template_name, container, data)\n }\n}\n\n//////////////////////////////////////\n/////////////// READY\n//////////////////////////////////////\n$(document).ready(function() {\n is_guest = current_user.is_guest;\n\n var iframe_service = new iframeService([], {}, is_guest);\n var iframe_listener = new iframeListener(iframe_service, current_user);\n var iframe_rendering = iframe_service.getCookie('iframe_rendering');\n\n if (window.location.href.includes('iframe_rendering=true') || iframe_rendering === \"true\") {\n if (window.top !== window.self) {\n //console.log('current url : ', window.location.href);\n\n iframe_service.hideMarkedElements();\n iframe_service.styleForApp();\n iframe_service.updateSessionListUrls(window.location.href);\n if (window.location.search.includes('url_parent=')) {\n iframe_service.processDataFromAnotherDomain(iframe_listener);\n }\n iframe_listener.listenEvents();\n }\n }\n else {\n generate_connect_buttons();\n if (window.top !== window.self) { //if(iframe) but no cookie => postMessage redirect to route: logout, url: \"\"\n window.addEventListener('message', function(e) {\n if (e.origin.includes('envoituresimone') || e.origin.includes('herokuapp') || e.origin.includes('localhost')) {\n console.error(\"Error : inside iframe but no cookie iframe/iframe_rendering=true\");\n }\n });\n }\n }\n\n});\n","var collapseNavbar = function() {\n $('body').on('click', function(e) {\n let isCollapsed = $(\"button.navbar-toggler\").hasClass(\"collapsed\");\n if (isCollapsed === false) {\n\n if ( $('#navbarSupportedContent').has(e.target).length == 0 || $(e.target).is(\"button.navbar-toggler\") || $(e.target).parent().is(\"button.navbar-toggler\") ) {\n $('#navbarSupportedContent').collapse(\"hide\");\n }\n toggleCpfHelpSubItem();\n toggleContactSubItem();\n }\n });\n\n onCpfNavbarSupportedContentCollapse();\n onContactNavbarSupportedContentCollapse();\n handleBtnLink();\n}\n\nvar displayOnResizeHandler = function(clickMode) {\n if (clickMode) {\n $('#help-tooltip').addClass('tooltip-on-click');\n $('.nav-item.help-container-item').html($('#help-tooltip-content'));\n $('#help-tooltip').removeClass('tooltip-on-hover');\n }\n else {\n $('#help-tooltip').addClass('tooltip-on-hover');\n $('#help-tooltip').removeClass('tooltip-on-click');\n $('#help-tooltip-content').insertAfter($('#help-tooltip'));\n $('.nav-item.help-container-item').html();\n $('li.nav-item.help-container-item').addClass('d-none');\n $('#help-tooltip').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n\n }\n}\n\nvar toggleTooltipClass = function() {\n //click mode if window size < 992, else hover mode\n displayCpfTooltipOnResizeHandler(window.innerWidth < 992);\n addMouseEventsToCpfTooltip();\n displayContactTooltipOnResizeHandler(window.innerWidth < 992);\n addMouseEventsToContactTooltip();\n}\n\nvar resizeWindow = function() {\n $(window).on('resize', function() {\n toggleTooltipClass();\n });\n}\n\nvar onCpfNavbarSupportedContentCollapse = function() {\n $(\"#navbarSupportedContent\").on('hidden.bs.collapse', function (e) {\n $('#cpf-help-tooltip-content').hide();\n $('li.nav-item.cpf-help-container-item').addClass('d-none');\n $('#cpf-help-tooltip').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n });\n}\n\nvar onContactNavbarSupportedContentCollapse = function() {\n $(\"#navbarSupportedContent\").on('hidden.bs.collapse', function (e) {\n $('#contact-tooltip-content').hide();\n $('li.nav-item.contact-container-item').addClass('d-none');\n $('#contact-tooltip').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n });\n}\n\nvar addMouseEventsToCpfTooltip = function() {\n $('#cpf-help-tooltip').on('mouseenter', function() {\n if (!$(this).hasClass('cpf-tooltip-on-hover')) return false;\n $('#cpf-help-tooltip-content').show();\n $('#cpf-help-tooltip.cpf-tooltip-on-hover').find('span').removeClass('icon-chevron-down').addClass('icon-chevron-up');\n }).on('mouseleave', function(e) {\n if (!$(this).hasClass('cpf-tooltip-on-hover')) return false;\n e.preventDefault();\n if($('#cpf-help-tooltip-content:hover').length == 0){\n $('#cpf-help-tooltip-content').hide();\n $('#cpf-help-tooltip.cpf-tooltip-on-hover').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n } else {\n mouseHoverCpfTooltipContent();\n }\n });\n}\n\nvar addMouseEventsToContactTooltip = function() {\n $('#contact-tooltip').on('mouseenter', function() {\n if (!$(this).hasClass('tooltip-on-hover')) return false;\n $('#contact-tooltip-content').show();\n $('#contact-tooltip.tooltip-on-hover').find('span').removeClass('icon-chevron-down').addClass('icon-chevron-up');\n }).on('mouseleave', function(e) {\n if (!$(this).hasClass('tooltip-on-hover')) return false;\n e.preventDefault();\n if($('#contact-tooltip-content:hover').length == 0){\n $('#contact-tooltip-content').hide();\n $('#contact-tooltip.tooltip-on-hover').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n } else {\n mouseHoverContactTooltipContent();\n }\n });\n}\n\nvar mouseHoverCpfTooltipContent = function () {\n $('#cpf-help-tooltip-content').on('mouseenter', function() {\n if ($('.cpf-tooltip-on-hover').length == 0) return false;\n $(this).show();\n }).on('mouseleave', function() {\n if ($('.cpf-tooltip-on-hover').length == 0) return false;\n $(this).hide();\n $('#cpf-help-tooltip.cpf-tooltip-on-hover').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n });\n}\n\nvar mouseHoverContactTooltipContent = function () {\n $('#contact-tooltip-content').on('mouseenter', function() {\n if ($('.tooltip-on-hover').length == 0) return false;\n $(this).show();\n }).on('mouseleave', function() {\n if ($('.tooltip-on-hover').length == 0) return false;\n $(this).hide();\n $('#contact-tooltip.tooltip-on-hover').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n });\n}\n\nvar toggleCpfHelpSubItem = function() {\n $('#cpf-help-tooltip.cpf-tooltip-on-click').off('click');\n $('#cpf-help-tooltip.cpf-tooltip-on-click').on('click', function(e) {\n\n if ($('.cpf-tooltip-on-click').length == 0) return false;\n $('#cpf-help-tooltip-content').show();\n $('li.nav-item.cpf-help-container-item').toggleClass('d-none');\n $('#cpf-help-tooltip.cpf-tooltip-on-click').find('span').toggleClass('icon-chevron-down icon-chevron-up');\n });\n}\n\nvar toggleContactSubItem = function() {\n $('#contact-tooltip.contact-tooltip-on-click').off('click');\n $('#contact-tooltip.contact-tooltip-on-click').on('click', function(e) {\n\n if ($('.contact-tooltip-on-click').length == 0) return false;\n $('#contact-tooltip-content').show();\n $('li.nav-item.contact-container-item').toggleClass('d-none');\n $('#contact-tooltip.contact-tooltip-on-click').find('span').toggleClass('icon-chevron-down icon-chevron-up');\n });\n}\n\nvar handleBtnLink = function() {\n if ($('#cpf-help-tooltip-permisb') != null) {\n $('#cpf-help-tooltip-permisb').on('click', function(){\n window.location.replace($('#cpf-help-tooltip-permisb-url').data('url'))\n });\n }\n if ($('#cpf-help-tooltip-info') != null) {\n $('#cpf-help-tooltip-info').on('click', function(){\n window.location.replace($('#cpf-help-tooltip-info-url').data('url'))\n });\n }\n if ($('#cpf-help-tooltip-for-children') != null) {\n $('#cpf-help-tooltip-for-children').on('click', () => window.location.replace($('#cpf-help-tooltip-for-children-url').data('url')));\n }\n if ($('#cpf-help-tooltip-offers') != null) {\n $('#cpf-help-tooltip-offers').on('click', () => {\n window.open(\n unobfuscateLink('#cpf-help-tooltip-offers-url')\n )\n });\n }\n}\n\nvar displayCpfTooltipOnResizeHandler = function(clickMode) {\n if (clickMode) {\n $('#cpf-help-tooltip').addClass('cpf-tooltip-on-click');\n $('#cpf-help-tooltip').removeClass('cpf-tooltip-on-hover');\n $('.nav-item.cpf-help-container-item').html($('#cpf-help-tooltip-content'));\n }\n else {\n $('#cpf-help-tooltip').addClass('cpf-tooltip-on-hover');\n $('#cpf-help-tooltip').removeClass('cpf-tooltip-on-click');\n $('#cpf-help-tooltip-content').insertAfter($('#cpf-help-tooltip'));\n $('.nav-item.cpf-help-container-item').html();\n $('li.nav-item.cpf-help-container-item').addClass('d-none');\n $('#cpf-help-tooltip').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n computeCpfTooltipPosition();\n }\n}\n\nvar displayContactTooltipOnResizeHandler = function(clickMode) {\n if (clickMode) {\n $('#contact-tooltip').addClass('contact-tooltip-on-click');\n $('#contact-tooltip').removeClass('tooltip-on-hover');\n $('.nav-item.contact-container-item').html($('#contact-tooltip-content'));\n }\n else {\n $('#contact-tooltip').addClass('tooltip-on-hover');\n $('#contact-tooltip').removeClass('contact-tooltip-on-click');\n $('#contact-tooltip-content').insertAfter($('#contact-tooltip'));\n $('.nav-item.contact-container-item').html();\n $('li.nav-item.contact-container-item').addClass('d-none');\n $('#contact-tooltip').find('span').removeClass('icon-chevron-up').addClass('icon-chevron-down');\n computeContactTooltipPosition();\n }\n}\n\nvar computeCpfTooltipPosition = function() {\n if ($('#cpf-help-tooltip').length > 0) {\n let cpfNavBarHeight = $('.navbar').outerHeight() || 0;\n let cpfParentHeight = $('.li-tooltip-parent').outerHeight() || 0;\n $('#cpf-help-tooltip-content').css({\n \"right\": \"0\",\n \"top\": String(cpfNavBarHeight/2 + cpfParentHeight/2) + \"px\"\n });\n }\n}\n\nvar computeContactTooltipPosition = function() {\n if ($('#contact-tooltip').length > 0) {\n let cpfNavBarHeight = $('.navbar').outerHeight() || 0;\n let cpfParentHeight = $('.li-tooltip-parent').outerHeight() || 0;\n $('#contact-tooltip-content').css({\n \"right\": \"0\",\n \"top\": String(cpfNavBarHeight/2 + cpfParentHeight/2) + \"px\"\n });\n }\n}\n\nvar unobfuscateLink = function(id) {\n let $tag = $(id)\n return $tag.hasClass('obf-link') ? window.atob($tag.data('url')) : $tag.data('url')\n}\n\n$(document).ready(function(){\n collapseNavbar();\n toggleTooltipClass();\n resizeWindow();\n});\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport $ from 'jquery';\n\nrequire(\"@rails/ujs\").start();\nrequire(\"jquery\");\nimport '../../../node_modules/bootstrap/dist/js/bootstrap.bundle.js';\nimport '../../../node_modules/jquery-autocomplete/jquery.autocomplete.js';\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n//\n// Or add images to default location\nrequire.context('../images', true);\n\n// -------------------------------------\n// Import manually all you JS files here\n// -------------------------------------\nif($('.geocomplete-for-map')){\n import('src/javascript/jquery.geocomplete.js');\n}\n\n// Tells to compile all the scss\nimport 'src/stylesheets/application.scss';\n\n// -------------------------------------\n// Import iframe JS files\n// -------------------------------------\nimport 'src/javascript/iframe/iframe.js';\n\n// -------------------------------------\n// Import user disclaimer JS files\n// -------------------------------------\nif($('#iel-user-disclaimer-js')){\n import('src/javascript/user_disclaimer/user_disclaimer.js');\n}\n// -------------------------------------\n// Import models JS files\n// -------------------------------------\nimport 'src/javascript/jquery.geocomplete.js';\n// import \"src/javascript/models/mapModel.js\"\n\n// -------------------------------------\n// Import views JS files\n// -------------------------------------\nif($('#show-availabilities-js')) {\n import('src/javascript/views/googleMapView.js');\n import('src/javascript/views/versionAView.js');\n import('src/javascript/views/otherVersionView.js');\n import(\"src/javascript/models/mapModel.js\");\n}\n\nif($('#geocomplete-for-map-js')){\n import('src/javascript/jquery.geocomplete.js');\n}\n\n// Actual blocks\nimport 'index.js';\n\n// -------------------------------------\n// Import Navbar JS files\n// -------------------------------------\n\nimport 'src/javascript/navbar.js';\n\n// -------------------------------------\n// Import link helper JS files\n// -------------------------------------\n\nimport 'src/javascript/views/links.js';\n","var addAttributesToExternalLinks = function() {\n $( \"a\" ).each(function( index, element ) {\n var linkUrl = $(element).attr('href');\n\n if (typeof linkUrl !== 'undefined') {\n if (!isRelativeUrl(linkUrl) && hasExternalDomain(linkUrl)) {\n $(element).attr('target', '_blank').attr('rel','noopener');\n }\n }\n });\n}\n\nvar isRelativeUrl = function(linkUrl) {\n return [\"#\", \"/\"].includes(linkUrl.substring(0,1))\n}\n\nvar hasExternalDomain = function(linkUrl) {\n return (!linkUrl.includes('envoituresimone') && !linkUrl.includes(window.location.hostname))\n}\n\n$(document).ready(function(){\n addAttributesToExternalLinks();\n});"],"sourceRoot":""}