<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASpeedy</id>
	<title>Module:Speedy - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASpeedy"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Speedy&amp;action=history"/>
	<updated>2026-04-21T11:50:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Speedy&amp;diff=146858&amp;oldid=prev</id>
		<title>imported&gt;Awesome Aasim at 15:57, 8 December 2022</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Speedy&amp;diff=146858&amp;oldid=prev"/>
		<updated>2022-12-08T15:57:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local pageType = require(&amp;quot;Module:Pagetype&amp;quot;)&lt;br /&gt;
local mbox = require(&amp;quot;Module:Message box&amp;quot;)&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
local button = require(&amp;#039;Module:Clickable button 2&amp;#039;)&lt;br /&gt;
local preview = require(&amp;#039;Module:If preview&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
local config = mw.loadData(&amp;#039;Module:Speedy/config&amp;#039;)&lt;br /&gt;
local timeAgo = require(&amp;#039;Module:Time ago&amp;#039;)&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- message function from [[Module:Documentation]]&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
local fillStringWithArgs&lt;br /&gt;
local function message(cfgKey, valArray, expectType)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Gets a message from the cfg table and formats it if appropriate.&lt;br /&gt;
	-- The function raises an error if the value from the cfg table is not&lt;br /&gt;
	-- of the type expectType. The default type for expectType is &amp;#039;string&amp;#039;.&lt;br /&gt;
	-- If the table valArray is present, strings such as $1, $2 etc. in the&lt;br /&gt;
	-- message are substituted with values from the table keys [1], [2] etc.&lt;br /&gt;
	-- For example, if the message &amp;quot;foo-message&amp;quot; had the value &amp;#039;Foo $2 bar $1.&amp;#039;,&lt;br /&gt;
	-- message(&amp;#039;foo-message&amp;#039;, {&amp;#039;baz&amp;#039;, &amp;#039;qux&amp;#039;}) would return &amp;quot;Foo qux bar baz.&amp;quot;&lt;br /&gt;
	--]]&lt;br /&gt;
	local msg = config.messages[cfgKey]&lt;br /&gt;
	expectType = expectType or &amp;#039;string&amp;#039;&lt;br /&gt;
	if type(msg) ~= expectType then&lt;br /&gt;
		error(&amp;#039;message: type error in message cfg.&amp;#039; .. cfgKey .. &amp;#039; (&amp;#039; .. expectType .. &amp;#039; expected, got &amp;#039; .. type(msg) .. &amp;#039;)&amp;#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if not valArray then&lt;br /&gt;
		return msg&lt;br /&gt;
	end&lt;br /&gt;
	return fillStringWithArgs(msg, valArray)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function fillStringWithArgs(text, valArray)&lt;br /&gt;
	if not valArray then&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getVal(match)&lt;br /&gt;
		match = tonumber(match)&lt;br /&gt;
		return valArray[match] or &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.gsub(text, &amp;#039;$([1-9][0-9]*)&amp;#039;, getVal) .. &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectParameters(text)&lt;br /&gt;
	return text and mw.ustring.find(text, &amp;#039;$([1-9][0-9]*)&amp;#039;) and true or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeUnorderedList(array)&lt;br /&gt;
	local ul = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	for k,v in pairs(array) do&lt;br /&gt;
		local li = ul:tag(&amp;#039;li&amp;#039;)&lt;br /&gt;
		li:wikitext(v)&lt;br /&gt;
		li:done()&lt;br /&gt;
	end&lt;br /&gt;
	ul:allDone()&lt;br /&gt;
	return tostring(ul)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWikiList(array)&lt;br /&gt;
	local out = &amp;#039;&amp;#039;&lt;br /&gt;
	for k,v in pairs(array) do&lt;br /&gt;
		out = out .. &amp;#039;* &amp;#039; .. v .. &amp;#039;\n&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Argument processing (from [[Module:Documentation]])&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
				if type(value) == &amp;#039;string&amp;#039; then&lt;br /&gt;
					value = value:match(&amp;#039;^%s*(.-)%s*$&amp;#039;) -- Remove whitespace.&lt;br /&gt;
					if key == &amp;#039;heading&amp;#039; or value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
						return value&lt;br /&gt;
					else&lt;br /&gt;
						return nil&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Miscellaneous functions related to speedy deletion&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getDeletionEntry(code)&lt;br /&gt;
	return config.deletionCodes[code]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function yn(input, default)&lt;br /&gt;
	local res = yesno(input, nil)&lt;br /&gt;
	if (res == nil) then return default&lt;br /&gt;
	else return res end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function processDeletionArgs(iparams)&lt;br /&gt;
	local args = {&lt;br /&gt;
		deletionReasons = {},&lt;br /&gt;
		deletionReasonsNotice = {},&lt;br /&gt;
		entries = {},&lt;br /&gt;
		numberOfEntries = 0,&lt;br /&gt;
		hideButton = true,&lt;br /&gt;
		highestMessage = 0,&lt;br /&gt;
		drv = false,&lt;br /&gt;
		willProvide = false,&lt;br /&gt;
		hide = false,&lt;br /&gt;
		blank = false&lt;br /&gt;
	}&lt;br /&gt;
	local entry = nil&lt;br /&gt;
	local replaceParams = false&lt;br /&gt;
	local params = {iparams.page or mw.title.getCurrentTitle().fullText}&lt;br /&gt;
	local paramNo = 2&lt;br /&gt;
	local skipped = true&lt;br /&gt;
	local function cleanupLeftover(v)&lt;br /&gt;
		if entry then&lt;br /&gt;
			table.insert(args.deletionReasons, &amp;#039;&amp;lt;span style=&amp;quot;font-style:normal;&amp;quot;&amp;gt;&amp;#039; .. fillStringWithArgs(entry.description, params) .. &amp;#039;.&amp;lt;/span&amp;gt; &amp;#039; .. (entry.more and &amp;#039;&amp;lt;span style=&amp;quot;font-weight:normal;&amp;quot;&amp;gt; &amp;#039; .. entry.more .. &amp;#039;&amp;lt;/span&amp;gt; &amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;&amp;lt;span style=&amp;quot;font-style:normal;&amp;quot;&amp;gt;&amp;#039; .. message(&amp;#039;deleteIntroCriteriaLink&amp;#039;, {entry.code}) .. &amp;#039;.&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
			table.insert(args.deletionReasonsNotice,  fillStringWithArgs(entry.description, params) .. &amp;#039; ([[WP:CSD#&amp;#039; .. entry.code .. &amp;#039;|CSD &amp;#039; .. entry.code .. &amp;#039;]]). &amp;#039; .. (entry.additionalMessage and fillStringWithArgs(entry.additionalMessage, params) or &amp;#039;&amp;#039;))&lt;br /&gt;
			table.insert(args.entries, entry)&lt;br /&gt;
		else&lt;br /&gt;
			if (v ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
				table.insert(args.deletionReasons, v)&lt;br /&gt;
				table.insert(args.deletionReasonsNotice, v)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(args.entries, {})&lt;br /&gt;
		end&lt;br /&gt;
		params = {iparams.page or mw.title.getCurrentTitle().fullText}&lt;br /&gt;
		paramNo = 2&lt;br /&gt;
		args.customHeader = entry and ((entry.notice or 2) &amp;gt;= args.highestMessage) and entry.customHeader or args.customHeader&lt;br /&gt;
		args.customIntro = entry and ((entry.notice or 2) &amp;gt;= args.highestMessage) and entry.customIntro or args.customIntroDeleted&lt;br /&gt;
		args.customIntroDeleted = entry and ((entry.notice or 2) &amp;gt;= args.highestMessage) and entry.customIntroDeleted or args.customIntroDeleted&lt;br /&gt;
		args.customCloser = entry and ((entry.notice or 2) &amp;gt;= args.highestMessage) and entry.customCloser or args.customCloser&lt;br /&gt;
		args.numberOfEntries = args.numberOfEntries + 1&lt;br /&gt;
		args.hideButton = entry and (args.hideButton and (entry.notice or 2) == 0) or false&lt;br /&gt;
		args.highestMessage = entry and ((entry.notice or 2) &amp;gt;= args.highestMessage) and entry.notice or args.highestMessage&lt;br /&gt;
		args.drv = entry and (args.drv or entry.drv) or args.drv&lt;br /&gt;
		args.willProvide = entry and entry.willProvide or args.willProvide&lt;br /&gt;
		args.hide = entry and (entry.hide or args.hide) or args.hide&lt;br /&gt;
		args.blank = entry and (entry.blank or args.blank) or args.blank&lt;br /&gt;
	end&lt;br /&gt;
	for k,v in ipairs(iparams) do&lt;br /&gt;
		if type(k) == type(1) then&lt;br /&gt;
			skipped = false&lt;br /&gt;
			if (replaceParams) then&lt;br /&gt;
				local pName = fillStringWithArgs(entry and entry.inputFormat[paramNo - 1] or &amp;#039;$2&amp;#039;, {iparams.page or mw.title.getCurrentTitle().fullText, v})&lt;br /&gt;
				paramNo = paramNo + 1&lt;br /&gt;
				table.insert(params, pName)&lt;br /&gt;
			else &lt;br /&gt;
				entry = getDeletionEntry(v) or nil&lt;br /&gt;
				replaceParams = entry and detectParameters(entry.description) or false&lt;br /&gt;
			end&lt;br /&gt;
			if not replaceParams then&lt;br /&gt;
				cleanupLeftover(v)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if replaceParams then&lt;br /&gt;
		cleanupLeftover(&amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if skipped then&lt;br /&gt;
		args.hideButton = false&lt;br /&gt;
	end&lt;br /&gt;
	args.help = yn(iparams.help, true)&lt;br /&gt;
	args.nocat = yn(iparams.nocat, false)&lt;br /&gt;
	args.bot = yn(iparams.bot, false)&lt;br /&gt;
	args.noHeader = yn(iparams.noheader, false)&lt;br /&gt;
	args.additionalNote = iparams.additionalnote&lt;br /&gt;
	args.pageName = iparams.page&lt;br /&gt;
	args.notice = yn(iparams.notice, false)&lt;br /&gt;
	args.date = iparams.date or mw.getCurrentFrame():preprocess(&amp;#039;{{safesubst:REVISIONTIMESTAMP}}&amp;#039;)&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isSubstituted()&lt;br /&gt;
	return yn(mw.getCurrentFrame():preprocess(&amp;#039;{{safesubst:Issubst}}&amp;#039;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Entry point&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.main = makeInvokeFunc(&amp;#039;_main&amp;#039;)&lt;br /&gt;
function p._main(params)&lt;br /&gt;
	-- get page &lt;br /&gt;
	local args = processDeletionArgs(params)&lt;br /&gt;
	local out = &amp;#039;&amp;#039;&lt;br /&gt;
	if args.notice then&lt;br /&gt;
		if not args.pageName then&lt;br /&gt;
			return preview._warning({&amp;#039;No page name specified. Proceeding will do nothing.&amp;#039;})&lt;br /&gt;
		end&lt;br /&gt;
		if not args.noHeader then&lt;br /&gt;
			out = out .. (args.customHeader and &amp;#039;== &amp;#039; .. fillStringWithArgs(args.customHeader, {args.pageName}) .. &amp;#039; ==&amp;#039; or &amp;quot;== &amp;quot; .. message(&amp;quot;noticeHeader&amp;quot;, {args.pageName}) .. &amp;quot; ==&amp;quot;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		local messageType = args.highestMessage == 1 and &amp;#039;welcome&amp;#039; or &amp;#039;notice&amp;#039;&lt;br /&gt;
		out = out .. (message(&amp;#039;level&amp;#039; .. args.highestMessage .. &amp;#039;icon&amp;#039;) == &amp;#039;&amp;#039; and &amp;#039;&amp;#039; or &amp;#039;[[&amp;#039; .. message(&amp;#039;level&amp;#039; .. args.highestMessage .. &amp;#039;icon&amp;#039;) .. &amp;#039;|40px]] &amp;#039;)&lt;br /&gt;
		if mw.title.new(args.pageName).exists then&lt;br /&gt;
			if args.customIntro then&lt;br /&gt;
				out = out .. fillStringWithArgs(args.customIntro, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					args.deletionReasonsNotice[1]&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			elseif args.numberOfEntries == 1 then&lt;br /&gt;
				out = out .. message(messageType .. &amp;#039;Message&amp;#039;, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					args.deletionReasonsNotice[1]&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			elseif args.numberOfEntries &amp;gt; 1 then&lt;br /&gt;
				out = out .. message(messageType .. &amp;#039;MessageMultiple&amp;#039;, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					&amp;#039;\n&amp;#039; .. makeWikiList(args.deletionReasonsNotice)&lt;br /&gt;
				}) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				out = out .. message(messageType .. &amp;#039;MessageMultiple&amp;#039;, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					message(&amp;quot;seePageForWhy&amp;quot;)&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			if args.customCloser then&lt;br /&gt;
				out = out .. args.customCloser&lt;br /&gt;
			else &lt;br /&gt;
				out = out .. &amp;#039;{{#ifexist:&amp;#039; .. args.pageName .. &amp;#039;|&amp;#039;&lt;br /&gt;
				if args.hideButton then&lt;br /&gt;
					out = out .. message(&amp;quot;removeSpeedyMessage&amp;quot;, {args.pageName}) .. &amp;#039; &amp;#039;&lt;br /&gt;
				else&lt;br /&gt;
					out = out .. message(&amp;quot;contestMessage&amp;quot;, {args.pageName, &amp;#039;{{button|&amp;#039; .. message(&amp;quot;contestButton&amp;quot;) .. &amp;#039;}}&amp;#039;}) .. &amp;#039; &amp;#039;&lt;br /&gt;
					out = out .. message(&amp;#039;closingWarning&amp;#039;, {message(&amp;#039;removeSpeedyWarning&amp;#039;)}) .. &amp;#039; &amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				if args.willProvide then out = out .. message(&amp;#039;undeleteSuggestion&amp;#039;, {message(&amp;#039;pageIsDeleted&amp;#039;), args.pageName, message(args.drv and &amp;#039;requestDeletionReview&amp;#039; or &amp;#039;requestUndeletion&amp;#039;)}) end&lt;br /&gt;
				out = out .. &amp;#039;|&amp;#039;&lt;br /&gt;
				out = out .. message(&amp;#039;deletedAfterMessage&amp;#039;) .. &amp;#039; &amp;#039;&lt;br /&gt;
				if not args.hideButton then out = out .. message(&amp;#039;closingWarning&amp;#039;, {message(&amp;#039;recreateWarning&amp;#039;)}) .. &amp;#039; &amp;#039; end&lt;br /&gt;
				if args.willProvide then out = out .. message(&amp;#039;undeleteSuggestion&amp;#039;, {message(&amp;#039;pageShouldNotHaveBeenDeleted&amp;#039;), args.pageName, message(args.drv and &amp;#039;requestDeletionReview&amp;#039; or &amp;#039;requestUndeletion&amp;#039;)}) end&lt;br /&gt;
				out = out .. &amp;#039;}}&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			if args.customIntroDeleted then&lt;br /&gt;
				out = out .. fillStringWithArgs(args.customIntroDeleted, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					args.deletionReasonsNotice[1]&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			elseif args.numberOfEntries == 1 then&lt;br /&gt;
				out = out .. message(messageType .. &amp;#039;MessageDeleted&amp;#039;, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					args.deletionReasonsNotice[1]&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			elseif args.numberOfEntries &amp;gt; 1 then&lt;br /&gt;
				out = out .. message(messageType .. &amp;#039;MessageDeletedMultiple&amp;#039;, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					&amp;#039;\n&amp;#039; .. makeWikiList(args.deletionReasonsNotice)&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				out = out .. message(messageType .. &amp;#039;MessageDeletedMultiple&amp;#039;, {&lt;br /&gt;
					args.pageName,&lt;br /&gt;
					message(&amp;quot;seePageForWhy&amp;quot;)&lt;br /&gt;
				}) .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			if args.customCloser then&lt;br /&gt;
				out = out .. args.customCloser&lt;br /&gt;
			else &lt;br /&gt;
				out = out .. message(&amp;#039;deletedAfterMessage&amp;#039;)&lt;br /&gt;
				if not args.hideButton then out = out .. message(&amp;#039;closingWarning&amp;#039;, {message(&amp;#039;recreateWarning&amp;#039;)}) .. &amp;#039; &amp;#039; end&lt;br /&gt;
				if args.willProvide then out = out .. message(&amp;#039;undeleteSuggestion&amp;#039;, {message(&amp;#039;pageShouldNotHaveBeenDeleted&amp;#039;), args.pageName, message(args.drv and &amp;#039;requestDeletionReview&amp;#039; or &amp;#039;requestUndeletion&amp;#039;)}) end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return mw.getCurrentFrame():preprocess(out)&lt;br /&gt;
	else&lt;br /&gt;
		if isSubstituted() then&lt;br /&gt;
			local out = &amp;#039;{{db/sandbox&amp;#039;&lt;br /&gt;
			for k,v in ipairs(params) do&lt;br /&gt;
				out = out .. &amp;#039;|&amp;#039; .. v&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. (args.help and &amp;#039;&amp;#039; or &amp;#039;|help=off&amp;#039;)&lt;br /&gt;
			out = out .. (args.nocat and &amp;#039;|nocat=yes&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
			out = out .. (args.bot and &amp;#039;|bot=yes&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
			out = out .. (args.additionalNote and &amp;#039;|additionalnote=&amp;#039; .. args.additionalNote or &amp;#039;&amp;#039;)&lt;br /&gt;
			out = out .. (args.date and &amp;#039;|date=&amp;#039; .. args.date or &amp;#039;{{safesubst:REVISIONTIMESTAMP}}&amp;#039;)&lt;br /&gt;
			out = out .. &amp;#039;}}&amp;#039;&lt;br /&gt;
			return out&lt;br /&gt;
		else&lt;br /&gt;
			local titleOfPage = mw.title.getCurrentTitle()&lt;br /&gt;
			local pt = pageType._main({page = titleOfPage.fullText})&lt;br /&gt;
			local introPrefixToUse = args.bot and &amp;#039;bot&amp;#039; or &amp;#039;delete&amp;#039;&lt;br /&gt;
			local intro = mw.html.create(&amp;#039;span&amp;#039;)&lt;br /&gt;
				intro:css{[&amp;quot;font-style&amp;quot;] = &amp;quot;italic&amp;quot;, [&amp;quot;font-weight&amp;quot;] = &amp;quot;bold&amp;quot;}&lt;br /&gt;
			if args.numberOfEntries == 1 then&lt;br /&gt;
				intro:wikitext(message(introPrefixToUse .. &amp;#039;Intro&amp;#039;, {&lt;br /&gt;
					pt,&lt;br /&gt;
					args.deletionReasons[1]&lt;br /&gt;
				}))&lt;br /&gt;
			elseif args.numberOfEntries &amp;gt; 1 then&lt;br /&gt;
				intro:wikitext(message(introPrefixToUse .. &amp;#039;IntroMultiple&amp;#039;, {&lt;br /&gt;
					pt,&lt;br /&gt;
					makeUnorderedList(args.deletionReasons)&lt;br /&gt;
				}))&lt;br /&gt;
			else&lt;br /&gt;
				intro:wikitext(message(introPrefixToUse .. &amp;#039;IntroMultiple&amp;#039;, {&lt;br /&gt;
					pt,&lt;br /&gt;
					message(&amp;quot;noReasonWarning&amp;quot;)&lt;br /&gt;
				}))&lt;br /&gt;
			end&lt;br /&gt;
			intro:allDone()&lt;br /&gt;
			out = out .. tostring(intro)&lt;br /&gt;
			if args.additionalNote then&lt;br /&gt;
				out = out .. &amp;#039; &amp;#039; .. message(&amp;#039;additionalNote&amp;#039;, {&lt;br /&gt;
					args.additionalNote&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. &amp;#039;\n&amp;#039;&lt;br /&gt;
			if args.hideButton then&lt;br /&gt;
				out = out .. &amp;#039;&amp;#039; .. message(&amp;quot;removeNoticeNoButton&amp;quot;, {pt}) .. &amp;#039;&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				out = out .. &amp;#039;&amp;#039; .. message(&amp;quot;removeNotice&amp;quot;, {pt, message(&amp;#039;removeNoticeWarning&amp;#039;, {titleOfPage.isTalkPage and message(&amp;#039;checkBelow&amp;#039;) or &amp;#039;[[&amp;#039; .. titleOfPage.talkPageTitle.fullText .. &amp;#039;|&amp;#039; .. message(&amp;#039;visitTheTalkPage&amp;#039;) .. &amp;#039;]]&amp;#039;})}) .. &amp;#039;&amp;#039;&lt;br /&gt;
				out = out .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
				if args.numberOfEntries == 1 then&lt;br /&gt;
					out = out .. &amp;#039;&amp;lt;div style=&amp;quot;margin-left:auto;margin-right:auto;text-align:center;&amp;quot;&amp;gt;&amp;#039; .. button.luaMain({&lt;br /&gt;
						message(&amp;quot;contestButton&amp;quot;),&lt;br /&gt;
						class=&amp;quot;mw-ui-progressive&amp;quot;,&lt;br /&gt;
						url=&amp;quot;{{fullurl:&amp;quot; .. titleOfPage.talkPageTitle.fullText .. &amp;#039;|action=edit&amp;amp;section=new&amp;amp;preloadtitle={{urlencode:&amp;#039; .. message(&amp;#039;contestPreloadTitle&amp;#039;) .. &amp;#039;}}&amp;amp;preload={{urlencode:&amp;#039; .. (mw.title.new(message(&amp;#039;contestPreload&amp;#039;, {args.entries[1].code})).exists and message(&amp;#039;contestPreload&amp;#039;, {args.entries[1].code}) or message(&amp;#039;contestPreloadGeneric&amp;#039;)) .. &amp;#039;}}&amp;amp;editintro={{urlencode:&amp;#039; .. message(&amp;#039;contestPreloadEditintro&amp;#039;) .. &amp;#039;}}}}&amp;#039;&lt;br /&gt;
					}) .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
				else&lt;br /&gt;
					out = out .. &amp;#039;&amp;lt;div style=&amp;quot;margin-left:auto;margin-right:auto;text-align:center;&amp;quot;&amp;gt;&amp;#039; .. button.luaMain({&lt;br /&gt;
						message(&amp;quot;contestButton&amp;quot;),&lt;br /&gt;
						class=&amp;quot;mw-ui-progressive&amp;quot;,&lt;br /&gt;
						style=&amp;quot;text-align:center;&amp;quot;,&lt;br /&gt;
						url=&amp;quot;{{fullurl:&amp;quot; .. titleOfPage.talkPageTitle.fullText .. &amp;#039;|action=edit&amp;amp;section=new&amp;amp;preload={{urlencode:&amp;#039; .. message(&amp;#039;contestPreloadGeneric&amp;#039;) .. &amp;#039;}}&amp;amp;editintro={{urlencode:&amp;#039; .. message(&amp;#039;contestPreloadEditintro&amp;#039;) .. &amp;#039;}}}}&amp;#039;&lt;br /&gt;
					}) .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				out = out .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
				out = out .. &amp;#039;&amp;#039; .. message(&amp;quot;deleteCloser&amp;quot;, {&lt;br /&gt;
					pt,&lt;br /&gt;
					titleOfPage.isTalkPage and message(&amp;quot;deleteCloserProvidedBelowNotice&amp;quot;) or message(&amp;quot;deleteCloserProvidedOnTalkPage&amp;quot;)&lt;br /&gt;
				}) .. &amp;quot;&amp;quot;&lt;br /&gt;
				if (args.help) then&lt;br /&gt;
					out = out .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
					local templateCall = &amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{subst:db|page=&amp;#039; .. titleOfPage.fullText&lt;br /&gt;
					for k,v in pairs(params) do&lt;br /&gt;
						templateCall = templateCall .. &amp;#039;|&amp;#039; .. k .. &amp;#039;=&amp;#039; .. v&lt;br /&gt;
					end&lt;br /&gt;
					templateCall = templateCall .. &amp;#039;|notice=yes}} ~~&amp;#039; .. &amp;#039;~~&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
					out = out .. &amp;#039;&amp;#039; .. message(&amp;#039;deleteNoticeTemplate&amp;#039;, {templateCall}) .. &amp;#039;&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				out = out .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
				if titleOfPage.talkPageTitle.exists then&lt;br /&gt;
					out = out .. &amp;#039;&amp;lt;span class=&amp;quot;sysop-show&amp;quot;&amp;gt;&amp;#039; .. message(&amp;quot;hangOnAdmin&amp;quot;, {pt, titleOfPage.isTalkPage and message(&amp;quot;checkBelow&amp;quot;) or message(&amp;quot;hangOnTalkPage&amp;quot;)}) .. &amp;quot;&amp;lt;/span&amp;gt; &amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					out = out .. message(&amp;#039;hangOn&amp;#039;, {pt})&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if args.numberOfEntries == 1 then&lt;br /&gt;
				out = out .. (args.entries[1].notes and &amp;#039;\n\n&amp;#039; .. args.entries[1].notes .. &amp;quot;&amp;quot; or &amp;#039;&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			local deleteReasonSummary = &amp;#039;&amp;#039;&lt;br /&gt;
			if args.numberOfEntries &amp;gt; 1 then&lt;br /&gt;
				deleteReasonSummary = &amp;#039;Multiple criteria: &amp;#039;&lt;br /&gt;
				local isFirst = true&lt;br /&gt;
				for k,v in pairs(args.entries) do&lt;br /&gt;
					deleteReasonSummary = v.code and deleteReasonSummary .. (isFirst and &amp;#039;&amp;#039; or &amp;#039;, &amp;#039;) .. &amp;#039;[[WP:CSD#&amp;#039; .. v.code .. &amp;#039;|&amp;#039; .. v.code .. &amp;#039;]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
					isFirst = false&lt;br /&gt;
				end&lt;br /&gt;
			elseif args.numberOfEntries == 1 then&lt;br /&gt;
				deleteReasonSummary = args.entries[1].code and deleteReasonSummary .. &amp;#039;[[WP:CSD#&amp;#039; .. args.entries[1].code .. &amp;#039;|&amp;#039; .. args.entries[1].code .. &amp;#039;]]&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			if deleteReasonSummary == &amp;#039;&amp;#039; then&lt;br /&gt;
				deleteReasonSummary = &amp;#039;[[WP:CSD|Speedy]]&amp;#039;	&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
			local lastEditUser = mw.getCurrentFrame():callParserFunction(&amp;#039;REVISIONUSER&amp;#039;, titleOfPage.fullText)&lt;br /&gt;
			local editDate = mw.getCurrentFrame():callParserFunction(&amp;#039;#time&amp;#039;, &amp;#039;H:i, j F Y&amp;#039;, mw.getCurrentFrame():callParserFunction(&amp;#039;REVISIONTIMESTAMP&amp;#039;, titleOfPage.fullText))&lt;br /&gt;
			out = out .. &amp;#039;&amp;lt;span class=&amp;quot;sysop-show&amp;quot;&amp;gt;&amp;#039; .. message(args.bot and &amp;#039;checkBot&amp;#039; or &amp;#039;check&amp;#039;, {args.bot and message(&amp;#039;check&amp;#039;, {deleteReasonSummary}) or deleteReasonSummary}) .. &amp;#039;&amp;lt;/span&amp;gt; &amp;#039; .. message(&amp;#039;lastEdited&amp;#039;, {&lt;br /&gt;
					&amp;#039;[[User:&amp;#039; .. lastEditUser .. &amp;#039;|&amp;#039; .. lastEditUser .. &amp;#039;]]&amp;#039;,&lt;br /&gt;
					&amp;#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:&amp;#039; .. titleOfPage.fullText .. &amp;#039;|action=history}} &amp;#039; .. editDate .. &amp;#039;]&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
					timeAgo.main({editDate})&lt;br /&gt;
				})&lt;br /&gt;
			-- categorize&lt;br /&gt;
			out = out .. &amp;#039;[[&amp;#039; .. (args.nocat and &amp;#039;:&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;Category:&amp;#039; .. message(&amp;#039;defaultCategory&amp;#039;) .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			for k,v in pairs(args.entries) do&lt;br /&gt;
				local categorizeTime = mw.getCurrentFrame():preprocess(&amp;#039;{{#time:U|&amp;#039; .. args.date .. &amp;#039; +&amp;#039; .. (v and v.delayCategorization or 0) .. &amp;#039; days&amp;#039; .. &amp;#039;}}&amp;#039;)&lt;br /&gt;
				local currentTime = mw.getCurrentFrame():preprocess(&amp;#039;{{#time:U|now}}&amp;#039;)&lt;br /&gt;
				if currentTime + 0 &amp;gt;= categorizeTime + 0 then&lt;br /&gt;
					for l,w in pairs(v and v.categories or {}) do&lt;br /&gt;
						out = out .. &amp;#039;[[&amp;#039; .. (args.nocat and &amp;#039;:&amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;Category:&amp;#039; .. w .. &amp;#039;]]&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			local deletionBoxArgs = {&lt;br /&gt;
				type = &amp;quot;speedy&amp;quot;,&lt;br /&gt;
				text = mw.getCurrentFrame():preprocess(out),&lt;br /&gt;
				style = &amp;quot;font-size:95%;word-break:break-word;&amp;quot;,&lt;br /&gt;
				image = message(&amp;#039;level&amp;#039; .. args.highestMessage .. &amp;#039;icon&amp;#039;) == &amp;#039;&amp;#039; and &amp;#039;none&amp;#039; or &amp;#039;[[&amp;#039; .. message(&amp;#039;level&amp;#039; .. args.highestMessage .. &amp;#039;icon&amp;#039;) .. &amp;#039;|40px]]&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
			local deletionBox = mbox.main(&amp;#039;mbox&amp;#039;, deletionBoxArgs)&lt;br /&gt;
			local blankedBox = &amp;#039;&amp;#039;&lt;br /&gt;
			local hiddenBox = &amp;#039;&amp;#039;&lt;br /&gt;
			local blanked = &amp;#039;&amp;#039;&lt;br /&gt;
			local hidden = &amp;#039;&amp;#039;&lt;br /&gt;
			if args.blank then&lt;br /&gt;
				blanked = blanked .. message(&amp;#039;blanked&amp;#039;)&lt;br /&gt;
				if mw.getCurrentFrame():preprocess(&amp;#039;{{REVISIONSIZE}}&amp;#039;) + 0 &amp;gt;= 35 then&lt;br /&gt;
					blanked = blanked .. &amp;#039; &amp;lt;b&amp;gt;&amp;#039; .. message(&amp;#039;pleaseBlank&amp;#039;) .. &amp;#039;&amp;lt;/b&amp;gt;&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				local blankedBoxArgs = {&lt;br /&gt;
					type = &amp;quot;notice&amp;quot;,&lt;br /&gt;
					text = blanked,&lt;br /&gt;
					style = &amp;quot;word-break:break-word;&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
				blankedBox = mbox.main(&amp;#039;mbox&amp;#039;, blankedBoxArgs)&lt;br /&gt;
			end&lt;br /&gt;
			if args.hide then&lt;br /&gt;
				hidden = hidden .. message(&amp;#039;hidden&amp;#039;)&lt;br /&gt;
				local hiddenBoxArgs = {&lt;br /&gt;
					type = &amp;quot;notice&amp;quot;,&lt;br /&gt;
					text = hidden,&lt;br /&gt;
					style = &amp;quot;word-break:break-word;&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
				hiddenBox = mbox.main(&amp;#039;mbox&amp;#039;, hiddenBoxArgs)&lt;br /&gt;
			end&lt;br /&gt;
			if args.hide and not args.nocat then&lt;br /&gt;
				hiddenBox = hiddenBox .. &amp;#039;&amp;lt;div style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			return deletionBox .. blankedBox .. hiddenBox&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeTable = makeInvokeFunc(&amp;#039;_makeTable&amp;#039;)&lt;br /&gt;
function p._makeTable(args)&lt;br /&gt;
	local usedCodes = {}&lt;br /&gt;
	local tb = mw.html.create(&amp;quot;table&amp;quot;)&lt;br /&gt;
	tb:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
	local th = tb:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Code&amp;#039;):done()&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Aliases&amp;#039;):done()&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Criterion&amp;#039;):done()&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Name&amp;#039;):done()&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Description&amp;#039;):done()&lt;br /&gt;
	for k,v in pairs(config.deletionReasonsSorting) do&lt;br /&gt;
		local entry = getDeletionEntry(v)&lt;br /&gt;
		if entry then&lt;br /&gt;
			if not usedCodes[v] then&lt;br /&gt;
				local tr = tb:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(mw.getCurrentFrame():preprocess(&amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;#039; .. v .. &amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;)):done()&lt;br /&gt;
				local aliasStr = &amp;#039;&amp;#039;&lt;br /&gt;
				for _,alias in pairs(entry.aliases) do&lt;br /&gt;
					aliasStr = aliasStr .. &amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;#039; .. alias .. &amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
					usedCodes[alias] = true&lt;br /&gt;
				end&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(mw.getCurrentFrame():preprocess(aliasStr))&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;[[Project:CSD#&amp;#039; .. entry.code .. &amp;#039;|&amp;#039; .. entry.code .. &amp;#039;]]&amp;#039;):done()&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(entry.name):done()&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(entry.description):done()&lt;br /&gt;
				usedCodes[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k,entry in pairs(config.deletionCodes) do&lt;br /&gt;
		if not usedCodes[k] then&lt;br /&gt;
			local tr = tb:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):wikitext(mw.getCurrentFrame():preprocess(&amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;#039; .. k .. &amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;)):done()&lt;br /&gt;
			local aliasStr = &amp;#039;&amp;#039;&lt;br /&gt;
			for _,alias in pairs(entry.aliases) do&lt;br /&gt;
				aliasStr = aliasStr .. &amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;#039; .. alias .. &amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
				usedCodes[alias] = true&lt;br /&gt;
			end&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):wikitext(mw.getCurrentFrame():preprocess(aliasStr))&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;[[Project:CSD#&amp;#039; .. entry.code .. &amp;#039;|&amp;#039; .. entry.code .. &amp;#039;]]&amp;#039;):done()&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):wikitext(entry.name):done()&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):wikitext(entry.description):done()&lt;br /&gt;
			usedCodes[k] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(tb) .. &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeTableWithExamples = makeInvokeFunc(&amp;#039;_makeTableWithExamples&amp;#039;)&lt;br /&gt;
function p._makeTableWithExamples(args)&lt;br /&gt;
	local usedCodes = {}&lt;br /&gt;
	local tb = mw.html.create(&amp;quot;table&amp;quot;)&lt;br /&gt;
	tb:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
	local th = tb:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):css{position = &amp;quot;sticky&amp;quot;, top = 0, left = 0}:wikitext(&amp;#039;Codes&amp;#039;):done()&lt;br /&gt;
	--th:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;Criterion&amp;#039;):done()&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):css{position = &amp;quot;sticky&amp;quot;, top = 0}:wikitext(&amp;#039;Deletion message&amp;#039;):done()&lt;br /&gt;
	th:tag(&amp;#039;th&amp;#039;):css{position = &amp;quot;sticky&amp;quot;, top = 0}:wikitext(&amp;#039;Deletion notice&amp;#039;):done()&lt;br /&gt;
	for k,v in pairs(config.deletionReasonsSorting) do&lt;br /&gt;
		local entry = getDeletionEntry(v)&lt;br /&gt;
		if entry then&lt;br /&gt;
			if not usedCodes[v] then&lt;br /&gt;
				local tr = tb:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				local aliasStr = &amp;#039;&amp;#039;&lt;br /&gt;
				for _,alias in pairs(entry.aliases) do&lt;br /&gt;
					aliasStr = aliasStr .. &amp;#039;&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{db|&amp;#039; .. alias .. &amp;#039;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
					usedCodes[alias] = true&lt;br /&gt;
				end&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):css{position = &amp;quot;sticky&amp;quot;, left = 0}:wikitext(mw.getCurrentFrame():preprocess(&amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{db|&amp;#039; .. v .. &amp;#039;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039; .. aliasStr)):done()&lt;br /&gt;
				--tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;[[Project:CSD#&amp;#039; .. entry.code .. &amp;#039;|&amp;#039; .. entry.code .. &amp;#039;]]&amp;#039;):done()&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;&amp;lt;div style=&amp;quot;width:700px;&amp;quot;&amp;gt;&amp;#039; .. mw.getCurrentFrame():preprocess(&amp;#039;{{#invoke:Speedy|main|nocat=yes|&amp;#039; .. v .. &amp;#039;}}&amp;#039; .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; )):done()&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(mw.getCurrentFrame():preprocess(&amp;#039;&amp;lt;div style=&amp;quot;width:700px;&amp;quot;&amp;gt;&amp;#039; .. &amp;#039;{{#invoke:Speedy|main|page=Sandbox|notice=yes|&amp;#039; .. v .. &amp;#039;}}&amp;#039; .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)):done()&lt;br /&gt;
				usedCodes[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for v,entry in pairs(config.deletionCodes) do&lt;br /&gt;
		if not usedCodes[v] then&lt;br /&gt;
			local tr = tb:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			local aliasStr = &amp;#039;&amp;#039;&lt;br /&gt;
			for _,alias in pairs(entry.aliases) do&lt;br /&gt;
				aliasStr = aliasStr .. &amp;#039;&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{db|&amp;#039; .. alias .. &amp;#039;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;&lt;br /&gt;
				usedCodes[alias] = true&lt;br /&gt;
			end&lt;br /&gt;
			tr:tag(&amp;#039;td&amp;#039;):css{position = &amp;quot;sticky&amp;quot;, left = 0}:wikitext(mw.getCurrentFrame():preprocess(&amp;#039;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{db|&amp;#039; .. v .. &amp;#039;}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;\n&amp;#039; .. aliasStr)):done()&lt;br /&gt;
			--tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;[[Project:CSD#&amp;#039; .. entry.code .. &amp;#039;|&amp;#039; .. entry.code .. &amp;#039;]]&amp;#039;):done()&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(&amp;#039;&amp;lt;div style=&amp;quot;width:700px;&amp;quot;&amp;gt;&amp;#039; .. mw.getCurrentFrame():preprocess(&amp;#039;{{#invoke:Speedy|main|nocat=yes|&amp;#039; .. v .. &amp;#039;}}&amp;#039; .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; )):done()&lt;br /&gt;
				tr:tag(&amp;#039;td&amp;#039;):wikitext(mw.getCurrentFrame():preprocess(&amp;#039;&amp;lt;div style=&amp;quot;width:700px;&amp;quot;&amp;gt;&amp;#039; .. &amp;#039;{{#invoke:Speedy|main|page=Sandbox|notice=yes|&amp;#039; .. v .. &amp;#039;}}&amp;#039; .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;)):done()&lt;br /&gt;
			usedCodes[v] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(tb) .. &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Awesome Aasim</name></author>
	</entry>
</feed>