<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sankoquest.wiki/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js</id>
	<title>MediaWiki:Common.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sankoquest.wiki/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ACommon.js"/>
	<link rel="alternate" type="text/html" href="https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;action=history"/>
	<updated>2026-07-03T07:18:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=440&amp;oldid=prev</id>
		<title>SankoSeedBot: Seed Sanko wiki page</title>
		<link rel="alternate" type="text/html" href="https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=440&amp;oldid=prev"/>
		<updated>2026-07-02T20:42:11Z</updated>

		<summary type="html">&lt;p&gt;Seed Sanko wiki page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:42, 2 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l163&quot;&gt;Line 163:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 163:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       node.remove();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       node.remove();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     });&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     });&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // Header nav: keep it short as a compact &quot;Log in&quot; button. The full &quot;Log in with Privy&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // wording still shows on the login page CTA itself (loginButton above).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     document.querySelectorAll(&amp;#039;#pt-login a span:last-child, #pt-login-2 a span:last-child&amp;#039;).forEach(function (node) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     document.querySelectorAll(&amp;#039;#pt-login a span:last-child, #pt-login-2 a span:last-child&amp;#039;).forEach(function (node) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       node.textContent = &#039;Log in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;with Privy&lt;/del&gt;&#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       node.textContent = &#039;Log in&#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     });&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     });&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l642&quot;&gt;Line 642:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 644:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.target = &amp;#039;_blank&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.target = &amp;#039;_blank&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.rel = &amp;#039;noopener&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.rel = &amp;#039;noopener&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.title = &#039;keel — &#039; + (cfg.tagline || &#039;&#039;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.title = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(cfg.label ? cfg.label + &#039; &#039; : &#039;&#039;) + &lt;/ins&gt;&#039;keel — &#039; + (cfg.tagline || &#039;&#039;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.innerHTML = SPONSOR_MARK +&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    var labelHtml = cfg.label&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      ? &#039;&amp;lt;span class=&quot;sanko-sponsor-label&quot;&amp;gt;&#039; + escapeHtml(cfg.label) + &#039;&amp;lt;/span&amp;gt;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      : &#039;&#039;&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     link.innerHTML = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;labelHtml + &lt;/ins&gt;SPONSOR_MARK +&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &amp;#039;&amp;lt;span class=&amp;quot;sanko-sponsor-word&amp;quot;&amp;gt;keel&amp;lt;/span&amp;gt;&amp;#039; +&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &amp;#039;&amp;lt;span class=&amp;quot;sanko-sponsor-word&amp;quot;&amp;gt;keel&amp;lt;/span&amp;gt;&amp;#039; +&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &amp;#039;&amp;lt;span class=&amp;quot;sanko-sponsor-tagline&amp;quot;&amp;gt;&amp;#039; + escapeHtml(cfg.tagline || &amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &amp;#039;&amp;lt;span class=&amp;quot;sanko-sponsor-tagline&amp;quot;&amp;gt;&amp;#039; + escapeHtml(cfg.tagline || &amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     headerEnd.insertBefore(link, headerEnd.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;firstChild&lt;/del&gt;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// Sit past the search box but immediately to the left of the login controls. Find the&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // login/user-links element, walk up to whichever node is a direct child of header-end, and&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    // insert before it; fall back to the far right if the login chrome isn&#039;t present.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    var loginEl = headerEnd.querySelector(&#039;.vector-user-links, #pt-login-2, #pt-login, .vector-user-menu&#039;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    var anchor = loginEl;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    while (anchor &amp;amp;&amp;amp; anchor.parentNode !== headerEnd) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      anchor = anchor.parentNode;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    if (anchor &amp;amp;&amp;amp; anchor.parentNode === headerEnd) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &lt;/ins&gt;headerEnd.insertBefore(link, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;anchor);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    } else {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &lt;/ins&gt;headerEnd.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;appendChild(link&lt;/ins&gt;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key sanko_mediawiki_prod:diff:1.41:old-438:rev-440:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>SankoSeedBot</name></author>
	</entry>
	<entry>
		<id>https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=438&amp;oldid=prev</id>
		<title>SankoSeedBot: Seed Sanko wiki page</title>
		<link rel="alternate" type="text/html" href="https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=438&amp;oldid=prev"/>
		<updated>2026-07-02T19:35:52Z</updated>

		<summary type="html">&lt;p&gt;Seed Sanko wiki page&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:35, 2 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l612&quot;&gt;Line 612:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 612:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         button.textContent = &amp;#039;Tip failed&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         button.textContent = &amp;#039;Tip failed&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       });&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       });&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // Keel &quot;sail&quot; mark — kept in sync with the server-rendered footer copy in LocalSettings.php.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // currentColor lets it inherit the theme so it reads light/gold on the dark header.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  var SPONSOR_MARK =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;&amp;lt;svg class=&quot;sanko-sponsor-mark&quot; viewBox=&quot;0 0 40 40&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&amp;gt;&#039; +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;&amp;lt;path d=&quot;M20 33 L20 2 L33 25 Z&quot; fill=&quot;currentColor&quot; opacity=&quot;0.55&quot;/&amp;gt;&#039; +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;&amp;lt;path d=&quot;M18 9 L8 27 L18 27 Z&quot; fill=&quot;currentColor&quot; opacity=&quot;0.32&quot;/&amp;gt;&#039; +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;&amp;lt;path d=&quot;M5 33 C10 33 16 37 22 37 C28 37 33 33 38 33&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.2&quot; stroke-linecap=&quot;round&quot; opacity=&quot;0.75&quot;/&amp;gt;&#039; +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &#039;&amp;lt;/svg&amp;gt;&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // Vector 2022 has no server-side header slot, so the sponsor badge is placed here, into&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // .vector-header-end. window.sankoSponsor is injected server-side (LocalSettings.php) and&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // gated by MW_SANKO_SPONSOR_ENABLED, so this no-ops when the sponsor is turned off.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  function renderSponsorBadge() {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    var cfg = window.sankoSponsor;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    if (!cfg || !cfg.url || document.getElementById(&#039;sanko-sponsor-header&#039;)) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      return;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    var headerEnd = document.querySelector(&#039;.vector-header-end&#039;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    if (!headerEnd) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      return;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    var link = document.createElement(&#039;a&#039;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.id = &#039;sanko-sponsor-header&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.className = &#039;sanko-sponsor sanko-sponsor-header&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.href = cfg.url.replace(/\/$/, &#039;&#039;) +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &#039;?utm_source=sankoquest.wiki&amp;amp;utm_medium=wiki-header&amp;amp;utm_campaign=sanko-sponsor&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.target = &#039;_blank&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.rel = &#039;noopener&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.title = &#039;keel — &#039; + (cfg.tagline || &#039;&#039;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    link.innerHTML = SPONSOR_MARK +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &#039;&amp;lt;span class=&quot;sanko-sponsor-word&quot;&amp;gt;keel&amp;lt;/span&amp;gt;&#039; +&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      &#039;&amp;lt;span class=&quot;sanko-sponsor-tagline&quot;&amp;gt;&#039; + escapeHtml(cfg.tagline || &#039;&#039;) + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    headerEnd.insertBefore(link, headerEnd.firstChild);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l632&quot;&gt;Line 632:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 667:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       renderModelImages();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       renderModelImages();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       enhanceSearchChrome();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       enhanceSearchChrome();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      renderSponsorBadge();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       loadAccount();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       loadAccount();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     });&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     });&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l640&quot;&gt;Line 640:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 676:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     renderModelImages();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     renderModelImages();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     enhanceSearchChrome();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     enhanceSearchChrome();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    renderSponsorBadge();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     loadAccount();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     loadAccount();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}());&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}());&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key sanko_mediawiki_prod:diff:1.41:old-302:rev-438:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>SankoSeedBot</name></author>
	</entry>
	<entry>
		<id>https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=302&amp;oldid=prev</id>
		<title>SankoSeedBot: Seed Sanko wiki page</title>
		<link rel="alternate" type="text/html" href="https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=302&amp;oldid=prev"/>
		<updated>2026-07-02T18:55:07Z</updated>

		<summary type="html">&lt;p&gt;Seed Sanko wiki page&lt;/p&gt;
&lt;a href=&quot;https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;amp;diff=302&amp;amp;oldid=16&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>SankoSeedBot</name></author>
	</entry>
	<entry>
		<id>https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=16&amp;oldid=prev</id>
		<title>SankoSeedBot: Seed Sanko wiki page</title>
		<link rel="alternate" type="text/html" href="https://sankoquest.wiki/w/index.php?title=MediaWiki:Common.js&amp;diff=16&amp;oldid=prev"/>
		<updated>2026-07-02T17:39:14Z</updated>

		<summary type="html">&lt;p&gt;Seed Sanko wiki page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(function () {&lt;br /&gt;
  var tip;&lt;br /&gt;
&lt;br /&gt;
  function showTip(target, event) {&lt;br /&gt;
    var title = target.getAttribute(&amp;#039;data-minetip-title&amp;#039;);&lt;br /&gt;
    if (!title) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    if (!tip) {&lt;br /&gt;
      tip = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
      tip.className = &amp;#039;sanko-minetip&amp;#039;;&lt;br /&gt;
      document.body.appendChild(tip);&lt;br /&gt;
    }&lt;br /&gt;
    tip.textContent = title;&lt;br /&gt;
    tip.style.display = &amp;#039;block&amp;#039;;&lt;br /&gt;
    moveTip(event);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function moveTip(event) {&lt;br /&gt;
    if (!tip) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    tip.style.left = event.clientX + 14 + &amp;#039;px&amp;#039;;&lt;br /&gt;
    tip.style.top = event.clientY + 14 + &amp;#039;px&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function hideTip() {&lt;br /&gt;
    if (tip) {&lt;br /&gt;
      tip.style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function wikiScriptUrl(title, params) {&lt;br /&gt;
    var url = new URL(&amp;#039;/w/index.php&amp;#039;, window.location.origin);&lt;br /&gt;
    url.searchParams.set(&amp;#039;title&amp;#039;, title);&lt;br /&gt;
    Object.keys(params || {}).forEach(function (key) {&lt;br /&gt;
      if (params[key]) {&lt;br /&gt;
        url.searchParams.set(key, params[key]);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    return url.toString();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function redirectCreateAccountToPrivy() {&lt;br /&gt;
    if (!window.mw || !mw.config || mw.config.get(&amp;#039;wgCanonicalSpecialPageName&amp;#039;) !== &amp;#039;CreateAccount&amp;#039;) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    var params = new URLSearchParams(window.location.search);&lt;br /&gt;
    var returnTo = params.get(&amp;#039;returnto&amp;#039;) || &amp;#039;Main Page&amp;#039;;&lt;br /&gt;
    var returnToQuery = params.get(&amp;#039;returntoquery&amp;#039;) || &amp;#039;&amp;#039;;&lt;br /&gt;
    window.location.replace(wikiScriptUrl(&amp;#039;Special:UserLogin&amp;#039;, {&lt;br /&gt;
      returnto: returnTo,&lt;br /&gt;
      returntoquery: returnToQuery&lt;br /&gt;
    }));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function polishLoginChrome() {&lt;br /&gt;
    var loginButton = document.getElementById(&amp;#039;mw-input-pluggableauthlogin0&amp;#039;);&lt;br /&gt;
    if (loginButton) {&lt;br /&gt;
      loginButton.textContent = &amp;#039;Log in with Privy&amp;#039;;&lt;br /&gt;
      loginButton.value = &amp;#039;Log in with Privy&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    document.querySelectorAll(&amp;#039;#pt-createaccount, #pt-createaccount-2, #mw-createaccount-cta&amp;#039;).forEach(function (node) {&lt;br /&gt;
      node.remove();&lt;br /&gt;
    });&lt;br /&gt;
    document.querySelectorAll(&amp;#039;#pt-login a span:last-child, #pt-login-2 a span:last-child&amp;#039;).forEach(function (node) {&lt;br /&gt;
      node.textContent = &amp;#039;Log in with Privy&amp;#039;;&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var itemThumbsPromise;&lt;br /&gt;
&lt;br /&gt;
  function loadItemThumbnails() {&lt;br /&gt;
    if (!itemThumbsPromise) {&lt;br /&gt;
      itemThumbsPromise = fetch(&amp;#039;/w/sanko-assets/sanko/item-thumbnails.json&amp;#039;, {&lt;br /&gt;
        headers: { Accept: &amp;#039;application/json&amp;#039; }&lt;br /&gt;
      })&lt;br /&gt;
        .then(function (response) { return response.ok ? response.json() : {}; })&lt;br /&gt;
        .catch(function () { return {}; });&lt;br /&gt;
    }&lt;br /&gt;
    return itemThumbsPromise;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function itemThumbnailFor(title, thumbnails) {&lt;br /&gt;
    var normalized = String(title || &amp;#039;&amp;#039;).replace(/_/g, &amp;#039; &amp;#039;).trim();&lt;br /&gt;
    return thumbnails[normalized] || &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function imageUrl(relativePath) {&lt;br /&gt;
    return &amp;#039;/w/sanko-assets/&amp;#039; + String(relativePath || &amp;#039;&amp;#039;).replace(/^\/+/, &amp;#039;&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function renderModelImages() {&lt;br /&gt;
    document.querySelectorAll(&amp;#039;.sanko-model-render[data-sanko-render-image], .sanko-row-render[data-sanko-render-image]&amp;#039;).forEach(function (container) {&lt;br /&gt;
      if (container.querySelector(&amp;#039;img&amp;#039;)) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      var relativePath = container.getAttribute(&amp;#039;data-sanko-render-image&amp;#039;);&lt;br /&gt;
      if (!relativePath) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      var img = document.createElement(&amp;#039;img&amp;#039;);&lt;br /&gt;
      img.src = imageUrl(relativePath);&lt;br /&gt;
      img.alt = container.getAttribute(&amp;#039;data-sanko-render-alt&amp;#039;) || &amp;#039;&amp;#039;;&lt;br /&gt;
      img.loading = &amp;#039;lazy&amp;#039;;&lt;br /&gt;
      container.appendChild(img);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function addSearchThumb(container, title, href, thumbnails) {&lt;br /&gt;
    if (!container || container.querySelector(&amp;#039;.sanko-search-thumb&amp;#039;)) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    var relativePath = itemThumbnailFor(title, thumbnails);&lt;br /&gt;
    if (!relativePath) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    var link = document.createElement(href ? &amp;#039;a&amp;#039; : &amp;#039;span&amp;#039;);&lt;br /&gt;
    link.className = &amp;#039;sanko-search-thumb&amp;#039;;&lt;br /&gt;
    if (href) {&lt;br /&gt;
      link.href = href;&lt;br /&gt;
    }&lt;br /&gt;
    var img = document.createElement(&amp;#039;img&amp;#039;);&lt;br /&gt;
    img.src = imageUrl(relativePath);&lt;br /&gt;
    img.alt = &amp;#039;&amp;#039;;&lt;br /&gt;
    img.loading = &amp;#039;lazy&amp;#039;;&lt;br /&gt;
    img.onerror = function () {&lt;br /&gt;
      link.remove();&lt;br /&gt;
      if (!container.querySelector(&amp;#039;.sanko-search-thumb&amp;#039;)) {&lt;br /&gt;
        container.classList.remove(&amp;#039;sanko-search-with-thumb&amp;#039;);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    link.appendChild(img);&lt;br /&gt;
    container.insertBefore(link, container.firstChild);&lt;br /&gt;
    container.classList.add(&amp;#039;sanko-search-with-thumb&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function enhanceSearchResults(thumbnails) {&lt;br /&gt;
    document.querySelectorAll(&amp;#039;.mw-search-results .mw-search-result&amp;#039;).forEach(function (result) {&lt;br /&gt;
      var heading = result.querySelector(&amp;#039;.mw-search-result-heading a&amp;#039;);&lt;br /&gt;
      if (!heading) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      addSearchThumb(result, heading.textContent, heading.href, thumbnails);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function suggestionTitle(node) {&lt;br /&gt;
    var label = node.querySelector(&amp;#039;.cdx-menu-item__text__label, .cdx-menu-item__content, .cdx-typeahead-search__search-footer__text&amp;#039;);&lt;br /&gt;
    return (label || node).textContent || &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function enhanceSearchSuggestions(thumbnails) {&lt;br /&gt;
    document.querySelectorAll(&amp;#039;.cdx-typeahead-search__menu .cdx-menu-item, .cdx-menu__listbox .cdx-menu-item&amp;#039;).forEach(function (item) {&lt;br /&gt;
      if (item.querySelector(&amp;#039;.sanko-search-thumb&amp;#039;)) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      addSearchThumb(item, suggestionTitle(item), null, thumbnails);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function enhanceSearchChrome() {&lt;br /&gt;
    if (!document.querySelector(&amp;#039;.mw-search-results, .cdx-typeahead-search, #p-search&amp;#039;)) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    loadItemThumbnails().then(function (thumbnails) {&lt;br /&gt;
      enhanceSearchResults(thumbnails);&lt;br /&gt;
      enhanceSearchSuggestions(thumbnails);&lt;br /&gt;
      var observer = new MutationObserver(function () {&lt;br /&gt;
        enhanceSearchSuggestions(thumbnails);&lt;br /&gt;
      });&lt;br /&gt;
      var searchRoot = document.querySelector(&amp;#039;.cdx-typeahead-search, #p-search&amp;#039;) || document.body;&lt;br /&gt;
      observer.observe(searchRoot, { childList: true, subtree: true });&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  document.addEventListener(&amp;#039;mouseover&amp;#039;, function (event) {&lt;br /&gt;
    var target = event.target.closest(&amp;#039;[data-minetip-title]&amp;#039;);&lt;br /&gt;
    if (target) {&lt;br /&gt;
      showTip(target, event);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  document.addEventListener(&amp;#039;mousemove&amp;#039;, moveTip);&lt;br /&gt;
  document.addEventListener(&amp;#039;mouseout&amp;#039;, function (event) {&lt;br /&gt;
    if (event.target.closest(&amp;#039;[data-minetip-title]&amp;#039;)) {&lt;br /&gt;
      hideTip();&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Bounties are a wiki/Cargo feature (see Template:BountyPrompt + SankoQuest:Open bounties).&lt;br /&gt;
  // There is no client-side bounty rendering or claim flow — the engine bounty routes are parked.&lt;br /&gt;
&lt;br /&gt;
  function engineBase() {&lt;br /&gt;
    return (window.sankoEngineApiBase || &amp;#039;https://api.sankoquest.wiki&amp;#039;).replace(/\/$/, &amp;#039;&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function currentSubject() {&lt;br /&gt;
    if (window.sankoEngineSubject) {&lt;br /&gt;
      return window.sankoEngineSubject;&lt;br /&gt;
    }&lt;br /&gt;
    if (window.sankoFixtureSubject) {&lt;br /&gt;
      return window.sankoFixtureSubject;&lt;br /&gt;
    }&lt;br /&gt;
    if (window.mw &amp;amp;&amp;amp; mw.config &amp;amp;&amp;amp; mw.config.get(&amp;#039;wgUserName&amp;#039;)) {&lt;br /&gt;
      return &amp;#039;did:privy:&amp;#039; + String(mw.config.get(&amp;#039;wgUserName&amp;#039;)).toLowerCase().replace(/[^a-z0-9]+/g, &amp;#039;-&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
    return &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function jsonFetch(url, options) {&lt;br /&gt;
    return fetch(url, options || {}).then(function (response) {&lt;br /&gt;
      if (!response.ok) {&lt;br /&gt;
        throw new Error(&amp;#039;Sanko engine request failed: &amp;#039; + response.status);&lt;br /&gt;
      }&lt;br /&gt;
      return response.json();&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function authHeaders(subject, includeJson) {&lt;br /&gt;
    var headers = includeJson ? { &amp;#039;content-type&amp;#039;: &amp;#039;application/json&amp;#039; } : {};&lt;br /&gt;
    if (window.sankoPrivyIdentityToken) {&lt;br /&gt;
      headers.authorization = &amp;#039;Bearer &amp;#039; + window.sankoPrivyIdentityToken;&lt;br /&gt;
    } else if (window.sankoWikiAuthToken) {&lt;br /&gt;
      headers.authorization = &amp;#039;Bearer &amp;#039; + window.sankoWikiAuthToken;&lt;br /&gt;
    } else if (window.sankoEnableFixtureAuth === true &amp;amp;&amp;amp; subject) {&lt;br /&gt;
      headers[&amp;#039;x-sanko-sub&amp;#039;] = subject;&lt;br /&gt;
    }&lt;br /&gt;
    return headers;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function hasWriteAuth(subject) {&lt;br /&gt;
    return Boolean(&lt;br /&gt;
      window.sankoPrivyIdentityToken ||&lt;br /&gt;
      window.sankoWikiAuthToken ||&lt;br /&gt;
      (window.sankoEnableFixtureAuth === true &amp;amp;&amp;amp; subject)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pill(text) {&lt;br /&gt;
    return &amp;#039;&amp;lt;span class=&amp;quot;sanko-pill&amp;quot;&amp;gt;&amp;#039; + escapeHtml(text) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function escapeHtml(value) {&lt;br /&gt;
    return String(value == null ? &amp;#039;&amp;#039; : value).replace(/[&amp;amp;&amp;lt;&amp;gt;&amp;quot;&amp;#039;]/g, function (char) {&lt;br /&gt;
      return {&lt;br /&gt;
        &amp;#039;&amp;amp;&amp;#039;: &amp;#039;&amp;amp;amp;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;&amp;#039;: &amp;#039;&amp;amp;lt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;gt;&amp;#039;: &amp;#039;&amp;amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;quot;&amp;#039;: &amp;#039;&amp;amp;quot;&amp;#039;,&lt;br /&gt;
        &amp;quot;&amp;#039;&amp;quot;: &amp;#039;&amp;amp;#39;&amp;#039;&lt;br /&gt;
      }[char];&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function renderAccount(root, profile) {&lt;br /&gt;
    var account = profile.account || {};&lt;br /&gt;
    var stats = profile.stats || {};&lt;br /&gt;
    var name = account.charName || account.displayName || account.handle || &amp;#039;Unlinked adventurer&amp;#039;;&lt;br /&gt;
    var linked = account.linkedSankoAddress &amp;amp;&amp;amp; account.charTokenIds &amp;amp;&amp;amp; account.charTokenIds.length;&lt;br /&gt;
    var titles = stats.titles &amp;amp;&amp;amp; stats.titles.length ? stats.titles.join(&amp;#039;, &amp;#039;) : &amp;#039;New Chronicler&amp;#039;;&lt;br /&gt;
    var subject = currentSubject();&lt;br /&gt;
    var targetSubject =&lt;br /&gt;
      root.getAttribute(&amp;#039;data-tip-target-subject&amp;#039;) ||&lt;br /&gt;
      window.sankoTipTargetSubject ||&lt;br /&gt;
      account.subject ||&lt;br /&gt;
      subject;&lt;br /&gt;
    var actions = [];&lt;br /&gt;
    if (targetSubject &amp;amp;&amp;amp; targetSubject !== subject &amp;amp;&amp;amp; hasWriteAuth(subject)) {&lt;br /&gt;
      actions.push(&lt;br /&gt;
        &amp;#039;&amp;lt;button class=&amp;quot;sanko-button&amp;quot; type=&amp;quot;button&amp;quot; data-sanko-tip-subject=&amp;quot;&amp;#039; +&lt;br /&gt;
        escapeHtml(targetSubject) + &amp;#039;&amp;quot;&amp;gt;Tip 25 GOLD&amp;lt;/button&amp;gt;&amp;#039;&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    actions.push(&lt;br /&gt;
      linked ? &amp;#039;&amp;lt;button class=&amp;quot;sanko-button&amp;quot; type=&amp;quot;button&amp;quot; disabled&amp;gt;Linked&amp;lt;/button&amp;gt;&amp;#039; :&lt;br /&gt;
        &amp;#039;&amp;lt;button class=&amp;quot;sanko-button&amp;quot; type=&amp;quot;button&amp;quot; data-sanko-link-char&amp;gt;Link Sanko Character&amp;lt;/button&amp;gt;&amp;#039;&lt;br /&gt;
    );&lt;br /&gt;
    root.innerHTML = [&lt;br /&gt;
      &amp;#039;&amp;lt;div class=&amp;quot;sanko-account-card&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;div class=&amp;quot;sanko-kicker&amp;quot;&amp;gt;Adventurer\&amp;#039;s Log&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;div class=&amp;quot;sanko-account-title&amp;quot;&amp;gt;&amp;#039; + escapeHtml(name) + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;div class=&amp;quot;sanko-muted&amp;quot;&amp;gt;&amp;#039; + (linked ? &amp;#039;CHAR linked&amp;#039; : &amp;#039;No Sanko Character linked yet&amp;#039;) + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;div class=&amp;quot;sanko-account-meta&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
      pill(&amp;#039;Renown &amp;#039; + (stats.renown || 0)),&lt;br /&gt;
      pill(titles),&lt;br /&gt;
      linked ? pill(&amp;#039;CHAR #&amp;#039; + account.charTokenIds.join(&amp;#039;, #&amp;#039;)) : pill(&amp;#039;Link a CHAR to unlock badges&amp;#039;),&lt;br /&gt;
      &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;div class=&amp;quot;sanko-account-actions&amp;quot;&amp;gt;&amp;#039; + actions.join(&amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    ].join(&amp;#039;&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function loadAccount() {&lt;br /&gt;
    var root = document.querySelector(&amp;#039;.sanko-account-panel[data-live=&amp;quot;true&amp;quot;]&amp;#039;);&lt;br /&gt;
    if (!root || !window.fetch) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    var subject = currentSubject();&lt;br /&gt;
    if (!subject) {&lt;br /&gt;
      root.innerHTML = &amp;#039;&amp;lt;div class=&amp;quot;sanko-account-card sanko-muted&amp;quot;&amp;gt;Log in to view your Adventurer\&amp;#039;s Log.&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    var base = engineBase();&lt;br /&gt;
    jsonFetch(base + &amp;#039;/v1/profiles/&amp;#039; + encodeURIComponent(subject))&lt;br /&gt;
      .catch(function () {&lt;br /&gt;
        if (!hasWriteAuth(subject)) {&lt;br /&gt;
          throw new Error(&amp;#039;Sanko write auth unavailable.&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
        return jsonFetch(base + &amp;#039;/v1/me&amp;#039;, { headers: authHeaders(subject, false) }).then(function () {&lt;br /&gt;
          return jsonFetch(base + &amp;#039;/v1/profiles/&amp;#039; + encodeURIComponent(subject));&lt;br /&gt;
        });&lt;br /&gt;
      })&lt;br /&gt;
      .then(function (profile) {&lt;br /&gt;
        renderAccount(root, profile);&lt;br /&gt;
      })&lt;br /&gt;
      .catch(function () {&lt;br /&gt;
        root.innerHTML = &amp;#039;&amp;lt;div class=&amp;quot;sanko-account-card sanko-muted&amp;quot;&amp;gt;Adventurer profile is unavailable.&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function sha256Hex(text) {&lt;br /&gt;
    if (!window.crypto || !window.crypto.subtle || !window.TextEncoder) {&lt;br /&gt;
      return Promise.reject(new Error(&amp;#039;Web Crypto is unavailable.&amp;#039;));&lt;br /&gt;
    }&lt;br /&gt;
    return window.crypto.subtle.digest(&amp;#039;SHA-256&amp;#039;, new TextEncoder().encode(text)).then(function (buffer) {&lt;br /&gt;
      return Array.prototype.map.call(new Uint8Array(buffer), function (byte) {&lt;br /&gt;
        return byte.toString(16).padStart(2, &amp;#039;0&amp;#039;);&lt;br /&gt;
      }).join(&amp;#039;&amp;#039;);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function linkFixtureChar(button) {&lt;br /&gt;
    var subject = currentSubject();&lt;br /&gt;
    var base = engineBase();&lt;br /&gt;
    var address = window.sankoFixtureCharAddress || &amp;#039;0x2222222222222222222222222222222222222222&amp;#039;;&lt;br /&gt;
    if (!subject || !button || window.sankoEnableFixtureCharLink !== true) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    button.disabled = true;&lt;br /&gt;
    button.textContent = &amp;#039;Linking...&amp;#039;;&lt;br /&gt;
    jsonFetch(base + &amp;#039;/v1/char-link/nonce&amp;#039;, {&lt;br /&gt;
      method: &amp;#039;POST&amp;#039;,&lt;br /&gt;
      headers: authHeaders(subject, true),&lt;br /&gt;
      body: JSON.stringify({ domain: &amp;#039;sankoquest.wiki&amp;#039;, linkedSankoAddress: address })&lt;br /&gt;
    })&lt;br /&gt;
      .then(function (nonce) {&lt;br /&gt;
        return sha256Hex(nonce.message + &amp;#039;:&amp;#039; + address.toLowerCase()).then(function (hash) {&lt;br /&gt;
          return jsonFetch(base + &amp;#039;/v1/char-link/verify&amp;#039;, {&lt;br /&gt;
            method: &amp;#039;POST&amp;#039;,&lt;br /&gt;
            headers: authHeaders(subject, true),&lt;br /&gt;
            body: JSON.stringify({&lt;br /&gt;
              nonce: nonce.nonce,&lt;br /&gt;
              linkedSankoAddress: address,&lt;br /&gt;
              charTokenIds: [384, 7],&lt;br /&gt;
              charName: &amp;#039;Wiki-local Chronicler&amp;#039;,&lt;br /&gt;
              signature: &amp;#039;fixture:&amp;#039; + hash&lt;br /&gt;
            })&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      })&lt;br /&gt;
      .then(loadAccount)&lt;br /&gt;
      .catch(function () {&lt;br /&gt;
        button.disabled = false;&lt;br /&gt;
        button.textContent = &amp;#039;Link failed&amp;#039;;&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function signPersonalMessage(address, message) {&lt;br /&gt;
    return window.ethereum.request({ method: &amp;#039;personal_sign&amp;#039;, params: [message, address] })&lt;br /&gt;
      .catch(function () {&lt;br /&gt;
        return window.ethereum.request({ method: &amp;#039;personal_sign&amp;#039;, params: [address, message] });&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function linkWalletChar(button) {&lt;br /&gt;
    var subject = currentSubject();&lt;br /&gt;
    var base = engineBase();&lt;br /&gt;
    if (!subject || !button) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    if (!hasWriteAuth(subject)) {&lt;br /&gt;
      button.textContent = &amp;#039;Sign in with Privy first&amp;#039;;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    if (!window.ethereum || !window.ethereum.request) {&lt;br /&gt;
      button.textContent = &amp;#039;Wallet unavailable&amp;#039;;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    button.disabled = true;&lt;br /&gt;
    button.textContent = &amp;#039;Waiting for wallet...&amp;#039;;&lt;br /&gt;
    window.ethereum.request({ method: &amp;#039;eth_requestAccounts&amp;#039; })&lt;br /&gt;
      .then(function (accounts) {&lt;br /&gt;
        var address = String(accounts &amp;amp;&amp;amp; accounts[0] ? accounts[0] : &amp;#039;&amp;#039;).toLowerCase();&lt;br /&gt;
        if (!/^0x[0-9a-f]{40}$/.test(address)) {&lt;br /&gt;
          throw new Error(&amp;#039;No EVM wallet address returned.&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
        return jsonFetch(base + &amp;#039;/v1/char-link/nonce&amp;#039;, {&lt;br /&gt;
          method: &amp;#039;POST&amp;#039;,&lt;br /&gt;
          headers: authHeaders(subject, true),&lt;br /&gt;
          body: JSON.stringify({ domain: location.hostname || &amp;#039;sankoquest.wiki&amp;#039;, linkedSankoAddress: address })&lt;br /&gt;
        }).then(function (nonce) {&lt;br /&gt;
          return signPersonalMessage(address, nonce.message).then(function (signature) {&lt;br /&gt;
            return jsonFetch(base + &amp;#039;/v1/char-link/verify&amp;#039;, {&lt;br /&gt;
              method: &amp;#039;POST&amp;#039;,&lt;br /&gt;
              headers: authHeaders(subject, true),&lt;br /&gt;
              body: JSON.stringify({&lt;br /&gt;
                nonce: nonce.nonce,&lt;br /&gt;
                linkedSankoAddress: address,&lt;br /&gt;
                signature: signature&lt;br /&gt;
              })&lt;br /&gt;
            });&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      })&lt;br /&gt;
      .then(loadAccount)&lt;br /&gt;
      .catch(function () {&lt;br /&gt;
        button.disabled = false;&lt;br /&gt;
        button.textContent = &amp;#039;Link failed&amp;#039;;&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function linkSankoChar(button) {&lt;br /&gt;
    if (window.sankoEnableFixtureCharLink === true) {&lt;br /&gt;
      return linkFixtureChar(button);&lt;br /&gt;
    }&lt;br /&gt;
    return linkWalletChar(button);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function tipAdventurer(button) {&lt;br /&gt;
    var subject = currentSubject();&lt;br /&gt;
    var targetSubject = button &amp;amp;&amp;amp; button.getAttribute(&amp;#039;data-sanko-tip-subject&amp;#039;);&lt;br /&gt;
    if (!targetSubject || !subject || !hasWriteAuth(subject)) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    button.disabled = true;&lt;br /&gt;
    button.textContent = &amp;#039;Tipping...&amp;#039;;&lt;br /&gt;
    jsonFetch(engineBase() + &amp;#039;/v1/tips&amp;#039;, {&lt;br /&gt;
      method: &amp;#039;POST&amp;#039;,&lt;br /&gt;
      headers: authHeaders(subject, true),&lt;br /&gt;
      body: JSON.stringify({&lt;br /&gt;
        toSubject: targetSubject,&lt;br /&gt;
        amount: 25,&lt;br /&gt;
        token: &amp;#039;GOLD&amp;#039;&lt;br /&gt;
      })&lt;br /&gt;
    })&lt;br /&gt;
      .then(function () {&lt;br /&gt;
        button.textContent = &amp;#039;Tipped&amp;#039;;&lt;br /&gt;
      })&lt;br /&gt;
      .catch(function () {&lt;br /&gt;
        button.disabled = false;&lt;br /&gt;
        button.textContent = &amp;#039;Tip failed&amp;#039;;&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  document.addEventListener(&amp;#039;click&amp;#039;, function (event) {&lt;br /&gt;
    var button = event.target.closest(&amp;#039;[data-sanko-link-char]&amp;#039;);&lt;br /&gt;
    if (button) {&lt;br /&gt;
      linkSankoChar(button);&lt;br /&gt;
    }&lt;br /&gt;
    var tipButton = event.target.closest(&amp;#039;[data-sanko-tip-subject]&amp;#039;);&lt;br /&gt;
    if (tipButton) {&lt;br /&gt;
      tipAdventurer(tipButton);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  if (document.readyState === &amp;#039;loading&amp;#039;) {&lt;br /&gt;
    document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, function () {&lt;br /&gt;
      redirectCreateAccountToPrivy();&lt;br /&gt;
      polishLoginChrome();&lt;br /&gt;
      renderModelImages();&lt;br /&gt;
      enhanceSearchChrome();&lt;br /&gt;
      loadAccount();&lt;br /&gt;
    });&lt;br /&gt;
  } else {&lt;br /&gt;
    redirectCreateAccountToPrivy();&lt;br /&gt;
    polishLoginChrome();&lt;br /&gt;
    renderModelImages();&lt;br /&gt;
    enhanceSearchChrome();&lt;br /&gt;
    loadAccount();&lt;br /&gt;
  }&lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>SankoSeedBot</name></author>
	</entry>
</feed>