<commit_before>@(
title: String,
fullTitle: Option[String] = None,
baseline: Option[Html] = None,
side: Option[Html] = None,
menu: Option[Html] = None,
chat: Option[Html] = None,
underchat: Option[Html] = None,
robots: Boolean = isGloballyCrawlable,
moreCss: Html = emptyHtml,
moreJs: Html = emptyHtml,
playing: Boolean = false,
openGraph: Option[lila.app.ui.OpenGraph] = None,
atom: Option[Html] = None,
chessground: Boolean = true,
zoomable: Boolean = false,
asyncJs: Boolean = false,
csp: Option[lila.common.ContentSecurityPolicy] = None)(body: Html)(implicit ctx: Context)
<!doctype html>
<html lang="@lang.language">
  <!-- Lichess is open source! See https://github.com/ornicar/lila -->
  <head>
    <meta charset="utf-8">
    @if(cspEnabled()) {
    <meta http-equiv="Content-Security-Policy" content="@csp.getOrElse(defaultCsp)">
    }
    @if(isProd) {
    @if(wasmxEnabled()) {
    <meta http-equiv="origin-trial" data-feature="WebAssembly Threads" data-expires="2018-12-12" content="AvQS5g8cLXUfw7Vu3lmQ6B55HURS0KMuY6blwOUmAPYX<KEY>">
    }
    <title>@fullTitle.getOrElse{@title • lichess.org}</title>
    <link href="https://fonts.googleapis.com/css?family=Noto+Sans:400,700|Roboto:300" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Roboto+Mono:500&text=0123456789:." rel="stylesheet">
    } else {
    <title>[dev] @fullTitle.getOrElse{@title • lichess.org}</title>
    @cssAt("offline/font.noto.css")
    @cssAt("offline/font.roboto.mono.css")
    }
    @ctx.currentBg match {
    case "dark" => { @cssTag("dark.css") }
    case "transp" => { @cssTag("dark.css")@cssTag("transp.css") }
    case _ => {}
    }
    @cssTag("common.css")
    @cssTag("board.css")
    @if(zoomable) {
    @ctx.zoom.map { z =>
    @zoomStyle(z / 100f, ctx.pref.is3d) }
    }
    @if(ctx.pref.is3d) { @cssTag("board-3d.css") }
    @if(ctx.pref.coords == 1) { @cssTag("board.coords.inner.css") }
    @if(ctx.pageData.inquiry.isDefined) { @cssTag("inquiry.css") }
    @if(ctx.userContext.impersonatedBy.isDefined) { @cssTag("impersonate.css") }
    @if(isStage) { @cssTag("stage.css") }
    @moreCss
    <link id="piece-sprite" href="@assetUrl(s"stylesheets/piece/${ctx.currentPieceSet}.css")" type="text/css" rel="stylesheet"/>
    <meta content="@openGraph.fold(trans.siteDescription.txt())(o => o.description)" name="description">
    <link id="favicon" rel="shortcut icon" href="@staticUrl("images/favicon-32-white.png")" type="image/x-icon" />
    <link rel="mask-icon" href="@staticUrl("favicon.svg")" color="black">
    <link rel="icon" type="image/png" href="@staticUrl("favicon.256.png")" sizes="256x256"/><link rel="icon" type="image/png" href="@staticUrl("favicon.128.png")" sizes="128x128"/><link rel="icon" type="image/png" href="@staticUrl("favicon.64.png")" sizes="64x64"/>
    @if(!robots) {<meta content="noindex, nofollow" name="robots">}
    <meta name="google" content="notranslate" />
    @openGraph.map(_.html)
    @atom.getOrElse {
    <link href="@routes.Blog.atom()" type="application/atom+xml" rel="alternate" title="@trans.blog()" />
    }
    @ctx.transpBgImg.map { img =>
    <style type="text/css" id="bg-data">body.transp::before{background-image:url('@img');}</style>
    }
    <link rel="preload" href="@staticUrl("font82/fonts/lichess.woff")" as="font" type="font/woff" crossorigin/>
    <link rel="manifest" href="/manifest.json" />
    <link rel="jslicense" href="/free-js" />
    <meta name="twitter:site" content="@@lichess" />
  </head>
  <body class="preload base @List(
    ctx.currentTheme.cssClass,
    ctx.currentTheme3d.cssClass,
    if (ctx.currentBg == "transp") "dark transp" else ctx.currentBg,
    ctx.currentPieceSet3d,
    ctx.pref.pieceNotationIsLetter ?? "piece_letter",
    ctx.pref.isZen ?? "zen",
    ctx.blindMode ?? "blind_mode",
    ctx.kid ?? "kid",
    ctx.isMobileBrowser ?? "mobile",
    playing ?? "playing fixed-scroll").mkString(" ")"
    @if(!isProd){data-dev="true"}
    @ctx.userId.map {id => data-user="@id"}
    data-sound-set="@ctx.currentSoundSet"
    data-socket-domain="@socketDomain"
    data-asset-url="@assetBaseUrl"
    data-asset-version="@assetVersion"
    @ctx.nonce.map { nonce => data-nonce="@nonce" }
    @ctx.zoom.map { zoom => data-zoom="@zoom" }>
    <form id="blind_mode" action="@routes.Main.toggleBlindMode" method="POST"><input type="hidden" name="enable" value="@if(ctx.blindMode){0}else{1}" /><input type="hidden" name="redirect" value="@ctx.req.path" /><button type="submit">Accessibility: @if(ctx.blindMode){Disable}else{Enable} blind mode</button></form>
    <div id="site_description">@trans.siteDescription()</div>
    @ctx.pageData.inquiry.map { inquiry =>
    @mod.inquiry(inquiry)
    }
    @ctx.me.map { me =>
    @if(ctx.userContext.impersonatedBy.isDefined) { @mod.impersonate(me) }
    }
    @if(isStage) {
    <div id="stage">This is an empty lichess preview website for developers. <a href="https://lichess.org">Go to lichess.org instead</a></div><commit_msg>this causes the LibreJS extension to ender an infinite loop<commit_after>@(
title: String,
fullTitle: Option[String] = None,
baseline: Option[Html] = None,
side: Option[Html] = None,
menu: Option[Html] = None,
chat: Option[Html] = None,
underchat: Option[Html] = None,
robots: Boolean = isGloballyCrawlable,
moreCss: Html = emptyHtml,
moreJs: Html = emptyHtml,
playing: Boolean = false,
openGraph: Option[lila.app.ui.OpenGraph] = None,
atom: Option[Html] = None,
chessground: Boolean = true,
zoomable: Boolean = false,
asyncJs: Boolean = false,
csp: Option[lila.common.ContentSecurityPolicy] = None)(body: Html)(implicit ctx: Context)
<!doctype html>
<html lang="@lang.language">
  <!-- Lichess is open source! See https://github.com/ornicar/lila -->
  <head>
    <meta charset="utf-8">
    @if(cspEnabled()) {
    <meta http-equiv="Content-Security-Policy" content="@csp.getOrElse(defaultCsp)">
    }
    @if(isProd) {
    @if(wasmxEnabled()) {
    <meta http-equiv="origin-trial" data-feature="WebAssembly Threads" data-expires="2018-12-12" content="AvQS5g8cLXUfw7Vu3lmQ6B55HURS0KMuY6blwOUmAPYX3Jph8GXMSO4/jTx3el3BxG8SyJRlQTbsRRsjOHwiCAMAAABXeyJvcmlnaW4iOiJodHRwczovL2xpY2hlc3Mub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJBc3NlbWJseVRocmVhZHMiLCJleHBpcnkiOjE1NDQ2MzY2MzN9">
    }
    <title>@fullTitle.getOrElse{@title • lichess.org}</title>
    <link href="https://fonts.googleapis.com/css?family=Noto+Sans:400,700|Roboto:300" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Roboto+Mono:500&text=0123456789:." rel="stylesheet">
    } else {
    <title>[dev] @fullTitle.getOrElse{@title • lichess.org}</title>
    @cssAt("offline/font.noto.css")
    @cssAt("offline/font.roboto.mono.css")
    }
    @ctx.currentBg match {
    case "dark" => { @cssTag("dark.css") }
    case "transp" => { @cssTag("dark.css")@cssTag("transp.css") }
    case _ => {}
    }
    @cssTag("common.css")
    @cssTag("board.css")
    @if(zoomable) {
    @ctx.zoom.map { z =>
    @zoomStyle(z / 100f, ctx.pref.is3d) }
    }
    @if(ctx.pref.is3d) { @cssTag("board-3d.css") }
    @if(ctx.pref.coords == 1) { @cssTag("board.coords.inner.css") }
    @if(ctx.pageData.inquiry.isDefined) { @cssTag("inquiry.css") }
    @if(ctx.userContext.impersonatedBy.isDefined) { @cssTag("impersonate.css") }
    @if(isStage) { @cssTag("stage.css") }
    @moreCss
    <link id="piece-sprite" href="@assetUrl(s"stylesheets/piece/${ctx.currentPieceSet}.css")" type="text/css" rel="stylesheet"/>
    <meta content="@openGraph.fold(trans.siteDescription.txt())(o => o.description)" name="description">
    <link id="favicon" rel="shortcut icon" href="@staticUrl("images/favicon-32-white.png")" type="image/x-icon" />
    <link rel="mask-icon" href="@staticUrl("favicon.svg")" color="black">
    <link rel="icon" type="image/png" href="@staticUrl("favicon.256.png")" sizes="256x256"/><link rel="icon" type="image/png" href="@staticUrl("favicon.128.png")" sizes="128x128"/><link rel="icon" type="image/png" href="@staticUrl("favicon.64.png")" sizes="64x64"/>
    @if(!robots) {<meta content="noindex, nofollow" name="robots">}
    <meta name="google" content="notranslate" />
    @openGraph.map(_.html)
    @atom.getOrElse {
    <link href="@routes.Blog.atom()" type="application/atom+xml" rel="alternate" title="@trans.blog()" />
    }
    @ctx.transpBgImg.map { img =>
    <style type="text/css" id="bg-data">body.transp::before{background-image:url('@img');}</style>
    }
    <link rel="preload" href="@staticUrl("font82/fonts/lichess.woff")" as="font" type="font/woff" crossorigin/>
    <link rel="manifest" href="/manifest.json" />
    <meta name="twitter:site" content="@@lichess" />
  </head>
  <body class="preload base @List(
    ctx.currentTheme.cssClass,
    ctx.currentTheme3d.cssClass,
    if (ctx.currentBg == "transp") "dark transp" else ctx.currentBg,
    ctx.currentPieceSet3d,
    ctx.pref.pieceNotationIsLetter ?? "piece_letter",
    ctx.pref.isZen ?? "zen",
    ctx.blindMode ?? "blind_mode",
    ctx.kid ?? "kid",
    ctx.isMobileBrowser ?? "mobile",
    playing ?? "playing fixed-scroll").mkString(" ")"
    @if(!isProd){data-dev="true"}
    @ctx.userId.map {id => data-user="@id"}
    data-sound-set="@ctx.currentSoundSet"
    data-socket-domain="@socketDomain"
    data-asset-url="@assetBaseUrl"
    data-asset-version="@assetVersion"
    @ctx.nonce.map { nonce => data-nonce="@nonce" }
    @ctx.zoom.map { zoom => data-zoom="@zoom" }>
    <form id="blind_mode" action="@routes.Main.toggleBlindMode" method="POST"><input type="hidden" name="enable" value="@if(ctx.blindMode){0}else{1}" /><input type="hidden" name="redirect" value="@ctx.req.path" /><button type="submit">Accessibility: @if(ctx.blindMode){Disable}else{Enable} blind mode</button></form>
    <div id="site_description">@trans.siteDescription()</div>
    @ctx.pageData.inquiry.map { inquiry =>
    @mod.inquiry(inquiry)
    }
    @ctx.me.map { me =>
    @if(ctx.userContext.impersonatedBy.isDefined) { @mod.impersonate(me) }
    }
    @if(isStage) {
    <div id="stage">This is an empty lichess preview website for developers. <a href="https://lichess.org">Go to lichess.org instead</a></div>
{'fraction_non_alphanumeric': 0.1950256612712199, 'fraction_numerical': 0.017370706671930518, 'mean_word_length': 4.686307519640853, 'pattern_counts': {'":': 0, '<': 89, '<?xml version=': 0, '>': 111, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4801016', 'n_tokens_mistral': 3950, 'n_tokens_neox': 3711, 'n_words': 553}