<!--
  Copyright 2021 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.
-->

<!DOCTYPE html>
<html lang="en" data-layout="{{if .UseResponsiveLayout}}responsive{{end}}" {{if .UseDarkTheme}}data-theme="dark"{{end}}>
  <head>
    <!-- This will capture unhandled errors during page load for reporting later. -->
    <script>
      window.addEventListener('error', window.__err=function f(e){f.p=f.p||[];f.p.push(e)});
    </script>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {{block "description" .}}
      <meta name="description" content="Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.">
    {{end}}
    <meta class="js-gtmID" data-gtmid="{{.GoogleTagManagerID}}">
    <link rel="shortcut icon" href="/static/shared/icon/favicon.ico">
    <!-- Only load the css reset for non-legacy pages -->
    {{if not .UseSiteWrapper}}
      <link href="/static/shared/reset.css" rel="stylesheet">
    {{end}}
    <link href="/static/frontend/frontend.css" rel="stylesheet">
    {{block "title" .}}
      <title>pkg.go.dev</title>
    {{end}}
    {{block "pre-content" .}}{{end}}
  </head>
  <body>
    <!-- loadScript appends JS sources to the document head. It loads scripts as asynchronous
        modules eliminating parser-blocking JavaScript. -->
    <script>
      function loadScript(src) {
        let s = document.createElement('script');
        s.src = src;
        s.type = 'module';
        s.async = true;
        s.defer = true
        document.head.appendChild(s);
      }
      loadScript("/static/frontend/frontend.js");
    </script>
    {{if .UseSiteWrapper}}
      <div class="Site Site--wide Site--redesign">
    {{end}}
    {{template "header" .}}
    {{if .UseSiteWrapper}}
      <div class="Site-content">
    {{end}}
      {{template "main" .}}
    {{if .UseSiteWrapper}}
      </div>
    {{end}}
    {{template "footer" .}}
    {{if .UseSiteWrapper}}
      </div>
    {{end}}
    {{if .GoogleTagManagerID}}
      <script>
        // this will throw if the querySelector can’t find the element
        const gtmId = document.querySelector('.js-gtmID').dataset.gtmid;
        if (!gtmId) {
          throw new Error('Google Tag Manager ID not found');
        }
        loadScript(`https://www.googletagmanager.com/gtm.js?id=${gtmId}`);
      </script>
      <noscript>
        <iframe src="https://www.googletagmanager.com/ns.html?id={{.GoogleTagManagerID}}"
                height="0" width="0" style="display:none;visibility:hidden">
        </iframe>
      </noscript>
    {{end}}
    {{block "post-content" .}}{{end}}
  </body>
</html>