/* Source Themes Academic v4.8.0 | https://sourcethemes.com/academic/ */ ; /*! * Bootstrap v4.4.1 (https://getbootstrap.com/) * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Y.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Se,popperConfig:null},Fe="show",Ue="out",We={HIDE:"hide"+Oe,HIDDEN:"hidden"+Oe,SHOW:"show"+Oe,SHOWN:"shown"+Oe,INSERTED:"inserted"+Oe,CLICK:"click"+Oe,FOCUSIN:"focusin"+Oe,FOCUSOUT:"focusout"+Oe,MOUSEENTER:"mouseenter"+Oe,MOUSELEAVE:"mouseleave"+Oe},qe="fade",Me="show",Ke=".tooltip-inner",Qe=".arrow",Be="hover",Ve="focus",Ye="click",ze="manual",Xe=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Me))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(qe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,this._getPopperConfig(a)),g(o).addClass(Me),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===Ue&&e._leave(null,e)};if(g(this.tip).hasClass(qe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){function e(){n._hoverState!==Fe&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),g(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()}var n=this,i=this.getTipElement(),o=g.Event(this.constructor.Event.HIDE);if(g(this.element).trigger(o),!o.isDefaultPrevented()){if(g(i).removeClass(Me),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._activeTrigger[Be]=!1,g(this.tip).hasClass(qe)){var r=_.getTransitionDurationFromElement(i);g(i).one(_.TRANSITION_END,e).emulateTransitionEnd(r)}else e();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Pe+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ke)),this.getTitle()),g(t).removeClass(qe+" "+Me)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=we(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t=t||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},t._getPopperConfig=function(t){var e=this;return l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Qe},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},{},this.config.popperConfig)},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,{},e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Re[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==ze){var e=t===Be?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Be?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),this._hideModalHandler=function(){i.element&&i.hide()},g(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==t||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Ve:Be]=!0),g(e.getTipElement()).hasClass(Me)||e._hoverState===Fe?e._hoverState=Fe:(clearTimeout(e._timeout),e._hoverState=Fe,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Fe&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Ve:Be]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Ue,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Ue&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==je.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,{},e,{},"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(Ae,t,this.constructor.DefaultType),t.sanitize&&(t.template=we(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Le);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(qe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ne),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ne,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return xe}},{key:"NAME",get:function(){return Ae}},{key:"DATA_KEY",get:function(){return Ne}},{key:"Event",get:function(){return We}},{key:"EVENT_KEY",get:function(){return Oe}},{key:"DefaultType",get:function(){return He}}]),i}();g.fn[Ae]=Xe._jQueryInterface,g.fn[Ae].Constructor=Xe,g.fn[Ae].noConflict=function(){return g.fn[Ae]=ke,Xe._jQueryInterface};var $e="popover",Ge="bs.popover",Je="."+Ge,Ze=g.fn[$e],tn="bs-popover",en=new RegExp("(^|\\s)"+tn+"\\S+","g"),nn=l({},Xe.Default,{placement:"right",trigger:"click",content:"",template:''}),on=l({},Xe.DefaultType,{content:"(string|element|function)"}),rn="fade",sn="show",an=".popover-header",ln=".popover-body",cn={HIDE:"hide"+Je,HIDDEN:"hidden"+Je,SHOW:"show"+Je,SHOWN:"shown"+Je,INSERTED:"inserted"+Je,CLICK:"click"+Je,FOCUSIN:"focusin"+Je,FOCUSOUT:"focusout"+Je,MOUSEENTER:"mouseenter"+Je,MOUSELEAVE:"mouseleave"+Je},hn=function(t){function i(){return t.apply(this,arguments)||this}!function(t,e){t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e}(i,t);var e=i.prototype;return e.isWithContent=function(){return this.getTitle()||this._getContent()},e.addAttachmentClass=function(t){g(this.getTipElement()).addClass(tn+"-"+t)},e.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},e.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(an),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ln),e),t.removeClass(rn+" "+sn)},e._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},e._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(en);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t0)){event.preventDefault();let elementOffset=Math.ceil($(hash).offset().top-getNavBarHeight());$('html, body').animate({scrollTop:elementOffset},800);}});$(document).on('click','.navbar-collapse.show',function(e){let targetElement=$(e.target).is('a')?$(e.target):$(e.target).parent();if(targetElement.is('a')&&targetElement.attr('class')!='dropdown-toggle'){$(this).collapse('hide');}});let pubFilters={};let searchRegex;let filterValues;let $grid_pubs=$('#container-publications');$grid_pubs.isotope({itemSelector:'.isotope-item',percentPosition:true,masonry:{columnWidth:'.grid-sizer'},filter:function(){let $this=$(this);let searchResults=searchRegex?$this.text().match(searchRegex):true;let filterResults=filterValues?$this.is(filterValues):true;return searchResults&&filterResults;}});let $quickSearch=$('.filter-search').keyup(debounce(function(){searchRegex=new RegExp($quickSearch.val(),'gi');$grid_pubs.isotope();}));function debounce(fn,threshold){let timeout;threshold=threshold||100;return function debounced(){clearTimeout(timeout);let args=arguments;let _this=this;function delayed(){fn.apply(_this,args);} timeout=setTimeout(delayed,threshold);};} function concatValues(obj){let value='';for(let prop in obj){value+=obj[prop];} return value;} $('.pub-filters').on('change',function(){let $this=$(this);let filterGroup=$this[0].getAttribute('data-filter-group');pubFilters[filterGroup]=this.value;filterValues=concatValues(pubFilters);$grid_pubs.isotope();if(filterGroup=="pubtype"){let url=$(this).val();if(url.substr(0,9)=='.pubtype-'){window.location.hash=url.substr(9);}else{window.location.hash='';}}});function filter_publications(){let urlHash=window.location.hash.replace('#','');let filterValue='*';if(urlHash!=''&&!isNaN(urlHash)){filterValue='.pubtype-'+urlHash;} let filterGroup='pubtype';pubFilters[filterGroup]=filterValue;filterValues=concatValues(pubFilters);$grid_pubs.isotope();$('.pubtype-select').val(filterValue);} function initMap(){if($('#map').length){let map_provider=$('#map-provider').val();let lat=$('#map-lat').val();let lng=$('#map-lng').val();let zoom=parseInt($('#map-zoom').val());let address=$('#map-dir').val();let api_key=$('#map-api-key').val();if(map_provider==1){let map=new GMaps({div:'#map',lat:lat,lng:lng,zoom:zoom,zoomControl:true,zoomControlOpt:{style:'SMALL',position:'TOP_LEFT'},panControl:false,streetViewControl:false,mapTypeControl:false,overviewMapControl:false,scrollwheel:true,draggable:true});map.addMarker({lat:lat,lng:lng,click:function(e){let url='https://www.google.com/maps/place/'+encodeURIComponent(address)+'/@'+lat+','+lng+'/';window.open(url,'_blank')},title:address})}else{let map=new L.map('map').setView([lat,lng],zoom);if(map_provider==3&&api_key.length){L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}',{attribution:'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery © Mapbox',maxZoom:18,id:'mapbox.streets',accessToken:api_key}).addTo(map);}else{L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{maxZoom:19,attribution:'© OpenStreetMap'}).addTo(map);} let marker=L.marker([lat,lng]).addTo(map);let url=lat+','+lng+'#map='+zoom+'/'+lat+'/'+lng+'&layers=N';marker.bindPopup(address+'

Routing via OpenStreetMap

');}}} function printLatestRelease(selector,repo){$.getJSON('https://api.github.com/repos/'+repo+'/tags').done(function(json){let release=json[0];$(selector).append(' '+release.name);}).fail(function(jqxhr,textStatus,error){let err=textStatus+", "+error;console.log("Request Failed: "+err);});} function toggleSearchDialog(){if($('body').hasClass('searching')){$('[id=search-query]').blur();$('body').removeClass('searching compensate-for-scrollbar');removeQueryParamsFromUrl();$('#fancybox-style-noscroll').remove();}else{if(!$('#fancybox-style-noscroll').length&&document.body.scrollHeight>window.innerHeight){$('head').append('');$('body').addClass('compensate-for-scrollbar');} $('body').addClass('searching');$('.search-results').css({opacity:0,visibility:'visible'}).animate({opacity:1},200);$('#search-query').focus();}} function canChangeTheme(){return $('.js-theme-selector').length;} function getThemeMode(){return parseInt(localStorage.getItem('dark_mode')||2);} function changeThemeModeClick(newMode){console.info('Request to set theme.');if(!canChangeTheme()){console.info('Cannot set theme - admin disabled theme selector.');return;} let isDarkTheme;switch(newMode){case 0:localStorage.setItem('dark_mode','1');isDarkTheme=1;console.info('User changed theme variation to Dark.');showActiveTheme(0);break;case 1:localStorage.setItem('dark_mode','2');if(window.matchMedia('(prefers-color-scheme: dark)').matches){isDarkTheme=1;}else if(window.matchMedia('(prefers-color-scheme: light)').matches){isDarkTheme=0;}else{isDarkTheme=isSiteThemeDark;} console.info('User changed theme variation to Auto.');showActiveTheme(1);break;default:localStorage.setItem('dark_mode','0');isDarkTheme=0;console.info('User changed theme variation to Light.');showActiveTheme(2);break;} renderThemeVariation(isDarkTheme);} function showActiveTheme(mode){switch(mode){case 0:$('.js-set-theme-light').removeClass('dropdown-item-active');$('.js-set-theme-dark').addClass('dropdown-item-active');$('.js-set-theme-auto').removeClass('dropdown-item-active');break;case 1:$('.js-set-theme-light').removeClass('dropdown-item-active');$('.js-set-theme-dark').removeClass('dropdown-item-active');$('.js-set-theme-auto').addClass('dropdown-item-active');break;default:$('.js-set-theme-light').addClass('dropdown-item-active');$('.js-set-theme-dark').removeClass('dropdown-item-active');$('.js-set-theme-auto').removeClass('dropdown-item-active');break;}} function getThemeVariation(){if(!canChangeTheme()){return isSiteThemeDark;} let currentThemeMode=getThemeMode();let isDarkTheme;switch(currentThemeMode){case 0:isDarkTheme=0;break;case 1:isDarkTheme=1;break;default:if(window.matchMedia('(prefers-color-scheme: dark)').matches){isDarkTheme=1;}else if(window.matchMedia('(prefers-color-scheme: light)').matches){isDarkTheme=0;}else{isDarkTheme=isSiteThemeDark;} break;} return isDarkTheme;} function renderThemeVariation(isDarkTheme,init=false){const codeHlEnabled=$('link[title=hl-light]').length>0;const codeHlLight=$('link[title=hl-light]')[0];const codeHlDark=$('link[title=hl-dark]')[0];const diagramEnabled=$('script[title=mermaid]').length>0;if(!init){if((isDarkTheme===0&&!$('body').hasClass('dark'))||(isDarkTheme===1&&$('body').hasClass('dark'))){return;}} if(isDarkTheme===0){if(!init){$('body').css({opacity:0,visibility:'visible'}).animate({opacity:1},500);} $('body').removeClass('dark');if(codeHlEnabled){codeHlLight.disabled=false;codeHlDark.disabled=true;} if(diagramEnabled){if(init){mermaid.initialize({theme:'default',securityLevel:'loose'});}else{location.reload();}}}else if(isDarkTheme===1){if(!init){$('body').css({opacity:0,visibility:'visible'}).animate({opacity:1},500);} $('body').addClass('dark');if(codeHlEnabled){codeHlLight.disabled=true;codeHlDark.disabled=false;} if(diagramEnabled){if(init){mermaid.initialize({theme:'dark',securityLevel:'loose'});}else{location.reload();}}}} function initThemeVariation(){if(canChangeTheme){let themeMode=getThemeMode();switch(themeMode){case 0:showActiveTheme(2);console.info('Initialize theme variation to Light.');break;case 1:showActiveTheme(0);console.info('Initialize theme variation to Dark.');break;default:showActiveTheme(1);console.info('Initialize theme variation to Auto.');break;}} let isDarkTheme=getThemeVariation();renderThemeVariation(isDarkTheme,true);} function normalizeCarouselSlideHeights(){$('.carousel').each(function(){let items=$('.carousel-item',this);items.css('min-height',0);let maxHeight=Math.max.apply(null,items.map(function(){return $(this).outerHeight()}).get());items.css('min-height',maxHeight+'px');})} function fixHugoOutput(){$('#TableOfContents').addClass('nav flex-column');$('#TableOfContents li').addClass('nav-item');$('#TableOfContents li a').addClass('nav-link');$("input[type='checkbox'][disabled]").parents('ul').addClass('task-list');} function fixMermaid(){let mermaids=[];[].push.apply(mermaids,document.getElementsByClassName('language-mermaid'));for(let i=0;i").append($(this).contents()).addClass('mermaid');});}} $(document).ready(function(){fixHugoOutput();fixMermaid();if(code_highlighting){hljs.initHighlighting();} initThemeVariation();$('.js-set-theme-light').click(function(e){e.preventDefault();changeThemeModeClick(2);});$('.js-set-theme-dark').click(function(e){e.preventDefault();changeThemeModeClick(0);});$('.js-set-theme-auto').click(function(e){e.preventDefault();changeThemeModeClick(1);});const darkModeMediaQuery=window.matchMedia('(prefers-color-scheme: dark)');darkModeMediaQuery.addListener((e)=>{if(!canChangeTheme()){return;} const darkModeOn=e.matches;console.log(`OS dark mode preference changed to ${darkModeOn?'🌒 on':'☀️ off'}.`);let currentThemeVariation=parseInt(localStorage.getItem('dark_mode')||2);let isDarkTheme;if(currentThemeVariation===2){if(window.matchMedia('(prefers-color-scheme: dark)').matches){isDarkTheme=1;}else if(window.matchMedia('(prefers-color-scheme: light)').matches){isDarkTheme=0;}else{isDarkTheme=isSiteThemeDark;} renderThemeVariation(isDarkTheme);}});});$(window).on('load',function(){$('.projects-container').each(function(index,container){let $container=$(container);let $section=$container.closest('section');let layout;if($section.find('.isotope').hasClass('js-layout-row')){layout='fitRows';}else{layout='masonry';} $container.imagesLoaded(function(){$container.isotope({itemSelector:'.isotope-item',layoutMode:layout,masonry:{gutter:20},filter:$section.find('.default-project-filter').text()});$section.find('.project-filters a').click(function(){let selector=$(this).attr('data-filter');$container.isotope({filter:selector});$(this).removeClass('active').addClass('active').siblings().removeClass('active all');return false;});if(window.location.hash){scrollToAnchor();}});});if($('.pub-filters-select')){filter_publications();} $('.back-to-top').click(function(event){event.preventDefault();$('html, body').animate({'scrollTop':0},800,function(){window.location.hash="";});});$('.js-cite-modal').click(function(e){e.preventDefault();let filename=$(this).attr('data-filename');let modal=$('#modal');modal.find('.modal-body code').load(filename,function(response,status,xhr){if(status=='error'){let msg="Error: ";$('#modal-error').html(msg+xhr.status+" "+xhr.statusText);}else{$('.js-download-cite').attr('href',filename);}});modal.modal('show');});$('.js-copy-cite').click(function(e){e.preventDefault();let range=document.createRange();let code_node=document.querySelector('#modal .modal-body');range.selectNode(code_node);window.getSelection().addRange(range);try{document.execCommand('copy');}catch(e){console.log('Error: citation copy failed.');} window.getSelection().removeRange(range);});initMap();let githubReleaseSelector='.js-github-release';if($(githubReleaseSelector).length>0) printLatestRelease(githubReleaseSelector,$(githubReleaseSelector).data('repo'));$('.js-search').click(function(e){e.preventDefault();toggleSearchDialog();});$(document).on('keydown',function(e){if(e.which==27){if($('body').hasClass('searching')){toggleSearchDialog();}}else if(e.which==191&&e.shiftKey==false&&!$('input,textarea').is(':focus')){e.preventDefault();toggleSearchDialog();}});});$(window).on('load resize orientationchange',normalizeCarouselSlideHeights);$('body').on('mouseenter mouseleave','.dropdown',function(e){var dropdown=$(e.target).closest('.dropdown');var menu=$('.dropdown-menu',dropdown);dropdown.addClass('show');menu.addClass('show');setTimeout(function(){dropdown[dropdown.is(':hover')?'addClass':'removeClass']('show');menu[dropdown.is(':hover')?'addClass':'removeClass']('show');},300);fixScrollspy();if(window.location.hash){if(window.location.hash=="#top"){window.location.hash=""}else if(!$('.projects-container').length){scrollToAnchor();}} let resizeTimer;$(window).resize(function(){clearTimeout(resizeTimer);resizeTimer=setTimeout(fixScrollspy,200);});});})(jQuery);;let fuseOptions={shouldSort:true,includeMatches:true,tokenize:true,threshold:search_config.threshold,location:0,distance:100,maxPatternLength:32,minMatchCharLength:search_config.minLength,keys:[{name:'title',weight:0.99},{name:'summary',weight:0.6},{name:'authors',weight:0.5},{name:'content',weight:0.2},{name:'tags',weight:0.5},{name:'categories',weight:0.5}]};let summaryLength=60;function getSearchQuery(name){return decodeURIComponent((location.search.split(name+'=')[1]||'').split('&')[0]).replace(/\+/g,' ');} function updateURL(url){if(history.replaceState){window.history.replaceState({path:url},'',url);}} function initSearch(force,fuse){let query=$("#search-query").val();if(query.length<1){$('#search-hits').empty();} if(!force&&query.length0){$('#search-hits').append('

'+results.length+' '+i18n.results+'

');parseResults(query,results);}else{$('#search-hits').append('
'+i18n.no_results+'
');}} function parseResults(query,results){$.each(results,function(key,value){let content_key=value.item.section;let content="";let snippet="";let snippetHighlights=[];if(["publication","talk"].includes(content_key)){content=value.item.summary;}else{content=value.item.content;} if(fuseOptions.tokenize){snippetHighlights.push(query);}else{$.each(value.matches,function(matchKey,matchValue){if(matchValue.key=="content"){let start=(matchValue.indices[0][0]-summaryLength>0)?matchValue.indices[0][0]-summaryLength:0;let end=(matchValue.indices[0][1]+summaryLength