1!function(){const o=window.navigator.userAgent;Object.entries({android:/android/i,iphone:/iPhone/i,ipad:/iPad/i}).forEach((([n,i])=>{o.match(i)&&document.body.classList.add(`tec-is-${n}`)}))}(),window.tec=window.tec||{},window.tec.common=window.tec.common||{},window.tec.common.userAgent={};; 2(()=>{const e=document.querySelectorAll(".coblocks-animate");if("IntersectionObserver"in window){const t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(e.target.classList.add(e.target.dataset.coblocksAnimation),t.unobserve(e.target))}))}),{threshold:[.15]});e.forEach((e=>{t.observe(e)}))}else e.forEach((e=>{e.classList.remove("coblocks-animate"),delete e.dataset.coblocksAnimation}))})();; 3/** 4 * File skip-link-focus-fix.js. 5 * 6 * Helps with accessibility for keyboard only users. 7 * 8 * Learn more: https://git.io/vWdr2 9 */ 10(function() { 11 var isIe = /(trident|msie)/i.test( navigator.userAgent ); 12 13 if ( isIe && document.getElementById && window.addEventListener ) { 14 window.addEventListener( 'hashchange', function() { 15 var id = location.hash.substring( 1 ), 16 element; 17 18 if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) { 19 return; 20 } 21 22 element = document.getElementById( id ); 23 24 if ( element ) { 25 if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) { 26 element.tabIndex = -1; 27 } 28 29 element.focus(); 30 } 31 }, false ); 32 } 33})(); 34; 35/** 36 * File navigation.js. 37 * 38 * Handles toggling the navigation menu for small screens and enables TAB key 39 * navigation support for dropdown menus. 40 */ 41( function( $ ) { 42 43 var body, menuToggle, siteMenu, siteNavigation; 44 45 function initMainNavigation( container ) { 46 47 // Add dropdown toggle that displays child menu items. 48 var dropdownToggle = $( '<button />', { 49 'class': 'dropdown-toggle', 50 'aria-expanded': false 51 } ).append( $( '<span />', { 52 'class': 'screen-reader-text', 53 text: screenReaderText.expand 54 } ) ); 55 56 container.find( '.menu-item-has-children > a' ).after( dropdownToggle ); 57 58 // Toggle buttons and submenu items with active children menu items. 59 container.find( '.current-menu-ancestor > button' ).addClass( 'toggled-on' ); 60 container.find( '.current-menu-ancestor > .sub-menu' ).addClass( 'toggled-on' ); 61 62 // Add menu items with submenus to aria-haspopup="true". 63 container.find( '.menu-item-has-children' ).attr( 'aria-haspopup', 'true' ); 64 65 container.find( '.dropdown-toggle' ).click( function( e ) { 66 var _this = $( this ), 67 screenReaderSpan = _this.find( '.screen-reader-text' ); 68 69 e.preventDefault(); 70 _this.toggleClass( 'toggled-on' ); 71 _this.next( '.children, .sub-menu' ).toggleClass( 'toggled-on' ); 72 73 // jscs:disable 74 _this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); 75 // jscs:enable 76 screenReaderSpan.text( screenReaderSpan.text() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand ); 77 } ); 78 } 79 initMainNavigation( $( '#site-navigation' ) ); 80 81 siteMenu = $( '#menu-primary' ); 82 siteNavigation = $( '#site-navigation' ); 83 menuToggle = siteNavigation.find( '.menu-toggle' ); 84 85 // Enable menuToggle. 86 ( function() { 87 88 // Return early if menuToggle is missing. 89 if ( ! menuToggle.length ) { 90 return; 91 } 92 93 // Add an initial values for the attribute. 94 menuToggle.add( siteNavigation ).attr( 'aria-expanded', 'false' ); 95 96 menuToggle.on( 'click.apostrophe', function() { 97 $( this ).add( siteMenu ).add( siteNavigation ).toggleClass( 'toggled-on' ); 98 99 // jscs:disable 100 $( this ).add( siteMenu ).add( siteNavigation ).attr( 'aria-expanded', $( this ).add( siteNavigation ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); 101 // jscs:enable 102 } ); 103 } )(); 104 105 // Fix sub-menus for touch devices and better focus for hidden submenu items for accessibility. 106 ( function() { 107 if ( ! siteNavigation.length || ! siteNavigation.children().length ) { 108 return; 109 } 110 111 // Toggle `focus` class to allow submenu access on tablets. 112 function toggleFocusClassTouchScreen() { 113 if ( window.innerWidth >= 840 ) { 114 $( document.body ).on( 'touchstart.apostrophe', function( e ) { 115 if ( ! $( e.target ).closest( '.main-navigation li' ).length ) { 116 $( '.main-navigation li' ).removeClass( 'focus' ); 117 } 118 } ); 119 siteNavigation.find( '.menu-item-has-children > a' ).on( 'touchstart.apostrophe', function( e ) { 120 var el = $( this ).parent( 'li' ); 121 122 if ( ! el.hasClass( 'focus' ) ) { 123 e.preventDefault(); 124 el.toggleClass( 'focus' ); 125 el.siblings( '.focus' ).removeClass( 'focus' ); 126 } 127 } ); 128 } else { 129 siteNavigation.find( '.menu-item-has-children > a' ).unbind( 'touchstart.apostrophe' ); 130 } 131 } 132 133 if ( 'ontouchstart' in window ) { 134 $( window ).on( 'resize.apostrophe', toggleFocusClassTouchScreen ); 135 toggleFocusClassTouchScreen(); 136 } 137 138 siteNavigation.find( 'a' ).on( 'focus.apostrophe blur.apostrophe', function() { 139 $( this ).parents( '.menu-item' ).toggleClass( 'focus' ); 140 } ); 141 } )(); 142 143 // Add the default ARIA attributes for the menu toggle and the navigations. 144 function onResizeARIA() { 145 if ( window.innerWidth < 840 ) { 146 if ( menuToggle.hasClass( 'toggled-on' ) ) { 147 menuToggle.attr( 'aria-expanded', 'true' ); 148 siteMenu.attr( 'aria-expanded', 'true' ); 149 siteNavigation.attr( 'aria-expanded', 'true' ); 150 } else { 151 menuToggle.attr( 'aria-expanded', 'false' ); 152 siteMenu.attr( 'aria-expanded', 'false' ); 153 siteNavigation.attr( 'aria-expanded', 'false' ); 154 } 155 } else { 156 menuToggle.removeAttr( 'aria-expanded' ); 157 siteMenu.removeAttr( 'aria-expanded' ); 158 siteNavigation.removeAttr( 'aria-expanded' ); 159 } 160 } 161 162 $( document ).ready( function() { 163 body = $( document.body ); 164 165 $( window ) 166 .on( 'load.apostrophe', onResizeARIA ) 167 .on( 'resize.apostrophe', onResizeARIA ); 168 } ); 169 170} )( jQuery ); 171; 172/** 173 * apostrophe.js 174 * 175 * Handles the basic JS functionality for our theme. 176 */ 177( function($) { 178 /* 179 * Count the number of images in each row in order to create the proper clearings. 180 * For the most part, this isn't necessary, but there are certain instances where 181 * the grid breaks at the wrong spot, making the whole layout look funky. 182 * To fix that, we're counting where we are in the grid layout based on the space 183 * each article uses, and adding a clearing class each time we drop to a new row. 184 */ 185 function countGrid() { 186 var $body = $( 'body' ); 187 var $container = $( '#main #posts-wrapper' ); 188 var $button = $( '.menu-toggle' ); 189 190 // Only initiate script if the mobile menu toggle isn't showing and we're on a page that uses the grid. 191 // Return otherwise. 192 if ( ( 0 !== $button.offsetWidth && 0 !== $button.offsetHeight ) && 193 ! ( $body.hasClass( 'archive' ) || $body.hasClass( 'blog' ) || $body.hasClass( 'search' ) ) ) { 194 return; 195 } 196 197 var $articles = $container.find( '.hentry' ); 198 // This variable is used to count how far across the grid we are. 199 var gridcount = 0; 200 var gridcount_increment; 201 202 $articles.each( function() { 203 // If the article is featured, it takes up two blocks. If not, it takes up one.
204 if ( $( this ).hasClass( 'apostrophe-featured' ) ) { 205 gridcount_increment = 2; 206 } else { 207 gridcount_increment = 1; 208 } 209 // If we're at a newline in the grid, add a class to clear the previous line, and reset the grid count. 210 if ( 3 < gridcount + gridcount_increment ) { 211 gridcount = 0; 212 $( this ).addClass( 'clear' ); 213 } 214 gridcount = gridcount + gridcount_increment; 215 } ); 216 } // countGrid 217 218 // Set width of h2 elements inside the grid to make sure post titles don't overflow the container, and we're breaking long, one-word titles correctly. 219 function blockWidth() { 220 var $body = $( 'body' ); 221 if ( $body.hasClass( 'archive' ) || $body.hasClass( 'blog' ) || $body.hasClass( 'search' ) ) { 222 223 if ( $( window ).innerWidth() > 767 ) { 224 $( '.hentry' ).each( function() { 225 $( this ).find( '.entry-title' ).width( $( this ).width() ); 226 } ); 227 } else { 228 $( '.hentry' ).each( function() { 229 $( this ).find( '.entry-title' ).attr( 'style', '' ); 230 } ); 231 } 232 } 233 } 234 235 // Count grid blocks on page load 236 $( document ).on( 'ready', function() { 237 countGrid(); 238 blockWidth(); 239 }); 240 241 // ...and on each subsequent Infinite Scroll load, as well. 242 $( document ).on( 'post-load', function() { 243 countGrid(); 244 blockWidth(); 245 }); 246 247 $( window ).resize( function() { 248 blockWidth(); 249 }); 250 251} )(jQuery); 252; 253!function(e){var n=function(){var e,n,t,d;"undefined"!=typeof FB&&FB.XFBML?FB.XFBML.parse():((e=document.createElement("div")).id="fb-root",document.getElementsByTagName("body")[0].appendChild(e),n="//connect.facebook.net/"+jpfbembed.locale+"/sdk.js#xfbml=1",jpfbembed.appid&&(n+="&appId="+jpfbembed.appid),n+="&version=v2.3",(t=document.createElement("script")).setAttribute("src",n),(d=document.querySelector("script")).parentNode.insertBefore(t,d))};e.fbAsyncInit=function(){FB.init({appId:jpfbembed.appid,version:"v2.3"}),FB.XFBML.parse()},"undefined"!=typeof infiniteScroll&&document.body.addEventListener("post-load",n),n()}(window);; 254(()=>{var e=[],t=!1,n=2e3,i=[],o=new Promise(e=>{"loading"!==document.readyState?e():window.addEventListener("DOMContentLoaded",()=>e())});function s(e,t){if("string"==typeof e)try{e=JSON.parse(e)}catch{return}if(t&&"function"==typeof t.postMessage)try{t.postMessage(JSON.stringify({type:"likesMessage",data:e}),"*")}catch{}}function r(){const t=[];document.querySelectorAll("div.jetpack-likes-widget-unloaded").forEach(n=>{if(!(e.indexOf(n.id)>-1)&&d(n)){e.push(n.id);var i,o=/like-(post|comment)-wrapper-(\d+)-(\d+)-(\w+)/.exec(n.id);o&&5===o.length&&(i={blog_id:o[2],width:n.width},"post"===o[1]?i.post_id=o[3]:"comment"===o[1]&&(i.comment_id=o[3]),i.obj_id=o[4],t.push(i))}}),t.length>0&&s({event:"initialBatch",requests:t},window.frames["likes-master"])}function a(){const e=document.querySelector("#likes-other-gravatars");if(e){e.style.display="none",e.setAttribute("aria-hidden","true");const t=e.__resizeHandler;t&&(window.removeEventListener("resize",t),delete e.__resizeHandler)}}function l(){var e;if(!t)return s({event:"queryMasterReady"},window.frames["likes-master"]),void setTimeout(l,500);!function(){for(let e=i.length-1;e>=0;e--){const t=i[e];if(!d(t)){const n=t&&t.parentElement&&t.parentElement.parentElement;n.classList.remove("jetpack-likes-widget-loaded"),n.classList.remove("jetpack-likes-widget-loading"),n.classList.add("jetpack-likes-widget-unloaded");const o=n.querySelector(".likes-widget-placeholder");o&&(o.style.display=""),i.splice(e,1),t.remove()}}}(),function(){if(!g)return;document.querySelectorAll("div.jetpack-likes-widget-unloaded").forEach(e=>g.observe(e))}();var n=[...document.querySelectorAll("div.jetpack-likes-widget-unloaded")].filter(e=>d(e));n.length>0&&r();for(var o=0,a=n.length;o<=a-1;o++)(e=n[o].id)&&c(e)}function c(e){if(void 0===e)return;const t=document.querySelector("#"+e);t.querySelectorAll("iframe").forEach(e=>e.remove());const n=t.querySelector(".likes-widget-placeholder");if(n&&n.classList.contains("post-likes-widget-placeholder")){const e=document.createElement("iframe");e.classList.add("post-likes-widget","jetpack-likes-widget"),e.name=t.dataset.name,e.src=t.dataset.src,e.height="55px",e.width="100%",e.frameBorder="0",e.scrolling="no",e.title=t.dataset.title,n.after(e)}if(n.classList.contains("comment-likes-widget-placeholder")){const e=document.createElement("iframe");e.class="comment-likes-widget-frame jetpack-likes-widget-frame",e.name=t.dataset.name,e.src=t.dataset.src,e.height="18px",e.width="100%",e.frameBorder="0",e.scrolling="no",t.querySelector(".comment-like-feedback").after(e),i.push(e)}t.classList.remove("jetpack-likes-widget-unloaded"),t.classList.add("jetpack-likes-widget-loading"),t.querySelector("iframe").addEventListener("load",e=>{t.contains(e.target)&&(s({event:"loadLikeWidget",name:e.target.name,width:e.target.width},window.frames["likes-master"]),n&&(n.style.display="none"),t.classList.remove("jetpack-likes-widget-loading"),t.classList.add("jetpack-likes-widget-loaded"))})}function d(e){const t=e.getBoundingClientRect().top,i=e.getBoundingClientRect().bottom;return t+n>=0&&i<=window.innerHeight+n}window.addEventListener("message",function(e){let n=e&&e.data;if("string"==typeof n)try{n=JSON.parse(n)}catch{return}const i=n&&n.type,l=n&&n.data;if("likesMessage"!==i||void 0===l.event)return;if("https://widgets.wp.com"===e.origin)switch(l.event){case"masterReady":o.then(()=>{t=!0;const e={event:"injectStyles"},n=document.querySelector(".sd-text-color"),i=document.querySelector(".sd-link-color"),o=n&&getComputedStyle(n)||{},a=i&&getComputedStyle(i)||{};document.body.classList.contains("single")&&s({event:"reblogsEnabled"},window.frames["likes-master"]),e.textStyles={color:o.color,fontFamily:o["font-family"],fontSize:o["font-size"],direction:o.direction,fontWeight:o["font-weight"],fontStyle:o["font-style"],textDecoration:o["text-decoration"]},e.linkStyles={color:a.color,fontFamily:a["font-family"],fontSize:a["font-size"],textDecoration:a["text-decoration"],fontWeight:a["font-weight"],fontStyle:a["font-style"]},s(e,window.frames["likes-master"]),r()});break;case"showLikeWidget":case"showCommentLikeWidget":break;case"killCommentLikes":document.querySelectorAll(".jetpack-comment-likes-widget-wrapper").forEach(e
254=>e.remove());break;case"clickReblogFlair":wpcom_reblog&&"function"==typeof wpcom_reblog.toggle_reblog_box_flair&&wpcom_reblog.toggle_reblog_box_flair(l.obj_id);break;case"hideOtherGravatars":a();break;case"showOtherGravatars":{const e=document.querySelector("#likes-other-gravatars");if(!e)break;const t=e.querySelector("ul");e.style.display="none",t.innerHTML="",e.querySelectorAll(".likes-text span").forEach(e=>e.textContent=l.totalLikesLabel),(l.likers||[]).forEach(async(e,n)=>{if("http"!==e.profile_URL.substr(0,4))return;const i=document.createElement("li");t.append(i);const o=encodeURI(e.profile_URL),r=encodeURI(e.avatar_URL);i.innerHTML=`<a href="${o}" rel="nofollow" target="_parent" class="wpl-liker">\n\t\t\t\t\t\t<img src="${r}"\n\t\t\t\t\t\t\talt=""\n\t\t\t\t\t\t\tstyle="width: 28px; height: 28px;" />\n\t\t\t\t\t\t<span></span>\n\t\t\t\t\t</a>`,i.classList.add(e.css_class),i.querySelector("img").alt=l.avatarAltTitle.replace("%s",e.name),i.querySelector("span").innerText=e.name,n===l.likers.length-1&&i.addEventListener("keydown",e=>{"Tab"!==e.key||e.shiftKey||(e.preventDefault(),a(),s({event:"focusLikesCount",parent:l.parent},window.frames["likes-master"]))})});const n=function(){const t="rtl"===getComputedStyle(e).direction,n=document.querySelector(`*[name='${l.parent}']`),i=n.getBoundingClientRect(),o=n.ownerDocument.defaultView,s=i.top+o.pageYOffset,r=i.left+o.pageXOffset;let a;if(e.style.top=s+l.position.top-1+"px",t){const t=l&&l.likers?Math.min(l.likers.length,5):0;a=r+l.position.left+24*t+4,e.style.transform="translateX(-100%)"}else a=r+l.position.left;e.style.left=a+"px",e.style.left="-9999px",e.style.display="block";const c=e.offsetWidth;a+c>o.innerWidth&&(a=i.right-c),e.style.left=a+"px",e.setAttribute("aria-hidden","false")};n(),e.focus();const i=function(e,t){var n;return function(){var i=this,o=arguments;clearTimeout(n),n=setTimeout(function(){e.apply(i,o)},t)}},o=i(n,100);e.__resizeHandler=o,window.addEventListener("resize",o),e.focus()}}}),document.addEventListener("click",a);var f,m,u,p=(f=250,m=l,function(){clearTimeout(u),u=setTimeout(m,f)}),g="function"==typeof IntersectionObserver?new IntersectionObserver(p,{rootMargin:"2000px",threshold:[0,1]}):null;l(),window.addEventListener("scroll",p,!0)})();;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.