<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cultopedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInternet_Archive</id>
	<title>Module:Internet Archive - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.cultopedia.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AInternet_Archive"/>
	<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Internet_Archive&amp;action=history"/>
	<updated>2026-04-05T21:59:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://www.cultopedia.org/index.php?title=Module:Internet_Archive&amp;diff=1079&amp;oldid=prev</id>
		<title>imported&gt;Paine Ellsworth: per discussion on talk page</title>
		<link rel="alternate" type="text/html" href="https://www.cultopedia.org/index.php?title=Module:Internet_Archive&amp;diff=1079&amp;oldid=prev"/>
		<updated>2024-08-09T19:42:31Z</updated>

		<summary type="html">&lt;p&gt;per discussion on &lt;a href=&quot;/index.php?title=Template_talk:Internet_Archive_author&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Template talk:Internet Archive author (page does not exist)&quot;&gt;talk page&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[ &lt;br /&gt;
&lt;br /&gt;
For functions related to Internet Archive&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
1. Internet Archive runs Elasticsearch search engine as of 4 Nov 2015 &lt;br /&gt;
&lt;br /&gt;
2. Program flowchart:&lt;br /&gt;
&lt;br /&gt;
   Break name down into number of words&lt;br /&gt;
     Build a base URL based on number of words (1,2,3,4,5+), use of sopt=t switch, and availability of birth-death dates&lt;br /&gt;
       If any words contain extended-ascii characters&lt;br /&gt;
         append extra code for wildcards based on sopt=t or w         &lt;br /&gt;
   return finished URL&lt;br /&gt;
&lt;br /&gt;
3. URL length should not exceed 2000 characters or it will break certain popular browsers&lt;br /&gt;
&lt;br /&gt;
4. Wildcard (*) replacements should be avoided in the first letter of the first word, and with any single-letter words&lt;br /&gt;
  &lt;br /&gt;
5. Changing search formulations will have impacts on existing uses of the template and off-line tools which are optimized for these search recipes. &lt;br /&gt;
  &lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
&lt;br /&gt;
For Template:Internet Archive author&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function p.author(frame)&lt;br /&gt;
&lt;br /&gt;
  local pframe = frame:getParent()&lt;br /&gt;
  local args = pframe.args&lt;br /&gt;
&lt;br /&gt;
  local tname = &amp;quot;Internet Archive author&amp;quot;                       -- name of calling template. Change if template rename.&lt;br /&gt;
  &lt;br /&gt;
  local name = nil                                              -- article name (default: current page name)&lt;br /&gt;
  dname = nil                                                   -- display name (default: current page name)&lt;br /&gt;
  local sname = nil                                             -- search name (default: current page name)&lt;br /&gt;
  local sopt = nil                                              -- search options (default: nil)&lt;br /&gt;
  byabout = &amp;quot;Works by or about&amp;quot;&lt;br /&gt;
  tagline = &amp;quot;at the [[Internet Archive]]&amp;quot;&lt;br /&gt;
  urlhead = &amp;quot;https://archive.org/search.php?query=&amp;quot;&lt;br /&gt;
  mydate = &amp;quot;&amp;quot;                                                   -- birth-death date&lt;br /&gt;
                                                 &lt;br /&gt;
  --- Determine name&lt;br /&gt;
  name = trimArg(args.name)                                     -- When using template outside main article space, the &amp;#039;name&amp;#039; parameter is required (not optional)&lt;br /&gt;
  if not name then&lt;br /&gt;
    name = mw.title.getCurrentTitle().text&lt;br /&gt;
  end&lt;br /&gt;
  dname = mw.ustring.gsub(name,&amp;#039;%s+%([^%(]-%)$&amp;#039;, &amp;#039;&amp;#039;)            -- Remove the final disambig parentheses&lt;br /&gt;
  sname = dname&lt;br /&gt;
  if trimArg(args.sname) then                                       &lt;br /&gt;
    sname = trimArg(args.sname)&lt;br /&gt;
  end&lt;br /&gt;
  if trimArg(args.dname) then&lt;br /&gt;
    dname = trimArg(args.dname)&lt;br /&gt;
  end&lt;br /&gt;
 &lt;br /&gt;
  --- Determine search option&lt;br /&gt;
  sopt = trimArg(args.sopt)&lt;br /&gt;
  if sopt then&lt;br /&gt;
    sopt =  mw.ustring.lower(sopt)&lt;br /&gt;
    if sopt == &amp;quot;tight&amp;quot; then sopt = &amp;quot;t&amp;quot; end&lt;br /&gt;
    if sopt == &amp;quot;tightx&amp;quot; then sopt = &amp;quot;tx&amp;quot; end&lt;br /&gt;
    if sopt == &amp;quot;wild&amp;quot; then sopt = &amp;quot;w&amp;quot; end&lt;br /&gt;
    if sopt ~= &amp;quot;t&amp;quot; and sopt ~= &amp;quot;tx&amp;quot; and sopt ~= &amp;quot;w&amp;quot; then sopt = &amp;quot;unknown&amp;quot;  end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --- Determine tagline&lt;br /&gt;
  if trimArg(args.coda) then&lt;br /&gt;
    tagline = tagline .. &amp;quot; &amp;quot; .. trimArg(args.coda)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --- Custom search. Do early to avoid unnecessary processing. &lt;br /&gt;
  if trimArg(args.search) then&lt;br /&gt;
    local search = p.ia_url_encode(trimArg(args.search))&lt;br /&gt;
    return &amp;quot;[&amp;quot; .. urlhead .. search .. &amp;quot; &amp;quot; .. byabout .. &amp;quot; &amp;quot; .. dname .. &amp;quot;] &amp;quot; .. tagline&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Determine media string&lt;br /&gt;
  media = p.mediaTypes(args.media)&lt;br /&gt;
  if media == &amp;quot;&amp;quot; then&lt;br /&gt;
    mediaopen = &amp;quot;%28&amp;quot; -- added a default mediatype Dec 2015 see p.mediaTypes()&lt;br /&gt;
  else&lt;br /&gt;
    mediaopen = &amp;quot;%28&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Determine date of birth and death &lt;br /&gt;
  local temp = mw.text.split(p.bdDate(args.birth, args.death, name), &amp;quot; &amp;quot;)&lt;br /&gt;
  local birth = temp[1]&lt;br /&gt;
  local death = temp[2]&lt;br /&gt;
  if birth == &amp;quot;Error&amp;quot; or death == &amp;quot;Error&amp;quot; then&lt;br /&gt;
    return &amp;quot;Error in [[:Template:&amp;quot;..tname..&amp;quot;]]: [[&amp;quot; ..name.. &amp;quot;]] doesn&amp;#039;t exist.&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --- Split sname into words and count words&lt;br /&gt;
  local N = mw.text.split(sname, &amp;quot; &amp;quot;)&lt;br /&gt;
  local l, count = mw.ustring.gsub(sname, &amp;quot;%S+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
  if count == 0 then&lt;br /&gt;
    return &amp;quot;Error in [[:Template:&amp;quot;..tname..&amp;quot;]]: Zero-word name.&amp;quot;&lt;br /&gt;
  end &lt;br /&gt;
&lt;br /&gt;
  --- Date string&lt;br /&gt;
  if birth ~= &amp;quot;none&amp;quot; and death ~= &amp;quot;none&amp;quot; then&lt;br /&gt;
    if p.ia_extendedascii(N[count]) == 1 then&lt;br /&gt;
      mydate = &amp;quot;%20OR%20%28%22&amp;quot;..birth..&amp;quot;-&amp;quot;..death..&amp;quot;%22%20AND%20%28%22&amp;quot;..p.urlX(N[count])..&amp;quot;%22%20OR%20&amp;quot;..p.urlX(p.ia_deaccent(N[count]))..&amp;quot;%29%29&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      mydate = &amp;quot;%20OR%20%28%22&amp;quot;..birth..&amp;quot;-&amp;quot;..death..&amp;quot;%22%20AND%20&amp;quot;..p.urlX(N[count])..&amp;quot;%29&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  --- wild string&lt;br /&gt;
  wild = &amp;quot;%29&amp;quot;           &lt;br /&gt;
  if sopt == &amp;quot;w&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
    if p.wildcheck(N, count) == 1 then    &lt;br /&gt;
      myurl = p.wildfix(N, count)&lt;br /&gt;
      return p.IArender()&lt;br /&gt;
    end&lt;br /&gt;
    if count &amp;lt; 3 or count &amp;gt; 3 then&lt;br /&gt;
      -- (first last)&lt;br /&gt;
      wild = &amp;quot;%20OR%20%28&amp;quot; .. p.ia_url_encode(p.ia_extendedascii2wildcard(sname)) .. &amp;quot;%29%29&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    if count == 3 then&lt;br /&gt;
      -- (first last)&lt;br /&gt;
      wild = &amp;quot;%20OR%20%28&amp;quot; .. p.ia_url_encode(p.ia_extendedascii2wildcard(N[1])) .. &amp;quot;%20&amp;quot; .. p.ia_url_encode(p.ia_extendedascii2wildcard(N[3])) .. &amp;quot;%29%29&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
 &lt;br /&gt;
  --[[ &lt;br /&gt;
&lt;br /&gt;
      Format URL&lt;br /&gt;
&lt;br /&gt;
  ]]&lt;br /&gt;
&lt;br /&gt;
    if count == 1 then &lt;br /&gt;
&lt;br /&gt;
      myurl = p.oneWord(sname)&lt;br /&gt;
 &lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        local plainname = p.ia_deaccent(sname)       &lt;br /&gt;
        local A1 = &amp;quot;%20OR%20%22&amp;quot;..p.urlX(plainname)&lt;br /&gt;
        myurl = myurl .. A1 .. &amp;quot;%22&amp;quot;&lt;br /&gt;
        return p.IArender()&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      return p.IArender()&lt;br /&gt;
    &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if count == 2 then&lt;br /&gt;
 &lt;br /&gt;
      myurl = p.twoWords(N, sopt)&lt;br /&gt;
    &lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        local plainname = p.ia_deaccent(sname)&lt;br /&gt;
        local PN = mw.text.split(plainname, &amp;quot; &amp;quot;) &lt;br /&gt;
        -- Last, First&lt;br /&gt;
        local A1 = &amp;quot;%20OR%20%22&amp;quot;..p.urlX(PN[2])..&amp;quot;%2C%20&amp;quot;..p.urlX(PN[1])&lt;br /&gt;
        -- First Last&lt;br /&gt;
        local A2 = &amp;quot;%22%20OR%20%22&amp;quot;..p.urlX(PN[1])..&amp;quot;%20&amp;quot;..p.urlX(PN[2])&lt;br /&gt;
        myurl = myurl .. A1 .. A2 .. &amp;quot;%22&amp;quot;&lt;br /&gt;
        return p.IArender()&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      return p.IArender()&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if count == 3 then&lt;br /&gt;
&lt;br /&gt;
      myurl = p.threeWords(N, sopt)&lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        local plainname = p.ia_deaccent(sname)&lt;br /&gt;
        local PN = mw.text.split(plainname, &amp;quot; &amp;quot;) &lt;br /&gt;
        local FIRST  = p.urlX(PN[1])&lt;br /&gt;
        local MIDDLE = p.urlX(PN[2])&lt;br /&gt;
        local LAST   = p.urlX(PN[3])&lt;br /&gt;
        local firstinitialp  = p.urlX( p.firstLetter(PN[1]) )&lt;br /&gt;
        local middleinitialp  = p.urlX( p.firstLetter(PN[2]) )&lt;br /&gt;
        -- First Middle Last&lt;br /&gt;
        local A1 = &amp;quot;%20OR%20%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- Last, First Middle&lt;br /&gt;
        local A2 = &amp;quot;%22%20OR%20%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE&lt;br /&gt;
        -- Last, First M.&lt;br /&gt;
        local A3 = &amp;quot;%22%20OR%20%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitialp..&amp;quot;%2E&amp;quot;&lt;br /&gt;
        -- Last, F. M.&lt;br /&gt;
        local A4 = &amp;quot;%22%20OR%20%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitialp..&amp;quot;.%20&amp;quot;..middleinitialp..&amp;quot;%2E&amp;quot;&lt;br /&gt;
        local ALL = A1 .. A2 .. A3 .. A4 .. &amp;quot;%22&amp;quot;&lt;br /&gt;
        myurl = myurl .. ALL&lt;br /&gt;
        return p.IArender()&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      return p.IArender()&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if count == 4 then&lt;br /&gt;
&lt;br /&gt;
      myurl = p.fourWords(N, sopt)&lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        local plainname = p.ia_deaccent(sname)&lt;br /&gt;
        local PN = mw.text.split(plainname, &amp;quot; &amp;quot;) &lt;br /&gt;
        local FIRST  = p.urlX(PN[1])&lt;br /&gt;
        local SECOND = p.urlX(PN[2])&lt;br /&gt;
        local THIRD  = p.urlX(PN[3])&lt;br /&gt;
        local LAST   = p.urlX(PN[4])&lt;br /&gt;
        local firstinitialp  = p.urlX( p.firstLetter(PN[1]) )&lt;br /&gt;
        local secondinitialp  = p.urlX( p.firstLetter(PN[2]) )&lt;br /&gt;
        local thirdinitialp  = p.urlX( p.firstLetter(PN[3]) )&lt;br /&gt;
        -- Last, First Second Third&lt;br /&gt;
        local A1 = &amp;quot;%20OR%20%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD&lt;br /&gt;
        -- First Second Third Last&lt;br /&gt;
        local A2 = &amp;quot;%22%20OR%20%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- Last, F. S. T.&lt;br /&gt;
        local A3 = &amp;quot;%22%20OR%20%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitialp..&amp;quot;%2E%20&amp;quot;..secondinitialp..&amp;quot;%2E%20&amp;quot;..thirdinitialp..&amp;quot;%2E&amp;quot;&lt;br /&gt;
        local ALL = A1 .. A2 .. A3 .. &amp;quot;%22&amp;quot;&lt;br /&gt;
        myurl = myurl .. ALL &lt;br /&gt;
        return p.IArender()&lt;br /&gt;
      end &lt;br /&gt;
&lt;br /&gt;
      return p.IArender()&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if count &amp;gt; 4 then&lt;br /&gt;
&lt;br /&gt;
      myurl = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;w&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        myurl = &amp;quot;%28&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      myurl = myurl .. &amp;quot;%28&amp;quot; .. p.ia_url_encode(sname) &lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;w&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        myurl = myurl .. &amp;quot;%29&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
 &lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; and p.ia_extendedascii(sname) == 1 then&lt;br /&gt;
        local plainname = p.ia_deaccent(sname)       &lt;br /&gt;
        local A1 = &amp;quot;%29%20OR%20%28&amp;quot;..p.ia_url_encode(plainname)&lt;br /&gt;
        myurl = myurl .. A1 &lt;br /&gt;
        return p.IArender()&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      return p.IArender()&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
  return &amp;quot;Unknown error (1). Please check documentation for [[Template:&amp;quot;..tname..&amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Build final output and render&lt;br /&gt;
function p.IArender() &lt;br /&gt;
&lt;br /&gt;
   return &amp;quot;[&amp;quot; .. urlhead .. mediaopen .. myurl .. wild .. mydate .. media .. &amp;quot; &amp;quot; .. byabout .. &amp;quot; &amp;quot; .. dname .. &amp;quot;] &amp;quot; .. tagline&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.oneWord(sname)&lt;br /&gt;
&lt;br /&gt;
      local nameurl = p.ia_url_encode(sname)&lt;br /&gt;
      local A1 = &amp;quot;%28subject%3A%22&amp;quot;..nameurl&lt;br /&gt;
      local A2 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..nameurl&lt;br /&gt;
      local A3 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..nameurl&lt;br /&gt;
      local A4 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..nameurl&lt;br /&gt;
      return A1 .. A2 .. A3 .. A4 .. &amp;quot;%22&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.twoWords(N, sopt)&lt;br /&gt;
      local FIRST  = p.urlX(N[1])&lt;br /&gt;
      local LAST   = p.urlX(N[2])&lt;br /&gt;
      local firstinitial  = p.urlX( p.firstLetter(N[1]) )&lt;br /&gt;
&lt;br /&gt;
      -- Last, First&lt;br /&gt;
      local S1 = &amp;quot;%28subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST&lt;br /&gt;
      -- First Last&lt;br /&gt;
      local S2 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      local SALL = S1..S2&lt;br /&gt;
      -- Last, First&lt;br /&gt;
      local C1 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST&lt;br /&gt;
      -- First Last&lt;br /&gt;
      local C2 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      local CALL = C1..C2&lt;br /&gt;
      -- First Last&lt;br /&gt;
      local T1 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      local TALL = T1&lt;br /&gt;
      -- Last, First&lt;br /&gt;
      local D1 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST&lt;br /&gt;
      -- First Last&lt;br /&gt;
      local D2 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      local DALL = D1..D2&lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; or sopt == &amp;quot;tx&amp;quot; then&lt;br /&gt;
        return SALL .. CALL .. TALL .. DALL .. &amp;quot;%22&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        -- Last, F.&lt;br /&gt;
        local C3 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
        local CALL = CALL..C3&lt;br /&gt;
        return SALL .. CALL .. TALL .. DALL .. &amp;quot;%22&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.threeWords(N, sopt)&lt;br /&gt;
      -- CAUTION: The following is near the max 2000 character URL limit for most browsers when using long names &lt;br /&gt;
      --          such as &amp;quot;René-Nicolas Dufriche Desgenettes&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
      local FIRST  = p.urlX(N[1])&lt;br /&gt;
      local MIDDLE = p.urlX(N[2])&lt;br /&gt;
      local LAST   = p.urlX(N[3])&lt;br /&gt;
      local firstinitial  = p.urlX( p.firstLetter(N[1]) )&lt;br /&gt;
      local middleinitial = p.urlX( p.firstLetter(N[2]) )&lt;br /&gt;
&lt;br /&gt;
      -- Last, First Middle&lt;br /&gt;
      local S1 = &amp;quot;%28subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE&lt;br /&gt;
      -- Last, First M.&lt;br /&gt;
      local S2 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
      -- Last, F. M.&lt;br /&gt;
      local S3 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..middleinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
      -- First Middle Last&lt;br /&gt;
      local S4 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- First M. Last&lt;br /&gt;
      local S5 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      -- F. M. Last&lt;br /&gt;
      local S6 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      local SALL = S1..S2..S3..S4..S5..S6&lt;br /&gt;
      -- First Middle Last&lt;br /&gt;
      local C1 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- First M. Last&lt;br /&gt;
      local C2 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      -- F. M. Last&lt;br /&gt;
      local C3 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      -- F. Middle Last&lt;br /&gt;
      local C4 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..MIDDLE..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- Last, First Middle&lt;br /&gt;
      local C5 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE&lt;br /&gt;
      -- Last, First M.&lt;br /&gt;
      local C6 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
      -- Last, F. M.&lt;br /&gt;
      local C7 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..middleinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
      -- Last, F. M.&lt;br /&gt;
      local C8 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..MIDDLE&lt;br /&gt;
      local CALL = C1..C2..C3..C4..C5..C6..C7..C8&lt;br /&gt;
      -- First Middle Last&lt;br /&gt;
      local T1 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- First M. Last&lt;br /&gt;
      local T2 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      -- F. M. Last&lt;br /&gt;
      local T3 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      local TALL = T1..T2..T3&lt;br /&gt;
      -- First Middle Last&lt;br /&gt;
      local D1 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- First M. Last&lt;br /&gt;
      local D2 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      -- F. M. Last&lt;br /&gt;
      local D3 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..middleinitial..&amp;quot;%2E%20&amp;quot;..LAST&lt;br /&gt;
      -- Last, First Middle&lt;br /&gt;
      local D4 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..MIDDLE&lt;br /&gt;
      -- Last, First M.&lt;br /&gt;
      local D5 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..middleinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
      local DALL = D1..D2..D3..D4..D5&lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; or sopt == &amp;quot;tx&amp;quot; then&lt;br /&gt;
        return SALL .. CALL .. TALL .. DALL .. &amp;quot;%22&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        -- Last, First&lt;br /&gt;
        local S7 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST&lt;br /&gt;
        -- First Last&lt;br /&gt;
        local S8 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        local SALL = SALL..S7..S8&lt;br /&gt;
        -- First Last&lt;br /&gt;
        local C9 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- Last, First&lt;br /&gt;
        local C10 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST&lt;br /&gt;
        local CALL = CALL..C9..C10&lt;br /&gt;
        -- First Last&lt;br /&gt;
        local T4 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        local TALL = TALL..T4&lt;br /&gt;
        -- First Last&lt;br /&gt;
        local D6 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- Last, First&lt;br /&gt;
        local D7 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST&lt;br /&gt;
        local DALL = DALL..D6..D7&lt;br /&gt;
&lt;br /&gt;
        return SALL .. CALL .. TALL .. DALL .. &amp;quot;%22&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.fourWords(N, sopt)&lt;br /&gt;
&lt;br /&gt;
      local FIRST  = p.urlX(N[1])&lt;br /&gt;
      local SECOND = p.urlX(N[2])&lt;br /&gt;
      local THIRD  = p.urlX(N[3])&lt;br /&gt;
      local LAST   = p.urlX(N[4])&lt;br /&gt;
&lt;br /&gt;
      local firstinitial  = p.firstLetter(N[1])&lt;br /&gt;
      local secondinitial  = p.firstLetter(N[2])&lt;br /&gt;
      local thirdinitial = p.firstLetter(N[3])&lt;br /&gt;
&lt;br /&gt;
      if sopt == &amp;quot;t&amp;quot; or sopt == &amp;quot;tx&amp;quot; then&lt;br /&gt;
        -- Last, First Second Third&lt;br /&gt;
        local S1 = &amp;quot;%28subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD&lt;br /&gt;
        -- First Second Third Last&lt;br /&gt;
        local S2 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- Last, First Second Third&lt;br /&gt;
        local C1 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD&lt;br /&gt;
        -- First Second Third Last&lt;br /&gt;
        local C2 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- First Second Third Last&lt;br /&gt;
        local T1 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
        -- First Second Third Last&lt;br /&gt;
        local D1 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
&lt;br /&gt;
        return S1..S2..C1..C2..T1..D1..&amp;quot;%22&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
      -- Last, First Second Third&lt;br /&gt;
      local S1 = &amp;quot;%28subject%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD&lt;br /&gt;
      -- First Second Third Last&lt;br /&gt;
      local S2 = &amp;quot;%22%20OR%20subject%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- Last, First Second Third&lt;br /&gt;
      local C1 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD&lt;br /&gt;
      -- First Second Third Last&lt;br /&gt;
      local C2 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- Last, F. S. T.&lt;br /&gt;
      local C3 = &amp;quot;%22%20OR%20creator%3A%22&amp;quot;..LAST..&amp;quot;%2C%20&amp;quot;..firstinitial..&amp;quot;%2E%20&amp;quot;..secondinitial..&amp;quot;%2E%20&amp;quot;..thirdinitial..&amp;quot;%2E&amp;quot;&lt;br /&gt;
      -- First Second Third Last&lt;br /&gt;
      local T1 = &amp;quot;%22%20OR%20title%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
      -- First Second Third Last&lt;br /&gt;
      local D1 = &amp;quot;%22%20OR%20description%3A%22&amp;quot;..FIRST..&amp;quot;%20&amp;quot;..SECOND..&amp;quot;%20&amp;quot;..THIRD..&amp;quot;%20&amp;quot;..LAST&lt;br /&gt;
&lt;br /&gt;
      return S1..S2..C1..C2..C3..T1..D1..&amp;quot;%22&amp;quot;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ElasticSearch speed/resource problems if first letter of first word is &amp;quot;*&amp;quot; wildcard ie. accented letter&lt;br /&gt;
--  Build special search in these cases.&lt;br /&gt;
--  https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_wildcards&lt;br /&gt;
function p.wildfix(N, count)&lt;br /&gt;
&lt;br /&gt;
  --- Split along &amp;quot;-&amp;quot; and use only first word ie. John-Taylor-Smith becomes John&lt;br /&gt;
  local NF = mw.text.split(N[1], &amp;quot;-&amp;quot;)&lt;br /&gt;
  local NL = mw.text.split(N[count], &amp;quot;-&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  -- ..but use full name for 1-word names&lt;br /&gt;
  if count == 1 then&lt;br /&gt;
    NF[1] = N[1]&lt;br /&gt;
    NL[1] = N[1]&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  -- ((Fïrst OR First) AND (Lást OR Last))&lt;br /&gt;
  return &amp;quot;%28%28%22&amp;quot; .. NF[1] .. &amp;quot;%22%20OR%20&amp;quot; .. p.ia_deaccent(NF[1]) .. &amp;quot;%29%20AND%20%28%22&amp;quot; .. NL[1] .. &amp;quot;%22%20OR%20&amp;quot; .. p.ia_deaccent(NL[1]) .. &amp;quot;%29&amp;quot;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Return 1 if the first letter of first word, or any single-letter word, is extended ascii&lt;br /&gt;
function p.wildcheck(N, count)      &lt;br /&gt;
  local i = 0&lt;br /&gt;
&lt;br /&gt;
  -- first letter of first word is extended ascii&lt;br /&gt;
  if N[1]:byte(1) &amp;lt; 32 or N[1]:byte(1) &amp;gt; 126 then return 1 end&lt;br /&gt;
&lt;br /&gt;
  -- any single-letter word that is composed of only extended ascii&lt;br /&gt;
  while i &amp;lt; count do&lt;br /&gt;
    i = i + 1&lt;br /&gt;
    if N[i]:len() == 1 then&lt;br /&gt;
      if N[i]:byte(1) &amp;lt; 32 or N[i]:byte(1) &amp;gt; 126 then return 1 end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trimArg(arg)&lt;br /&gt;
  if arg == &amp;quot;&amp;quot; or arg == nil then&lt;br /&gt;
    return nil&lt;br /&gt;
  else&lt;br /&gt;
    return mw.text.trim(arg)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.mediaTypes(argsmedia)&lt;br /&gt;
&lt;br /&gt;
  -- Added a default mediatype Dec 2015 due to too many false positives in the software mediatype, caused by birth-death dates catching numbers in source codes&lt;br /&gt;
  local media = &amp;quot;-mediatype:software&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if argsmedia ~=&amp;quot;&amp;quot; and argsmedia ~=nil then&lt;br /&gt;
    local medialist = mw.text.split(mw.text.trim(argsmedia), &amp;quot; &amp;quot;)&lt;br /&gt;
    local al, acount = mw.ustring.gsub(mw.text.trim(argsmedia), &amp;quot;%S+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    local i = 0&lt;br /&gt;
    repeat -- the following could be condensed but repetitive for clarity &lt;br /&gt;
      i = i + 1&lt;br /&gt;
      if(mw.ustring.lower(medialist[i]) == &amp;quot;text&amp;quot; or mw.ustring.lower(medialist[i]) == &amp;quot;texts&amp;quot;) then&lt;br /&gt;
        media = media .. p.ia_url_encode(&amp;quot; OR mediatype:texts&amp;quot;)         &lt;br /&gt;
      end&lt;br /&gt;
      if(mw.ustring.lower(medialist[i]) == &amp;quot;audio&amp;quot;) then&lt;br /&gt;
        media = media .. p.ia_url_encode(&amp;quot; OR mediatype:audio&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
      if(mw.ustring.lower(medialist[i]) == &amp;quot;video&amp;quot;) then&lt;br /&gt;
        media = media .. p.ia_url_encode(&amp;quot; OR mediatype:video&amp;quot;)&lt;br /&gt;
      end&lt;br /&gt;
    until i == acount&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  media = &amp;quot;%29%20AND%20%28&amp;quot; .. media .. &amp;quot;%29&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  return media&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Alt way to get b/d dates via getContent()&lt;br /&gt;
function p.bdDateAlt(argsbirth, argsdeath, name)&lt;br /&gt;
&lt;br /&gt;
    local pagetext = nil&lt;br /&gt;
    local birth = &amp;quot;none&amp;quot;&lt;br /&gt;
    local death = &amp;quot;none&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Load the page&lt;br /&gt;
    local t = mw.title.new(name)&lt;br /&gt;
    if(t.exists) then&lt;br /&gt;
      pagetext = t:getContent()&lt;br /&gt;
    end&lt;br /&gt;
    if pagetext == nil then &lt;br /&gt;
      return &amp;quot;Error&amp;quot;     &lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    -- Remove false positives&lt;br /&gt;
    pagetext = mw.ustring.gsub( mw.ustring.gsub(pagetext, &amp;quot;&amp;lt;!--.---&amp;gt;&amp;quot;, &amp;quot;&amp;quot;), &amp;quot;&amp;lt;nowiki&amp;gt;.-&amp;lt;/nowiki&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
    -- &amp;quot;Category:1900 births&amp;quot; &lt;br /&gt;
    if argsbirth == &amp;quot;&amp;quot; or argsbirth == nil then&lt;br /&gt;
      local birthcheck = mw.ustring.match(pagetext, &amp;quot;%[%[%s-[Cc]ategory:%s-%d+%.?%d*%s-births%s-%]%]&amp;quot; )&lt;br /&gt;
      if birthcheck ~= nil then&lt;br /&gt;
        birth = mw.ustring.match(birthcheck, &amp;quot;%d+%.?%d*&amp;quot;)&lt;br /&gt;
      else&lt;br /&gt;
        birth = &amp;quot;none&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      birth = mw.text.trim(argsbirth)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- &amp;quot;Category:2000 deaths&amp;quot; &lt;br /&gt;
    if argsdeath == &amp;quot;&amp;quot; or argsdeath == nil then&lt;br /&gt;
      local deathcheck = mw.ustring.match(pagetext, &amp;quot;%[%[%s-[Cc]ategory:%s-%d+%.?%d*%s-deaths%s-%]%]&amp;quot; )&lt;br /&gt;
      if deathcheck ~= nil then&lt;br /&gt;
        death = mw.ustring.match(deathcheck, &amp;quot;%d+%.?%d*&amp;quot;)&lt;br /&gt;
      else&lt;br /&gt;
        death = &amp;quot;none&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    else&lt;br /&gt;
      death = mw.text.trim(argsdeath)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return birth .. &amp;quot; &amp;quot; .. death&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get b/d dates via Wikidata.&lt;br /&gt;
-- ‎ &lt;br /&gt;
function p.bdDate(argsbirth, argsdeath, name)&lt;br /&gt;
&lt;br /&gt;
  local pagetext = nil&lt;br /&gt;
  local birth = &amp;quot;none&amp;quot;&lt;br /&gt;
  local death = &amp;quot;none&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  entity = mw.wikibase.getEntityObject()&lt;br /&gt;
  if not entity or not entity.claims then &lt;br /&gt;
    -- Alternative if template not on a page in mainspace. This is needed since Wikidata can only be retrieved&lt;br /&gt;
    -- for the article where the template is located.&lt;br /&gt;
    return p.bdDateAlt(argsbirth, argsdeath, name)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  -- Note: The below uses formatPropertyValues() to get and format the date from Wikidata.&lt;br /&gt;
  --       For an alternative method, see sandbox revision dated 5:58 am, 15 October 2014&lt;br /&gt;
  if argsbirth == &amp;quot;&amp;quot; or argsbirth == nil then&lt;br /&gt;
    local birthtable = entity:formatPropertyValues( &amp;#039;P569&amp;#039; )&lt;br /&gt;
    local birthsplit = mw.text.split(birthtable[&amp;quot;value&amp;quot;], &amp;quot; &amp;quot;)&lt;br /&gt;
    local l, count = mw.ustring.gsub(birthtable[&amp;quot;value&amp;quot;], &amp;quot;%S+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    if count &amp;gt; 0 then&lt;br /&gt;
      if string.find(birthsplit[count], &amp;quot;^%d&amp;quot;) then&lt;br /&gt;
        birth = birthsplit[count]&lt;br /&gt;
      elseif string.find(birthsplit[count], &amp;quot;BCE&amp;quot;) then&lt;br /&gt;
        birth = birthsplit[count - 1]&lt;br /&gt;
      elseif string.find(birthsplit[count], &amp;quot;BC&amp;quot;) then&lt;br /&gt;
        birth = birthsplit[count - 1]&lt;br /&gt;
      elseif string.find(birthsplit[count], &amp;quot;AD&amp;quot;) then&lt;br /&gt;
        birth = birthsplit[count - 1]&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    birth = mw.text.trim(argsbirth)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  if argsdeath == &amp;quot;&amp;quot; or argsdeath == nil then&lt;br /&gt;
    local deathtable = entity:formatPropertyValues( &amp;#039;P570&amp;#039; )&lt;br /&gt;
    local deathsplit = mw.text.split(deathtable[&amp;quot;value&amp;quot;], &amp;quot; &amp;quot;)&lt;br /&gt;
    local l, count = mw.ustring.gsub(deathtable[&amp;quot;value&amp;quot;], &amp;quot;%S+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    if count &amp;gt; 0 then&lt;br /&gt;
      if string.find(deathsplit[count], &amp;quot;^%d&amp;quot;) then&lt;br /&gt;
        death = deathsplit[count]&lt;br /&gt;
      elseif string.find(deathsplit[count], &amp;quot;BCE&amp;quot;) then&lt;br /&gt;
        death = deathsplit[count - 1]&lt;br /&gt;
      elseif string.find(deathsplit[count], &amp;quot;BC&amp;quot;) then&lt;br /&gt;
        death = deathsplit[count - 1]&lt;br /&gt;
      elseif string.find(deathsplit[count], &amp;quot;AD&amp;quot;) then&lt;br /&gt;
        death = deathsplit[count - 1]&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    death = mw.text.trim(argsdeath)&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  if birth == &amp;quot;none&amp;quot; and death == &amp;quot;none&amp;quot; then &lt;br /&gt;
    -- Alternative if Wikidata is missing data&lt;br /&gt;
    -- return p.bdDateAlt(name)&lt;br /&gt;
    return birth .. &amp;quot; &amp;quot; .. death&lt;br /&gt;
  else&lt;br /&gt;
    return birth .. &amp;quot; &amp;quot; .. death&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- URL-encode special characters&lt;br /&gt;
--- Note: this function was added later to deal with &amp;quot;&amp;amp;&amp;quot; characters instead of using p.ia_url_encode since &lt;br /&gt;
---       that may break existing instances of the template.&lt;br /&gt;
function p.urlX(str)&lt;br /&gt;
  if (str) then&lt;br /&gt;
    str = mw.ustring.gsub (str, &amp;quot;&amp;amp;&amp;quot;, &amp;quot;%%26&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
  return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- URL-encode a string&lt;br /&gt;
--- http://lua-users.org/wiki/StringRecipes&lt;br /&gt;
---&lt;br /&gt;
function p.ia_url_encode(str)&lt;br /&gt;
  if (str) then&lt;br /&gt;
    str = mw.ustring.gsub (str, &amp;quot;\n&amp;quot;, &amp;quot;\r\n&amp;quot;)&lt;br /&gt;
    str = mw.ustring.gsub (str, &amp;quot;([^%w %-%_%.%~])&amp;quot;,&lt;br /&gt;
        function (c) return mw.ustring.format (&amp;quot;%%%02X&amp;quot;, string.byte(c)) end)&lt;br /&gt;
    str = mw.ustring.gsub (str, &amp;quot; &amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
  return str	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Does str contain extended ascii? 1 = yes&lt;br /&gt;
function p.ia_extendedascii(str)&lt;br /&gt;
    for i = 1, str:len() do&lt;br /&gt;
      if (str:byte(i) &amp;gt;= 32 and str:byte(i) &amp;lt;= 126) and str:byte(i) ~= 39 then -- 39 = &amp;quot;&amp;#039;&amp;quot; &lt;br /&gt;
        --do nothing&lt;br /&gt;
      else&lt;br /&gt;
        return 1&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    return 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- UTF-8 aware replacement for string.sub() which doesn&amp;#039;t support UTF-8.&lt;br /&gt;
-- Note: Using instead of mw.ustring.sub() which I suspect(?) might be cause of intermittent error, and faster here for first-letter job.&lt;br /&gt;
-- Source: prapin @ Stack Overflow http://stackoverflow.com/questions/13235091/extract-the-first-letter-of-a-utf-8-string-with-lua&lt;br /&gt;
function p.firstLetter(str)&lt;br /&gt;
  return str:match(&amp;quot;[%z\1-\127\194-\244][\128-\191]*&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Replace all extended ascii characters with wildcard &amp;#039;*&amp;#039;&lt;br /&gt;
-- Replace &amp;quot;-&amp;quot; with &amp;lt;space&amp;gt; eg. Pierre-Jean -&amp;gt; Pierre Jean&lt;br /&gt;
function p.ia_extendedascii2wildcard(str)&lt;br /&gt;
    local s = &amp;quot;&amp;quot;&lt;br /&gt;
    local j = 0&lt;br /&gt;
    local k = 0    &lt;br /&gt;
    for i = 1, str:len() do&lt;br /&gt;
      k = str:byte(i)&lt;br /&gt;
      if k &amp;gt;= 32 and k &amp;lt;= 126 then&lt;br /&gt;
-- For list of Lucene special characters needing to be escaped: &lt;br /&gt;
-- http://lucene.apache.org/core/4_10_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Escaping_Special_Characters&lt;br /&gt;
-- We only worry about - (45) and &amp;quot; (34) since the others are unlikely to appear in a proper name.&lt;br /&gt;
-- Also &amp;#039; (39) since it is sometimes the extended character ’&lt;br /&gt;
        if k == 34 or k == 39 then &lt;br /&gt;
          s = s .. &amp;quot;*&amp;quot; &lt;br /&gt;
        elseif k == 45 then&lt;br /&gt;
          s = s .. &amp;quot; &amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
          s = s .. str:sub(i,i)&lt;br /&gt;
        end&lt;br /&gt;
      else&lt;br /&gt;
        if j == 1 then&lt;br /&gt;
          s = s .. &amp;quot;*&amp;quot;&lt;br /&gt;
          j = 2&lt;br /&gt;
        end&lt;br /&gt;
        if j == 0 then j = 1 end&lt;br /&gt;
        if j == 2 then j = 0 end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Replace accented letters with non-accented equivalent letters&lt;br /&gt;
-- Note: this is not a complete list of all possible accented letters. It is &lt;br /&gt;
--       all of the accented letters found in the first 10,000 names using &lt;br /&gt;
--       the Internet Archive author template.&lt;br /&gt;
function p.ia_deaccent(str)&lt;br /&gt;
    local s = str&lt;br /&gt;
&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;á&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;a︡&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Á&amp;quot;, &amp;quot;A&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ă&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;â&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;æ&amp;quot;, &amp;quot;ae&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Æ&amp;quot;, &amp;quot;AE&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;à&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ā&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ā&amp;quot;, &amp;quot;A&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ą&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;å&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Å&amp;quot;, &amp;quot;A&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ã&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ä&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ä&amp;quot;, &amp;quot;A&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;β&amp;quot;, &amp;quot;B&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ć&amp;quot;, &amp;quot;c&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;č&amp;quot;, &amp;quot;c&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Č&amp;quot;, &amp;quot;C&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ç&amp;quot;, &amp;quot;c&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ç&amp;quot;, &amp;quot;C&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ĉ&amp;quot;, &amp;quot;c&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ď&amp;quot;, &amp;quot;d&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;đ&amp;quot;, &amp;quot;d&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;é&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;É&amp;quot;, &amp;quot;E&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ě&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ê&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;è&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;È&amp;quot;, &amp;quot;E&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ε&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ē&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ē&amp;quot;, &amp;quot;E&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ę&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ð&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ë&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ë&amp;quot;, &amp;quot;E&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;γ&amp;quot;, &amp;quot;Y&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ħ&amp;quot;, &amp;quot;h&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;i︠a︡&amp;quot;, &amp;quot;ia&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;í&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;i︠&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ĭ&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Í&amp;quot;, &amp;quot;I&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;î&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Î&amp;quot;, &amp;quot;I&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ì&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ī&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ł&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ï&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ï&amp;quot;, &amp;quot;I&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ĺ&amp;quot;, &amp;quot;I&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ĺ&amp;quot;, &amp;quot;L&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;μ&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;µ&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ń&amp;quot;, &amp;quot;n&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ň&amp;quot;, &amp;quot;n&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ņ&amp;quot;, &amp;quot;n&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ñ&amp;quot;, &amp;quot;n&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ñ&amp;quot;, &amp;quot;N&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ó&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ó&amp;quot;, &amp;quot;O&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ô&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;œ&amp;quot;, &amp;quot;oe&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ò&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ō&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ø&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ø&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;õ&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ö&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ő&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ö&amp;quot;, &amp;quot;O&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;φ&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ŕ&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ř&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ř&amp;quot;, &amp;quot;R&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ß&amp;quot;, &amp;quot;ss&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ś&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ś&amp;quot;, &amp;quot;S&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;š&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ṣ&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Š&amp;quot;, &amp;quot;S&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ş&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ş&amp;quot;, &amp;quot;S&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ŝ&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;σ&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ť&amp;quot;, &amp;quot;t&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ţ&amp;quot;, &amp;quot;t&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;τ&amp;quot;, &amp;quot;t&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;þ&amp;quot;, &amp;quot;p&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Þ&amp;quot;, &amp;quot;p&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ú&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ú&amp;quot;, &amp;quot;U&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;û&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ù&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ū&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ů&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ü&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ü&amp;quot;, &amp;quot;U&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ŵ&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ý&amp;quot;, &amp;quot;y&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ŷ&amp;quot;, &amp;quot;y&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;¥&amp;quot;, &amp;quot;y&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ÿ&amp;quot;, &amp;quot;y&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ÿ&amp;quot;, &amp;quot;Y&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ź&amp;quot;, &amp;quot;z&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ž&amp;quot;, &amp;quot;Z&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ž&amp;quot;, &amp;quot;z&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;ż&amp;quot;, &amp;quot;z&amp;quot;)&lt;br /&gt;
    s = mw.ustring.gsub(s, &amp;quot;Ż&amp;quot;, &amp;quot;Z&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return s&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Paine Ellsworth</name></author>
	</entry>
</feed>