/*

 Copyright 2019-2020 The Go Authors. All rights reserved.
 Use of this source code is governed by a BSD-style
 license that can be found in the LICENSE file.
*/
(function(){var b=document.querySelector(".js-header"),c=document.querySelectorAll(".js-headerMenuButton");c.forEach(function(d){d.addEventListener("click",function(a){a.preventDefault();b.classList.toggle("is-active");d.setAttribute("aria-expanded",b.classList.contains("is-active"))})});var a=document.querySelector(".js-scrim");a&&a.hasOwnProperty("addEventListener")&&a.addEventListener("click",function(a){a.preventDefault();b.classList.remove("is-active");c.forEach(function(a){a.setAttribute("aria-expanded",
b.classList.contains("is-active"))})})})();(function(){window.dataLayer=window.dataLayer||[];window.dataLayer.push({"gtm.start":(new Date).getTime(),event:"gtm.js"})})();
