<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.wikidebates.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikinuma</id>
	<title>Wikidebates - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.wikidebates.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikinuma"/>
	<link rel="alternate" type="text/html" href="https://en.wikidebates.org/wiki/Special:Contributions/Wikinuma"/>
	<updated>2026-04-18T02:58:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Common.js&amp;diff=10567</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Common.js&amp;diff=10567"/>
		<updated>2026-04-15T14:17:53Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.using( [ &#039;mediawiki.util&#039;, &#039;mediawiki.api&#039; ] ).then( function () {&lt;br /&gt;
	(function () {&lt;br /&gt;
		var rawReferrer = document.referrer || &#039;&#039;;&lt;br /&gt;
		var referrer = &#039;&#039;;&lt;br /&gt;
		var pageName = mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;;&lt;br /&gt;
		var reloadKey = &#039;wk-delayed-reload-&#039; + pageName;&lt;br /&gt;
		var purgeKey = reloadKey + &#039;-purge-done&#039;;&lt;br /&gt;
		var timeKey = reloadKey + &#039;-ts&#039;;&lt;br /&gt;
		var now = Date.now();&lt;br /&gt;
		var lastRun;&lt;br /&gt;
		var api = new mw.Api();&lt;br /&gt;
		var cameFromNewArgumentForm;&lt;br /&gt;
		var hasReloadMarker;&lt;br /&gt;
		var hasPurgedAlready;&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			referrer = decodeURIComponent( rawReferrer );&lt;br /&gt;
		} catch ( e ) {&lt;br /&gt;
			referrer = rawReferrer;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		cameFromNewArgumentForm = referrer.indexOf( &#039;New_argument&#039; ) !== -1;&lt;br /&gt;
		hasReloadMarker = sessionStorage.getItem( reloadKey ) === &#039;1&#039;;&lt;br /&gt;
		hasPurgedAlready = sessionStorage.getItem( purgeKey ) === &#039;1&#039;;&lt;br /&gt;
		lastRun = parseInt( sessionStorage.getItem( timeKey ) || &#039;0&#039;, 10 );&lt;br /&gt;
&lt;br /&gt;
		if ( lastRun &amp;amp;&amp;amp; now - lastRun &amp;gt; 30000 ) {&lt;br /&gt;
			sessionStorage.removeItem( reloadKey );&lt;br /&gt;
			sessionStorage.removeItem( purgeKey );&lt;br /&gt;
			sessionStorage.removeItem( timeKey );&lt;br /&gt;
			hasReloadMarker = false;&lt;br /&gt;
			hasPurgedAlready = false;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( hasReloadMarker &amp;amp;&amp;amp; hasPurgedAlready ) {&lt;br /&gt;
			sessionStorage.removeItem( reloadKey );&lt;br /&gt;
			sessionStorage.removeItem( purgeKey );&lt;br /&gt;
			sessionStorage.removeItem( timeKey );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( !cameFromNewArgumentForm &amp;amp;&amp;amp; !hasReloadMarker ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( !hasReloadMarker ) {&lt;br /&gt;
			sessionStorage.setItem( reloadKey, &#039;1&#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( !hasPurgedAlready ) {&lt;br /&gt;
			sessionStorage.setItem( purgeKey, &#039;1&#039; );&lt;br /&gt;
			sessionStorage.setItem( timeKey, String( now ) );&lt;br /&gt;
&lt;br /&gt;
			api.post( {&lt;br /&gt;
				action: &#039;purge&#039;,&lt;br /&gt;
				titles: pageName,&lt;br /&gt;
				forcelinkupdate: 1,&lt;br /&gt;
				format: &#039;json&#039;&lt;br /&gt;
			} ).always( function () {&lt;br /&gt;
				window.location.href = mw.util.getUrl( pageName );&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	})();&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Flow-newtopic-content-placeholder&amp;diff=10564</id>
		<title>MediaWiki:Flow-newtopic-content-placeholder</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Flow-newtopic-content-placeholder&amp;diff=10564"/>
		<updated>2026-04-03T15:36:07Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Write your message here&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Flow-newtopic-content-placeholder&amp;diff=10563</id>
		<title>MediaWiki:Flow-newtopic-content-placeholder</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Flow-newtopic-content-placeholder&amp;diff=10563"/>
		<updated>2026-04-03T15:33:46Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Post a new message&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Flow-newtopic-content-placeholder&amp;diff=10562</id>
		<title>MediaWiki:Flow-newtopic-content-placeholder</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Flow-newtopic-content-placeholder&amp;diff=10562"/>
		<updated>2026-04-03T15:32:16Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created page with &amp;quot;Post a new message.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Post a new message.&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:Argument&amp;diff=10561</id>
		<title>Module:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:Argument&amp;diff=10561"/>
		<updated>2026-03-24T17:15:48Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--	Module:Argument (i18n multi-lang) — Optimisé / Purifié&lt;br /&gt;
--	Objectif : rendu du modèle « Argument » (MediaWiki 1.43) fidèle au rendu existant&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Accès global au frame + VariablesLua (accélération sans changer le rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mw				= mw&lt;br /&gt;
local F					= mw.getCurrentFrame()&lt;br /&gt;
local V					= (mw.ext and mw.ext.VariablesLua) or nil&lt;br /&gt;
local WD_I18N			= require(&#039;Module:WD/I18N&#039;)&lt;br /&gt;
&lt;br /&gt;
--	Locaux (micro-optis)&lt;br /&gt;
local tostring			= tostring&lt;br /&gt;
local type				= type&lt;br /&gt;
local tonumber			= tonumber&lt;br /&gt;
local ipairs			= ipairs&lt;br /&gt;
local pairs				= pairs&lt;br /&gt;
local table_concat		= table.concat&lt;br /&gt;
local table_insert		= table.insert&lt;br /&gt;
local table_remove		= table.remove&lt;br /&gt;
local table_sort		= table.sort&lt;br /&gt;
local t_trim			= mw.text.trim&lt;br /&gt;
local t_gsplit			= mw.text.gsplit&lt;br /&gt;
local t_nowiki			= mw.text.nowiki&lt;br /&gt;
local t_jsonEncode		= mw.text.jsonEncode&lt;br /&gt;
local t_jsonDecode		= mw.text.jsonDecode&lt;br /&gt;
local html_create		= mw.html.create&lt;br /&gt;
local mw_title_new		= mw.title.new&lt;br /&gt;
local mw_uri_encode		= mw.uri.encode&lt;br /&gt;
local mw_uri_decode		= mw.uri.decode&lt;br /&gt;
local mw_uri_fullUrl	= mw.uri.fullUrl&lt;br /&gt;
local uri_localUrl		= mw.uri.localUrl&lt;br /&gt;
local mw_util			= mw.util&lt;br /&gt;
local mw_util_getUrl	= (mw_util and mw_util.getUrl) or nil&lt;br /&gt;
local mw_hash			= (mw.hash and type(mw.hash.hashValue) == &amp;quot;function&amp;quot;) and mw.hash or nil&lt;br /&gt;
local string_format		= string.format&lt;br /&gt;
local gsub				= string.gsub&lt;br /&gt;
local ITEM_SEP			= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local FIELD_SEP			= &amp;quot;⟬&amp;quot;&lt;br /&gt;
local QUOTE_ITEM_SEP	= &amp;quot;⟭⟭⟭&amp;quot;&lt;br /&gt;
local QUOTE_FIELD_SEP	= &amp;quot;⟬⟬⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Anchor intégré (remplace Module:Anchor)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function anchorId( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Normalisation des apostrophes HTML éventuelles&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#039;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;apos;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Nettoyage minimal&lt;br /&gt;
	s = gsub( s, &amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
	s = t_trim( s )&lt;br /&gt;
&lt;br /&gt;
	--	Espaces → underscore&lt;br /&gt;
	s = gsub( s, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Suppression caractères cassants (HTML / wiki)&lt;br /&gt;
	s = gsub( s, &#039;[%[%]{}|#&amp;lt;&amp;gt;&amp;quot;]&#039;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	wrappers VariablesLua (no-op si extension absente)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function vset(name, val)&lt;br /&gt;
	if V and type(V.vardefine) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		pcall(V.vardefine, name, val ~= nil and tostring(val) or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function vget(name)&lt;br /&gt;
	if V and type(V.var) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		local ok, res = pcall(V.var, name)&lt;br /&gt;
		if ok then return res end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectLang(args)&lt;br /&gt;
	return WD_I18N.getLangFromArgs(args or {})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	I18N : cache local (par rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local I18N_DOMAIN = {}&lt;br /&gt;
local I18N_MSG = {}&lt;br /&gt;
&lt;br /&gt;
local function L(lang, section, key, ...)&lt;br /&gt;
	lang = tostring(lang or &amp;quot;fr&amp;quot;)&lt;br /&gt;
	section = tostring(section or &amp;quot;&amp;quot;)&lt;br /&gt;
	key = tostring(key or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local domain = I18N_DOMAIN[section]&lt;br /&gt;
	if not domain then&lt;br /&gt;
		domain = &amp;quot;Argument.&amp;quot; .. section&lt;br /&gt;
		I18N_DOMAIN[section] = domain&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if select(&amp;quot;#&amp;quot;, ...) == 0 then&lt;br /&gt;
		local k = lang .. &amp;quot;\n&amp;quot; .. domain .. &amp;quot;\n&amp;quot; .. key&lt;br /&gt;
		local hit = I18N_MSG[k]&lt;br /&gt;
		if hit ~= nil then&lt;br /&gt;
			return hit&lt;br /&gt;
		end&lt;br /&gt;
		local text = WD_I18N.msg(domain, lang, key)&lt;br /&gt;
		I18N_MSG[k] = text&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return WD_I18N.msg(domain, lang, key, ...)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Caches (bornage mémoire) — Patch #6&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function cacheMake(max)&lt;br /&gt;
	return { data = {}, order = {}, max = max or 200 }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cacheGet(C, k)&lt;br /&gt;
	return C.data[k]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cachePut(C, k, v)&lt;br /&gt;
	if C.data[k] ~= nil then&lt;br /&gt;
		C.data[k] = v&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	C.data[k] = v&lt;br /&gt;
	table_insert(C.order, k)&lt;br /&gt;
	if #C.order &amp;gt; (C.max or 200) then&lt;br /&gt;
		local old = table_remove(C.order, 1)&lt;br /&gt;
		if old ~= nil then&lt;br /&gt;
			C.data[old] = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Mémoïsation expandTemplate (bandeaux, schemas, etc.)&lt;br /&gt;
local EXPAND_CACHE = cacheMake(250)&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Tooltip normalize (apostrophes / guillemets)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function normalizeTooltipText(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
	s = s:gsub(&amp;quot;&#039;&amp;quot;, &amp;quot;’&amp;quot;)&lt;br /&gt;
	s = s:gsub(&#039;&amp;quot;&#039;, &amp;quot;“&amp;quot;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local canonicalTitle&lt;br /&gt;
&lt;br /&gt;
local function fastParamsKey(params)&lt;br /&gt;
	if type(params) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for _ in pairs(params) do&lt;br /&gt;
		n = n + 1&lt;br /&gt;
		if n &amp;gt; 2 then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n == 1 and params[1] ~= nil then&lt;br /&gt;
		return &amp;quot;1=&amp;quot; .. tostring(params[1])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		local k1, k2 = nil, nil&lt;br /&gt;
		for k in pairs(params) do&lt;br /&gt;
			if not k1 then&lt;br /&gt;
				k1 = k&lt;br /&gt;
			else&lt;br /&gt;
				k2 = k&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local a, b = tostring(k1), tostring(k2)&lt;br /&gt;
		if a &amp;gt; b then&lt;br /&gt;
			k1, k2 = k2, k1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return tostring(k1) .. &amp;quot;=&amp;quot; .. tostring(params[k1]) .. &amp;quot;&amp;amp;&amp;quot; .. tostring(k2) .. &amp;quot;=&amp;quot; .. tostring(params[k2])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function safeJsonEncode(obj)&lt;br /&gt;
	local ok, s = pcall(t_jsonEncode, obj)&lt;br /&gt;
	if ok and type(s) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(obj or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function expandCached(frame, title, params)&lt;br /&gt;
	local pk = fastParamsKey(params)&lt;br /&gt;
	local k&lt;br /&gt;
	if pk then&lt;br /&gt;
		k = tostring(title or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot; .. pk&lt;br /&gt;
	else&lt;br /&gt;
		k = tostring(title or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot; .. safeJsonEncode(params or {})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hit = cacheGet(EXPAND_CACHE, k)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return hit&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ok, res = pcall(function()&lt;br /&gt;
		return frame:expandTemplate{ title = title, args = params or {} }&lt;br /&gt;
	end)&lt;br /&gt;
	local out = ok and (res or &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	cachePut(EXPAND_CACHE, k, out)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSMW()&lt;br /&gt;
	return type(mw.smw) == &amp;quot;table&amp;quot; and type(mw.smw.set) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function escapeAttr(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	return s&lt;br /&gt;
		:gsub(&amp;quot;[\r\n\t]&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
		:gsub(&amp;quot;&amp;amp;&amp;quot;, &amp;quot;&amp;amp;amp;&amp;quot;)&lt;br /&gt;
		:gsub(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br /&gt;
		:gsub(&amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;gt;&amp;quot;)&lt;br /&gt;
		:gsub(&#039;&amp;quot;&#039;, &amp;quot;&amp;amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame)&lt;br /&gt;
	local A = {}&lt;br /&gt;
&lt;br /&gt;
	local function addArgs(src)&lt;br /&gt;
		if not src then return end&lt;br /&gt;
		for k, v in pairs(src) do&lt;br /&gt;
			if type(v) == &amp;quot;string&amp;quot; and v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				A[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	if parent and parent.args then&lt;br /&gt;
		addArgs(parent.args)&lt;br /&gt;
	end&lt;br /&gt;
	if frame and frame.args then&lt;br /&gt;
		addArgs(frame.args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return A&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitCSV(s, sep)&lt;br /&gt;
	if not s or s == &amp;quot;&amp;quot; then return {} end&lt;br /&gt;
	sep = sep or &amp;quot;,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if not s:find(sep, 1, true) then&lt;br /&gt;
		local one = t_trim(s)&lt;br /&gt;
		if one ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			return { one }&lt;br /&gt;
		end&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for part in t_gsplit(s, sep, true) do&lt;br /&gt;
		part = t_trim(part)&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(out, part)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Patch #1 : split littéral multi-caractères (ex: &amp;quot;⟭&amp;quot;)&lt;br /&gt;
local function splitByLiteral(s, sep, maxParts)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	sep = tostring(sep or &amp;quot;&amp;quot;)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return { s }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local n = 0&lt;br /&gt;
	local seplen = #sep&lt;br /&gt;
&lt;br /&gt;
	while true do&lt;br /&gt;
		local j = s:find(sep, i, true)&lt;br /&gt;
		if not j then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			out[n] = s:sub(i)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		n = n + 1&lt;br /&gt;
		out[n] = s:sub(i, j - 1)&lt;br /&gt;
		i = j + seplen&lt;br /&gt;
&lt;br /&gt;
		if maxParts and n &amp;gt;= maxParts then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			out[n] = s:sub(i)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSplit2( s, sep )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	sep = tostring( sep or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local i = s:find( sep, 1, true )&lt;br /&gt;
	if not i then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s:sub( 1, i - 1 ), s:sub( i + #sep )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkExtractItemsFromSerializedData( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Heuristique: si aucun séparateur, pas notre format&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral( raw, ITEM_SEP )&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs( blocks ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local page, rest = wkSplit2( block, FIELD_SEP )&lt;br /&gt;
			local title, warnings = wkSplit2( rest, FIELD_SEP )&lt;br /&gt;
&lt;br /&gt;
			page = t_trim( page )&lt;br /&gt;
&lt;br /&gt;
			if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				title = t_trim( title )&lt;br /&gt;
				warnings = t_trim( warnings )&lt;br /&gt;
&lt;br /&gt;
				if title == &amp;quot;&amp;quot; then&lt;br /&gt;
					title = page&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table_insert( items, {&lt;br /&gt;
					page = page,&lt;br /&gt;
					title = title,&lt;br /&gt;
					warnings = warnings&lt;br /&gt;
				} )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local TITLE_CACHE = cacheMake(600)&lt;br /&gt;
&lt;br /&gt;
local function titleNewCached(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	local hit = cacheGet(TITLE_CACHE, s)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return (hit ~= false) and hit or nil&lt;br /&gt;
	end&lt;br /&gt;
	local t = mw_title_new(s)&lt;br /&gt;
	cachePut(TITLE_CACHE, s, t or false)&lt;br /&gt;
	return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkDbKey(page)&lt;br /&gt;
	page = tostring(page or &amp;quot;&amp;quot;)&lt;br /&gt;
	if page == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not page:find(&amp;quot;:&amp;quot;, 1, true) and not page:find(&amp;quot;[%[%]{}|#&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return page:gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local t = titleNewCached(page)&lt;br /&gt;
	if not t then&lt;br /&gt;
		return page:gsub(&amp;quot;%s&amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return t.prefixedText:gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkEncodePathSegment(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;%%&amp;quot;, &amp;quot;%%25&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;%?&amp;quot;, &amp;quot;%%3F&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;#&amp;quot;, &amp;quot;%%23&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;/&amp;quot;, &amp;quot;%%2F&amp;quot;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataPath(formName, pageTitle)&lt;br /&gt;
	local form = wkEncodePathSegment(wkDbKey(formName))&lt;br /&gt;
	local page = wkEncodePathSegment(wkDbKey(pageTitle))&lt;br /&gt;
	return &amp;quot;Special:AddData/&amp;quot; .. form .. &amp;quot;/&amp;quot; .. page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataLink( formName, pageTitle, linktext, tooltip, opts )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle = tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = ( type( opts ) == &amp;quot;table&amp;quot; ) and opts or {}&lt;br /&gt;
&lt;br /&gt;
	local target = wkAddDataPath( formName, pageTitle )&lt;br /&gt;
&lt;br /&gt;
	local lt = linktext&lt;br /&gt;
	if lt == nil or lt == &amp;quot;&amp;quot; then&lt;br /&gt;
		lt = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local classes = &amp;quot;wk-adddata-link navigation-not-searchable noprint&amp;quot;&lt;br /&gt;
	if opts.editButton == true then&lt;br /&gt;
		classes = classes .. &amp;quot; bouton-modifier&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;%s&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			classes,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			target,&lt;br /&gt;
			lt&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format(&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		classes,&lt;br /&gt;
		target,&lt;br /&gt;
		lt&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataEditLink( formName, pageTitle, linktext, tooltip )&lt;br /&gt;
	return addDataLink( formName, pageTitle, linktext, tooltip, { editButton = true } )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryPath(formName)&lt;br /&gt;
	local form = wkEncodePathSegment(wkDbKey(formName))&lt;br /&gt;
	return &amp;quot;Special:RunQuery/&amp;quot; .. form&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryHtmlTagButton( formName, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	tooltip = normalizeTooltipText( tooltip )&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkRunQueryPath( formName )&lt;br /&gt;
	local href	= tostring( uri_localUrl( title, query ) )&lt;br /&gt;
&lt;br /&gt;
	local content = &amp;quot;＋ &amp;quot; .. label&lt;br /&gt;
&lt;br /&gt;
	return F:preprocess(&lt;br /&gt;
		&#039;&amp;lt;htmltag tagname=&amp;quot;a&amp;quot;&#039;&lt;br /&gt;
		.. &#039; href=&amp;quot;javascript:void(0)&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-href=&amp;quot;&#039; .. escapeAttr( href ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; class=&amp;quot;wk-btn__a wk-js-nav&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. content&lt;br /&gt;
		.. &#039;&amp;lt;/htmltag&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function absUrlFromTitle(title, q)&lt;br /&gt;
	local ok, url = pcall(mw_uri_fullUrl, title, q)&lt;br /&gt;
	if ok and url then&lt;br /&gt;
		return tostring(url)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local server = &amp;quot;&amp;quot;&lt;br /&gt;
	if mw.site and mw.site.server then&lt;br /&gt;
		server = tostring(mw.site.server or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if mw_util_getUrl then&lt;br /&gt;
		return server .. tostring(mw_util_getUrl(title, q))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return server .. tostring(uri_localUrl(title, q))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function runQueryLink(opts)&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local formName	= tostring(opts.form or &amp;quot;&amp;quot;)&lt;br /&gt;
	local fieldName	= tostring(opts.field or &amp;quot;&amp;quot;)&lt;br /&gt;
	local value		= tostring(opts.value or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or fieldName == &amp;quot;&amp;quot; or value == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= tostring(opts._title or &amp;quot;&amp;quot;)&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		title = wkRunQueryPath(formName)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q		= {}&lt;br /&gt;
	local qkey	= tostring(opts._qkey or &amp;quot;&amp;quot;)&lt;br /&gt;
	if qkey == &amp;quot;&amp;quot; then&lt;br /&gt;
		qkey = formName .. &amp;quot;[&amp;quot; .. fieldName .. &amp;quot;]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	q[qkey] = value&lt;br /&gt;
&lt;br /&gt;
	local extra = opts.extra&lt;br /&gt;
	if type(extra) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for k, v in pairs(extra) do&lt;br /&gt;
			local kk = tostring(k or &amp;quot;&amp;quot;)&lt;br /&gt;
			if kk ~= &amp;quot;&amp;quot; and v ~= nil then&lt;br /&gt;
				local vv = tostring(v)&lt;br /&gt;
				if vv ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					if kk:find(&amp;quot;%[&amp;quot;, 1, true) then&lt;br /&gt;
						q[kk] = vv&lt;br /&gt;
					else&lt;br /&gt;
						q[formName .. &amp;quot;[&amp;quot; .. kk .. &amp;quot;]&amp;quot;] = vv&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	q[&amp;quot;_run&amp;quot;] = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local url	= absUrlFromTitle(title, q)&lt;br /&gt;
	local label	= tostring(opts.label or value)&lt;br /&gt;
	local tt		= normalizeTooltipText(tostring(opts.tooltip or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	local link = &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link masquer-externe&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr(tt),&lt;br /&gt;
			link&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string.format(&#039;&amp;lt;span class=&amp;quot;wk-adddata-link&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;, link)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function listBreaker()&lt;br /&gt;
	return &amp;quot;\n\n&amp;lt;!--__WD_LIST_BREAK__--&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : props refs (i18n via PF) — comme Debate&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function pfProp( PF, k, fallback )&lt;br /&gt;
	local v = PF and PF[ k ] or &amp;quot;&amp;quot;&lt;br /&gt;
	v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v&lt;br /&gt;
	end&lt;br /&gt;
	return fallback or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwPropRef( PF, key )&lt;br /&gt;
	--	Utilise PF.prop_* (i18n), fallback sur tes noms existants&lt;br /&gt;
	if key == &amp;quot;authors&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_author&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;article_name&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_article_name&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;work_name&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_work_name&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;publishing_house&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_publishing_house&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;place_of_publication&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_place_of_publication&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW batch : queue + flush unique&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAdd(pending, key, val, multi)&lt;br /&gt;
	if not pending or not key or key == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(val) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		val = t_trim(val)&lt;br /&gt;
		if val == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cur = pending[key]&lt;br /&gt;
&lt;br /&gt;
	if multi then&lt;br /&gt;
		if cur == nil then&lt;br /&gt;
			pending[key] = (type(val) == &amp;quot;table&amp;quot;) and val or { val }&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type(cur) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
			cur = { cur }&lt;br /&gt;
			pending[key] = cur&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type(val) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, x in ipairs(val) do&lt;br /&gt;
				if x ~= nil then&lt;br /&gt;
					cur[#cur + 1] = x&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur[#cur + 1] = val&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pending[key] = val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Minibandeaux (summary-warnings) — rendu natif (sans modèle)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local JUSTIFICATION_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;justifications_to_reorganize&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OBJECTION_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;objections_to_reorganize&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local QUOTE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;quote_too_short&amp;quot;,&lt;br /&gt;
	&amp;quot;quote_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;quote_ref_incomplete&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local REFERENCE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;reference_quality_insufficient&amp;quot;,&lt;br /&gt;
	&amp;quot;reference_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;dead_link&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local SUMMARY_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;summary_disadvantageous&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_to_be_written&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_to_separate&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_style_to_review&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local SUMMARY_WARNING_ALIASES = nil&lt;br /&gt;
&lt;br /&gt;
local DISPLAYED_TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;displayed_title_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_disadvantageous&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function subMsg( lang, key, ... )&lt;br /&gt;
	return L( lang, &amp;quot;subsection_banners&amp;quot;, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryAliases( lang )&lt;br /&gt;
	local a = {}&lt;br /&gt;
&lt;br /&gt;
	for _, key in ipairs( SUMMARY_WARNING_BANNER_KEYS ) do&lt;br /&gt;
		local alias = subMsg( lang, key .. &amp;quot;_alias&amp;quot; )&lt;br /&gt;
		alias = t_trim( tostring( alias or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if alias ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			for _, one in ipairs( splitCSV( alias, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				one = t_trim( tostring( one or &amp;quot;&amp;quot; ) )&lt;br /&gt;
				if one ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					a[ one ] = key&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return a&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Résolveur générique : label -&amp;gt; key, alias -&amp;gt; key, ou key directe si autorisée&lt;br /&gt;
local function resolveKeyFromLookup(raw, lookup, allowedKeys, aliases)&lt;br /&gt;
	raw = t_trim(tostring(raw or &amp;quot;&amp;quot;))&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 1) Match par label i18n&lt;br /&gt;
	local k = (lookup and lookup[raw]) or &amp;quot;&amp;quot;&lt;br /&gt;
	if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 2) Match par alias (optionnel)&lt;br /&gt;
	if aliases and aliases[raw] then&lt;br /&gt;
		return aliases[raw]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 3) Match direct si l&#039;utilisateur a mis la key brute&lt;br /&gt;
	if allowedKeys then&lt;br /&gt;
		for _, kk in ipairs(allowedKeys) do&lt;br /&gt;
			if raw == kk then&lt;br /&gt;
				return kk&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubsectionBanner( pv, lang, key, opts, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local isReorg		= opts.reorg == true&lt;br /&gt;
	local icon			= tostring( opts.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local linkHtml		= &amp;quot;&amp;quot;&lt;br /&gt;
	local title			= &amp;quot;&amp;quot;&lt;br /&gt;
	local text			= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	--	Lien de réorganisation (optionnel) — AddData (même source que le H2)&lt;br /&gt;
	if isReorg then&lt;br /&gt;
		local formName	= tostring( opts.form or &amp;quot;&amp;quot; )&lt;br /&gt;
		local tooltip	= tostring( opts.tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
		local linkLabel	= tostring( opts.link_label or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		if linkLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
			linkLabel = L( lang, &amp;quot;text&amp;quot;, &amp;quot;reorganize_link_label&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if formName ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linkHtml = addDataLink( formName, pv.rawTitle, linkLabel, tooltip )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Titre/texte (mêmes messages i18n que tes fonctions actuelles)&lt;br /&gt;
	if isReorg and linkHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot; )&lt;br /&gt;
		title = t_trim( tostring( title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			title = title .. &amp;quot;&amp;amp;nbsp;&amp;quot; .. linkHtml&lt;br /&gt;
		else&lt;br /&gt;
			title = linkHtml&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	text = subMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-avertissement wk-icon-before wk-icon-sensible&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;smw-highlighter smwttinline wk-icon-before wk-icon-help mw-no-invert&amp;quot; data-state=&amp;quot;inline&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;smwttcontent&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local cat = subMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseBiblioMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find(FIELD_SEP, 1, true) and not raw:find(ITEM_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral(raw, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 12 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				authors		= f[1],&lt;br /&gt;
				article		= f[2],&lt;br /&gt;
				work		= f[3],&lt;br /&gt;
				volume		= f[4],&lt;br /&gt;
				number		= f[5],&lt;br /&gt;
				location	= f[6],&lt;br /&gt;
				page		= f[7],&lt;br /&gt;
				publisher	= f[8],&lt;br /&gt;
				place		= f[9],&lt;br /&gt;
				date		= f[10],&lt;br /&gt;
				link		= f[11],&lt;br /&gt;
				warnings	= f[12]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWeblioMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find(FIELD_SEP, 1, true) and not raw:find(ITEM_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral(raw, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 6 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				page		= f[1],&lt;br /&gt;
				site		= f[2],&lt;br /&gt;
				link		= f[3],&lt;br /&gt;
				authors		= f[4],&lt;br /&gt;
				date		= f[5],&lt;br /&gt;
				warnings	= f[6]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseVideoMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find(FIELD_SEP, 1, true) and not raw:find(ITEM_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral(raw, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 4 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				title		= f[1],&lt;br /&gt;
				link		= f[2],&lt;br /&gt;
				authors		= f[3],&lt;br /&gt;
				warnings	= f[4]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderReferenceItemBanners(itemWarnings, pv, lang, cats, out)&lt;br /&gt;
	local warnsRef = t_trim(tostring(itemWarnings or &amp;quot;&amp;quot;))&lt;br /&gt;
	if warnsRef == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup(lang, REFERENCE_WARNING_BANNER_KEYS)&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs(splitCSV(warnsRef, &amp;quot;,&amp;quot;)) do&lt;br /&gt;
		local key = resolveKeyFromLookup(x, lookup, REFERENCE_WARNING_BANNER_KEYS)&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(out, renderSubsectionBanner(pv, lang, key, nil, cats))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneBiblioLi( item, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		authors = PF.unknown_author&lt;br /&gt;
	end&lt;br /&gt;
	out[ #out + 1 ] = authors&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local k = smwPending and smwPropRef( PF, &amp;quot;authors&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			smwQueueAdd( smwPending, k, authors, true )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local article = t_trim( item.article or &amp;quot;&amp;quot; )&lt;br /&gt;
	local work = t_trim( item.work or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		if smwPending then&lt;br /&gt;
			local ka = smwPropRef( PF, &amp;quot;article_name&amp;quot; )&lt;br /&gt;
			if ka ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, ka, article, true )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local kw = smwPropRef( PF, &amp;quot;work_name&amp;quot; )&lt;br /&gt;
			if kw ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, kw, work, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « [&amp;quot; .. link .. &amp;quot; &amp;quot; .. article .. &amp;quot;] »&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « &amp;quot; .. article .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local volume = t_trim( item.volume or &amp;quot;&amp;quot; )&lt;br /&gt;
	if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. volume&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local number = t_trim( item.number or &amp;quot;&amp;quot; )&lt;br /&gt;
	if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, n°&amp;quot; .. number&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local location = t_trim( item.location or &amp;quot;&amp;quot; )&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. location&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local page = t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, p.&amp;quot; .. page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local publisher = t_trim( item.publisher or &amp;quot;&amp;quot; )&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. publisher&lt;br /&gt;
		do&lt;br /&gt;
			local kp = smwPending and smwPropRef( PF, &amp;quot;publishing_house&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
			if kp ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, kp, publisher, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local place = t_trim( item.place or &amp;quot;&amp;quot; )&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. place&lt;br /&gt;
		do&lt;br /&gt;
			local kp = smwPending and smwPropRef( PF, &amp;quot;place_of_publication&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
			if kp ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, kp, place, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local date = t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners(item.warnings, pv, lang, cats, out)&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneWeblioLi( item, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local page		= t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local site		= t_trim( item.site or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link		= t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local date		= t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors	= t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local k = smwPending and smwPropRef( PF, &amp;quot;authors&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; and authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			smwQueueAdd( smwPending, k, authors, true )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local label = &amp;quot;&amp;quot;&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = page&lt;br /&gt;
		elseif site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = site&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; and label ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = (page ~= &amp;quot;&amp;quot; and page) or site&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; and page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. site .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners(item.warnings, pv, lang, cats, out)&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneVideoLi( item, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local title = t_trim( item.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local k = smwPending and smwPropRef( PF, &amp;quot;authors&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; and authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			smwQueueAdd( smwPending, k, authors, true )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if link ~= &amp;quot;&amp;quot; and title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. title .. &amp;quot;]&amp;quot;&lt;br /&gt;
	elseif title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners(item.warnings, pv, lang, cats, out)&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderReferencesFromRaw( rawB, rawW, rawV, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local b, w, v = {}, {}, {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkParseBiblioMarkers( rawB ) ) do&lt;br /&gt;
		b[ #b + 1 ] = wkRenderOneBiblioLi( it, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	end&lt;br /&gt;
	for _, it in ipairs( wkParseWeblioMarkers( rawW ) ) do&lt;br /&gt;
		w[ #w + 1 ] = wkRenderOneWeblioLi( it, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	end&lt;br /&gt;
	for _, it in ipairs( wkParseVideoMarkers( rawV ) ) do&lt;br /&gt;
		v[ #v + 1 ] = wkRenderOneVideoLi( it, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #b == 0 and #w == 0 and #v == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = table_concat( {&lt;br /&gt;
		table_concat( b, &amp;quot;\n&amp;quot; ),&lt;br /&gt;
		table_concat( w, &amp;quot;\n&amp;quot; ),&lt;br /&gt;
		table_concat( v, &amp;quot;\n&amp;quot; )&lt;br /&gt;
	}, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	out = t_trim( out )&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	htmltag : générateur (mode qui marche)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function tagHtmlTag(tagName, content, attrs)&lt;br /&gt;
	local src = &amp;quot;{{#tag:htmltag|&amp;quot; .. (content or &amp;quot;&amp;quot;) .. &amp;quot;|tagname=&amp;quot; .. tostring(tagName)&lt;br /&gt;
&lt;br /&gt;
	if attrs then&lt;br /&gt;
		local keys = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
		for k in pairs(attrs) do&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			keys[n] = k&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			table_sort(keys)&lt;br /&gt;
			for i = 1, n do&lt;br /&gt;
				local k = keys[i]&lt;br /&gt;
				src = src .. &amp;quot;|&amp;quot; .. tostring(k) .. &amp;quot;=&amp;quot; .. tostring(attrs[k])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	src = src .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	return F:preprocess(src)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : cache fin (par rendu) — bornés (Patch #6)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SMW_ASK_CACHE = cacheMake(250)&lt;br /&gt;
local SMW_TITLES_CACHE = cacheMake(250)&lt;br /&gt;
&lt;br /&gt;
--	Patch #2 : clé cache non-collidable (length-prefix)&lt;br /&gt;
local function smwKeyFromArray(q)&lt;br /&gt;
	if type(q) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		local s = tostring(q or &amp;quot;&amp;quot;)&lt;br /&gt;
		return tostring(#s) .. &amp;quot;:&amp;quot; .. s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local idx = {}&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for k in pairs(q) do&lt;br /&gt;
		if type(k) == &amp;quot;number&amp;quot; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			idx[n] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_sort(idx)&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	for i = 1, n do&lt;br /&gt;
		local v = tostring(q[idx[i]] or &amp;quot;&amp;quot;)&lt;br /&gt;
		parts[i] = tostring(#v) .. &amp;quot;:&amp;quot; .. v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(parts, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwSetSafe(props)&lt;br /&gt;
	if not mw.smw or type(mw.smw.set) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall(mw.smw.set, props)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Cache négatif (sentinelle false)&lt;br /&gt;
local function smwAskSafe(q)&lt;br /&gt;
	if not hasSMW() or type(mw.smw.ask) ~= &amp;quot;function&amp;quot; then return nil end&lt;br /&gt;
&lt;br /&gt;
	local k = smwKeyFromArray(q)&lt;br /&gt;
	local hit = cacheGet(SMW_ASK_CACHE, k)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return (hit ~= false) and hit or nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ok, res = pcall(function() return mw.smw.ask(q) end)&lt;br /&gt;
	if ok then&lt;br /&gt;
		cachePut(SMW_ASK_CACHE, k, res)&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cachePut(SMW_ASK_CACHE, k, false)&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bloc d’en-tête / variables de page (cache key-safe)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function computePageVars()&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	local rawTitle = title.prefixedText&lt;br /&gt;
	local encoded = mw_uri_encode(rawTitle, &amp;quot;WIKI&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local pageUrl = &amp;quot;&amp;quot;&lt;br /&gt;
	do&lt;br /&gt;
		local ok, u = pcall(mw_uri_fullUrl, title.prefixedText)&lt;br /&gt;
		pageUrl = (ok and u) and tostring(u) or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pageId = tostring(title.id or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		title = title,&lt;br /&gt;
		rawTitle = rawTitle,&lt;br /&gt;
		encoded = encoded,&lt;br /&gt;
		pageUrl = pageUrl,&lt;br /&gt;
		pageId = pageId&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPageCreation(pv, args)&lt;br /&gt;
	local v = args and args[&amp;quot;creation-date&amp;quot;]&lt;br /&gt;
	v = (type(v) == &amp;quot;string&amp;quot;) and t_trim(v) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v .. &amp;quot;T00:00:00Z&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Cache SMW (parents) + cartes pré-rendues&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeSMWCache()&lt;br /&gt;
	return {&lt;br /&gt;
		debatsPour = nil,&lt;br /&gt;
		debatsContre = nil,&lt;br /&gt;
		justifs = nil,&lt;br /&gt;
		objs = nil,&lt;br /&gt;
&lt;br /&gt;
		debatsTousFinal = nil,&lt;br /&gt;
&lt;br /&gt;
		debatCardsTous = nil,&lt;br /&gt;
		debatCardsPour = nil,&lt;br /&gt;
		debatCardsContre = nil,&lt;br /&gt;
		argCardsJustifs = nil,&lt;br /&gt;
		argCardsObjs = nil,&lt;br /&gt;
&lt;br /&gt;
		breadcrumbChainsFinal = nil,&lt;br /&gt;
		parentDebatesFinal = nil&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Titre : avertissements + catégories (legacy)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderTitleWarnings(pv, cats, lang)&lt;br /&gt;
	local title = pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for w in t_gsplit(title, &amp;quot;%s+&amp;quot;) do&lt;br /&gt;
		w = t_trim(w)&lt;br /&gt;
		if w ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			if n &amp;gt;= 3 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n &amp;gt; 0 and n &amp;lt; 3 then&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;warningbox cdx-message cdx-message--block cdx-message--warning navigation-not-searchable&amp;quot;&amp;gt;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
			.. L(lang, &amp;quot;text&amp;quot;, &amp;quot;title_too_short_msg&amp;quot;)&lt;br /&gt;
			.. &#039; [[Special:MovePage/&#039; .. pv.encoded .. &#039;|&#039; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;rename_page_label&amp;quot;) .. &#039;]]&#039;&lt;br /&gt;
			.. &#039; &#039; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;if_needed_msg&amp;quot;)&lt;br /&gt;
			.. &#039;\&#039;\&#039;\&#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;title_very_short&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if title:sub(-1) == &amp;quot;.&amp;quot; and title:sub(-4) ~= &amp;quot;etc.&amp;quot; then&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;warningbox cdx-message cdx-message--block cdx-message--warning navigation-not-searchable&amp;quot;&amp;gt;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
			.. L(lang, &amp;quot;text&amp;quot;, &amp;quot;title_ends_with_dot_msg&amp;quot;)&lt;br /&gt;
			.. &#039; [[Special:MovePage/&#039; .. pv.encoded .. &#039;|&#039; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;rename_page_label&amp;quot;) .. &#039;]]&#039;&lt;br /&gt;
			.. &#039;\&#039;\&#039;\&#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;title_ends_with_dot&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if lang == &amp;quot;fr&amp;quot; then&lt;br /&gt;
		local prefix3 = title:sub(1, 3)&lt;br /&gt;
		local prefix4 = title:sub(1, 4)&lt;br /&gt;
		local prefix5 = title:sub(1, 5)&lt;br /&gt;
		local prefix6 = title:sub(1, 6)&lt;br /&gt;
		local prefix10 = title:sub(1, 10)&lt;br /&gt;
		local prefix13 = title:sub(1, 13)&lt;br /&gt;
&lt;br /&gt;
		if prefix3 == &amp;quot;Ça&amp;quot; then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:Titres d&#039;arguments commençant par \&amp;quot;Cela\&amp;quot;]]&amp;quot;)&lt;br /&gt;
		elseif prefix3 == &amp;quot;Sa&amp;quot; then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:Titres d&#039;arguments commençant par \&amp;quot;Sa\&amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map4 = {&lt;br /&gt;
			[&amp;quot;Ces&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Ces\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Cet&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Cet\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Ils&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Ils\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Ses&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Ses\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Son&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Son\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map4[prefix4] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map4[prefix4] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map5 = {&lt;br /&gt;
			[&amp;quot;Cela&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Cela\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Elle&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Elle\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Leur&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Leur\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Leurs&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Leurs\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Non,&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Non\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Nous&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Nous\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Oui,&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Oui\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map5[prefix5] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map5[prefix5] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map6 = {&lt;br /&gt;
			[&amp;quot;Cette&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Cette\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Elles&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Elles\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map6[prefix6] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map6[prefix6] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map10 = {&lt;br /&gt;
			[&amp;quot;C&#039;est faux&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;C&#039;est faux\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Hors-sujet&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Hors-sujet\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map10[prefix10] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map10[prefix10] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if prefix13 == &amp;quot;Au contraire,&amp;quot; then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:Titres d&#039;arguments commençant par \&amp;quot;Au contraire\&amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : helpers (avec cache fin)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function uniqList(list)&lt;br /&gt;
	local out, seen = {}, {}&lt;br /&gt;
	for _, x in ipairs(list or {}) do&lt;br /&gt;
		x = t_trim(tostring(x or &amp;quot;&amp;quot;))&lt;br /&gt;
		if x ~= &amp;quot;&amp;quot; and not seen[x] then&lt;br /&gt;
			seen[x] = true&lt;br /&gt;
			table_insert(out, x)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwAskTitles(conditions, limit)&lt;br /&gt;
	limit = tonumber(limit) or 200&lt;br /&gt;
&lt;br /&gt;
	local q = {}&lt;br /&gt;
	for _, c in ipairs(conditions or {}) do&lt;br /&gt;
		table_insert(q, c)&lt;br /&gt;
	end&lt;br /&gt;
	table_insert(q, &amp;quot;limit=&amp;quot; .. tostring(limit))&lt;br /&gt;
	table_insert(q, &amp;quot;link=none&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local ck = &amp;quot;TITLES\n&amp;quot; .. smwKeyFromArray(q)&lt;br /&gt;
	local hit = cacheGet(SMW_TITLES_CACHE, ck)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return hit&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(q)&lt;br /&gt;
	if type(res) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		cachePut(SMW_TITLES_CACHE, ck, {})&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out, seen = {}, {}&lt;br /&gt;
	for _, row in ipairs(res) do&lt;br /&gt;
		local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
		if type(ft) == &amp;quot;string&amp;quot; and ft ~= &amp;quot;&amp;quot; and not seen[ft] then&lt;br /&gt;
			seen[ft] = true&lt;br /&gt;
			table_insert(out, ft)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cachePut(SMW_TITLES_CACHE, ck, out)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	(Parents) : ask unifié + robuste + fallback&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function normTitle(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;_&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
	return t_trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
canonicalTitle = function(s)&lt;br /&gt;
	s = t_trim(tostring(s or &amp;quot;&amp;quot;))&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
	s = s:gsub(&amp;quot;^:%s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;^%[%[%s*&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%s*%]%]$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	s = (s:match(&amp;quot;^([^%]|]+)%|&amp;quot;) or s)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
&lt;br /&gt;
	local t = titleNewCached(s)&lt;br /&gt;
	return t and t.prefixedText or s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Patch #5 : sécuriser les titres utilisés dans les requêtes SMW&lt;br /&gt;
local function smwSafeTitle(s)&lt;br /&gt;
	s = canonicalTitle(s)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	s = s:gsub(&amp;quot;#.*$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if s:find(&amp;quot;[%[%]{}|&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function containsTitle(val, target)&lt;br /&gt;
	target = normTitle(target)&lt;br /&gt;
	if target == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function checkOne(x)&lt;br /&gt;
		if x == nil then return false end&lt;br /&gt;
&lt;br /&gt;
		if type(x) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			return normTitle(x) == target&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			local ft = x.fulltext or x.page or x.name or x.title&lt;br /&gt;
			if type(ft) == &amp;quot;string&amp;quot; and normTitle(ft) == target then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
			for _, y in ipairs(x) do&lt;br /&gt;
				if checkOne(y) then&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return checkOne(val)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureDebateParents(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.debatsPour ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argTitle = smwSafeTitle(pv.rawTitle)&lt;br /&gt;
&lt;br /&gt;
	local propPro = tostring(PF.prop_arg_pro or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propCon = tostring(PF.prop_arg_con or &amp;quot;&amp;quot;)&lt;br /&gt;
	if propPro == &amp;quot;&amp;quot; or propCon == &amp;quot;&amp;quot; or argTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		cache.debatsPour = {}&lt;br /&gt;
		cache.debatsContre = {}&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q = {&lt;br /&gt;
		&amp;quot;([[&amp;quot; .. propPro .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] OR [[&amp;quot; .. propCon .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] )&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propPro .. &amp;quot;=pro&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propCon .. &amp;quot;=con&amp;quot;,&lt;br /&gt;
		&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
		&amp;quot;link=none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(q)&lt;br /&gt;
	local debatsPour, debatsContre = {}, {}&lt;br /&gt;
	local seenP, seenC = {}, {}&lt;br /&gt;
&lt;br /&gt;
	if type(res) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for _, row in ipairs(res) do&lt;br /&gt;
			local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
			if type(ft) == &amp;quot;string&amp;quot; and ft ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				if containsTitle(row.pro, argTitle) and not seenP[ft] then&lt;br /&gt;
					seenP[ft] = true&lt;br /&gt;
					table_insert(debatsPour, ft)&lt;br /&gt;
				end&lt;br /&gt;
				if containsTitle(row.con, argTitle) and not seenC[ft] then&lt;br /&gt;
					seenC[ft] = true&lt;br /&gt;
					table_insert(debatsContre, ft)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #debatsPour == 0 and #debatsContre == 0 then&lt;br /&gt;
		debatsPour = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propPro .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
		debatsContre = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propCon .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.debatsPour = debatsPour&lt;br /&gt;
	cache.debatsContre = debatsContre&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.justifs ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argTitle = smwSafeTitle(pv.rawTitle)&lt;br /&gt;
&lt;br /&gt;
	local propJustif = tostring(PF.prop_justif or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propObj = tostring(PF.prop_obj or &amp;quot;&amp;quot;)&lt;br /&gt;
	if propJustif == &amp;quot;&amp;quot; or propObj == &amp;quot;&amp;quot; or argTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		cache.justifs = {}&lt;br /&gt;
		cache.objs = {}&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q = {&lt;br /&gt;
		&amp;quot;([[&amp;quot; .. propJustif .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] OR [[&amp;quot; .. propObj .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] )&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propJustif .. &amp;quot;=justif&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propObj .. &amp;quot;=obj&amp;quot;,&lt;br /&gt;
		&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
		&amp;quot;link=none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(q)&lt;br /&gt;
	local justifs, objs = {}, {}&lt;br /&gt;
	local seenJ, seenO = {}, {}&lt;br /&gt;
&lt;br /&gt;
	if type(res) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for _, row in ipairs(res) do&lt;br /&gt;
			local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
			if type(ft) == &amp;quot;string&amp;quot; and ft ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				if containsTitle(row.justif, argTitle) and not seenJ[ft] then&lt;br /&gt;
					seenJ[ft] = true&lt;br /&gt;
					table_insert(justifs, ft)&lt;br /&gt;
				end&lt;br /&gt;
				if containsTitle(row.obj, argTitle) and not seenO[ft] then&lt;br /&gt;
					seenO[ft] = true&lt;br /&gt;
					table_insert(objs, ft)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #justifs == 0 and #objs == 0 then&lt;br /&gt;
		justifs = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propJustif .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
		objs = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propObj .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.justifs = justifs&lt;br /&gt;
	cache.objs = objs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Fil d’Ariane : longueur (byte-safe, sans Unicode libs)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function breadcrumbLenByteSafe(ch)&lt;br /&gt;
	if type(ch) ~= &amp;quot;string&amp;quot; or ch == &amp;quot;&amp;quot; then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sep = &amp;quot;⟭&amp;quot;&lt;br /&gt;
	local seplen = 3&lt;br /&gt;
	local n = 0&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local Ls = #ch&lt;br /&gt;
&lt;br /&gt;
	local function trimAscii(s)&lt;br /&gt;
		return (tostring(s or &amp;quot;&amp;quot;):match(&amp;quot;^%s*(.-)%s*$&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	while i &amp;lt;= Ls + 1 do&lt;br /&gt;
		local j = ch:find(sep, i, true)&lt;br /&gt;
		local part&lt;br /&gt;
		if j then&lt;br /&gt;
			part = ch:sub(i, j - 1)&lt;br /&gt;
			i = j + seplen&lt;br /&gt;
		else&lt;br /&gt;
			part = ch:sub(i)&lt;br /&gt;
			i = Ls + 2&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if trimAscii(part) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			if n &amp;gt;= 6 then&lt;br /&gt;
				return n&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Débats parents : calcul final&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function ensureDebateParentsFinal(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.debatsTousFinal ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local final = {}&lt;br /&gt;
&lt;br /&gt;
	ensureDebateParents(pv, cache, PF)&lt;br /&gt;
	for _, d in ipairs(cache.debatsPour or {}) do&lt;br /&gt;
		table_insert(final, canonicalTitle(d))&lt;br /&gt;
	end&lt;br /&gt;
	for _, d in ipairs(cache.debatsContre or {}) do&lt;br /&gt;
		table_insert(final, canonicalTitle(d))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasSMW() then&lt;br /&gt;
		ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
		local propBreadcrumb   = tostring(PF.prop_breadcrumb or &amp;quot;&amp;quot;)&lt;br /&gt;
		local propParentDebate = tostring(PF.prop_parent_debate or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if propBreadcrumb ~= &amp;quot;&amp;quot; and propParentDebate ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local parents = {}&lt;br /&gt;
			for _, a in ipairs(cache.justifs or {}) do table_insert(parents, canonicalTitle(a)) end&lt;br /&gt;
			for _, a in ipairs(cache.objs or {}) do table_insert(parents, canonicalTitle(a)) end&lt;br /&gt;
			parents = uniqList(parents)&lt;br /&gt;
&lt;br /&gt;
			if #parents &amp;gt; 0 then&lt;br /&gt;
				local conds = {}&lt;br /&gt;
				for _, t in ipairs(parents) do&lt;br /&gt;
					local safe = smwSafeTitle(t)&lt;br /&gt;
					if safe ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						table_insert(conds, &amp;quot;[[&amp;quot; .. safe .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if #conds &amp;gt; 0 then&lt;br /&gt;
					local q = {&lt;br /&gt;
						&amp;quot;(&amp;quot; .. table_concat(conds, &amp;quot; OR &amp;quot;) .. &amp;quot;)&amp;quot;,&lt;br /&gt;
						&amp;quot;?&amp;quot; .. propBreadcrumb .. &amp;quot;=chain&amp;quot;,&lt;br /&gt;
						&amp;quot;?&amp;quot; .. propParentDebate .. &amp;quot;=pdeb&amp;quot;,&lt;br /&gt;
						&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
						&amp;quot;link=none&amp;quot;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					local res = smwAskSafe(q)&lt;br /&gt;
					if type(res) == &amp;quot;table&amp;quot; then&lt;br /&gt;
						for _, row in ipairs(res) do&lt;br /&gt;
							local chain = row.chain&lt;br /&gt;
							local okLen = false&lt;br /&gt;
&lt;br /&gt;
							if type(chain) == &amp;quot;string&amp;quot; then&lt;br /&gt;
								local n = breadcrumbLenByteSafe(chain)&lt;br /&gt;
								okLen = (n &amp;gt; 0 and n &amp;lt; 6)&lt;br /&gt;
							elseif type(chain) == &amp;quot;table&amp;quot; then&lt;br /&gt;
								for _, ch in ipairs(chain) do&lt;br /&gt;
									if type(ch) == &amp;quot;string&amp;quot; then&lt;br /&gt;
										local n = breadcrumbLenByteSafe(ch)&lt;br /&gt;
										if n &amp;gt; 0 and n &amp;lt; 6 then&lt;br /&gt;
											okLen = true&lt;br /&gt;
											break&lt;br /&gt;
										end&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
&lt;br /&gt;
							if okLen then&lt;br /&gt;
								local pdeb = row.pdeb&lt;br /&gt;
								if type(pdeb) == &amp;quot;string&amp;quot; and t_trim(pdeb) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
									table_insert(final, canonicalTitle(pdeb))&lt;br /&gt;
								elseif type(pdeb) == &amp;quot;table&amp;quot; then&lt;br /&gt;
									for _, x in ipairs(pdeb) do&lt;br /&gt;
										if type(x) == &amp;quot;string&amp;quot; and t_trim(x) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
											table_insert(final, canonicalTitle(x))&lt;br /&gt;
										elseif type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
											local ft = x.fulltext or x.page or x[1]&lt;br /&gt;
											if type(ft) == &amp;quot;string&amp;quot; and t_trim(ft) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
												table_insert(final, canonicalTitle(ft))&lt;br /&gt;
											end&lt;br /&gt;
										end&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.debatsTousFinal = uniqList(final)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Parents : cartes (normalisation + rendu 100% Lua) + cache (borné)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function normalizeTitleForCard(s)&lt;br /&gt;
	s = t_trim(tostring(s or &amp;quot;&amp;quot;))&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if s:byte(1) ~= 58 and not s:find(&amp;quot;[%[&amp;lt;&amp;amp;]&amp;quot;) then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	s = s:gsub(&amp;quot;^:%s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local target = s:match(&amp;quot;^%[%[([^%]|]+)%|.-%]%]$&amp;quot;)&lt;br /&gt;
			or s:match(&amp;quot;^%[%[([^%]]+)%]%]$&amp;quot;)&lt;br /&gt;
		if target and target ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			s = target&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	s = t_trim(s):gsub(&amp;quot;^:%s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if s:find(&amp;quot;&amp;amp;&amp;quot;, 1, true) then&lt;br /&gt;
		s = s&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;nbsp;&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;#160;&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;amp;&amp;quot;, &amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;quot;&amp;quot;, &#039;&amp;quot;&#039;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;lt;&amp;quot;, &amp;quot;&amp;lt;&amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;gt;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return t_trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local URLENC_CACHE = cacheMake(2000)&lt;br /&gt;
&lt;br /&gt;
local function mwUrlEncodePF(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	local hit = cacheGet(URLENC_CACHE, s)&lt;br /&gt;
	if hit ~= nil then return hit end&lt;br /&gt;
&lt;br /&gt;
	local out = mw_uri_encode(s, &amp;quot;QUERY&amp;quot;)&lt;br /&gt;
	out = out:gsub(&amp;quot;%%20&amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	cachePut(URLENC_CACHE, s, out)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function argumentMapCardLua(targetTitle, currentArgTitle, typeValue)&lt;br /&gt;
	local t = normalizeTitleForCard(targetTitle)&lt;br /&gt;
	local a = normalizeTitleForCard(currentArgTitle)&lt;br /&gt;
&lt;br /&gt;
	local p2 = mwUrlEncodePF(a)&lt;br /&gt;
&lt;br /&gt;
	local dataAttr = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	if typeValue and typeValue ~= &#039;&#039; then&lt;br /&gt;
		dataAttr = &#039; data-&#039; .. typeValue .. &#039;=&amp;quot;&#039; .. escapeAttr( p2 ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;hover-map&amp;quot;&#039;&lt;br /&gt;
		.. dataAttr&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. t .. &#039;]]&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local CARD_CACHE = cacheMake(600)&lt;br /&gt;
&lt;br /&gt;
local function cardRendered(kind, targetTitle, currentArgTitle, typeValue)&lt;br /&gt;
	local key =&lt;br /&gt;
		kind .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. tostring(targetTitle or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. tostring(currentArgTitle or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. tostring(typeValue or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local cached = cacheGet(CARD_CACHE, key)&lt;br /&gt;
	if cached ~= nil then&lt;br /&gt;
		return cached&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rendered = argumentMapCardLua(targetTitle, currentArgTitle, typeValue)&lt;br /&gt;
&lt;br /&gt;
	cachePut(CARD_CACHE, key, rendered)&lt;br /&gt;
	return rendered&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cardDebateRendered(debateTitle, currentArgTitle, typeValue)&lt;br /&gt;
	return cardRendered(&amp;quot;debate&amp;quot;, debateTitle, currentArgTitle, typeValue)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cardArgumentRendered(argTitle, currentArgTitle, typeValue)&lt;br /&gt;
	return cardRendered(&amp;quot;argument&amp;quot;, argTitle, currentArgTitle, typeValue)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureDebateCards(pv, cache, lang, PF)&lt;br /&gt;
	if not cache or cache.debatCardsTous ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argTitle = pv.rawTitle&lt;br /&gt;
&lt;br /&gt;
	local function debateKey(d)&lt;br /&gt;
		return canonicalTitle(d)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local linked = {}&lt;br /&gt;
&lt;br /&gt;
	for _, d in ipairs(cache.debatsPour or {}) do&lt;br /&gt;
		local k = debateKey(d)&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linked[k] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for _, d in ipairs(cache.debatsContre or {}) do&lt;br /&gt;
		local k = debateKey(d)&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linked[k] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cardsTous = {}&lt;br /&gt;
	for _, d in ipairs(cache.parentDebatesFinal or {}) do&lt;br /&gt;
		local k = debateKey(d)&lt;br /&gt;
		local typeDebate = (k ~= &amp;quot;&amp;quot; and linked[k]) and &amp;quot;debate&amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
		table_insert(cardsTous, cardDebateRendered(d, argTitle, typeDebate))&lt;br /&gt;
	end&lt;br /&gt;
	cache.debatCardsTous = cardsTous&lt;br /&gt;
&lt;br /&gt;
	local cardsPour = {}&lt;br /&gt;
	for _, d in ipairs(cache.debatsPour or {}) do&lt;br /&gt;
		table_insert(cardsPour, cardDebateRendered(d, argTitle, &amp;quot;debate&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	cache.debatCardsPour = cardsPour&lt;br /&gt;
&lt;br /&gt;
	local cardsContre = {}&lt;br /&gt;
	for _, d in ipairs(cache.debatsContre or {}) do&lt;br /&gt;
		table_insert(cardsContre, cardDebateRendered(d, argTitle, &amp;quot;debate&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	cache.debatCardsContre = cardsContre&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureArgumentCards(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.argCardsJustifs ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
	local argTitle		= pv.rawTitle&lt;br /&gt;
	local typeArgument	= &amp;quot;argument&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local cj = {}&lt;br /&gt;
	for _, a in ipairs(cache.justifs or {}) do&lt;br /&gt;
		table_insert(cj, cardArgumentRendered(a, argTitle, typeArgument))&lt;br /&gt;
	end&lt;br /&gt;
	cache.argCardsJustifs = cj&lt;br /&gt;
&lt;br /&gt;
	local co = {}&lt;br /&gt;
	for _, a in ipairs(cache.objs or {}) do&lt;br /&gt;
		table_insert(co, cardArgumentRendered(a, argTitle, typeArgument))&lt;br /&gt;
	end&lt;br /&gt;
	cache.argCardsObjs = co&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Parents : bandeaux rendus en Lua&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function ensureDot(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return s end&lt;br /&gt;
	if s:sub(-1) == &amp;quot;.&amp;quot; then return s end&lt;br /&gt;
	return s .. &amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderParentBanner(iconClass, texte)&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-en-tete searchaux wk-icon-before &#039; .. iconClass .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. ensureDot(texte)&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux : rendu natif + résolution via label i18n (aligné Debate)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function bannerMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Argument.banners&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMetaWarningHtml( params )&lt;br /&gt;
	local color	= tostring( params.color or &amp;quot;&amp;quot; )&lt;br /&gt;
	local icon	= tostring( params.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local title	= tostring( params.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local text	= tostring( params.text or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau bandeau-&#039; .. color .. &#039; wk-icon-before &#039; .. icon .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-titre&amp;gt;&#039; .. title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-texte&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannerByKey( pv, lang, key, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local color	= bannerMsg( lang, key .. &amp;quot;_color&amp;quot; )&lt;br /&gt;
	local icon	= bannerMsg( lang, key .. &amp;quot;_icon&amp;quot; )&lt;br /&gt;
	local title	= bannerMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	local text	= bannerMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if color == &amp;quot;&amp;quot; and icon == &amp;quot;&amp;quot; and title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = renderMetaWarningHtml{&lt;br /&gt;
		color	= color,&lt;br /&gt;
		icon	= icon,&lt;br /&gt;
		title	= title,&lt;br /&gt;
		text	= text&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local cat = bannerMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildBannerLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( bannerMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveBannerKeyFromLookup( raw, lookup )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannersFromArgList( rawList, lookup, pv, lang, cats )&lt;br /&gt;
	local html = {}&lt;br /&gt;
	for _, x in ipairs( splitCSV( rawList, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveBannerKeyFromLookup( x, lookup )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( html, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table_concat( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;title_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;title_disadvantageous&amp;quot;,&lt;br /&gt;
	&amp;quot;title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;title_too_long&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;argument_sensitive&amp;quot;,&lt;br /&gt;
	&amp;quot;argument_fanciful&amp;quot;,&lt;br /&gt;
	&amp;quot;argument_potentially_illegal&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Survol des cartes d&#039;arguments&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function joinCards(cards, lang)&lt;br /&gt;
	local n = (cards and #cards) or 0&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if n == 1 then&lt;br /&gt;
		return cards[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local conj = L(lang, &amp;quot;text&amp;quot;, &amp;quot;list_conjunction_text&amp;quot;)&lt;br /&gt;
	conj = tostring(conj or &amp;quot; et &amp;quot;)&lt;br /&gt;
	conj = conj:gsub(&amp;quot;%s+&amp;quot;, &amp;quot;&amp;amp;#32;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		return (cards[1] or &amp;quot;&amp;quot;) .. conj .. (cards[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local head = table_concat(cards, &amp;quot;, &amp;quot;, 1, n - 1)&lt;br /&gt;
	return head .. conj .. (cards[n] or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateParentsBoxes(pv, cats, lang, cache, PF)&lt;br /&gt;
	if not hasSMW() then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	ensureDebateParents(pv, cache, PF)&lt;br /&gt;
	ensureDebateCards(pv, cache, lang, PF)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local nTous = #(cache.parentDebatesFinal or {})&lt;br /&gt;
	if nTous &amp;gt; 0 then&lt;br /&gt;
		local msgKey = (nTous == 1) and &amp;quot;parent_used_in_debate_1&amp;quot; or &amp;quot;parent_used_in_debate_n&amp;quot;&lt;br /&gt;
		local texte = string.format(L(lang, &amp;quot;text&amp;quot;, msgKey), &amp;quot;: &amp;quot; .. joinCards(cache.debatCardsTous, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-parent&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cache.debatsPour and #cache.debatsPour &amp;gt; 0 then&lt;br /&gt;
		local msgKey = (#cache.debatsPour == 1) and &amp;quot;parent_is_pro_in_1&amp;quot; or &amp;quot;parent_is_pro_in_n&amp;quot;&lt;br /&gt;
		local texte = string.format(L(lang, &amp;quot;text&amp;quot;, msgKey), &amp;quot;: &amp;quot; .. joinCards(cache.debatCardsPour, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-pro&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cache.debatsContre and #cache.debatsContre &amp;gt; 0 then&lt;br /&gt;
		local msgKey = (#cache.debatsContre == 1) and &amp;quot;parent_is_con_in_1&amp;quot; or &amp;quot;parent_is_con_in_n&amp;quot;&lt;br /&gt;
		local texte = string.format(L(lang, &amp;quot;text&amp;quot;, msgKey), &amp;quot;: &amp;quot; .. joinCards(cache.debatCardsContre, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-against&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentParentsBoxes(pv, cats, lang, cache, PF)&lt;br /&gt;
	if not hasSMW() then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
	ensureArgumentCards(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	if cache.justifs and #cache.justifs &amp;gt; 0 then&lt;br /&gt;
		local texte = string.format(PF.parent_is_justification_of, &amp;quot;: &amp;quot; .. joinCards(cache.argCardsJustifs, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-pro&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cache.objs and #cache.objs &amp;gt; 0 then&lt;br /&gt;
		local texte = string.format(PF.parent_is_objection_to, &amp;quot;: &amp;quot; .. joinCards(cache.argCardsObjs, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-against&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebatesParentsBottom(pv, lang, cache, PF)&lt;br /&gt;
	if not hasSMW() then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	ensureDebateCards(pv, cache, lang, PF)&lt;br /&gt;
&lt;br /&gt;
	local n = #(cache.parentDebatesFinal or {})&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &#039;&amp;lt;h2 id=&amp;quot;Parent_debates&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = (n == 1) and PF.parent_debates_title_1 or PF.parent_debates_title_n&lt;br /&gt;
&lt;br /&gt;
	local lis = {}&lt;br /&gt;
	for _, card in ipairs(cache.debatCardsTous or {}) do&lt;br /&gt;
		table_insert(lis,&lt;br /&gt;
			&#039;&amp;lt;li style=&amp;quot;position: relative;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. card&lt;br /&gt;
			.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;h2 id=&amp;quot;Parent_debates&amp;quot; class=&amp;quot;wk-icon-before wk-icon-parent&amp;quot;&amp;gt;&#039; .. title .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;ul class=&amp;quot;hover-top navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. table_concat(lis)&lt;br /&gt;
		.. &#039;&amp;lt;/ul&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	INITIALIZATION : bloc (si page “vide” / non initialisée)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local computeArgumentMapsFromData&lt;br /&gt;
&lt;br /&gt;
local function renderInitializationBlock(args, pv, cats, lang, cache, PF)&lt;br /&gt;
&lt;br /&gt;
	local hasParents =&lt;br /&gt;
		(#(cache.parentDebatesFinal or {}) &amp;gt; 0)&lt;br /&gt;
		or (#(cache.justifs or {}) &amp;gt; 0)&lt;br /&gt;
		or (#(cache.objs or {}) &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
	local initRaw = args[&amp;quot;initialization&amp;quot;]&lt;br /&gt;
	initRaw = (type(initRaw) == &amp;quot;string&amp;quot;) and t_trim(initRaw) or &amp;quot;&amp;quot;&lt;br /&gt;
	local hasInit = (initRaw ~= &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if hasParents and hasInit then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_initialized .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not hasParents) and hasInit then&lt;br /&gt;
&lt;br /&gt;
		local today = tostring(F:preprocess(&amp;quot;{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;quot;))&lt;br /&gt;
		local creationDate = t_trim(tostring(args[&amp;quot;creation-date&amp;quot;] or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
		if creationDate == today then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_uninitialized .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local parts = splitByLiteral(initRaw, &amp;quot;@&amp;quot;, 2)&lt;br /&gt;
		local initType = t_trim(parts[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
		local parentId = t_trim(parts[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local parentPage = &amp;quot;&amp;quot;&lt;br /&gt;
		do&lt;br /&gt;
			parentId = tostring(parentId or &amp;quot;&amp;quot;)&lt;br /&gt;
			parentId = t_trim(parentId)&lt;br /&gt;
			parentId = parentId:match(&amp;quot;(%d+)&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			if parentId ~= &amp;quot;&amp;quot; and mw and mw.smw and type(mw.smw.ask) == &amp;quot;function&amp;quot; then&lt;br /&gt;
				local ok, res = pcall(mw.smw.ask, {&lt;br /&gt;
					&amp;quot;[[Page ID::&amp;quot; .. parentId .. &amp;quot;]]&amp;quot;,&lt;br /&gt;
					&amp;quot;limit=1&amp;quot;,&lt;br /&gt;
					&amp;quot;link=none&amp;quot;&lt;br /&gt;
				})&lt;br /&gt;
&lt;br /&gt;
				if ok and type(res) == &amp;quot;table&amp;quot; and res[1] then&lt;br /&gt;
					local row = res[1]&lt;br /&gt;
					local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
&lt;br /&gt;
					if type(ft) == &amp;quot;string&amp;quot; then&lt;br /&gt;
						ft = t_trim(ft)&lt;br /&gt;
						if ft ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							parentPage = ft&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		parentPage = canonicalTitle(parentPage)&lt;br /&gt;
&lt;br /&gt;
		if parentPage == &amp;quot;&amp;quot; then&lt;br /&gt;
			return renderBannerByKey(pv, lang, &amp;quot;argument_orphan&amp;quot;, cats)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local title = pv.rawTitle&lt;br /&gt;
&lt;br /&gt;
		local t_arg_pro			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;arg_pro&amp;quot;)&lt;br /&gt;
		local t_arg_con			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;arg_con&amp;quot;)&lt;br /&gt;
		local t_justification	= L(lang, &amp;quot;params&amp;quot;, &amp;quot;justification_type_label&amp;quot;)&lt;br /&gt;
		local t_objection		= L(lang, &amp;quot;params&amp;quot;, &amp;quot;objection_type_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local formName = nil&lt;br /&gt;
&lt;br /&gt;
		if initType == t_arg_pro then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;edit_args_pro&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		elseif initType == t_arg_con then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;edit_args_con&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		elseif initType == t_justification then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;justifications&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		elseif initType == t_objection then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;objections&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not formName or formName == &amp;quot;&amp;quot; or not initType or initType == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local idx = 99&lt;br /&gt;
		local prefix = initType .. &amp;quot;[&amp;quot; .. tostring(idx) .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local qsParts = {&lt;br /&gt;
			prefix .. &amp;quot;[&amp;quot; .. L(lang, &amp;quot;params&amp;quot;, &amp;quot;page&amp;quot;) .. &amp;quot;]=&amp;quot; .. title&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local displayedTitleParam = t_trim(tostring(L(lang, &amp;quot;params&amp;quot;, &amp;quot;displayed_title&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		if displayedTitleParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(qsParts,&lt;br /&gt;
				prefix .. &amp;quot;[&amp;quot; .. displayedTitleParam .. &amp;quot;]=&amp;quot; .. title&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local qs = table_concat(qsParts, &amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local warnTitle = PF.init_warning_title&lt;br /&gt;
		local warnIntro = string.format(PF.init_warning_intro, title)&lt;br /&gt;
&lt;br /&gt;
		local yesText = PF.init_yes_finish_label or PF.edit or &amp;quot;&amp;quot;&lt;br /&gt;
		local yesTooltip = PF.init_yes_tt or &amp;quot;&amp;quot;&lt;br /&gt;
		local okText = string.format(PF.init_ok_text or &amp;quot;%s&amp;quot;, parentPage)&lt;br /&gt;
		local noText = PF.init_no_rename_label or PF.rename_link_text or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local summary&lt;br /&gt;
		if initType == t_arg_pro then&lt;br /&gt;
			summary = PF.init_summary_pro&lt;br /&gt;
		elseif initType == t_arg_con then&lt;br /&gt;
			summary = PF.init_summary_con&lt;br /&gt;
		elseif initType == t_justification then&lt;br /&gt;
			summary = PF.init_summary_justif&lt;br /&gt;
		elseif initType == t_objection then&lt;br /&gt;
			summary = PF.init_summary_obj&lt;br /&gt;
		else&lt;br /&gt;
			summary = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if summary ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			summary = summary .. &amp;quot; : « &amp;quot; .. title .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local src =&lt;br /&gt;
			&amp;quot;{{#autoedit:&amp;quot;&lt;br /&gt;
			.. &amp;quot;| form = &amp;quot; .. formName&lt;br /&gt;
			.. &amp;quot;| target = &amp;quot; .. parentPage&lt;br /&gt;
			.. &amp;quot;| query string = &amp;quot; .. qs&lt;br /&gt;
			.. &amp;quot;| link text = &amp;quot; .. yesText&lt;br /&gt;
			.. &amp;quot;| link type = button&amp;quot;&lt;br /&gt;
			.. &amp;quot;| tooltip = &amp;quot; .. yesTooltip&lt;br /&gt;
			.. &amp;quot;| ok text = &amp;quot; .. okText&lt;br /&gt;
			.. (summary ~= &amp;quot;&amp;quot; and (&amp;quot;| summary = &amp;quot; .. summary) or &amp;quot;&amp;quot;)&lt;br /&gt;
			.. &amp;quot;| reload&amp;quot;&lt;br /&gt;
			.. &amp;quot;}}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local auto = &amp;quot;&amp;quot;&lt;br /&gt;
		do&lt;br /&gt;
			local ok, r = pcall(F.preprocess, F, src)&lt;br /&gt;
			auto = (ok and r) and r or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local renameLink =&lt;br /&gt;
			&amp;quot;[[Special:MovePage/&amp;quot; .. pv.encoded .. &amp;quot;|&amp;quot; .. noText .. &amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local renameBtn =&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;bouton-autoedit-renommer&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. renameLink&lt;br /&gt;
			.. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;warningbox cdx-message cdx-message--block cdx-message--warning navigation-not-searchable&amp;quot;&amp;gt;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
			.. warnTitle&lt;br /&gt;
			.. &#039;\&#039;\&#039;\&#039;\n\n&#039;&lt;br /&gt;
			.. warnIntro&lt;br /&gt;
			.. &#039;\n&amp;lt;div style=&amp;quot;margin-top: 1em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. auto&lt;br /&gt;
			.. renameBtn&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&amp;lt;!-- Fin de warningbox --&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not hasParents) and (not hasInit) then&lt;br /&gt;
		return renderBannerByKey(pv, lang, &amp;quot;argument_orphan&amp;quot;, cats)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Fil d’Ariane : 1 seule requête SMW&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function ensureBreadcrumbSelection(pv, cache, cats, lang, PF)&lt;br /&gt;
	if not cache or cache.breadcrumbChainsFinal ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.breadcrumbChainsFinal = {}&lt;br /&gt;
	cache.parentDebatesFinal = {}&lt;br /&gt;
&lt;br /&gt;
	if not hasSMW() or type(mw.smw.ask) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	lang = lang or &amp;quot;fr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local title = smwSafeTitle(pv.rawTitle)&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local propBreadcrumb = tostring(PF.prop_breadcrumb or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propDebateName = tostring(PF.prop_debate_name or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propPro = tostring(PF.prop_arg_pro or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propCon = tostring(PF.prop_arg_con or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propJustif = tostring(PF.prop_justif or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propObj = tostring(PF.prop_obj or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if propBreadcrumb == &amp;quot;&amp;quot; or propPro == &amp;quot;&amp;quot; or propCon == &amp;quot;&amp;quot; or propJustif == &amp;quot;&amp;quot; or propObj == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q = {&lt;br /&gt;
		&amp;quot;([[&amp;quot; .. propJustif .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] OR [[&amp;quot; .. propObj .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] OR [[&amp;quot; .. propPro .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] OR [[&amp;quot; .. propCon .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] )&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propBreadcrumb .. &amp;quot;=chain&amp;quot;,&lt;br /&gt;
		(propDebateName ~= &amp;quot;&amp;quot; and (&amp;quot;?&amp;quot; .. propDebateName .. &amp;quot;=debateName&amp;quot;) or nil),&lt;br /&gt;
		&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
		&amp;quot;link=none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local qq = {}&lt;br /&gt;
	for _, x in ipairs(q) do&lt;br /&gt;
		if x then&lt;br /&gt;
			table_insert(qq, x)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(qq)&lt;br /&gt;
	if type(res) ~= &amp;quot;table&amp;quot; or #res == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local bestByDebate = {}&lt;br /&gt;
&lt;br /&gt;
	local function consider(ch)&lt;br /&gt;
		if type(ch) ~= &amp;quot;string&amp;quot; or ch == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local parts = splitByLiteral(ch, &amp;quot;⟭&amp;quot;)&lt;br /&gt;
		local clean = {}&lt;br /&gt;
		for _, part in ipairs(parts) do&lt;br /&gt;
			part = t_trim(part)&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				clean[#clean + 1] = part&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local n = #clean&lt;br /&gt;
		if n == 0 then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local root = canonicalTitle(clean[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
		if root == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local cur = bestByDebate[root]&lt;br /&gt;
		if not cur or n &amp;lt; cur.len then&lt;br /&gt;
			bestByDebate[root] = {&lt;br /&gt;
				root = root,&lt;br /&gt;
				chain = table_concat(clean, &amp;quot;⟭&amp;quot;),&lt;br /&gt;
				len = n&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, row in ipairs(res) do&lt;br /&gt;
		local chain = row.chain&lt;br /&gt;
&lt;br /&gt;
		if type(chain) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			consider(chain)&lt;br /&gt;
		elseif type(chain) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, ch in ipairs(chain) do&lt;br /&gt;
				consider(ch)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local selected = {}&lt;br /&gt;
	for _, item in pairs(bestByDebate) do&lt;br /&gt;
		selected[#selected + 1] = item&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #selected == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #selected &amp;gt; 1 then&lt;br /&gt;
		local filtered = {}&lt;br /&gt;
		for _, item in ipairs(selected) do&lt;br /&gt;
			if item.len &amp;lt; 4 then&lt;br /&gt;
				filtered[#filtered + 1] = item&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		selected = filtered&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #selected == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local chains = {}&lt;br /&gt;
	local debates = {}&lt;br /&gt;
	local tooLong = false&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs(selected) do&lt;br /&gt;
		local newChain = item.chain .. &amp;quot;⟭&amp;quot; .. title&lt;br /&gt;
&lt;br /&gt;
		if breadcrumbLenByteSafe(newChain) &amp;gt; 4 then&lt;br /&gt;
			tooLong = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		chains[#chains + 1] = newChain&lt;br /&gt;
		debates[#debates + 1] = item.root&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tooLong then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;breadcrumb_too_long&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.breadcrumbChainsFinal = uniqList(chains)&lt;br /&gt;
	cache.parentDebatesFinal = uniqList(debates)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildArgumentData(items)&lt;br /&gt;
	items = items or {}&lt;br /&gt;
&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
	--	Liste texte (affichage)&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local listLines = {}&lt;br /&gt;
	for _, it in ipairs(items) do&lt;br /&gt;
		table_insert(listLines, &amp;quot;* &amp;quot; .. tostring(it.title or &amp;quot;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	local listText = table_concat(listLines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local argsVarParts = {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs(items) do&lt;br /&gt;
		local page = t_trim(tostring(it.page or &amp;quot;&amp;quot;))&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local title = t_trim(tostring(it.title or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
			if title == &amp;quot;&amp;quot; or title == page then&lt;br /&gt;
				table_insert(argsVarParts, page)&lt;br /&gt;
			else&lt;br /&gt;
				table_insert(&lt;br /&gt;
					argsVarParts,&lt;br /&gt;
					page&lt;br /&gt;
					.. FIELD_SEP&lt;br /&gt;
					.. title&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argsVar = table_concat(argsVarParts, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
	--	Carte hover (HTML)&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local hoverLines = {}&lt;br /&gt;
	for _, it in ipairs(items) do&lt;br /&gt;
		table_insert(hoverLines,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. &#039;[[&#039; .. tostring(it.page or &amp;quot;&amp;quot;) .. &#039;|&#039; .. tostring(it.title or &amp;quot;&amp;quot;) .. &#039;]]&#039; .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHoverHtml = table_concat(hoverLines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		items		= items,&lt;br /&gt;
		list		= listText,&lt;br /&gt;
		argsVar		= argsVar,&lt;br /&gt;
		mapHover	= mapHoverHtml&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
computeArgumentMapsFromData = function(args)&lt;br /&gt;
	local rawJ = args[&amp;quot;justifications&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawO = args[&amp;quot;objections&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local justifItems = wkExtractItemsFromSerializedData( rawJ )&lt;br /&gt;
	local objItems = wkExtractItemsFromSerializedData( rawO )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		justif	= wkBuildArgumentData( justifItems ),&lt;br /&gt;
		obj		= wkBuildArgumentData( objItems )&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsArg = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsArg == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup( lang, DISPLAYED_TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local hasBanner = false&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsArg, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, DISPLAYED_TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, nil ) )&lt;br /&gt;
			hasBanner = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasBanner and cats then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;displayed_titles_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderArgumentLi( pv, lang, it, kind, idx, cats )&lt;br /&gt;
	local isJustif = ( kind == &amp;quot;justif&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = isJustif and &amp;quot;Justification_&amp;quot; or &amp;quot;Objection_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local page = tostring( it.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local titleShown = tostring( it.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if titleShown == &amp;quot;&amp;quot; then&lt;br /&gt;
		titleShown = page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local aId = anchorId( titleShown )&lt;br /&gt;
	local warnings = tostring( it.warnings or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local banners = {}&lt;br /&gt;
	renderArgumentItemBanners( warnings, pv, lang, cats, banners )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;li id=&amp;quot;&#039;&lt;br /&gt;
		.. idPrefix .. tostring( idx )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div id=&amp;quot;&#039;&lt;br /&gt;
		.. escapeAttr( aId )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument-title wk-icon-before wk-icon-argument wk-icon-after wk-carret&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. page .. &#039;|&#039; .. titleShown .. &#039;]]&#039;&lt;br /&gt;
		.. ( #banners &amp;gt; 0 and table_concat( banners ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Mots-clés : lien direct RunQuery (GET)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderKeywords(args, pv, cats, lang, PF)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert(out, &#039;&amp;lt;div style=&amp;quot;font-size: 95%; margin-top: 1em;&amp;quot;&amp;gt;&#039; .. PF.keywords_label)&lt;br /&gt;
&lt;br /&gt;
	local raw = args[&amp;quot;keywords&amp;quot;]&lt;br /&gt;
	if raw and raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local extra = nil&lt;br /&gt;
		if PF.search_type_field ~= &amp;quot;&amp;quot; and PF.search_type_value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			extra = { [PF.search_type_field] = PF.search_type_value }&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local rq_title = wkRunQueryPath(PF.form_search_by_keywords)&lt;br /&gt;
		local rq_qkey = PF.form_search_by_keywords .. &amp;quot;[&amp;quot; .. PF.keywords_field .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local rendered = {}&lt;br /&gt;
		for _, k in ipairs(splitCSV(raw, &amp;quot;,&amp;quot;)) do&lt;br /&gt;
			k = t_trim(tostring(k or &amp;quot;&amp;quot;))&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local chip = runQueryLink{&lt;br /&gt;
					form = PF.form_search_by_keywords,&lt;br /&gt;
					field = PF.keywords_field,&lt;br /&gt;
					value = k,&lt;br /&gt;
					label = k,&lt;br /&gt;
					tooltip = PF.search_by_keyword_tt,&lt;br /&gt;
					extra = extra,&lt;br /&gt;
					_title = rq_title,&lt;br /&gt;
					_qkey = rq_qkey&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if chip and chip ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(rendered, chip)&lt;br /&gt;
				else&lt;br /&gt;
					table_insert(rendered, k)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #rendered &amp;gt; 0 then&lt;br /&gt;
			table_insert(out, table_concat(rendered, &amp;quot;, &amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. PF.none .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_keywords .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. PF.none .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_keywords .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(out,&lt;br /&gt;
		addDataEditLink(&lt;br /&gt;
			PF.form_edit_keywords,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_keywords_tooltip&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSummary(args, pv, cats, lang, PF)&lt;br /&gt;
	local edit = addDataEditLink(&lt;br /&gt;
		PF.form_edit_summary,&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		PF.edit_summary_tooltip&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	table_insert(out,&lt;br /&gt;
		&#039;&amp;lt;h2 id=&amp;quot;Summary&amp;quot; class=&amp;quot;section-modifiable wk-icon-before wk-icon-summary&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. PF.summary&lt;br /&gt;
		.. edit&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local raw = args[ &amp;quot;summary-warnings&amp;quot; ]&lt;br /&gt;
		raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lookup = buildSummaryLabelLookup( lang, SUMMARY_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
			local aliases = SUMMARY_WARNING_ALIASES&lt;br /&gt;
			if not aliases or aliases._lang ~= lang then&lt;br /&gt;
				aliases = buildSummaryAliases(lang)&lt;br /&gt;
				aliases._lang = lang&lt;br /&gt;
				SUMMARY_WARNING_ALIASES = aliases&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for _, x in ipairs( splitCSV( raw, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				local key = resolveKeyFromLookup(&lt;br /&gt;
					x,&lt;br /&gt;
					lookup,&lt;br /&gt;
					SUMMARY_WARNING_BANNER_KEYS,&lt;br /&gt;
					aliases&lt;br /&gt;
				)&lt;br /&gt;
&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert( out, renderSubsectionBanner( pv, lang, key, nil, cats ) )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;summary&amp;quot;] and args[&amp;quot;summary&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(out, &amp;quot;&amp;lt;div class=&#039;argument-summary&#039;&amp;gt;\n&amp;quot; .. args[&amp;quot;summary&amp;quot;] .. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_summary .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_summary .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderQuotes(args, pv, cats, lang, PF)&lt;br /&gt;
	local edit = addDataEditLink(&lt;br /&gt;
		PF.form_edit_quotes,&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		PF.edit_quotes_tooltip&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local idAttr = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	table_insert(out,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-quote&amp;quot;&#039; .. idAttr .. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. PF.quotes&lt;br /&gt;
		.. edit&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local q = args[&amp;quot;quotes&amp;quot;]&lt;br /&gt;
	if q and q ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(out, q)&lt;br /&gt;
	else&lt;br /&gt;
		table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_quotes .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_quotes .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateDetailed(args, pv, cats, lang, PF)&lt;br /&gt;
	if not args[&amp;quot;detailed-debate&amp;quot;] or args[&amp;quot;detailed-debate&amp;quot;] == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_has_detailed_debate .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local edit = addDataEditLink(&lt;br /&gt;
		PF.form_edit_detailed_debate,&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		string.format(PF.edit_detailed_debate_tooltip, pv.rawTitle)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-details&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. PF.detailed_debate&lt;br /&gt;
		.. edit .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local debat = canonicalTitle(args[&amp;quot;detailed-debate&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
	local mapHtml = &amp;quot;&amp;quot;&lt;br /&gt;
	if hasSMW() and type(mw.smw.ask) == &amp;quot;function&amp;quot; and PF.prop_argument_map and PF.prop_argument_map ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local debatSafe = smwSafeTitle(debat)&lt;br /&gt;
		if debatSafe ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local res = smwAskSafe({&lt;br /&gt;
				&amp;quot;[[&amp;quot; .. debatSafe .. &amp;quot;]]&amp;quot;,&lt;br /&gt;
				&amp;quot;?&amp;quot; .. PF.prop_argument_map .. &amp;quot;=map&amp;quot;,&lt;br /&gt;
				&amp;quot;limit=1&amp;quot;,&lt;br /&gt;
				&amp;quot;link=none&amp;quot;&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			if type(res) == &amp;quot;table&amp;quot; and res[1] and res[1].map then&lt;br /&gt;
				local v = res[1].map&lt;br /&gt;
				if type(v) == &amp;quot;string&amp;quot; then&lt;br /&gt;
					mapHtml = v&lt;br /&gt;
				elseif type(v) == &amp;quot;table&amp;quot; then&lt;br /&gt;
					for _, x in ipairs(v) do&lt;br /&gt;
						if type(x) == &amp;quot;string&amp;quot; and t_trim(x) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							mapHtml = x&lt;br /&gt;
							break&lt;br /&gt;
						elseif type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
							local ft = x.fulltext or x.page or x[1]&lt;br /&gt;
							if type(ft) == &amp;quot;string&amp;quot; and t_trim(ft) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
								mapHtml = ft&lt;br /&gt;
								break&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local box =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-debat-detaille&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. string.format(PF.arg_is_debate, t_nowiki(pv.rawTitle))&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert navigation-not-searchable onglet-externe&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. PF.detailed_debate_label .. &#039;&amp;lt;span class=&amp;quot;onglet-externe&amp;quot;&amp;gt;[[ &#039; .. debat .. &#039; ]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local mapBox = &amp;quot;&amp;quot;&lt;br /&gt;
	if mapHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		mapBox =&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;encart-debat-detaille onglet-externe&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;titre-debat-detaille&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. debat&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. mapHtml&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return h2 .. box .. mapBox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function safeRubriqueValue(s)&lt;br /&gt;
	s = t_trim(tostring(s or &amp;quot;&amp;quot;))&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if s:find(&amp;quot;[%[%]{}|#&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	s = s:gsub(&amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRubriques(args, cats, lang, PF)&lt;br /&gt;
	if args[&amp;quot;sections&amp;quot;] and args[&amp;quot;sections&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		local nOk = 0&lt;br /&gt;
		for _, r in ipairs(splitCSV(args[&amp;quot;sections&amp;quot;], &amp;quot;,&amp;quot;)) do&lt;br /&gt;
			r = safeRubriqueValue(r)&lt;br /&gt;
			if r ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				nOk = nOk + 1&lt;br /&gt;
				table_insert(out, &amp;quot;[[Category:&amp;quot; .. r .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if nOk &amp;gt; 0 then&lt;br /&gt;
			return table_concat(out)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;[[Category:&amp;quot; .. PF.cat_no_sections .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;[[Category:&amp;quot; .. PF.cat_no_sections .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	CITATIONS&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
local function wkParseQuoteMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Heuristique: si aucun séparateur de champ, pas notre format&lt;br /&gt;
	if not raw:find(QUOTE_FIELD_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks&lt;br /&gt;
&lt;br /&gt;
	--	Si séparateur d’items présent : split&lt;br /&gt;
	if raw:find(QUOTE_ITEM_SEP, 1, true) then&lt;br /&gt;
		blocks = splitByLiteral(raw, QUOTE_ITEM_SEP)&lt;br /&gt;
	else&lt;br /&gt;
		blocks = { raw }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, QUOTE_FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 13 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				quote		= f[1],&lt;br /&gt;
				authors		= f[2],&lt;br /&gt;
				article		= f[3],&lt;br /&gt;
				work		= f[4],&lt;br /&gt;
				volume		= f[5],&lt;br /&gt;
				number		= f[6],&lt;br /&gt;
				page		= f[7],&lt;br /&gt;
				location	= f[8],&lt;br /&gt;
				publisher	= f[9],&lt;br /&gt;
				place		= f[10],&lt;br /&gt;
				date		= f[11],&lt;br /&gt;
				link		= f[12],&lt;br /&gt;
				warnings	= f[13]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneQuoteHtml(item, idx, pv, lang, cats, PF)&lt;br /&gt;
	local quote		= tostring(item.quote or &amp;quot;&amp;quot;)&lt;br /&gt;
	local authors	= t_trim(item.authors or &amp;quot;&amp;quot;)&lt;br /&gt;
	local article	= t_trim(item.article or &amp;quot;&amp;quot;)&lt;br /&gt;
	local work		= t_trim(item.work or &amp;quot;&amp;quot;)&lt;br /&gt;
	local volume	= t_trim(item.volume or &amp;quot;&amp;quot;)&lt;br /&gt;
	local number	= t_trim(item.number or &amp;quot;&amp;quot;)&lt;br /&gt;
	local page		= t_trim(item.page or &amp;quot;&amp;quot;)&lt;br /&gt;
	local location	= t_trim(item.location or &amp;quot;&amp;quot;)&lt;br /&gt;
	local publisher	= t_trim(item.publisher or &amp;quot;&amp;quot;)&lt;br /&gt;
	local place		= t_trim(item.place or &amp;quot;&amp;quot;)&lt;br /&gt;
	local date		= t_trim(item.date or &amp;quot;&amp;quot;)&lt;br /&gt;
	local link		= t_trim(item.link or &amp;quot;&amp;quot;)&lt;br /&gt;
	local warnings	= t_trim(item.warnings or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	Accumulateurs VariablesLua (comme Module:Quote)&lt;br /&gt;
	vset(&amp;quot;WD_QUOTES_MAX&amp;quot;, tostring(idx))&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_AUTHORS&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_AUTHORS&amp;quot;, (cur == &amp;quot;&amp;quot; and authors) or (cur .. &amp;quot;,&amp;quot; .. authors))&lt;br /&gt;
	end&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_ARTICLES&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_ARTICLES&amp;quot;, (cur == &amp;quot;&amp;quot; and article) or (cur .. &amp;quot;,&amp;quot; .. article))&lt;br /&gt;
	end&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_WORKS&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_WORKS&amp;quot;, (cur == &amp;quot;&amp;quot; and work) or (cur .. &amp;quot;,&amp;quot; .. work))&lt;br /&gt;
	end&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_PUBLISHERS&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_PUBLISHERS&amp;quot;, (cur == &amp;quot;&amp;quot; and publisher) or (cur .. &amp;quot;,&amp;quot; .. publisher))&lt;br /&gt;
	end&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_PLACES&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_PLACES&amp;quot;, (cur == &amp;quot;&amp;quot; and place) or (cur .. &amp;quot;,&amp;quot; .. place))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Blockquote&lt;br /&gt;
	local warnHtml = &amp;quot;&amp;quot;&lt;br /&gt;
	if warnings ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local lookup = buildSummaryLabelLookup( lang, QUOTE_WARNING_BANNER_KEYS )&lt;br /&gt;
		local b = {}&lt;br /&gt;
&lt;br /&gt;
		for x in t_gsplit( warnings, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			x = t_trim( x )&lt;br /&gt;
			if x ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local key = resolveKeyFromLookup( x, lookup, QUOTE_WARNING_BANNER_KEYS )&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					local h = renderSubsectionBanner(&lt;br /&gt;
						pv,&lt;br /&gt;
						lang,&lt;br /&gt;
						key,&lt;br /&gt;
						nil,&lt;br /&gt;
						cats&lt;br /&gt;
					)&lt;br /&gt;
					if h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						b[ #b + 1 ] = h&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #b &amp;gt; 0 then&lt;br /&gt;
			warnHtml = &amp;quot;&amp;lt;div&amp;gt;&amp;quot; .. table_concat( b, &amp;quot;&amp;quot; ) .. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local bq =&lt;br /&gt;
		&#039;&amp;lt;blockquote data-wk-cite=&amp;quot;&#039; .. tostring(idx) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. warnHtml&lt;br /&gt;
		.. &#039;« &#039; .. quote .. &#039; »&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/blockquote&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	--	Référence (sans fallback demandé =&amp;gt; on n’invente pas d’auteur)&lt;br /&gt;
	local ref = {}&lt;br /&gt;
	table_insert(ref, &#039;&amp;lt;div class=&amp;quot;reference-citation&amp;quot; data-wk-cite=&amp;quot;&#039; .. tostring(idx) .. &#039;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( ref, authors )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( ref, PF.unknown_author )&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_authors .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(ref, &#039;, « [&#039; .. link .. &#039; &#039; .. article .. &#039;] »&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			table_insert(ref, &#039;, « &#039; .. article .. &#039; »&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(ref, &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert(ref, &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				table_insert(ref, &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; and number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(ref, &amp;quot;, vol. &amp;quot; .. volume)&lt;br /&gt;
		end&lt;br /&gt;
		table_insert(ref, &amp;quot;, n°&amp;amp;#160;&amp;quot; .. number)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, p.&amp;quot; .. page)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. location)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. publisher)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. place)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. date)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(ref, &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local html = bq .. &amp;quot;\n&amp;quot; .. table_concat(ref) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if idx &amp;gt;= 1 and idx &amp;lt;= 4 then&lt;br /&gt;
		vset(&amp;quot;WD_QUOTE_&amp;quot; .. tostring(idx), html)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderQuotesFromSerialized(raw, pv, lang, cats, PF)&lt;br /&gt;
	local items = wkParseQuoteMarkers(raw)&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for i, it in ipairs( items ) do&lt;br /&gt;
		out[ #out + 1 ] = wkRenderOneQuoteHtml( it, i, pv, lang, cats, PF )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : setSemanticData + argument_map/justif_list/obj_list&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function setSemanticData(args, pv, lang, cache, PF, maps, rawB, rawW, rawV)&lt;br /&gt;
	local props = {}&lt;br /&gt;
&lt;br /&gt;
	props[PF.prop_arg_name] = pv.rawTitle&lt;br /&gt;
	props[PF.prop_arg_number] = pv.pageId&lt;br /&gt;
&lt;br /&gt;
	if hasSMW() then&lt;br /&gt;
		ensureDebateParentsFinal(pv, cache, PF)&lt;br /&gt;
		ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local chains = uniqList(cache.breadcrumbChainsFinal or {})&lt;br /&gt;
&lt;br /&gt;
			if #chains &amp;gt; 0 and PF.prop_breadcrumb and PF.prop_breadcrumb ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				props[PF.prop_breadcrumb] = chains&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if PF.prop_parent_debate and PF.prop_parent_debate ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local dp = uniqList(cache.parentDebatesFinal or {})&lt;br /&gt;
				if #dp &amp;gt; 0 then&lt;br /&gt;
					props[PF.prop_parent_debate] = dp&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local parents = {}&lt;br /&gt;
			for _, x in ipairs(cache.justifs or {}) do&lt;br /&gt;
				table_insert(parents, canonicalTitle(x))&lt;br /&gt;
			end&lt;br /&gt;
			for _, x in ipairs(cache.objs or {}) do&lt;br /&gt;
				table_insert(parents, canonicalTitle(x))&lt;br /&gt;
			end&lt;br /&gt;
			parents = uniqList(parents)&lt;br /&gt;
&lt;br /&gt;
			if #parents &amp;gt; 0 and PF.prop_parent_argument and PF.prop_parent_argument ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				props[PF.prop_parent_argument] = parents&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local justif = maps.justif or {}&lt;br /&gt;
	local obj = maps.obj or {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = {}&lt;br /&gt;
		for _, it in ipairs((justif.items or {})) do&lt;br /&gt;
			local t = canonicalTitle(it.page or &amp;quot;&amp;quot;)&lt;br /&gt;
			if t ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert(lst, t)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		lst = uniqList(lst)&lt;br /&gt;
&lt;br /&gt;
		if #lst &amp;gt; 0 and PF.prop_justif and PF.prop_justif ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_justif] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = {}&lt;br /&gt;
		for _, it in ipairs((obj.items or {})) do&lt;br /&gt;
			local t = canonicalTitle(it.page or &amp;quot;&amp;quot;)&lt;br /&gt;
			if t ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert(lst, t)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		lst = uniqList(lst)&lt;br /&gt;
&lt;br /&gt;
		if #lst &amp;gt; 0 and PF.prop_obj and PF.prop_obj ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_obj] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local justifSurvol = t_trim(justif.mapHover or &amp;quot;&amp;quot;)&lt;br /&gt;
	local objSurvol = t_trim(obj.mapHover or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if justifSurvol == &amp;quot;&amp;quot; then justifSurvol = &#039;&amp;lt;div class=&amp;quot;argument-title--map carte-vide&amp;quot;&amp;gt;&#039; .. PF.no_justifications_short .. &#039;&amp;lt;/div&amp;gt;&#039; end&lt;br /&gt;
	if objSurvol == &amp;quot;&amp;quot; then objSurvol = &#039;&amp;lt;div class=&amp;quot;argument-title--map carte-vide&amp;quot;&amp;gt;&#039; .. PF.no_objections_short .. &#039;&amp;lt;/div&amp;gt;&#039; end&lt;br /&gt;
&lt;br /&gt;
	if PF.prop_argument_map and PF.prop_argument_map ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		props[ PF.prop_argument_map ] =&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;wk-arg-map navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. PF.justifications .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. justifSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. PF.objections .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. objSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = t_trim(justif.argsVar or &amp;quot;&amp;quot;)&lt;br /&gt;
		if lst ~= &amp;quot;&amp;quot; and PF.prop_justif_list and PF.prop_justif_list ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_justif_list] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = t_trim(obj.argsVar or &amp;quot;&amp;quot;)&lt;br /&gt;
		if lst ~= &amp;quot;&amp;quot; and PF.prop_obj_list and PF.prop_obj_list ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_obj_list] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local mc = args[&amp;quot;keywords&amp;quot;]&lt;br /&gt;
	if mc and mc ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local list = splitCSV(mc, &amp;quot;,&amp;quot;)&lt;br /&gt;
		if #list &amp;gt; 0 then&lt;br /&gt;
			props[PF.prop_keyword] = list&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;detailed-debate&amp;quot;] and args[&amp;quot;detailed-debate&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		props[PF.prop_detailed_debate] = canonicalTitle(args[&amp;quot;detailed-debate&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local function uniqCSVVar( varName )&lt;br /&gt;
			local raw = tostring( vget( varName ) or &amp;quot;&amp;quot; )&lt;br /&gt;
			raw = t_trim( raw )&lt;br /&gt;
			if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local lst = splitCSV( raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
			lst = uniqList( lst )&lt;br /&gt;
			return ( #lst &amp;gt; 0 ) and lst or nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authors = uniqCSVVar( &amp;quot;WD_QUOTES_AUTHORS&amp;quot; )&lt;br /&gt;
		if authors then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;authors&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, authors, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local articles = uniqCSVVar( &amp;quot;WD_QUOTES_ARTICLES&amp;quot; )&lt;br /&gt;
		if articles then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;article_name&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, articles, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local works = uniqCSVVar( &amp;quot;WD_QUOTES_WORKS&amp;quot; )&lt;br /&gt;
		if works then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;work_name&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, works, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local pubs = uniqCSVVar( &amp;quot;WD_QUOTES_PUBLISHERS&amp;quot; )&lt;br /&gt;
		if pubs then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;publishing_house&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, pubs, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local places = uniqCSVVar( &amp;quot;WD_QUOTES_PLACES&amp;quot; )&lt;br /&gt;
		if places then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;place_of_publication&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, places, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		if args[&amp;quot;sections&amp;quot;] and args[&amp;quot;sections&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lst = {}&lt;br /&gt;
			for _, r in ipairs(splitCSV(args[&amp;quot;sections&amp;quot;], &amp;quot;,&amp;quot;)) do&lt;br /&gt;
				r = safeRubriqueValue(r)&lt;br /&gt;
				if r ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(lst, r)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			lst = uniqList(lst)&lt;br /&gt;
	&lt;br /&gt;
			if #lst &amp;gt; 0 and PF.prop_section and PF.prop_section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				props[PF.prop_section] = lst&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	smwSetSafe(props)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO via Wikiseo (mw.ext.seo.set)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SEO_CACHE = cacheMake(60)&lt;br /&gt;
&lt;br /&gt;
local function wkSeoHas()&lt;br /&gt;
	return mw.ext&lt;br /&gt;
		and mw.ext.seo&lt;br /&gt;
		and type( mw.ext.seo.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSeoSet( data )&lt;br /&gt;
	if not wkSeoHas() then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall( mw.ext.seo.set, data )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoL( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Argument.seo&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoJoinList( items )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local seen = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs( items or {} ) do&lt;br /&gt;
		v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; and not seen[ v ] then&lt;br /&gt;
			seen[ v ] = true&lt;br /&gt;
			out[ #out + 1 ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out, &amp;quot;, &amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSeoKeywords( args, lang )&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, s in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return seoJoinList( items )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoKeyPart(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	if mw_hash then&lt;br /&gt;
		local ok, h = pcall(mw_hash.hashValue, &amp;quot;md5&amp;quot;, s)&lt;br /&gt;
		if ok and type(h) == &amp;quot;string&amp;quot; and h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			return h&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderFullSEO( args, pv, lang )&lt;br /&gt;
	local titleText		= pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local ck =&lt;br /&gt;
		&amp;quot;SEO\n&amp;quot; .. tostring( lang or &amp;quot;&amp;quot; ) .. &amp;quot;\n&amp;quot; .. tostring( pv.pageId or &amp;quot;&amp;quot; ) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. titleText .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. seoKeyPart( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. seoKeyPart( args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hit = cacheGet( SEO_CACHE, ck )&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	cachePut( SEO_CACHE, ck, true )&lt;br /&gt;
&lt;br /&gt;
	local topic = t_trim( tostring( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if topic == &amp;quot;&amp;quot; then&lt;br /&gt;
		topic = titleText&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local kw = buildSeoKeywords( args, lang )&lt;br /&gt;
&lt;br /&gt;
	wkSeoSet{&lt;br /&gt;
		title				= titleText .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;space&amp;quot;) .. &amp;quot;: &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;) .. &amp;quot; – &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot;),&lt;br /&gt;
		title_mode			= titleText .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;space&amp;quot;) .. &amp;quot;: &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;),&lt;br /&gt;
		title_separator		= string_format( seoL( lang, &amp;quot;title_separator&amp;quot; ), titleText ),&lt;br /&gt;
		description			= string_format( seoL( lang, &amp;quot;description&amp;quot; ), topic ),&lt;br /&gt;
		keywords			= kw,&lt;br /&gt;
		author				= seoL( lang, &amp;quot;author&amp;quot; ),&lt;br /&gt;
		image				= seoL( lang, &amp;quot;image&amp;quot; ),&lt;br /&gt;
		image_alt			= seoL( lang, &amp;quot;image_alt&amp;quot; ),&lt;br /&gt;
		type				= &amp;quot;article&amp;quot;,&lt;br /&gt;
		section				= seoL( lang, &amp;quot;section&amp;quot; ),&lt;br /&gt;
		site_name			= seoL( lang, &amp;quot;site_name&amp;quot; ),&lt;br /&gt;
		twitter_site		= seoL( lang, &amp;quot;twitter_site&amp;quot; ),&lt;br /&gt;
		locale				= seoL( lang, &amp;quot;locale&amp;quot; ),&lt;br /&gt;
		robots				= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
		googlebot			= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	JSON-LD : helpers Argument / Breadcrumb / WebSite&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrl( lang, prefixKey, labelKey )&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. mw_uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. L( lang, &amp;quot;urls&amp;quot;, labelKey ),&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrlFromText( lang, prefixKey, text )&lt;br /&gt;
	text = t_trim( tostring( text or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. mw_uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. text,&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkFullUrl( titleText )&lt;br /&gt;
	titleText = t_trim( tostring( titleText or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if titleText == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ok, u = pcall( mw_uri_fullUrl, titleText )&lt;br /&gt;
	if ok and u then&lt;br /&gt;
		return tostring( u )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkTakeFirst( items, limit )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	limit = tonumber( limit ) or 0&lt;br /&gt;
&lt;br /&gt;
	if limit &amp;lt;= 0 then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #items do&lt;br /&gt;
		if i &amp;gt; limit then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		out[ #out + 1 ] = items[ i ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWebsiteNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#website&amp;quot;,&lt;br /&gt;
		url = homeUrl,&lt;br /&gt;
		name = siteName&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildOrganizationNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#organization&amp;quot;,&lt;br /&gt;
		name = siteName,&lt;br /&gt;
		url = homeUrl&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local homeLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home_label&amp;quot; )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local argsLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;arguments_label&amp;quot; )&lt;br /&gt;
	local argsUrl = wkBuildWikiUrl( lang, &amp;quot;portal_prefix&amp;quot;, &amp;quot;arguments_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;BreadcrumbList&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;,&lt;br /&gt;
		itemListElement = {&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 1,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = homeUrl,&lt;br /&gt;
					name = homeLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 2,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = argsUrl,&lt;br /&gt;
					name = argsLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 3,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
					name = pv.rawTitle&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAboutAndMentions( args )&lt;br /&gt;
	local about = {}&lt;br /&gt;
	local mentions = {}&lt;br /&gt;
	local rawKeywords = splitCSV( args and args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #rawKeywords do&lt;br /&gt;
		local kw = t_trim( tostring( rawKeywords[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if kw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Thing&amp;quot;,&lt;br /&gt;
				name = kw&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if i &amp;lt;= 3 then&lt;br /&gt;
				about[ #about + 1 ] = node&lt;br /&gt;
			else&lt;br /&gt;
				mentions[ #mentions + 1 ] = node&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return about, mentions&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildKeywords( args, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local sections = splitCSV( args and args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
	local termSetId = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;sections_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #sections do&lt;br /&gt;
		if i &amp;gt; 4 then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local section = t_trim( tostring( sections[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;DefinedTerm&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrlFromText( lang, &amp;quot;category_prefix&amp;quot;, section ),&lt;br /&gt;
				name = section,&lt;br /&gt;
				inDefinedTermSet = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = termSetId&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildDiscussionUrl( pv, lang )&lt;br /&gt;
	return wkBuildWikiUrlFromText( lang, &amp;quot;discussion_prefix&amp;quot;, pv.rawTitle )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAppendAllValidIds( out, titles, suffix, lang )&lt;br /&gt;
	local added = false&lt;br /&gt;
&lt;br /&gt;
	for _, title in ipairs( titles or {} ) do&lt;br /&gt;
		title = canonicalTitle( t_trim( tostring( title or &amp;quot;&amp;quot; ) ) )&lt;br /&gt;
&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local url = wkFullUrl( title, lang )&lt;br /&gt;
&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. suffix&lt;br /&gt;
				}&lt;br /&gt;
				added = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return added&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAppendFirstValidId( out, titles, suffix, lang )&lt;br /&gt;
	for _, title in ipairs( titles or {} ) do&lt;br /&gt;
		title = canonicalTitle( t_trim( tostring( title or &amp;quot;&amp;quot; ) ) )&lt;br /&gt;
&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local url = wkFullUrl( title, lang )&lt;br /&gt;
&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. suffix&lt;br /&gt;
				}&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimIsPartOf( lang, cache )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;arguments_label&amp;quot; )&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local debats = {}&lt;br /&gt;
&lt;br /&gt;
	for _, d in ipairs( cache and cache.debatsPour or {} ) do&lt;br /&gt;
		table_insert( debats, canonicalTitle( d ) )&lt;br /&gt;
	end&lt;br /&gt;
	for _, d in ipairs( cache and cache.debatsContre or {} ) do&lt;br /&gt;
		table_insert( debats, canonicalTitle( d ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	debats = uniqList( debats )&lt;br /&gt;
&lt;br /&gt;
	if wkAppendAllValidIds( out, debats, &amp;quot;#qa&amp;quot;, lang ) then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if wkAppendFirstValidId( out, cache and cache.justifs or {}, &amp;quot;#claim&amp;quot;, lang ) then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if wkAppendFirstValidId( out, cache and cache.objs or {}, &amp;quot;#claim&amp;quot;, lang ) then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildHasPart( args, maps, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local detailedDebate = t_trim( tostring( args and args[ &amp;quot;detailed-debate&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	detailedDebate = canonicalTitle( detailedDebate )&lt;br /&gt;
&lt;br /&gt;
	if detailedDebate ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local url = wkFullUrl( detailedDebate, lang )&lt;br /&gt;
&lt;br /&gt;
		if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#qa&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			return out&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local justifItems = ( maps and maps.justif and maps.justif.items ) or {}&lt;br /&gt;
	local objItems = ( maps and maps.obj and maps.obj.items ) or {}&lt;br /&gt;
&lt;br /&gt;
	for i = 1, math.min( #justifItems, 3 ) do&lt;br /&gt;
		local item = justifItems[ i ]&lt;br /&gt;
		local argTitle = t_trim( tostring( ( item and item.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		argTitle = canonicalTitle( argTitle )&lt;br /&gt;
&lt;br /&gt;
		local url = wkFullUrl( argTitle, lang )&lt;br /&gt;
&lt;br /&gt;
		if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;,&lt;br /&gt;
				additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;justification_label&amp;quot; )&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, math.min( #objItems, 1 ) do&lt;br /&gt;
		local item = objItems[ i ]&lt;br /&gt;
		local argTitle = t_trim( tostring( ( item and item.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		argTitle = canonicalTitle( argTitle )&lt;br /&gt;
&lt;br /&gt;
		local url = wkFullUrl( argTitle, lang )&lt;br /&gt;
&lt;br /&gt;
		if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;,&lt;br /&gt;
				additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;objection_label&amp;quot; )&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildQuoteAuthorValue( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local authors = splitCSV( raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if #authors == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #authors == 1 then&lt;br /&gt;
		return {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
			name = authors[ 1 ]&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for _, one in ipairs( authors ) do&lt;br /&gt;
		one = t_trim( tostring( one or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if one ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
				name = one&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSingleNodeFromFirstItem( items, buildNode )&lt;br /&gt;
	if type( items ) ~= &amp;quot;table&amp;quot; or not items[ 1 ] then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local node = buildNode( items[ 1 ] )&lt;br /&gt;
&lt;br /&gt;
	if node then&lt;br /&gt;
		return { node }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromQuotes( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseQuoteMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromBibliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseBiblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromWebliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseWeblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local page = t_trim( tostring( item.page or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local site = t_trim( tostring( item.site or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if link == &amp;quot;&amp;quot; or page == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
			name = page,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.isPartOf = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
				name = site&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromVideography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseVideoMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local title = t_trim( tostring( item.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if title == &amp;quot;&amp;quot; or link == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;VideoObject&amp;quot;,&lt;br /&gt;
			name = title,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkProtectJsonLdForParser( json )&lt;br /&gt;
	if not json or json == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	json = tostring( json )&lt;br /&gt;
&lt;br /&gt;
	--	protéger les séparateurs de parser function&lt;br /&gt;
	json = json:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;/&amp;quot;, &amp;quot;\\/&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	éviter de fermer prématurément {{#tag:...}}&lt;br /&gt;
	json = json:gsub( &amp;quot;}}&amp;quot;, &amp;quot;} }&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return json&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentSchemaJSONLD( args, pv, lang, cache, PF, maps )&lt;br /&gt;
	ensureDebateParentsFinal( pv, cache, PF )&lt;br /&gt;
	ensureArgumentParents( pv, cache, PF )&lt;br /&gt;
	ensureBreadcrumbSelection( pv, cache, {}, lang, PF )&lt;br /&gt;
&lt;br /&gt;
	local websiteNode = wkBuildWebsiteNode( lang )&lt;br /&gt;
	local breadcrumbNode = wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local organizationNode = wkBuildOrganizationNode( lang )&lt;br /&gt;
	local about, mentions = wkBuildAboutAndMentions( args )&lt;br /&gt;
	local keywords = wkBuildKeywords( args, lang )&lt;br /&gt;
	local isPartOf = wkBuildClaimIsPartOf( lang, cache )&lt;br /&gt;
	local hasPart = wkBuildHasPart( args, maps, lang )&lt;br /&gt;
	local creationDate = getPageCreation(pv, args)&lt;br /&gt;
&lt;br /&gt;
	local citations = {}&lt;br /&gt;
	&lt;br /&gt;
	local q = wkBuildClaimCitationsFromQuotes(&lt;br /&gt;
		args[ &amp;quot;_quotes_wikitext&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
	if q[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = q[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local b = wkBuildClaimCitationsFromBibliography(&lt;br /&gt;
		args[ &amp;quot;bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
	if b[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = b[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local w = wkBuildClaimCitationsFromWebliography(&lt;br /&gt;
		args[ &amp;quot;webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
	if w[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = w[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local subjectOf = wkBuildClaimCitationsFromVideography(&lt;br /&gt;
		args[ &amp;quot;videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local pageNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		isPartOf = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#website&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		mainEntity = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#claim&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local claimNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#claim&amp;quot;,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		learningResourceType = &amp;quot;argument&amp;quot;,&lt;br /&gt;
		educationalUse = &amp;quot;analysis&amp;quot;,&lt;br /&gt;
		educationalLevel = &amp;quot;higher education&amp;quot;,&lt;br /&gt;
		audience = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;EducationalAudience&amp;quot;,&lt;br /&gt;
			educationalRole = &amp;quot;student&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		isPartOf = isPartOf,&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		discussionUrl = wkBuildDiscussionUrl( pv, lang ),&lt;br /&gt;
		publisher = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#organization&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;name&amp;quot;] and t_trim(args[&amp;quot;name&amp;quot;]) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		claimNode.alternateName = args[&amp;quot;name&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local summary = t_trim( tostring( args and args[ &amp;quot;summary&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if summary ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			claimNode.abstract = summary&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if creationDate then&lt;br /&gt;
		claimNode.datePublished = creationDate&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #about &amp;gt; 0 then&lt;br /&gt;
		claimNode.about = about&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #mentions &amp;gt; 0 then&lt;br /&gt;
		claimNode.mentions = mentions&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #keywords &amp;gt; 0 then&lt;br /&gt;
		claimNode.keywords = keywords&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #hasPart &amp;gt; 0 then&lt;br /&gt;
		claimNode.hasPart = hasPart&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #citations &amp;gt; 0 then&lt;br /&gt;
		claimNode.citation = citations&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #subjectOf &amp;gt; 0 then&lt;br /&gt;
		claimNode.subjectOf = subjectOf&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {&lt;br /&gt;
		[ &amp;quot;@context&amp;quot; ] = &amp;quot;https://schema.org&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@graph&amp;quot; ] = {&lt;br /&gt;
			websiteNode,&lt;br /&gt;
			organizationNode,&lt;br /&gt;
			breadcrumbNode,&lt;br /&gt;
			pageNode,&lt;br /&gt;
			claimNode&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local json = safeJsonEncode( data )&lt;br /&gt;
	&lt;br /&gt;
	return tagHtmlTag( &amp;quot;script&amp;quot;, wkProtectJsonLdForParser( json ), {&lt;br /&gt;
		type = &amp;quot;application/ld+json&amp;quot;,&lt;br /&gt;
		[&amp;quot;class&amp;quot;] = &amp;quot;navigation-not-searchable&amp;quot;&lt;br /&gt;
	} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Rendu principal (i18n)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_AUTHORS&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_ARTICLES&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_WORKS&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_PUBLISHERS&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_PLACES&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_MAX&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_1&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_2&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_3&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_4&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	EXPAND_CACHE = cacheMake(250)&lt;br /&gt;
	CARD_CACHE = cacheMake(600)&lt;br /&gt;
	SMW_ASK_CACHE = cacheMake(250)&lt;br /&gt;
	SMW_TITLES_CACHE = cacheMake(250)&lt;br /&gt;
	I18N_DOMAIN = {}&lt;br /&gt;
	I18N_MSG = {}&lt;br /&gt;
	TITLE_CACHE = cacheMake(600)&lt;br /&gt;
	SEO_CACHE = cacheMake(60)&lt;br /&gt;
&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local function norm(k)&lt;br /&gt;
		local v = args[k]&lt;br /&gt;
		if type(v) ~= &amp;quot;string&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		v = t_trim(v)&lt;br /&gt;
		if v == &amp;quot;&amp;quot; then&lt;br /&gt;
			args[k] = nil&lt;br /&gt;
		else&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	norm(&amp;quot;summary&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;quotes&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;bibliography&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;webliography&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;videography&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;keywords&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;sections&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;interlanguage&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;detailed-debate&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	norm(&amp;quot;title-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;argument-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;summary-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;justification-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;objection-warnings&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local rawB = args[&amp;quot;bibliography&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawW = args[&amp;quot;webliography&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawV = args[&amp;quot;videography&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if type(args[&amp;quot;justifications&amp;quot;]) ~= &amp;quot;string&amp;quot; then args[&amp;quot;justifications&amp;quot;] = nil end&lt;br /&gt;
	if type(args[&amp;quot;objections&amp;quot;]) ~= &amp;quot;string&amp;quot; then args[&amp;quot;objections&amp;quot;] = nil end&lt;br /&gt;
&lt;br /&gt;
	local lang	= detectLang(args)&lt;br /&gt;
	local pv		= computePageVars()&lt;br /&gt;
	pv.lang = lang&lt;br /&gt;
&lt;br /&gt;
	local cache	= makeSMWCache()&lt;br /&gt;
	local pieces, cats = {}, {}&lt;br /&gt;
&lt;br /&gt;
	local PF = {}&lt;br /&gt;
&lt;br /&gt;
	PF.file_search						= L(lang, &amp;quot;files&amp;quot;, &amp;quot;search&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.parent_is_justification_of		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_is_justification_of&amp;quot;)&lt;br /&gt;
	PF.parent_is_objection_to			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_is_objection_to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.keywords_label					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_label_text&amp;quot;)&lt;br /&gt;
	PF.none								= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.keywords_field					= L(lang, &amp;quot;params&amp;quot;, &amp;quot;keywords_field&amp;quot;)&lt;br /&gt;
	PF.form_search_by_keywords			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;search_by_keywords_title&amp;quot;)&lt;br /&gt;
	PF.search_by_keyword_tt				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;search_by_keyword_tt&amp;quot;)&lt;br /&gt;
	PF.search_type_field				= tostring(L(lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_field&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
	PF.search_type_value				= tostring(L(lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_value&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_keywords				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;keywords_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_keywords_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_summary				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;summary_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_summary_tooltip				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;summary_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_quotes					= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;quotes_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_quotes_tooltip				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;quotes_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_references				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;references_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_references_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;references_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_justifications			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;justifications_form&amp;quot;)&lt;br /&gt;
	PF.edit_justifications_tooltip		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justifications_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_objections				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;objections_form&amp;quot;)&lt;br /&gt;
	PF.edit_objections_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objections_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_new_arg_title				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_title&amp;quot;)&lt;br /&gt;
	PF.arg_new_title_field_base			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;arg_new_title_field_base&amp;quot;)&lt;br /&gt;
	PF.justification_add_label			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justification_add_label&amp;quot;)&lt;br /&gt;
	PF.justification_add_tt				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justification_add_tt&amp;quot;)&lt;br /&gt;
	PF.objection_add_label				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objection_add_label&amp;quot;)&lt;br /&gt;
	PF.objection_add_tt					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objection_add_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.summary							= L(lang, &amp;quot;text&amp;quot;, &amp;quot;summary_title&amp;quot;)&lt;br /&gt;
	PF.no_summary						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_summary_msg&amp;quot;)&lt;br /&gt;
	PF.quotes							= L(lang, &amp;quot;text&amp;quot;, &amp;quot;quotes_title&amp;quot;)&lt;br /&gt;
	PF.no_quotes						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_quotes_msg&amp;quot;)&lt;br /&gt;
	PF.references						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;references_title&amp;quot;)&lt;br /&gt;
	PF.no_references					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_references_msg&amp;quot;)&lt;br /&gt;
	PF.justifications					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justifications_title&amp;quot;)&lt;br /&gt;
	PF.no_justifications				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_justifications_msg&amp;quot;)&lt;br /&gt;
	PF.no_justifications_short			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_justifications_short_msg&amp;quot;)&lt;br /&gt;
	PF.objections						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objections_title&amp;quot;)&lt;br /&gt;
	PF.no_objections					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_objections_msg&amp;quot;)&lt;br /&gt;
	PF.no_objections_short				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_objections_short_msg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_detailed_debate		= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;detailed_debate_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_detailed_debate_tooltip		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;detailed_debate_edit_tt&amp;quot;)&lt;br /&gt;
	PF.detailed_debate					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;detailed_debate_title&amp;quot;)&lt;br /&gt;
	PF.detailed_debate_label			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;detailed_debate_label_text&amp;quot;)&lt;br /&gt;
	PF.arg_is_debate					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;arg_is_debate_msg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_sections				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;sections_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_sections_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;sections_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_interlanguage			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;interlanguage_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_interlanguage_tooltip		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;interlanguage_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.edit								= L(lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot;)&lt;br /&gt;
	PF.rename_link_text					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;rename_link_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.type_justification				= L(lang, &amp;quot;params&amp;quot;, &amp;quot;justification_type_label&amp;quot;)&lt;br /&gt;
	PF.type_objection					= L(lang, &amp;quot;params&amp;quot;, &amp;quot;objection_type_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.unknown_author					= L( lang, &amp;quot;text&amp;quot;, &amp;quot;unknown_author&amp;quot; )&lt;br /&gt;
	PF.more_quotes_button				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;more_quotes_button&amp;quot;)&lt;br /&gt;
	PF.more_quotes_note					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;more_quotes_note&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.parent_debates_title_1			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_debates_title_1&amp;quot;)&lt;br /&gt;
	PF.parent_debates_title_n			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_debates_title_n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.cat_arguments					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;arguments&amp;quot;)&lt;br /&gt;
	PF.cat_no_keywords					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_summary					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;summary_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_quotes					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;quotes_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_references				= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;references_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_justifications			= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;justifications_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_objections				= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;objections_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_sections					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;sections_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_content					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;content_missing&amp;quot;)&lt;br /&gt;
	PF.cat_has_detailed_debate			= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;has_detailed_debate&amp;quot;)&lt;br /&gt;
	PF.cat_no_authors					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;authors_missing&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	props “contenu”&lt;br /&gt;
	PF.prop_arg_name					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_page_name&amp;quot;)&lt;br /&gt;
	PF.prop_arg_number					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_number&amp;quot;)&lt;br /&gt;
	PF.prop_argument_map				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;argument_map&amp;quot;)&lt;br /&gt;
	PF.prop_justif_list					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;justif_list&amp;quot;)&lt;br /&gt;
	PF.prop_obj_list					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;obj_list&amp;quot;)&lt;br /&gt;
	PF.prop_keyword						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;keyword&amp;quot;)&lt;br /&gt;
	PF.prop_detailed_debate				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;detailed_debate&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	props refs (depuis Références, pas depuis citations)&lt;br /&gt;
	PF.prop_author						= L( lang, &amp;quot;props&amp;quot;, &amp;quot;author&amp;quot; )&lt;br /&gt;
	PF.prop_article_name				= L( lang, &amp;quot;props&amp;quot;, &amp;quot;article_name&amp;quot; )&lt;br /&gt;
	PF.prop_work_name					= L( lang, &amp;quot;props&amp;quot;, &amp;quot;work_name&amp;quot; )&lt;br /&gt;
	PF.prop_publishing_house			= L( lang, &amp;quot;props&amp;quot;, &amp;quot;publishing_house&amp;quot; )&lt;br /&gt;
	PF.prop_place_of_publication		= L( lang, &amp;quot;props&amp;quot;, &amp;quot;place_of_publication&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	props “ask/parents/breadcrumb”&lt;br /&gt;
	PF.prop_arg_pro						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_pro&amp;quot;)&lt;br /&gt;
	PF.prop_arg_con						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_con&amp;quot;)&lt;br /&gt;
	PF.prop_justif						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;justif&amp;quot;)&lt;br /&gt;
	PF.prop_obj							= L(lang, &amp;quot;props&amp;quot;, &amp;quot;obj&amp;quot;)&lt;br /&gt;
	PF.prop_breadcrumb					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;breadcrumb&amp;quot;)&lt;br /&gt;
	PF.prop_debate_name					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;debate_name&amp;quot;)&lt;br /&gt;
	PF.prop_parent_debate				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;parent_debate&amp;quot;)&lt;br /&gt;
	PF.prop_parent_argument				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;parent_argument&amp;quot;)&lt;br /&gt;
	PF.prop_section						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;section&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	INITIALIZATION&lt;br /&gt;
	PF.cat_initialized					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;initialized&amp;quot;)&lt;br /&gt;
	PF.cat_uninitialized				= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;uninitialized&amp;quot;)&lt;br /&gt;
	PF.init_warning_title				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_warning_title&amp;quot;)&lt;br /&gt;
	PF.init_warning_intro				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_warning_intro&amp;quot;)&lt;br /&gt;
	PF.init_yes_finish_label			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_yes_finish_label&amp;quot;)&lt;br /&gt;
	PF.init_yes_tt						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_yes_tt&amp;quot;)&lt;br /&gt;
	PF.init_ok_text						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_ok_text&amp;quot;)&lt;br /&gt;
	PF.init_no_rename_label				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_no_rename_label&amp;quot;)&lt;br /&gt;
	PF.init_summary_pro					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_pro&amp;quot;)&lt;br /&gt;
	PF.init_summary_con					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_con&amp;quot;)&lt;br /&gt;
	PF.init_summary_justif				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_justif&amp;quot;)&lt;br /&gt;
	PF.init_summary_obj					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_obj&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local q = args[&amp;quot;quotes&amp;quot;]&lt;br /&gt;
		if type(q) == &amp;quot;string&amp;quot; and q ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local ok, r = pcall(F.preprocess, F, q)&lt;br /&gt;
			if ok and type(r) == &amp;quot;string&amp;quot; then&lt;br /&gt;
				args[&amp;quot;_quotes_wikitext&amp;quot;] = r&lt;br /&gt;
				args[&amp;quot;quotes&amp;quot;] = wkRenderQuotesFromSerialized( r, pv, lang, cats, PF )&lt;br /&gt;
			else&lt;br /&gt;
				args[&amp;quot;_quotes_wikitext&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
				args[&amp;quot;quotes&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hasResume		= args[&amp;quot;summary&amp;quot;] ~= nil&lt;br /&gt;
	local hasQuotes	= args[&amp;quot;quotes&amp;quot;] ~= nil&lt;br /&gt;
	local hasRefs		= (args[&amp;quot;bibliography&amp;quot;] ~= nil) or (args[&amp;quot;webliography&amp;quot;] ~= nil) or (args[&amp;quot;videography&amp;quot;] ~= nil)&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;name&amp;quot;] then&lt;br /&gt;
		table_insert(pieces, F:preprocess(&amp;quot;{{SHORTDESC: &amp;quot; .. args[&amp;quot;name&amp;quot;] .. &amp;quot;}}&amp;quot;))&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;has_alt_name&amp;quot; ) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_arguments .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderTitleWarnings(pv, cats, lang))&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local titleLookup	= buildBannerLabelLookup( lang, TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
		local argLookup		= buildBannerLabelLookup( lang, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
		local out = {}&lt;br /&gt;
&lt;br /&gt;
		if args[ &amp;quot;title-warnings&amp;quot; ] then&lt;br /&gt;
			table_insert( out, renderBannersFromArgList( args[ &amp;quot;title-warnings&amp;quot; ], titleLookup, pv, lang, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if args[ &amp;quot;argument-warnings&amp;quot; ] then&lt;br /&gt;
			table_insert( out, renderBannersFromArgList( args[ &amp;quot;argument-warnings&amp;quot; ], argLookup, pv, lang, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #out &amp;gt; 0 then&lt;br /&gt;
			table_insert( pieces, table_concat( out ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local maps = computeArgumentMapsFromData(args)&lt;br /&gt;
&lt;br /&gt;
	ensureBreadcrumbSelection(pv, cache, cats, lang, PF)&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderDebateParentsBoxes(pv, cats, lang, cache, PF))&lt;br /&gt;
	table_insert(pieces, renderArgumentParentsBoxes(pv, cats, lang, cache, PF))&lt;br /&gt;
	table_insert(pieces, renderInitializationBlock(args, pv, cats, lang, cache, PF, maps))&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderKeywords(args, pv, cats, lang, PF))&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderSummary(args, pv, cats, lang, PF))&lt;br /&gt;
	table_insert(pieces, renderQuotes(args, pv, cats, lang, PF))&lt;br /&gt;
&lt;br /&gt;
	local detailed = renderDebateDetailed(args, pv, cats, lang, PF)&lt;br /&gt;
	if detailed ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(pieces, detailed)&lt;br /&gt;
	else&lt;br /&gt;
		local out = {}&lt;br /&gt;
&lt;br /&gt;
		local editRefs = addDataEditLink(&lt;br /&gt;
			PF.form_edit_references,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_references_tooltip&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-bibliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. PF.references&lt;br /&gt;
			.. editRefs .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local refsHtml = wkRenderReferencesFromRaw( rawB, rawW, rawV, pv, lang, cats, PF, nil, args )&lt;br /&gt;
&lt;br /&gt;
			if refsHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert( out, &#039;&amp;lt;ul class=&amp;quot;references-argument&amp;quot;&amp;gt;&#039; .. refsHtml .. &#039;&amp;lt;/ul&amp;gt;&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_references .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
				table_insert( cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_references .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local justifItems = (maps.justif and maps.justif.items) or {}&lt;br /&gt;
		local objItems    = (maps.obj and maps.obj.items) or {}&lt;br /&gt;
&lt;br /&gt;
		--	Justifications&lt;br /&gt;
		local editJust = addDataEditLink(&lt;br /&gt;
			PF.form_edit_justifications,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_justifications_tooltip&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. PF.justifications&lt;br /&gt;
			.. editJust .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local raw = args[ &amp;quot;justification-warnings&amp;quot; ]&lt;br /&gt;
		raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lookup = buildSummaryLabelLookup( lang, JUSTIFICATION_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
			for _, x in ipairs( splitCSV( raw, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				local key = resolveKeyFromLookup( x, lookup, JUSTIFICATION_WARNING_BANNER_KEYS )&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(&lt;br /&gt;
						out,&lt;br /&gt;
						renderSubsectionBanner(&lt;br /&gt;
							pv,&lt;br /&gt;
							lang,&lt;br /&gt;
							key,&lt;br /&gt;
							{&lt;br /&gt;
								reorg	= true,&lt;br /&gt;
								form	= PF.form_edit_justifications,&lt;br /&gt;
								tooltip	= PF.edit_justifications_tooltip&lt;br /&gt;
							},&lt;br /&gt;
							cats&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
		if #justifItems &amp;gt; 0 then&lt;br /&gt;
			local ulJ = html_create(&amp;quot;ul&amp;quot;):addClass(&amp;quot;argument-list is-pro&amp;quot;)&lt;br /&gt;
			local lis = {}&lt;br /&gt;
			for i, it in ipairs(justifItems) do&lt;br /&gt;
				table_insert(lis, wkRenderArgumentLi(pv, lang, it, &amp;quot;justif&amp;quot;, i, cats))&lt;br /&gt;
			end&lt;br /&gt;
			ulJ:wikitext(table_concat(lis, &amp;quot;\n&amp;quot;))&lt;br /&gt;
			table_insert(out, tostring(ulJ))&lt;br /&gt;
		else&lt;br /&gt;
			table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_justifications .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_justifications .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local baseField = tostring( PF.arg_new_title_field_base or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local sideLabel = tostring( PF.side_pro_word or &amp;quot;pour&amp;quot; )&lt;br /&gt;
			local label = tostring( PF.justification_add_label or &amp;quot;&amp;quot; )&lt;br /&gt;
			local tooltip = string_format( PF.justification_add_tt, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
			local rqForm = tostring( PF.form_new_arg_title or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local rqQuery = {}&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ] = tostring( PF.type_justification or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]   = tostring( pv.pageId or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ &amp;quot;_run&amp;quot; ]                = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			table_insert( out,&lt;br /&gt;
				&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. wkRunQueryHtmlTagButton( rqForm, label, tooltip, rqQuery )&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		--	Objections&lt;br /&gt;
		local editObj = addDataEditLink(&lt;br /&gt;
			PF.form_edit_objections,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_objections_tooltip&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			listBreaker()&lt;br /&gt;
			.. &#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. PF.objections&lt;br /&gt;
			.. editObj .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local raw = args[ &amp;quot;objection-warnings&amp;quot; ]&lt;br /&gt;
		raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lookup = buildSummaryLabelLookup( lang, OBJECTION_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
			for _, x in ipairs( splitCSV( raw, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				local key = resolveKeyFromLookup( x, lookup, OBJECTION_WARNING_BANNER_KEYS )&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(&lt;br /&gt;
						out,&lt;br /&gt;
						renderSubsectionBanner(&lt;br /&gt;
							pv,&lt;br /&gt;
							lang,&lt;br /&gt;
							key,&lt;br /&gt;
							{&lt;br /&gt;
								reorg	= true,&lt;br /&gt;
								form	= PF.form_edit_objections,&lt;br /&gt;
								tooltip	= PF.edit_objections_tooltip&lt;br /&gt;
							},&lt;br /&gt;
							cats&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
		if #objItems &amp;gt; 0 then&lt;br /&gt;
			local ulO = html_create(&amp;quot;ul&amp;quot;):addClass(&amp;quot;argument-list is-con&amp;quot;)&lt;br /&gt;
			local lis = {}&lt;br /&gt;
			for i, it in ipairs(objItems) do&lt;br /&gt;
				table_insert(lis, wkRenderArgumentLi(pv, lang, it, &amp;quot;obj&amp;quot;, i, cats))&lt;br /&gt;
			end&lt;br /&gt;
			ulO:wikitext(table_concat(lis, &amp;quot;\n&amp;quot;))&lt;br /&gt;
			table_insert(out, tostring(ulO))&lt;br /&gt;
		else&lt;br /&gt;
			table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_objections .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_objections .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local baseField = tostring( PF.arg_new_title_field_base or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local label = tostring( PF.objection_add_label or &amp;quot;&amp;quot; )&lt;br /&gt;
			local tooltip = string_format( PF.objection_add_tt, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
			local rqForm = tostring( PF.form_new_arg_title or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local rqQuery = {}&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ] = tostring( PF.type_objection or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]   = tostring( pv.pageId or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ &amp;quot;_run&amp;quot; ]                = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			table_insert( out,&lt;br /&gt;
				&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. wkRunQueryHtmlTagButton( rqForm, label, tooltip, rqQuery )&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		--	Inject rendu&lt;br /&gt;
		table_insert(pieces, table_concat(out))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderDebatesParentsBottom(pv, lang, cache, PF))&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] then&lt;br /&gt;
		table_insert(pieces, args[&amp;quot;interlanguage&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args[&amp;quot;creation-date&amp;quot;] or t_trim(args[&amp;quot;creation-date&amp;quot;]) == &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;creation_date_missing&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderRubriques(args, cats, lang, PF))&lt;br /&gt;
&lt;br /&gt;
	if (not hasResume) and (not hasQuotes) and (not hasRefs) then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_content .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	setSemanticData(args, pv, lang, cache, PF, maps, rawB, rawW, rawV)&lt;br /&gt;
&lt;br /&gt;
	renderFullSEO( args, pv, lang )&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, table_concat(cats, &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces,&lt;br /&gt;
		&#039;&amp;lt;span id=&amp;quot;bouton-renommer&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;[[Special:MovePage/&#039;&lt;br /&gt;
		.. pv.encoded .. &#039;| &#039; .. PF.rename_link_text .. &#039;]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-categories&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataEditLink(PF.form_edit_sections, pv.rawTitle, PF.edit, PF.edit_sections_tooltip)&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] and t_trim( tostring( args[&amp;quot;interlanguage&amp;quot;] or &amp;quot;&amp;quot; ) ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces,&lt;br /&gt;
			&#039;&amp;lt;span id=&amp;quot;bouton-modifier-interlangue&amp;quot; style=&amp;quot;display: none;&amp;quot;&#039;&lt;br /&gt;
			.. &#039; data-wk-tooltip=&amp;quot;&#039; .. escapeAttr( PF.edit_interlanguage_tooltip ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. addDataEditLink( PF.form_edit_interlanguage, pv.rawTitle, PF.edit, PF.edit_interlanguage_tooltip )&lt;br /&gt;
			.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderArgumentSchemaJSONLD( args, pv, lang, cache, PF, maps ) )&lt;br /&gt;
&lt;br /&gt;
	return table_concat(pieces, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:Debate&amp;diff=10560</id>
		<title>Module:Debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:Debate&amp;diff=10560"/>
		<updated>2026-03-24T17:15:35Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--	Module:Debate (i18n FR/EN) — Optimisé&lt;br /&gt;
--	Objectif : rendu du modèle « Débat » (MediaWiki 1.43) fidèle au rendu existant&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Accès global au frame + VariablesLua (accélération sans changer le rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mw			= mw&lt;br /&gt;
local F				= mw.getCurrentFrame()&lt;br /&gt;
local V				= ( mw.ext and mw.ext.VariablesLua ) or nil&lt;br /&gt;
local WD_I18N		= require( &#039;Module:WD/I18N&#039; )&lt;br /&gt;
local uri_encode	= mw.uri.encode&lt;br /&gt;
local string_format	= string.format&lt;br /&gt;
local title_getCurrentTitle	= mw.title.getCurrentTitle&lt;br /&gt;
local uri_fullUrl			= mw.uri.fullUrl&lt;br /&gt;
local uri_localUrl			= mw.uri.localUrl&lt;br /&gt;
&lt;br /&gt;
--	Locaux (micro-optis)&lt;br /&gt;
local tostring		= tostring&lt;br /&gt;
local type			= type&lt;br /&gt;
local ipairs		= ipairs&lt;br /&gt;
local pairs			= pairs&lt;br /&gt;
local table_concat	= table.concat&lt;br /&gt;
local table_insert	= table.insert&lt;br /&gt;
local table_sort	= table.sort&lt;br /&gt;
local t_trim		= mw.text.trim&lt;br /&gt;
local t_gsplit		= mw.text.gsplit&lt;br /&gt;
local t_nowiki		= mw.text.nowiki&lt;br /&gt;
local t_jsonEncode	= mw.text.jsonEncode&lt;br /&gt;
local t_jsonDecode	= mw.text.jsonDecode&lt;br /&gt;
local html_create	= mw.html.create&lt;br /&gt;
local gsub			= string.gsub&lt;br /&gt;
&lt;br /&gt;
--	Forward decl (utilisé avant définition)&lt;br /&gt;
local escapeAttr&lt;br /&gt;
&lt;br /&gt;
local ITEM_SEP	= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local FIELD_SEP	= &amp;quot;⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--	wrappers VariablesLua (no-op si extension absente)&lt;br /&gt;
local function vset( name, val )&lt;br /&gt;
	if V and type( V.vardefine ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		pcall( V.vardefine, name, val ~= nil and tostring( val ) or &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local function vget( name )&lt;br /&gt;
	if V and type( V.var ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		local ok, res = pcall( V.var, name )&lt;br /&gt;
		if ok then return res end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectLang( args )&lt;br /&gt;
	return WD_I18N.getLangFromArgs( args or {} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function L( lang, section, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.&amp;quot; .. section, lang, key, ... )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwProp( lang, key )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.props&amp;quot;, lang, key )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isProgress( lang, val, key )&lt;br /&gt;
	if not val or val == &amp;quot;&amp;quot; then return false end&lt;br /&gt;
	local label = WD_I18N.msg( &amp;quot;Debate.progress&amp;quot;, lang, key )&lt;br /&gt;
	return val == label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Anchor intégré (remplace Module:Anchor)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function anchorId( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Normalisation des apostrophes HTML éventuelles&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#039;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;apos;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Nettoyage minimal&lt;br /&gt;
	s = gsub( s, &amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
	s = t_trim( s )&lt;br /&gt;
&lt;br /&gt;
	--	Espaces → underscore&lt;br /&gt;
	s = gsub( s, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Suppression caractères cassants (HTML / wiki)&lt;br /&gt;
	s = gsub( s, &#039;[%[%]{}|#&amp;lt;&amp;gt;&amp;quot;]&#039;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getArgs( frame )&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local A = {}&lt;br /&gt;
&lt;br /&gt;
	local function add( k, v )&lt;br /&gt;
		if v == nil then return end&lt;br /&gt;
		v = t_trim( tostring( v ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			A[ k ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if parent and parent.args then&lt;br /&gt;
		for k, v in pairs( parent.args ) do&lt;br /&gt;
			add( k, v )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if frame.args then&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			add( k, v )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return A&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitCSV( s, sep )&lt;br /&gt;
	if not s or s == &amp;quot;&amp;quot; then return {} end&lt;br /&gt;
	sep = sep or &amp;quot;,&amp;quot;&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for part in t_gsplit( s, sep, true ) do&lt;br /&gt;
		part = t_trim( part )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then table_insert( out, part ) end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWikipediaMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	On attend maintenant une série de &amp;quot;Titre⟭&amp;quot;&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pages = {}&lt;br /&gt;
&lt;br /&gt;
	for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		part = t_trim( part )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			pages[ #pages + 1 ] = part&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSMW()&lt;br /&gt;
	return type( mw.smw ) == &amp;quot;table&amp;quot; and type( mw.smw.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwSetSafe( props )&lt;br /&gt;
	if not mw.smw or type( mw.smw.set ) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pcall( function()&lt;br /&gt;
		mw.smw.set( props )&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwAskSafe( q )&lt;br /&gt;
	if not hasSMW() then return nil end&lt;br /&gt;
	local ok, res = pcall( function() return mw.smw.ask( q ) end )&lt;br /&gt;
	return ok and res or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO : cache “par rendu”&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SEO_CACHE = {}&lt;br /&gt;
&lt;br /&gt;
local function seoCacheKey( args, pv, lang )&lt;br /&gt;
	return table_concat( {&lt;br /&gt;
		tostring( lang or &amp;quot;&amp;quot; ),&lt;br /&gt;
		pv.pageId or &amp;quot;&amp;quot;,&lt;br /&gt;
		tostring( pv.rawTitle or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;complete-topic&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
	}, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Wikiseo helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkSeoHas()&lt;br /&gt;
	return mw.ext&lt;br /&gt;
		and mw.ext.seo&lt;br /&gt;
		and type( mw.ext.seo.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSeoSet( data )&lt;br /&gt;
	if not wkSeoHas() then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall( mw.ext.seo.set, data )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoL( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.seo&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoJoinList( items )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local seen = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs( items or {} ) do&lt;br /&gt;
		v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; and not seen[ v ] then&lt;br /&gt;
			seen[ v ] = true&lt;br /&gt;
			out[ #out + 1 ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out, &amp;quot;, &amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSeoKeywords( args, lang )&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, s in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return seoJoinList( items )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPageCreation(pv, args)&lt;br /&gt;
	local v = args and args[&amp;quot;creation-date&amp;quot;]&lt;br /&gt;
	v = (type(v) == &amp;quot;string&amp;quot;) and t_trim(v) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v .. &amp;quot;T00:00:00Z&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO principal (avec cache)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderFullSEO( args, pv, lang )&lt;br /&gt;
	--	cache par rendu&lt;br /&gt;
	local ck = seoCacheKey( args, pv, lang )&lt;br /&gt;
	if SEO_CACHE[ ck ] then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	SEO_CACHE[ ck ] = true&lt;br /&gt;
&lt;br /&gt;
	local pageTitle	= pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local topic = t_trim( tostring( args[ &amp;quot;complete-topic&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if topic == &amp;quot;&amp;quot; then&lt;br /&gt;
		topic = pageTitle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local kw = buildSeoKeywords( args, lang )&lt;br /&gt;
&lt;br /&gt;
	wkSeoSet{&lt;br /&gt;
		title				= pageTitle .. &amp;quot; &amp;quot; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;) .. &amp;quot; – &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot;),&lt;br /&gt;
		title_mode			= pageTitle .. &amp;quot; &amp;quot; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;),&lt;br /&gt;
		title_separator		= string_format( seoL( lang, &amp;quot;title_separator&amp;quot; ), pageTitle ),&lt;br /&gt;
		description			= string_format( seoL( lang, &amp;quot;description&amp;quot; ), topic ),&lt;br /&gt;
		keywords			= kw,&lt;br /&gt;
		image				= seoL( lang, &amp;quot;image&amp;quot; ),&lt;br /&gt;
		image_alt			= seoL( lang, &amp;quot;image_alt&amp;quot; ),&lt;br /&gt;
		section				= seoL( lang, &amp;quot;section&amp;quot; ),&lt;br /&gt;
		site_name			= seoL( lang, &amp;quot;site_name&amp;quot; ),&lt;br /&gt;
		twitter_site		= seoL( lang, &amp;quot;twitter_site&amp;quot; ),&lt;br /&gt;
		locale				= seoL( lang, &amp;quot;locale&amp;quot; ),&lt;br /&gt;
		author				= seoL( lang, &amp;quot;author&amp;quot; ),&lt;br /&gt;
		robots				= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
		googlebot			= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers PERF : preprocess conditionnel + cache Bandeau&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function subMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.subsections&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubsectionBanner( pv, lang, key, opts, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local isReorg		= opts.reorg == true&lt;br /&gt;
	local linkHtml		= &amp;quot;&amp;quot;&lt;br /&gt;
	local title			= &amp;quot;&amp;quot;&lt;br /&gt;
	local text			= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	--	Lien de réorganisation (optionnel) — AddData (même source que le H2)&lt;br /&gt;
	if isReorg then&lt;br /&gt;
		local formName	= tostring( opts.form or &amp;quot;&amp;quot; )&lt;br /&gt;
		local tooltip	= tostring( opts.tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
		local linkLabel	= tostring( opts.link_label or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		if linkLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
			linkLabel = L( lang, &amp;quot;text&amp;quot;, &amp;quot;reorganize_link_label&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if formName ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linkHtml = addDataLink( formName, pv.rawTitle, linkLabel, tooltip )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Titre/texte (mêmes messages i18n que tes fonctions actuelles)&lt;br /&gt;
	if isReorg and linkHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot; )&lt;br /&gt;
		title = t_trim( tostring( title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			title = title .. &amp;quot;&amp;amp;nbsp;&amp;quot; .. linkHtml&lt;br /&gt;
		else&lt;br /&gt;
			title = linkHtml&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	text = subMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-avertissement wk-icon-before wk-icon-sensible&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;smw-highlighter smwttinline wk-icon-before wk-icon-help mw-no-invert&amp;quot; data-state=&amp;quot;inline&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;smwttcontent&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local cat = subMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW batch : on accumule et on flush une fois à la fin&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAdd( pending, key, val, multi )&lt;br /&gt;
	if not key or key == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type( val ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		val = t_trim( val )&lt;br /&gt;
		if val == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cur = pending[ key ]&lt;br /&gt;
&lt;br /&gt;
	if multi then&lt;br /&gt;
		--	Multi-valeurs : toujours en table côté pending&lt;br /&gt;
		if cur == nil then&lt;br /&gt;
			pending[ key ] = ( type( val ) == &amp;quot;table&amp;quot; ) and val or { val }&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type( cur ) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
			cur = { cur }&lt;br /&gt;
			pending[ key ] = cur&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type( val ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, x in ipairs( val ) do&lt;br /&gt;
				if x ~= nil then&lt;br /&gt;
					cur[ #cur + 1 ] = x&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur[ #cur + 1 ] = val&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Scalar : dernière valeur gagne (comportement le plus sûr)&lt;br /&gt;
	pending[ key ] = val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAddFromSepString( pending, key, raw, sep )&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	sep = sep or ITEM_SEP&lt;br /&gt;
&lt;br /&gt;
	local vals = {}&lt;br /&gt;
&lt;br /&gt;
	if raw:find( sep, 1, true ) then&lt;br /&gt;
		for part in t_gsplit( raw, sep, true ) do&lt;br /&gt;
			part = t_trim( part )&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				vals[ #vals + 1 ] = part&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		vals[ 1 ] = raw&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #vals &amp;gt; 0 then&lt;br /&gt;
		smwQueueAdd( pending, key, vals, true )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAddFromCSV( pending, key, raw )&lt;br /&gt;
	smwQueueAddFromSepString( pending, key, raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueMerge( dst, src )&lt;br /&gt;
	for k, v in pairs( src or {} ) do&lt;br /&gt;
		if type( v ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			smwQueueAdd( dst, k, v, true )&lt;br /&gt;
		else&lt;br /&gt;
			smwQueueAdd( dst, k, v, false )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	PageForms : utilitaires HTML / attributs&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
escapeAttr = function( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
		:gsub( &amp;quot;[\r\n\t]&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;amp;&amp;quot;, &amp;quot;&amp;amp;amp;&amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;gt;&amp;quot; )&lt;br /&gt;
		:gsub( &#039;&amp;quot;&#039;, &amp;quot;&amp;amp;quot;&amp;quot; )&lt;br /&gt;
	-- pas besoin d&#039;échapper &#039; si on entoure l&#039;attribut avec des guillemets doubles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	{{#tag}} utilitaire&lt;br /&gt;
local function tag( name, content, attrs )&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	if attrs then&lt;br /&gt;
		for k, v in pairs( attrs ) do&lt;br /&gt;
			table_insert( parts, string_format( &amp;quot;%s=%s&amp;quot;, k, v ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local src&lt;br /&gt;
	if #parts &amp;gt; 0 then&lt;br /&gt;
		src = string_format( &amp;quot;{{#tag:%s|%s|%s}}&amp;quot;, name, content or &amp;quot;&amp;quot;, table_concat( parts, &amp;quot;|&amp;quot; ) )&lt;br /&gt;
	else&lt;br /&gt;
		src = string_format( &amp;quot;{{#tag:%s|%s}}&amp;quot;, name, content or &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return F:preprocess( src )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function pf_escape( v )&lt;br /&gt;
	if not v then return &amp;quot;&amp;quot; end&lt;br /&gt;
	v = tostring( v )&lt;br /&gt;
	v = v:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; ):gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	return v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	PageForms : remplacement des #formlink (link) par Special:AddData&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkDbKey( page )&lt;br /&gt;
	local t = mw.title.new( page )&lt;br /&gt;
	if not t then&lt;br /&gt;
		return tostring( page or &amp;quot;&amp;quot; ):gsub( &amp;quot;%s&amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return t.prefixedText:gsub( &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkEncodeAddDataSegment( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;%%&amp;quot;, &amp;quot;%%25&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;%?&amp;quot;, &amp;quot;%%3F&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;#&amp;quot;, &amp;quot;%%23&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;/&amp;quot;, &amp;quot;%%2F&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkWikipediaUrl( page, lang )&lt;br /&gt;
	if not page or page == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local base = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wikipedia&amp;quot; )&lt;br /&gt;
	if not base or base == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return base .. uri_encode( page, &amp;quot;WIKI&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataPath( formName, pageTitle )&lt;br /&gt;
	local form = wkEncodeAddDataSegment( wkDbKey( formName ) )&lt;br /&gt;
	local page = wkEncodeAddDataSegment( wkDbKey( pageTitle ) )&lt;br /&gt;
	return &amp;quot;Special:AddData/&amp;quot; .. form .. &amp;quot;/&amp;quot; .. page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataLink( formName, pageTitle, linktext, tooltip )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle = tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local target = wkAddDataPath( formName, pageTitle )&lt;br /&gt;
&lt;br /&gt;
	local lt = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link bouton-modifier navigation-not-searchable noprint&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			target,&lt;br /&gt;
			lt&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format( &#039;[[%s|%s]]&#039;, target, lt )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryPath( formName )&lt;br /&gt;
	local form = wkEncodeAddDataSegment( wkDbKey( formName ) )&lt;br /&gt;
	return &amp;quot;Special:RunQuery/&amp;quot; .. form&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalizeTooltipText( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Apostrophes&lt;br /&gt;
	s = s:gsub( &amp;quot;&#039;&amp;quot;, &amp;quot;’&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Guillemets droits → typographiques&lt;br /&gt;
	s = s:gsub( &#039;&amp;quot;&#039;, &#039;“&#039; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryHtmlTagButton( formName, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	tooltip = normalizeTooltipText( tooltip )&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkRunQueryPath( formName )&lt;br /&gt;
	local href	= tostring( uri_localUrl( title, query ) )&lt;br /&gt;
&lt;br /&gt;
	local content = &amp;quot;＋ &amp;quot; .. label&lt;br /&gt;
&lt;br /&gt;
	return F:preprocess(&lt;br /&gt;
		&#039;&amp;lt;htmltag tagname=&amp;quot;a&amp;quot;&#039;&lt;br /&gt;
		.. &#039; href=&amp;quot;javascript:void(0)&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-href=&amp;quot;&#039; .. escapeAttr( href ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; class=&amp;quot;wk-btn__a wk-js-nav&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. content&lt;br /&gt;
		.. &#039;&amp;lt;/htmltag&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataGetButton( formName, pageTitle, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle	= tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkAddDataPath( formName, pageTitle )&lt;br /&gt;
	local url	= tostring( uri_fullUrl( title, query ) )	--	URL absolue obligatoire&lt;br /&gt;
&lt;br /&gt;
	local linkInner =&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;wk-btn__icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;➜&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;wk-btn__label&amp;quot;&amp;gt;&#039; .. label .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local link = &#039;[&#039; .. url .. &#039; &#039; .. linkInner .. &#039;]&#039;&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;wk-btn wk-auto-id mw-ui-button navigation-not-searchable&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. link&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function runQueryLink( formName, fieldLabel, fieldName, value, linktext, tooltip, extraParams )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	fieldLabel = tostring( fieldLabel or &amp;quot;&amp;quot; )&lt;br /&gt;
	fieldName = tostring( fieldName or &amp;quot;&amp;quot; )&lt;br /&gt;
	value = tostring( value or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or fieldLabel == &amp;quot;&amp;quot; or fieldName == &amp;quot;&amp;quot; or value == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = wkRunQueryPath( formName )&lt;br /&gt;
&lt;br /&gt;
	local q = {}&lt;br /&gt;
	q[ fieldLabel .. &amp;quot;[&amp;quot; .. fieldName .. &amp;quot;]&amp;quot; ] = value&lt;br /&gt;
&lt;br /&gt;
	if type( extraParams ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for k, v in pairs( extraParams ) do&lt;br /&gt;
			if k and k ~= &amp;quot;&amp;quot; and v ~= nil and tostring( v ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				q[ k ] = tostring( v )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	q[ &amp;quot;_run&amp;quot; ] = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local url = tostring( uri_fullUrl( title, q ) )&lt;br /&gt;
	local label = linktext or value&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local link = &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link masquer-externe&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			link&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format( &#039;&amp;lt;span class=&amp;quot;wk-adddata-link&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;, link )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function joinArticles( items, lang )&lt;br /&gt;
	local n = #items&lt;br /&gt;
	if n == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
	if n == 1 then return items[ 1 ] end&lt;br /&gt;
&lt;br /&gt;
	local conj = WD_I18N.msg( &amp;quot;Common.text&amp;quot;, lang, &amp;quot;list_conjunction_text&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		return items[ 1 ] .. conj .. items[ 2 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local last = items[ n ]&lt;br /&gt;
	local first = {}&lt;br /&gt;
	for i = 1, n - 1 do first[ i ] = items[ i ] end&lt;br /&gt;
	return table_concat( first, &amp;quot;, &amp;quot; ) .. conj .. last&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function listBreaker()&lt;br /&gt;
	return &amp;quot;\n\n&amp;lt;!--__WD_LIST_BREAK__--&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function push( t, s )&lt;br /&gt;
	t[ #t + 1 ] = s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux de sous-section pour les titres affichés&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;displayed_title_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_disadvantageous&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_LOOKUPS = {}&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgumentWarningLookup( lang )&lt;br /&gt;
	lang = tostring( lang or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if not ARGUMENT_WARNING_LOOKUPS[ lang ] then&lt;br /&gt;
		ARGUMENT_WARNING_LOOKUPS[ lang ] =&lt;br /&gt;
			buildSummaryLabelLookup( lang, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ARGUMENT_WARNING_LOOKUPS[ lang ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveKeyFromLookup( raw, lookup, allowedKeys, aliases )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local k = ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
	if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aliases and aliases[ raw ] then&lt;br /&gt;
		return aliases[ raw ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if allowedKeys then&lt;br /&gt;
		for _, kk in ipairs( allowedKeys ) do&lt;br /&gt;
			if raw == kk then&lt;br /&gt;
				return kk&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsArg = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsArg == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = getArgumentWarningLookup( lang )&lt;br /&gt;
	local hasBanner = false&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsArg, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, nil ) )&lt;br /&gt;
			hasBanner = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasBanner and cats then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;displayed_titles_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Arguments : extraction depuis chaînes&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkSplit2( s, sep )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	sep = tostring( sep or &amp;quot;&amp;quot; )&lt;br /&gt;
	if sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local i = s:find( sep, 1, true )&lt;br /&gt;
	if not i then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s:sub( 1, i - 1 ), s:sub( i + #sep )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkExtractArgumentItemsFromData( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) and not raw:find( FIELD_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local page, rest = wkSplit2( block, FIELD_SEP )&lt;br /&gt;
			local title, warnings = wkSplit2( rest, FIELD_SEP )&lt;br /&gt;
&lt;br /&gt;
			page = t_trim( page )&lt;br /&gt;
			if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				title = t_trim( title )&lt;br /&gt;
				warnings = t_trim( warnings )&lt;br /&gt;
&lt;br /&gt;
				if title == &amp;quot;&amp;quot; then&lt;br /&gt;
					title = page&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				items[ #items + 1 ] = {&lt;br /&gt;
					page = page,&lt;br /&gt;
					title = title,&lt;br /&gt;
					warnings = warnings&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkComputeArgumentItems( raw )&lt;br /&gt;
	local items = wkExtractArgumentItemsFromData( raw )&lt;br /&gt;
	if #items &amp;gt; 0 then&lt;br /&gt;
		return items, &amp;quot;data&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return {}, &amp;quot;none&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildArgumentData( items, lang, kind )&lt;br /&gt;
	items = items or {}&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = ( kind == &amp;quot;pro&amp;quot; ) and &amp;quot;Pro_argument_&amp;quot; or &amp;quot;Con_argument_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local listLines = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		table_insert( listLines, &amp;quot;* &amp;quot; .. it.title )&lt;br /&gt;
	end&lt;br /&gt;
	local listText = table_concat( listLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local argsVarParts = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		if it.page == it.title then&lt;br /&gt;
			table_insert( argsVarParts, it.page )&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( argsVarParts, it.page .. &amp;quot;⟬&amp;quot; .. it.title )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local argsVar = table_concat( argsVarParts, &amp;quot; -;- &amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local mapLines = {}&lt;br /&gt;
	for i, it in ipairs( items ) do&lt;br /&gt;
		table_insert( mapLines,&lt;br /&gt;
			&#039;&amp;lt;div  id=&amp;quot;&#039; .. idPrefix .. i .. &#039;_map&amp;quot; class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. it.title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHtml = table_concat( mapLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hoverLines = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		table_insert( hoverLines,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. &#039;[[&#039; .. it.page .. &#039;|&#039; .. it.title .. &#039;]]&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHoverHtml = table_concat( hoverLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		items = items,&lt;br /&gt;
		list = listText,&lt;br /&gt;
		argsVar = argsVar,&lt;br /&gt;
		map = mapHtml,&lt;br /&gt;
		mapHover = mapHoverHtml&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function computeArgumentMapsFromArgs( args, lang )&lt;br /&gt;
	local rawPro = args[ &amp;quot;pro-arguments&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawCon = args[ &amp;quot;con-arguments&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if rawPro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		rawPro = F:preprocess( rawPro )&lt;br /&gt;
	end&lt;br /&gt;
	if rawCon ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		rawCon = F:preprocess( rawCon )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pro, proMode = wkComputeArgumentItems( rawPro )&lt;br /&gt;
	local con, conMode = wkComputeArgumentItems( rawCon )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		pro = wkBuildArgumentData( pro, lang, &amp;quot;pro&amp;quot; ),&lt;br /&gt;
		con = wkBuildArgumentData( con, lang, &amp;quot;con&amp;quot; ),&lt;br /&gt;
		_mode = { pro = proMode, con = conMode }&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderArgumentLi( pv, lang, it, kind, idx, cats )&lt;br /&gt;
	local isPro = ( kind == &amp;quot;pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = isPro and &amp;quot;Pro_argument_&amp;quot; or &amp;quot;Con_argument_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local page = tostring( it.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local titleShown = tostring( it.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if titleShown == &amp;quot;&amp;quot; then&lt;br /&gt;
		titleShown = page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local aId = anchorId( titleShown )&lt;br /&gt;
	local warnings = tostring( it.warnings or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local banners = {}&lt;br /&gt;
	renderArgumentItemBanners( warnings, pv, lang, cats, banners )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;li id=&amp;quot;&#039;&lt;br /&gt;
		.. idPrefix .. tostring( idx )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument level-1&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div id=&amp;quot;&#039;&lt;br /&gt;
		.. escapeAttr( aId )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument-title wk-icon-before wk-icon-argument wk-icon-after wk-carret&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. page .. &#039;|&#039; .. titleShown .. &#039;]]&#039;&lt;br /&gt;
		.. ( #banners &amp;gt; 0 and table_concat( banners ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bloc d’en-tête / variables de page&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function computePageVars()&lt;br /&gt;
	local title = title_getCurrentTitle()&lt;br /&gt;
	local rawTitle = title.prefixedText&lt;br /&gt;
	local encoded = uri_encode( rawTitle, &amp;quot;WIKI&amp;quot; )&lt;br /&gt;
	local pageUrl = tostring( uri_fullUrl( title.prefixedText ) )&lt;br /&gt;
	local pageId = tostring( title.id or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		title = title,&lt;br /&gt;
		rawTitle = rawTitle,&lt;br /&gt;
		encoded = encoded,&lt;br /&gt;
		pageUrl = pageUrl,&lt;br /&gt;
		pageId = pageId&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeau principal&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderMetaWarningHtml( params )&lt;br /&gt;
	local color	= tostring( params.color or &amp;quot;&amp;quot; )&lt;br /&gt;
	local icon	= tostring( params.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local title	= tostring( params.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local text	= tostring( params.text or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau bandeau-&#039; .. color .. &#039; wk-icon-before &#039; .. icon .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-titre&amp;quot;&amp;gt;&#039; .. title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-texte&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMainBanner( frame, pv, lang )&lt;br /&gt;
	local titre = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;main_banner_title&amp;quot; ), t_nowiki( pv.rawTitle ) )&lt;br /&gt;
&lt;br /&gt;
	return renderMetaWarningHtml{&lt;br /&gt;
		color	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;main_banner_color&amp;quot; ),&lt;br /&gt;
		title	= titre,&lt;br /&gt;
		icon	= &#039;wk-icon-wikidebates&#039;,&lt;br /&gt;
		text	= &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;learn_more_label&amp;quot; ) .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;founding_principles_link&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux : rendu natif + résolution via label i18n (C optimisée)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local PROGRESS_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;progress_under_construction&amp;quot;,&lt;br /&gt;
	&amp;quot;progress_draft&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;title_non_standard&amp;quot;,&lt;br /&gt;
	&amp;quot;title_to_explain&amp;quot;,&lt;br /&gt;
	&amp;quot;title_to_simplify&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local DEBATE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;debate_unbalanced&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_redundant&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_fanciful&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_sensitive&amp;quot;,&lt;br /&gt;
	&amp;quot;outline_to_improve&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_generated_by_chatgpt&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function bannerMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.banners&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannerByKey( pv, lang, key, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local color	= bannerMsg( lang, key .. &amp;quot;_color&amp;quot; )&lt;br /&gt;
	local icon	= bannerMsg( lang, key .. &amp;quot;_icon&amp;quot; )&lt;br /&gt;
	local title	= bannerMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	local text	= bannerMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if color == &amp;quot;&amp;quot; and icon == &amp;quot;&amp;quot; and title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = renderMetaWarningHtml{&lt;br /&gt;
		color	= color,&lt;br /&gt;
		icon	= icon,&lt;br /&gt;
		title	= title,&lt;br /&gt;
		text	= text&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local cat = bannerMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildBannerLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( bannerMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveBannerKeyFromLookup( raw, lookup )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderWarningBanners( args, pv, cats, lang )&lt;br /&gt;
	local av = args[ &amp;quot;progress&amp;quot; ]&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local titleLookup	= buildBannerLabelLookup( lang, TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local debateLookup	= buildBannerLabelLookup( lang, DEBATE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local progLookup	= buildBannerLabelLookup( lang, PROGRESS_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
	local function renderBannersFromList( list, lookup )&lt;br /&gt;
		local html = {}&lt;br /&gt;
		for _, x in ipairs( splitCSV( list, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			local key = resolveBannerKeyFromLookup( x, lookup )&lt;br /&gt;
			if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert( html, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return table_concat( html )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;title-warnings&amp;quot; ] then&lt;br /&gt;
		table_insert( out, renderBannersFromList( args[ &amp;quot;title-warnings&amp;quot; ], titleLookup ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if av and t_trim( av ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local key = resolveBannerKeyFromLookup( av, progLookup )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isProgress( lang, av, &amp;quot;constructed&amp;quot; ) then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;constructed&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	elseif not isProgress( lang, av, &amp;quot;draft&amp;quot; ) and not isProgress( lang, av, &amp;quot;building&amp;quot; ) and not isProgress( lang, av, &amp;quot;constructed&amp;quot; ) then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;progress_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;debate-warnings&amp;quot; ] then&lt;br /&gt;
		table_insert( out, renderBannersFromList( args[ &amp;quot;debate-warnings&amp;quot; ], debateLookup ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Carte des arguments (en-tête)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentMapTop( lang, maps )&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local pro = ( maps.pro and maps.pro.map ) or &amp;quot;&amp;quot;&lt;br /&gt;
	local con = ( maps.con and maps.con.map ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local labelPour		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_pro_label&amp;quot; )&lt;br /&gt;
	local labelContre	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_con_label&amp;quot; )&lt;br /&gt;
	local msgPour		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg_short&amp;quot; )&lt;br /&gt;
	local msgContre		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg_short&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local root = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:attr( &amp;quot;id&amp;quot;, &amp;quot;Argument_map&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map--top&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;navigation-not-searchable&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local colP = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map__col&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;is-pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local colC = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map__col&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;is-con&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	colP:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__th&amp;quot; )&lt;br /&gt;
			:wikitext( labelPour )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colP:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__td&amp;quot; )&lt;br /&gt;
			:wikitext( pro ~= &amp;quot;&amp;quot; and pro or ( &#039;&amp;lt;div class=&amp;quot;carte-vide navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msgPour .. &#039;&amp;lt;/div&amp;gt;&#039; ) )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colC:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__th&amp;quot; )&lt;br /&gt;
			:wikitext( labelContre )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colC:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__td&amp;quot; )&lt;br /&gt;
			:wikitext( con ~= &amp;quot;&amp;quot; and con or ( &#039;&amp;lt;div class=&amp;quot;carte-vide navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msgContre .. &#039;&amp;lt;/div&amp;gt;&#039; ) )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	root:node( colP ):node( colC )&lt;br /&gt;
&lt;br /&gt;
	return tostring( root )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sous-parties d’introduction (format &amp;quot;Sous-partie&amp;quot; optimisé)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local INTRO_SUB_SEP		= &amp;quot;⟭⟭⟭&amp;quot;&lt;br /&gt;
local INTRO_FIELD_SEP	= &amp;quot;⟬⟬⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function wkParseIntroSubsections( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( INTRO_SUB_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, INTRO_SUB_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, INTRO_FIELD_SEP, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 3 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				title		= f[ 1 ],&lt;br /&gt;
				content		= f[ 2 ],&lt;br /&gt;
				warnings	= f[ 3 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local INTRO_SUB_WARNING_KEYS = {&lt;br /&gt;
	&amp;quot;too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;to_develop&amp;quot;,&lt;br /&gt;
	&amp;quot;unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;biased&amp;quot;,&lt;br /&gt;
	&amp;quot;refs_missing&amp;quot;,&lt;br /&gt;
	&amp;quot;style_to_review&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function buildIntroSubWarningLookup( lang )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, k in ipairs( INTRO_SUB_WARNING_KEYS ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, &amp;quot;intro_subbanner_&amp;quot; .. k .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = &amp;quot;intro_subbanner_&amp;quot; .. k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderIntroSubsection( pv, lang, it, cats, lookup )&lt;br /&gt;
	local titre = t_trim( tostring( it.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	local contenu = t_trim( tostring( it.content or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	local avert = t_trim( tostring( it.warnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if titre == &amp;quot;&amp;quot; then&lt;br /&gt;
		titre = L( lang, &amp;quot;text&amp;quot;, &amp;quot;default_subsection_title&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		&#039;&amp;lt;h3 class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-question&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. titre&lt;br /&gt;
		.. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;encadre-section-deroulante&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
	if avert ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local banners = {}&lt;br /&gt;
&lt;br /&gt;
		for lab in t_gsplit( avert, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			lab = t_trim( lab )&lt;br /&gt;
			if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local k = lookup[ lab ] or &amp;quot;&amp;quot;&lt;br /&gt;
				if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					local h = renderSubsectionBanner( pv, lang, k, {}, cats )&lt;br /&gt;
					if h and h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						banners[ #banners + 1 ] = h&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #banners &amp;gt; 0 then&lt;br /&gt;
			table_insert( out, &#039;&amp;lt;div class=&amp;quot;minibandeaux&amp;quot;&amp;gt;&#039; .. table_concat( banners ) .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if contenu ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( out, contenu )&lt;br /&gt;
	else&lt;br /&gt;
		local editForm		= L( lang, &amp;quot;forms&amp;quot;, &amp;quot;intro_edit_title&amp;quot; )&lt;br /&gt;
		local editTT		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_edit_tt&amp;quot; )&lt;br /&gt;
		local linkLabel		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_link_label&amp;quot; )&lt;br /&gt;
		local emptyIntro	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_msg&amp;quot; )&lt;br /&gt;
		local emptyCat		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_category&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local link = addDataLink(&lt;br /&gt;
			editForm,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			linkLabel,&lt;br /&gt;
			editTT&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(&lt;br /&gt;
			out,&lt;br /&gt;
			&amp;quot;&amp;lt;i&amp;gt;&amp;quot; .. emptyIntro	.. &amp;quot;&amp;lt;/i&amp;gt;&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		if emptyCat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. emptyCat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( out, &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderIntroSubsectionsBlock( pv, lang, raw, cats )&lt;br /&gt;
	local items = wkParseIntroSubsections( raw )&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildIntroSubWarningLookup( lang )&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		out[ #out + 1 ] = wkRenderIntroSubsection( pv, lang, it, cats, lookup )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Section : Introduction (sans fallback)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderIntroduction( args, pv, lang, cats )&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-question&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;understand_debate_title&amp;quot; )&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;intro_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local raw = args[ &amp;quot;introduction&amp;quot; ]&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local expanded = F:preprocess( raw )&lt;br /&gt;
		local subs = wkRenderIntroSubsectionsBlock( pv, lang, expanded, cats or {} )&lt;br /&gt;
&lt;br /&gt;
		if subs ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local s = ( h2 .. subs ):gsub( &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
			return s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cat = &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;intro_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	local body = &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot; style=&amp;quot;margin-bottom: 1em;&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_intro_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039; .. cat&lt;br /&gt;
&lt;br /&gt;
	local s = ( h2 .. body ):gsub( &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderWikipediaLinks( args, pv, lang )&lt;br /&gt;
	local raw = args[ &amp;quot;wikipedia-articles&amp;quot; ]&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local wrap = html_create( &amp;quot;div&amp;quot; ):addClass( &amp;quot;bandeau-section wk-icon-before wk-icon-wikipedia hover-top navigation-not-searchable&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hasPages = false&lt;br /&gt;
&lt;br /&gt;
	if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local expanded = F:preprocess( raw )&lt;br /&gt;
		local pages = wkParseWikipediaMarkers( expanded )&lt;br /&gt;
&lt;br /&gt;
		if #pages &amp;gt; 0 then&lt;br /&gt;
			hasPages = true&lt;br /&gt;
			local items = {}&lt;br /&gt;
&lt;br /&gt;
			for _, page in ipairs( pages ) do&lt;br /&gt;
				local url = wkWikipediaUrl( page, lang )&lt;br /&gt;
				items[ #items + 1 ] = &#039;&amp;lt;span class=&amp;quot;hover-wikipedia&amp;quot;&amp;gt;[&#039; .. url .. &#039; &#039; .. page .. &#039;]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			wrap:wikitext(&lt;br /&gt;
				string_format(&lt;br /&gt;
					L( lang, &amp;quot;text&amp;quot;, &amp;quot;wikipedia_seealso_msg&amp;quot; ),&lt;br /&gt;
					joinArticles( items, lang )&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			wrap:addClass( &amp;quot;aucun-contenu&amp;quot; )&lt;br /&gt;
				:wikitext( L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_wikipedia_msg&amp;quot; ) )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		wrap:addClass( &amp;quot;aucun-contenu&amp;quot; )&lt;br /&gt;
			:wikitext( L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_wikipedia_msg&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	wrap:wikitext(&lt;br /&gt;
		addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;wiki_seealso_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;wikipedia_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; or not hasPages then&lt;br /&gt;
		return tostring( wrap ) .. &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;wikipedia_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring( wrap )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderQuestionsFAQ( sujetComplet, sens, lang )&lt;br /&gt;
	local topic = ( sujetComplet and sujetComplet ~= &amp;quot;&amp;quot; ) and sujetComplet or &amp;quot;&amp;quot;&lt;br /&gt;
	local isCon = ( sens == &amp;quot;con&amp;quot; )&lt;br /&gt;
	local q&lt;br /&gt;
	if isCon then&lt;br /&gt;
		q = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q_con&amp;quot; ), topic )&lt;br /&gt;
	else&lt;br /&gt;
		q = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q_pro&amp;quot; ), topic )&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;div class=&amp;quot;question-FAQ&amp;quot;&amp;gt;&#039; .. q .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgsList( args, pv, lang, sens, maps, cats )&lt;br /&gt;
	local isCon = ( sens == &amp;quot;con&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hIconCon = &#039;is-con&#039;&lt;br /&gt;
	local hIconPro = &#039;is-pro&#039;&lt;br /&gt;
	local title = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_con_title&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_pro_title&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local btnForm = addDataLink(&lt;br /&gt;
		isCon and L( lang, &amp;quot;forms&amp;quot;, &amp;quot;args_con_edit_title&amp;quot; ) or L( lang, &amp;quot;forms&amp;quot;, &amp;quot;args_pro_edit_title&amp;quot; ),&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
		isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_con_edit_tt&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_pro_edit_tt&amp;quot; )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	push( out, listBreaker() )&lt;br /&gt;
	push( out,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument &#039; .. ( isCon and hIconCon or hIconPro ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. btnForm&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	push( out, renderQuestionsFAQ( args[ &amp;quot;complete-topic&amp;quot; ], sens, lang ) )&lt;br /&gt;
&lt;br /&gt;
	local mode = maps and maps._mode and ( isCon and maps._mode.con or maps._mode.pro ) or &amp;quot;none&amp;quot;&lt;br /&gt;
	local data = maps and ( isCon and maps.con or maps.pro ) or nil&lt;br /&gt;
	local items = data and data.items or {}&lt;br /&gt;
&lt;br /&gt;
	if ( mode == &amp;quot;data&amp;quot; ) and #items &amp;gt; 0 then&lt;br /&gt;
		local ul = html_create( &amp;quot;ul&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;argument-list&amp;quot; )&lt;br /&gt;
			:addClass( isCon and &amp;quot;is-con&amp;quot; or &amp;quot;is-pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local lis = {}&lt;br /&gt;
		local anyTitleWarnings = false&lt;br /&gt;
&lt;br /&gt;
		for i, it in ipairs( items ) do&lt;br /&gt;
			if it.warnings and t_trim( it.warnings ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				anyTitleWarnings = true&lt;br /&gt;
			end&lt;br /&gt;
			table_insert( lis, wkRenderArgumentLi( pv, lang, it, isCon and &amp;quot;con&amp;quot; or &amp;quot;pro&amp;quot;, i, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		ul:wikitext( table_concat( lis, &amp;quot;\n&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if anyTitleWarnings then&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;refs_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		push( out, tostring( ul ) )&lt;br /&gt;
	else&lt;br /&gt;
		local cat = isCon and ( &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;con_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; ) or ( &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;pro_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		local msg = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg&amp;quot; )&lt;br /&gt;
		table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msg .. &#039;&amp;lt;/div&amp;gt;&#039; .. cat )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sideLabel = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_word&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_word&amp;quot; )&lt;br /&gt;
	local label = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_add_label&amp;quot; ), sideLabel )&lt;br /&gt;
&lt;br /&gt;
	local tooltip = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_add_tt&amp;quot; ), sideLabel, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	local baseField = L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_title&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local rqTypeValue	= isCon and L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_con_type_label&amp;quot; ) or L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_pro_type_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local rqQuery = {}&lt;br /&gt;
	rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ]	= rqTypeValue&lt;br /&gt;
	rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]		= pv.pageId&lt;br /&gt;
	rqQuery[ &amp;quot;_run&amp;quot; ]					= &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	push( out,&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. wkRunQueryHtmlTagButton( baseField, label, tooltip, rqQuery )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections de références&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers FACTORISÉS : warnings + rendu de listes &amp;lt;li&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local REFERENCE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;reference_quality_insufficient&amp;quot;,&lt;br /&gt;
	&amp;quot;reference_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;dead_link&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function renderReferenceItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsRef = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsRef == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup( lang, REFERENCE_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsRef, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, REFERENCE_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderLiListFromArg( raw, parseFn, renderOneFn )&lt;br /&gt;
	local items = parseFn( raw )&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lis = {}&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local li = renderOneFn( item )&lt;br /&gt;
		if li and li ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lis[ #lis + 1 ] = li&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( lis, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local REF_SEP		= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local REF_FIELD_SEP	= &amp;quot;⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function wkParseBiblioMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( REF_FIELD_SEP, 1, true ) and not raw:find( REF_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, REF_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, REF_FIELD_SEP, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 12 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				authors		= f[ 1 ],&lt;br /&gt;
				article		= f[ 2 ],&lt;br /&gt;
				work		= f[ 3 ],&lt;br /&gt;
				volume		= f[ 4 ],&lt;br /&gt;
				number		= f[ 5 ],&lt;br /&gt;
				location	= f[ 6 ],&lt;br /&gt;
				page		= f[ 7 ],&lt;br /&gt;
				publisher	= f[ 8 ],&lt;br /&gt;
				place		= f[ 9 ],&lt;br /&gt;
				date		= f[ 10 ],&lt;br /&gt;
				link		= f[ 11 ],&lt;br /&gt;
				warnings	= f[ 12 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneBiblioLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		authors = L( lang, &amp;quot;text&amp;quot;, &amp;quot;refs_to_review&amp;quot; )&lt;br /&gt;
		table_insert( categories, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;refs_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	out[ #out + 1 ] = authors&lt;br /&gt;
&lt;br /&gt;
	local article = t_trim( item.article or &amp;quot;&amp;quot; )&lt;br /&gt;
	local work = t_trim( item.work or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;article_name&amp;quot; ), article, true )&lt;br /&gt;
	end&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;work_name&amp;quot; ), work, true )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « [&amp;quot; .. link .. &amp;quot; &amp;quot; .. article .. &amp;quot;] »&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « &amp;quot; .. article .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local volume = t_trim( item.volume or &amp;quot;&amp;quot; )&lt;br /&gt;
		if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &amp;quot; .. volume&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local number = t_trim( item.number or &amp;quot;&amp;quot; )&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, n°&amp;quot; .. number&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local location = t_trim( item.location or &amp;quot;&amp;quot; )&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. location&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local page = t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, p.&amp;quot; .. page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local publisher = t_trim( item.publisher or &amp;quot;&amp;quot; )&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;publishing_house&amp;quot; ), publisher, true )&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. publisher&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local place = t_trim( item.place or &amp;quot;&amp;quot; )&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;place_of_publication&amp;quot; ), place, true )&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. place&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local date = t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderBiblioListFromArg( raw, pv, lang, categories, smwPending )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseBiblioMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneBiblioLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWeblioMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( &amp;quot;⟭&amp;quot;, 1, true ) and not raw:find( &amp;quot;⟬&amp;quot;, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, &amp;quot;⟭&amp;quot;, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, &amp;quot;⟬&amp;quot;, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 6 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				page		= f[ 1 ],&lt;br /&gt;
				site		= f[ 2 ],&lt;br /&gt;
				link		= f[ 3 ],&lt;br /&gt;
				authors		= f[ 4 ],&lt;br /&gt;
				date		= f[ 5 ],&lt;br /&gt;
				warnings	= f[ 6 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneWeblioLi( pv, item, lang, categories, smwPending, side )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local page		= t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local site		= t_trim( item.site or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link		= t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors	= t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	local date		= t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;article_name&amp;quot; ), page, true )&lt;br /&gt;
	end&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;website_name&amp;quot; ), site, true )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local label = &amp;quot;&amp;quot;&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = page&lt;br /&gt;
		elseif site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = site&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if label == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = label&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; and page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. site .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Bandeaux d’avertissement&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	--	SMW auteurs (par côté)&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local propKey = &amp;quot;author&amp;quot;&lt;br /&gt;
		if side == &amp;quot;pro&amp;quot; then&lt;br /&gt;
			propKey = &amp;quot;author_pro&amp;quot;&lt;br /&gt;
		elseif side == &amp;quot;con&amp;quot; then&lt;br /&gt;
			propKey = &amp;quot;author_con&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for a in t_gsplit( authors, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			a = t_trim( a )&lt;br /&gt;
			if a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, smwProp( lang, propKey ), a, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderWeblioListFromArg( raw, pv, lang, categories, smwPending, side )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseWeblioMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneWeblioLi( pv, item, lang, categories, smwPending, side )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseVideoMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( &amp;quot;⟭&amp;quot;, 1, true ) and not raw:find( &amp;quot;⟬&amp;quot;, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, &amp;quot;⟭&amp;quot;, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, &amp;quot;⟬&amp;quot;, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 4 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				title		= f[ 1 ],&lt;br /&gt;
				link		= f[ 2 ],&lt;br /&gt;
				authors		= f[ 3 ],&lt;br /&gt;
				warnings	= f[ 4 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneVideoLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
	local title = t_trim( item.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. title .. &amp;quot;]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		out[ #out + 1 ] = title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderVideoListFromArg( raw, pv, lang, categories, smwPending )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseVideoMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneVideoLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRefBlock( pageVars, lang, iconClass, titleText, formKey, value )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		&#039;&amp;lt;h4 class=&amp;quot;titre-references wk-icon-before &#039; .. iconClass .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. titleText&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, formKey ),&lt;br /&gt;
			pageVars.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;section_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h4&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	if value and t_trim( value ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;ul&amp;gt;&amp;quot; .. value .. &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucune-reference navigation-not-searchable&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_references_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderReferences( args, pageVars, lang, categories, smwPending, refRaw )&lt;br /&gt;
	local wrap = {}&lt;br /&gt;
&lt;br /&gt;
	refRaw = refRaw or {}&lt;br /&gt;
	refRaw.bibliography = refRaw.bibliography or {}&lt;br /&gt;
	refRaw.webliography = refRaw.webliography or {}&lt;br /&gt;
	refRaw.videography = refRaw.videography or {}&lt;br /&gt;
&lt;br /&gt;
	table_insert( wrap, &#039;&amp;lt;h2 class=&amp;quot;wk-icon-before wk-icon-further&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;further_reading_title&amp;quot; ) .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
	--	Bibliography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Bibliography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-bibliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;bibliography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderBiblioListFromArg( refRaw.bibliography.pro, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderBiblioListFromArg( refRaw.bibliography.con, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderBiblioListFromArg( refRaw.bibliography.neutral, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Webliography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Webliography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-webliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;webliography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderWeblioListFromArg( refRaw.webliography.pro, pageVars, lang, categories, smwPending, &amp;quot;pro&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderWeblioListFromArg( refRaw.webliography.con, pageVars, lang, categories, smwPending, &amp;quot;con&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderWeblioListFromArg( refRaw.webliography.neutral, pageVars, lang, categories, smwPending, &amp;quot;neutral&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Videography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Videography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-videography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;videography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderVideoListFromArg( refRaw.videography.pro, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderVideoListFromArg( refRaw.videography.con, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderVideoListFromArg( refRaw.videography.neutral, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( wrap )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	JSON-LD : helpers QAPage / Breadcrumb / WebSite&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrl( lang, prefixKey, labelKey )&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. L( lang, &amp;quot;urls&amp;quot;, labelKey ),&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrlFromText( lang, prefixKey, text )&lt;br /&gt;
	text = t_trim( tostring( text or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. text,&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkFullUrl( titleText )&lt;br /&gt;
	titleText = t_trim( tostring( titleText or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if titleText == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return tostring( uri_fullUrl( titleText ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkTakeFirst( items, limit )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	limit = tonumber( limit ) or 0&lt;br /&gt;
&lt;br /&gt;
	if limit &amp;lt;= 0 then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #items do&lt;br /&gt;
		if i &amp;gt; limit then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		out[ #out + 1 ] = items[ i ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWebsiteNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#website&amp;quot;,&lt;br /&gt;
		url = homeUrl,&lt;br /&gt;
		name = siteName&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildOrganizationNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#organization&amp;quot;,&lt;br /&gt;
		name = siteName,&lt;br /&gt;
		url = homeUrl&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local homeLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home_label&amp;quot; )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local debatesLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
	local debatesUrl = wkBuildWikiUrl( lang, &amp;quot;portal_prefix&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;BreadcrumbList&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;,&lt;br /&gt;
		itemListElement = {&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 1,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = homeUrl,&lt;br /&gt;
					name = homeLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 2,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = debatesUrl,&lt;br /&gt;
					name = debatesLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 3,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
					name = pv.rawTitle&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSchemaPageLabel( it )&lt;br /&gt;
	local label = t_trim( tostring( ( it and it.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if label == &amp;quot;&amp;quot; then&lt;br /&gt;
		label = t_trim( tostring( ( it and it.title ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAnswerNode( it, kind, lang )&lt;br /&gt;
&lt;br /&gt;
	local pageLabel = t_trim( tostring( ( it and it.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if pageLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local answerName = t_trim( tostring( ( it and it.title ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if answerName == &amp;quot;&amp;quot; then&lt;br /&gt;
		answerName = pageLabel&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local url = wkFullUrl( pageLabel )&lt;br /&gt;
	if url == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local additionalType&lt;br /&gt;
	if kind == &amp;quot;pro&amp;quot; then&lt;br /&gt;
		additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;pro_label&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;con_label&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Answer&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#answer&amp;quot;,&lt;br /&gt;
		url = url,&lt;br /&gt;
&lt;br /&gt;
		name = answerName,&lt;br /&gt;
		text = pageLabel,&lt;br /&gt;
&lt;br /&gt;
		author = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#organization&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		additionalType = additionalType,&lt;br /&gt;
&lt;br /&gt;
		about = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSuggestedAnswers( maps, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local position = 1&lt;br /&gt;
&lt;br /&gt;
	local proItems = ( maps and maps.pro and maps.pro.items ) or {}&lt;br /&gt;
	local conItems = ( maps and maps.con and maps.con.items ) or {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkTakeFirst( proItems, 3 ) ) do&lt;br /&gt;
		local node = wkBuildAnswerNode( it, &amp;quot;pro&amp;quot;, lang )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ #out + 1 ] = node&lt;br /&gt;
			position = position + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkTakeFirst( conItems, 3 ) ) do&lt;br /&gt;
		local node = wkBuildAnswerNode( it, &amp;quot;con&amp;quot;, lang )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ #out + 1 ] = node&lt;br /&gt;
			position = position + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildIsPartOf( lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#website&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildIsRelatedTo( args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local raw = t_trim( tostring( ( args and args[ &amp;quot;related-debates&amp;quot; ] ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		part = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			count = count + 1&lt;br /&gt;
			if count &amp;gt; 5 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local url = wkFullUrl( part )&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#qa&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildKeywords( args, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local sections = splitCSV( args and args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
	local termSetId = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;sections_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #sections do&lt;br /&gt;
		if i &amp;gt; 4 then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local section = t_trim( tostring( sections[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;DefinedTerm&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrlFromText( lang, &amp;quot;category_prefix&amp;quot;, section ),&lt;br /&gt;
				name = section,&lt;br /&gt;
				inDefinedTermSet = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = termSetId&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAboutAndMentions( args )&lt;br /&gt;
	local about = {}&lt;br /&gt;
	local mentions = {}&lt;br /&gt;
&lt;br /&gt;
	local keywords = splitCSV( args and args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #keywords do&lt;br /&gt;
		local kw = t_trim( tostring( keywords[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if kw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Thing&amp;quot;,&lt;br /&gt;
				name = kw&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if i &amp;lt;= 2 then&lt;br /&gt;
				about[ #about + 1 ] = node&lt;br /&gt;
			else&lt;br /&gt;
				mentions[ #mentions + 1 ] = node&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return about, mentions&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildDiscussionUrl( pv, lang )&lt;br /&gt;
	local prefix = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;discussion_prefix&amp;quot; )&lt;br /&gt;
	return wkBuildWikiUrlFromText( lang, &amp;quot;discussion_prefix&amp;quot;, pv.rawTitle )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tagHtmlTag(tagName, content, attrs)&lt;br /&gt;
	local src = &amp;quot;{{#tag:htmltag|&amp;quot; .. (content or &amp;quot;&amp;quot;) .. &amp;quot;|tagname=&amp;quot; .. tostring(tagName)&lt;br /&gt;
&lt;br /&gt;
	if attrs then&lt;br /&gt;
		local keys = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
		for k in pairs(attrs) do&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			keys[n] = k&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			table_sort(keys)&lt;br /&gt;
			for i = 1, n do&lt;br /&gt;
				local k = keys[i]&lt;br /&gt;
				src = src .. &amp;quot;|&amp;quot; .. tostring(k) .. &amp;quot;=&amp;quot; .. tostring(attrs[k])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	src = src .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	return F:preprocess(src)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkProtectJsonLdForParser( json )&lt;br /&gt;
	if not json or json == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	json = tostring( json )&lt;br /&gt;
&lt;br /&gt;
	--	protéger les séparateurs de parser function&lt;br /&gt;
	json = json:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;/&amp;quot;, &amp;quot;\\/&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	éviter de fermer prématurément {{#tag:...}}&lt;br /&gt;
	json = json:gsub( &amp;quot;}}&amp;quot;, &amp;quot;} }&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return json&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
	authors = t_trim( tostring( authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for a in t_gsplit( authors, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
		a = t_trim( tostring( a or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
				name = a&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 1 then&lt;br /&gt;
		return out[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSingleNodeFromFirstItem( items, builder )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #( items or {} ) do&lt;br /&gt;
		local node = builder( items[ i ] )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ 1 ] = node&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromBibliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseBiblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromWebliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseWeblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local page = t_trim( tostring( item.page or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local site = t_trim( tostring( item.site or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if link == &amp;quot;&amp;quot; or page == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
			name = page,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.isPartOf = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
				name = site&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromVideography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseVideoMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local title = t_trim( tostring( item.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if title == &amp;quot;&amp;quot; or link == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;VideoObject&amp;quot;,&lt;br /&gt;
			name = title,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateSchemaJSONLD( pv, lang, args, maps, refRaw )&lt;br /&gt;
	local websiteNode = wkBuildWebsiteNode( lang )&lt;br /&gt;
	local breadcrumbNode = wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local organizationNode	= wkBuildOrganizationNode( lang )&lt;br /&gt;
	local about, mentions = wkBuildAboutAndMentions( args )&lt;br /&gt;
	local keywords = wkBuildKeywords( args, lang )&lt;br /&gt;
	local suggestedAnswer = wkBuildSuggestedAnswers( maps, lang )&lt;br /&gt;
	local isPartOf = wkBuildIsPartOf( lang )&lt;br /&gt;
	local isRelatedTo = wkBuildIsRelatedTo( args )&lt;br /&gt;
	local pageCreation = getPageCreation( pv, args )&lt;br /&gt;
	local questionText&lt;br /&gt;
	&lt;br /&gt;
	if args[ &amp;quot;complete-topic&amp;quot; ] and t_trim( args[ &amp;quot;complete-topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		questionText = string_format(&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q&amp;quot; ),&lt;br /&gt;
			t_trim( args[ &amp;quot;complete-topic&amp;quot; ] )&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		questionText = pv.rawTitle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	refRaw = refRaw or {}&lt;br /&gt;
	refRaw.bibliography = refRaw.bibliography or {}&lt;br /&gt;
	refRaw.webliography = refRaw.webliography or {}&lt;br /&gt;
	refRaw.videography = refRaw.videography or {}&lt;br /&gt;
&lt;br /&gt;
	local bibliographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.bibliography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		bibliographyRaw = refRaw.bibliography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.bibliography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if bibliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			bibliographyRaw = bibliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		bibliographyRaw = bibliographyRaw .. refRaw.bibliography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.bibliography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if bibliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			bibliographyRaw = bibliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		bibliographyRaw = bibliographyRaw .. refRaw.bibliography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local webliographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.webliography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		webliographyRaw = refRaw.webliography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.webliography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if webliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			webliographyRaw = webliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		webliographyRaw = webliographyRaw .. refRaw.webliography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.webliography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if webliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			webliographyRaw = webliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		webliographyRaw = webliographyRaw .. refRaw.webliography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local videographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.videography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		videographyRaw = refRaw.videography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.videography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if videographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			videographyRaw = videographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		videographyRaw = videographyRaw .. refRaw.videography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.videography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if videographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			videographyRaw = videographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		videographyRaw = videographyRaw .. refRaw.videography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local citations = {}&lt;br /&gt;
&lt;br /&gt;
	local b = wkBuildClaimCitationsFromBibliography( bibliographyRaw )&lt;br /&gt;
	if b[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = b[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local w = wkBuildClaimCitationsFromWebliography( webliographyRaw )&lt;br /&gt;
	if w[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = w[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local subjectOf = wkBuildClaimCitationsFromVideography( videographyRaw )&lt;br /&gt;
&lt;br /&gt;
	local qaNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;QAPage&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#qa&amp;quot;,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		educationalUse = {&lt;br /&gt;
			&amp;quot;debate&amp;quot;,&lt;br /&gt;
			&amp;quot;critical thinking&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		learningResourceType = &amp;quot;debate&amp;quot;,&lt;br /&gt;
		audience = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;EducationalAudience&amp;quot;,&lt;br /&gt;
			educationalLevel = {&lt;br /&gt;
				&amp;quot;general public&amp;quot;,&lt;br /&gt;
				&amp;quot;secondary education&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		isPartOf = isPartOf,&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		discussionUrl = wkBuildDiscussionUrl( pv, lang ),&lt;br /&gt;
		publisher = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#organization&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		mainEntity = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Question&amp;quot;,&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#question&amp;quot;,&lt;br /&gt;
			name = pv.rawTitle,&lt;br /&gt;
			text = questionText,&lt;br /&gt;
			answerCount = #suggestedAnswer,&lt;br /&gt;
			suggestedAnswer = suggestedAnswer&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if pageCreation and pageCreation ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		qaNode.mainEntity.datePublished = pageCreation&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #isRelatedTo &amp;gt; 0 then&lt;br /&gt;
		qaNode.isRelatedTo = isRelatedTo&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #keywords &amp;gt; 0 then&lt;br /&gt;
		qaNode.keywords = keywords&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #about &amp;gt; 0 then&lt;br /&gt;
		qaNode.about = about&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #mentions &amp;gt; 0 then&lt;br /&gt;
		qaNode.mentions = mentions&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #citations &amp;gt; 0 then&lt;br /&gt;
		qaNode.citation = citations&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if subjectOf[ 1 ] then&lt;br /&gt;
		qaNode.subjectOf = subjectOf[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {&lt;br /&gt;
		[ &amp;quot;@context&amp;quot; ] = &amp;quot;https://schema.org&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@graph&amp;quot; ] = {&lt;br /&gt;
			websiteNode,&lt;br /&gt;
			organizationNode,&lt;br /&gt;
			breadcrumbNode,&lt;br /&gt;
			qaNode&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local json = t_jsonEncode( data )&lt;br /&gt;
&lt;br /&gt;
	return tagHtmlTag( &amp;quot;script&amp;quot;, wkProtectJsonLdForParser( json ), {&lt;br /&gt;
		type = &amp;quot;application/ld+json&amp;quot;,&lt;br /&gt;
		[&amp;quot;class&amp;quot;] = &amp;quot;navigation-not-searchable&amp;quot;&lt;br /&gt;
	} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Champs divers (mots-clés, rubriques, connexes, interlangue)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderKeywords( args, pv, cats, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div style=&amp;quot;font-size: 95%; margin-top: 1em;&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_label_text&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;keywords&amp;quot; ] and t_trim( args[ &amp;quot;keywords&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local rendered = {}&lt;br /&gt;
&lt;br /&gt;
		local formName = L( lang, &amp;quot;forms&amp;quot;, &amp;quot;search_by_keywords_title&amp;quot; )&lt;br /&gt;
		local fieldLabel = formName&lt;br /&gt;
		local fieldName = L( lang, &amp;quot;params&amp;quot;, &amp;quot;keywords_field&amp;quot; )&lt;br /&gt;
		local tt = L( lang, &amp;quot;text&amp;quot;, &amp;quot;search_by_keyword_tt&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local typeField = L( lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_field&amp;quot; )&lt;br /&gt;
		local typeValue = L( lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_value&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local extra = {&lt;br /&gt;
			[ fieldLabel .. &amp;quot;[&amp;quot; .. typeField .. &amp;quot;]&amp;quot; ] = typeValue&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			k = t_trim( tostring( k or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local chip = runQueryLink( formName, fieldLabel, fieldName, k, k, tt, extra )&lt;br /&gt;
				if not chip or chip == &amp;quot;&amp;quot; then&lt;br /&gt;
					chip = k&lt;br /&gt;
				end&lt;br /&gt;
				if chip ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert( rendered, chip )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #rendered &amp;gt; 0 then&lt;br /&gt;
			table_insert( out, table_concat( rendered, &amp;quot;, &amp;quot; ) )&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot; ) .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot; ) .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;keywords_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderConnexes( args, pv, cats, lang )&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-parent&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;forms&amp;quot;, &amp;quot;related_edit_title&amp;quot; )&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;related_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;related_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local raw = args[ &amp;quot;related-debates&amp;quot; ]&lt;br /&gt;
	if raw and t_trim( raw ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local items = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
&lt;br /&gt;
		for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
			part = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				n = n + 1&lt;br /&gt;
				items[ n ] = &#039;&amp;lt;li style=&amp;quot;position: relative;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;hover-map&amp;quot;&amp;gt;[[&#039; .. part .. &#039;]]&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			return h2 .. &#039;&amp;lt;ul class=&amp;quot;hover-top searchaux&amp;quot;&amp;gt;&#039; .. table_concat( items ) .. &#039;&amp;lt;/ul&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;related_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	return h2 .. &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_related_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRubriques( args, cats, lang )&lt;br /&gt;
	if args[ &amp;quot;sections&amp;quot; ] and t_trim( args[ &amp;quot;sections&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for _, r in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			table_insert( out, &amp;quot;[[Category:&amp;quot; .. r .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
		return table_concat( out )&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;sections_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW (sans legacy)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function setSemanticData( args, pv, lang, maps, smwPending )&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local pro = maps.pro or {}&lt;br /&gt;
	local con = maps.con or {}&lt;br /&gt;
&lt;br /&gt;
	local pourPages = {}&lt;br /&gt;
	local contrePages = {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( pro.items or {} ) do&lt;br /&gt;
		if it.page and it.page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( pourPages, it.page )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( con.items or {} ) do&lt;br /&gt;
		if it.page and it.page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( contrePages, it.page )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local props = {}&lt;br /&gt;
&lt;br /&gt;
	local pourSurvol = t_trim( pro.mapHover or &amp;quot;&amp;quot; )&lt;br /&gt;
	local contreSurvol = t_trim( con.mapHover or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if pourSurvol == &amp;quot;&amp;quot; then&lt;br /&gt;
		pourSurvol = &#039;&amp;lt;div class=&amp;quot;carte-vide&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg_short&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if contreSurvol == &amp;quot;&amp;quot; then&lt;br /&gt;
		contreSurvol = &#039;&amp;lt;div class=&amp;quot;carte-vide&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg_short&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listePour = t_trim( pro.argsVar or &amp;quot;&amp;quot; )&lt;br /&gt;
	local listeContre = t_trim( con.argsVar or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;debate_name&amp;quot; ) ]		= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;debate_number&amp;quot; ) ]	= pv.pageId&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;breadcrumb&amp;quot; ) ]		= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;parent_debate&amp;quot; ) ]	= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;pro_list&amp;quot; ) ]		= listePour&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;con_list&amp;quot; ) ]		= listeContre&lt;br /&gt;
&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;arg_map&amp;quot; ) ] =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;wk-arg-map navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_pro_label&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. pourSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_con_label&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. contreSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	if #pourPages &amp;gt; 0 then&lt;br /&gt;
		props[ smwProp( lang, &amp;quot;arg_pro&amp;quot; ) ] = pourPages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #contrePages &amp;gt; 0 then&lt;br /&gt;
		props[ smwProp( lang, &amp;quot;arg_con&amp;quot; ) ] = contrePages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if smwPending then&lt;br /&gt;
		smwQueueMerge( props, smwPending )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	smwSetSafe( props )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Rendu principal&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.render( frame )&lt;br /&gt;
	for k in pairs( SEO_CACHE ) do&lt;br /&gt;
		SEO_CACHE[ k ] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args	= getArgs( frame )&lt;br /&gt;
	local lang	= detectLang( args )&lt;br /&gt;
	local pv	= computePageVars()&lt;br /&gt;
	local pieces, cats = {}, {}&lt;br /&gt;
	local smwPending = {}&lt;br /&gt;
	local refRaw = {&lt;br /&gt;
		bibliography = {},&lt;br /&gt;
		webliography = {},&lt;br /&gt;
		videography = {}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	smwQueueAddFromCSV(&lt;br /&gt;
		smwPending,&lt;br /&gt;
		smwProp( lang, &amp;quot;keyword&amp;quot; ),&lt;br /&gt;
		args[ &amp;quot;keywords&amp;quot; ]&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local maps = computeArgumentMapsFromArgs( args, lang )&lt;br /&gt;
&lt;br /&gt;
	table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;debates&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;topic&amp;quot; ] and t_trim( args[ &amp;quot;topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;debate_topic&amp;quot; ), args[ &amp;quot;topic&amp;quot; ], false )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;topic_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;complete-topic&amp;quot; ] and t_trim( args[ &amp;quot;complete-topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces, F:preprocess( &amp;quot;{{SHORTDESC: &amp;quot; .. string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_topic&amp;quot; ), args[ &amp;quot;complete-topic&amp;quot; ] ) .. &amp;quot;}}&amp;quot; ) )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;topic_complete_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		table_insert( pieces, F:preprocess( &amp;quot;{{SHORTDESC: &amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot; ) .. &amp;quot;}}&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args[&amp;quot;creation-date&amp;quot;] or t_trim(args[&amp;quot;creation-date&amp;quot;]) == &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;creation_date_missing&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderArgumentMapTop( lang, maps ) )&lt;br /&gt;
	table_insert( pieces, renderKeywords( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	local btnForm = addDataLink(&lt;br /&gt;
		L( lang, &amp;quot;forms&amp;quot;, &amp;quot;banners_edit_title&amp;quot; ),&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;debate_banners_edit_tt&amp;quot; )&lt;br /&gt;
	)&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-flag&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;warnings_title&amp;quot; ) ..  btnForm .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
	table_insert( pieces, renderMainBanner( F, pv, lang ) )&lt;br /&gt;
	table_insert( pieces, renderWarningBanners( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderIntroduction( args, pv, lang, cats ) )&lt;br /&gt;
	table_insert( pieces, renderWikipediaLinks( args, pv, lang ) )&lt;br /&gt;
	table_insert( pieces, renderArgsList( args, pv, lang, &amp;quot;pro&amp;quot;, maps, cats ) )&lt;br /&gt;
	table_insert( pieces, renderArgsList( args, pv, lang, &amp;quot;con&amp;quot;, maps, cats ) )&lt;br /&gt;
&lt;br /&gt;
	if not isProgress( lang, args[ &amp;quot;progress&amp;quot; ], &amp;quot;draft&amp;quot; ) then&lt;br /&gt;
		local target = L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_ns_label&amp;quot; ) .. &amp;quot;:&amp;quot; .. pv.rawTitle .. &amp;quot; (ID)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local ns			= L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_ns_label&amp;quot; )&lt;br /&gt;
		local f_debat	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_debate_field&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local box = {}&lt;br /&gt;
		table_insert( box, &#039;&amp;lt;h2 class=&amp;quot;navigation-not-searchable noprint wk-icon-before wk-icon-selfeval&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_title&amp;quot; ) .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
		local startBtn = wkAddDataGetButton(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;self_eval_home_title&amp;quot; ),&lt;br /&gt;
			target,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_start_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_start_tt&amp;quot; ),&lt;br /&gt;
			{&lt;br /&gt;
				[ ns .. &amp;quot;[&amp;quot; .. f_debat .. &amp;quot;]&amp;quot; ]	= pv.rawTitle&lt;br /&gt;
			}&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(&lt;br /&gt;
			box,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;boite-info navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_blurb&amp;quot; )&lt;br /&gt;
			.. startBtn&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert( pieces, table_concat( box ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderReferences( args, pv, lang, cats, smwPending, refRaw ) )&lt;br /&gt;
	table_insert( pieces, renderConnexes( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;latest-changes-button navigation-not-searchable noprint wk-icon-before wk-icon-refresh&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_title&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes-button wk-btn mw-ui-button&amp;quot;&#039;&lt;br /&gt;
		.. &#039; title=&amp;quot;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_show_tt&amp;quot; ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-page=&amp;quot;&#039; .. t_nowiki( pv.rawTitle ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_show_label&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes-wrapper&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderRubriques( args, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	setSemanticData( args, pv, lang, maps, smwPending )&lt;br /&gt;
&lt;br /&gt;
	renderFullSEO( args, pv, lang )&lt;br /&gt;
	table_insert( pieces, table_concat( cats ) )&lt;br /&gt;
&lt;br /&gt;
	local renameLink = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;rename_special_page_text&amp;quot; ), pv.encoded )&lt;br /&gt;
	table_insert( pieces,&lt;br /&gt;
		&#039;&amp;lt;span id=&amp;quot;bouton-renommer&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;[[&#039;&lt;br /&gt;
		.. renameLink .. &#039;|&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;rename_link_label&amp;quot; ) .. &#039;]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-sujet&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataLink( L( lang, &amp;quot;forms&amp;quot;, &amp;quot;topic_edit_title&amp;quot; ), pv.rawTitle, L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ), L( lang, &amp;quot;text&amp;quot;, &amp;quot;topic_edit_tt&amp;quot; ) )&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-categories&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataLink( L( lang, &amp;quot;forms&amp;quot;, &amp;quot;sections_edit_title&amp;quot; ), pv.rawTitle, L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ), L( lang, &amp;quot;text&amp;quot;, &amp;quot;sections_edit_tt&amp;quot; ) )&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] and t_trim( tostring( args[&amp;quot;interlanguage&amp;quot;] or &amp;quot;&amp;quot; ) ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces, args[ &amp;quot;interlanguage&amp;quot; ] )&lt;br /&gt;
		table_insert( pieces,&lt;br /&gt;
			&#039;&amp;lt;span id=&amp;quot;bouton-modifier-interlangue&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&#039;&lt;br /&gt;
			.. &#039; data-wk-tooltip=&amp;quot;&#039; .. escapeAttr( L( lang, &amp;quot;text&amp;quot;, &amp;quot;interlanguage_edit_tt&amp;quot; ) ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. addDataLink(&lt;br /&gt;
				L( lang, &amp;quot;forms&amp;quot;, &amp;quot;interlanguage_edit_title&amp;quot; ),&lt;br /&gt;
				pv.rawTitle,&lt;br /&gt;
				L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; )&lt;br /&gt;
			)&lt;br /&gt;
			.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderDebateSchemaJSONLD( pv, lang, args, maps, refRaw ) )&lt;br /&gt;
&lt;br /&gt;
	return table_concat( pieces, &amp;quot;&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Tag-argument_added-description&amp;diff=10559</id>
		<title>MediaWiki:Tag-argument added-description</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Tag-argument_added-description&amp;diff=10559"/>
		<updated>2026-03-24T16:18:55Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created page with &amp;quot;A new argument has been added to a page&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A new argument has been added to a page&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Tag-argument_added&amp;diff=10558</id>
		<title>MediaWiki:Tag-argument added</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Tag-argument_added&amp;diff=10558"/>
		<updated>2026-03-24T16:18:06Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created page with &amp;quot;Argument added&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Argument added&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:Debate&amp;diff=10557</id>
		<title>Module:Debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:Debate&amp;diff=10557"/>
		<updated>2026-03-24T16:17:01Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--	Module:Debate (i18n FR/EN) — Optimisé&lt;br /&gt;
--	Objectif : rendu du modèle « Débat » (MediaWiki 1.43) fidèle au rendu existant&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Accès global au frame + VariablesLua (accélération sans changer le rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mw			= mw&lt;br /&gt;
local F				= mw.getCurrentFrame()&lt;br /&gt;
local V				= ( mw.ext and mw.ext.VariablesLua ) or nil&lt;br /&gt;
local WD_I18N		= require( &#039;Module:WD/I18N&#039; )&lt;br /&gt;
local uri_encode	= mw.uri.encode&lt;br /&gt;
local string_format	= string.format&lt;br /&gt;
local title_getCurrentTitle	= mw.title.getCurrentTitle&lt;br /&gt;
local uri_fullUrl			= mw.uri.fullUrl&lt;br /&gt;
local uri_localUrl			= mw.uri.localUrl&lt;br /&gt;
&lt;br /&gt;
--	Locaux (micro-optis)&lt;br /&gt;
local tostring		= tostring&lt;br /&gt;
local type			= type&lt;br /&gt;
local ipairs		= ipairs&lt;br /&gt;
local pairs			= pairs&lt;br /&gt;
local table_concat	= table.concat&lt;br /&gt;
local table_insert	= table.insert&lt;br /&gt;
local table_sort	= table.sort&lt;br /&gt;
local t_trim		= mw.text.trim&lt;br /&gt;
local t_gsplit		= mw.text.gsplit&lt;br /&gt;
local t_nowiki		= mw.text.nowiki&lt;br /&gt;
local t_jsonEncode	= mw.text.jsonEncode&lt;br /&gt;
local t_jsonDecode	= mw.text.jsonDecode&lt;br /&gt;
local html_create	= mw.html.create&lt;br /&gt;
local gsub			= string.gsub&lt;br /&gt;
&lt;br /&gt;
--	Forward decl (utilisé avant définition)&lt;br /&gt;
local escapeAttr&lt;br /&gt;
&lt;br /&gt;
local ITEM_SEP	= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local FIELD_SEP	= &amp;quot;⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--	wrappers VariablesLua (no-op si extension absente)&lt;br /&gt;
local function vset( name, val )&lt;br /&gt;
	if V and type( V.vardefine ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		pcall( V.vardefine, name, val ~= nil and tostring( val ) or &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local function vget( name )&lt;br /&gt;
	if V and type( V.var ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		local ok, res = pcall( V.var, name )&lt;br /&gt;
		if ok then return res end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectLang( args )&lt;br /&gt;
	return WD_I18N.getLangFromArgs( args or {} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function L( lang, section, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.&amp;quot; .. section, lang, key, ... )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwProp( lang, key )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.props&amp;quot;, lang, key )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isProgress( lang, val, key )&lt;br /&gt;
	if not val or val == &amp;quot;&amp;quot; then return false end&lt;br /&gt;
	local label = WD_I18N.msg( &amp;quot;Debate.progress&amp;quot;, lang, key )&lt;br /&gt;
	return val == label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Anchor intégré (remplace Module:Anchor)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function anchorId( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Normalisation des apostrophes HTML éventuelles&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#039;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;apos;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Nettoyage minimal&lt;br /&gt;
	s = gsub( s, &amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
	s = t_trim( s )&lt;br /&gt;
&lt;br /&gt;
	--	Espaces → underscore&lt;br /&gt;
	s = gsub( s, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Suppression caractères cassants (HTML / wiki)&lt;br /&gt;
	s = gsub( s, &#039;[%[%]{}|#&amp;lt;&amp;gt;&amp;quot;]&#039;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getArgs( frame )&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local A = {}&lt;br /&gt;
&lt;br /&gt;
	local function add( k, v )&lt;br /&gt;
		if v == nil then return end&lt;br /&gt;
		v = t_trim( tostring( v ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			A[ k ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if parent and parent.args then&lt;br /&gt;
		for k, v in pairs( parent.args ) do&lt;br /&gt;
			add( k, v )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if frame.args then&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			add( k, v )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return A&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitCSV( s, sep )&lt;br /&gt;
	if not s or s == &amp;quot;&amp;quot; then return {} end&lt;br /&gt;
	sep = sep or &amp;quot;,&amp;quot;&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for part in t_gsplit( s, sep, true ) do&lt;br /&gt;
		part = t_trim( part )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then table_insert( out, part ) end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWikipediaMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	On attend maintenant une série de &amp;quot;Titre⟭&amp;quot;&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pages = {}&lt;br /&gt;
&lt;br /&gt;
	for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		part = t_trim( part )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			pages[ #pages + 1 ] = part&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSMW()&lt;br /&gt;
	return type( mw.smw ) == &amp;quot;table&amp;quot; and type( mw.smw.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwSetSafe( props )&lt;br /&gt;
	if not mw.smw or type( mw.smw.set ) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pcall( function()&lt;br /&gt;
		mw.smw.set( props )&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwAskSafe( q )&lt;br /&gt;
	if not hasSMW() then return nil end&lt;br /&gt;
	local ok, res = pcall( function() return mw.smw.ask( q ) end )&lt;br /&gt;
	return ok and res or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO : cache “par rendu”&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SEO_CACHE = {}&lt;br /&gt;
&lt;br /&gt;
local function seoCacheKey( args, pv, lang )&lt;br /&gt;
	return table_concat( {&lt;br /&gt;
		tostring( lang or &amp;quot;&amp;quot; ),&lt;br /&gt;
		pv.pageId or &amp;quot;&amp;quot;,&lt;br /&gt;
		tostring( pv.rawTitle or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;complete-topic&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
	}, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Wikiseo helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkSeoHas()&lt;br /&gt;
	return mw.ext&lt;br /&gt;
		and mw.ext.seo&lt;br /&gt;
		and type( mw.ext.seo.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSeoSet( data )&lt;br /&gt;
	if not wkSeoHas() then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall( mw.ext.seo.set, data )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoL( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.seo&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoJoinList( items )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local seen = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs( items or {} ) do&lt;br /&gt;
		v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; and not seen[ v ] then&lt;br /&gt;
			seen[ v ] = true&lt;br /&gt;
			out[ #out + 1 ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out, &amp;quot;, &amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSeoKeywords( args, lang )&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, s in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return seoJoinList( items )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPageCreation(pv, args)&lt;br /&gt;
	local v = args and args[&amp;quot;creation-date&amp;quot;]&lt;br /&gt;
	v = (type(v) == &amp;quot;string&amp;quot;) and t_trim(v) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO principal (avec cache)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderFullSEO( args, pv, lang )&lt;br /&gt;
	--	cache par rendu&lt;br /&gt;
	local ck = seoCacheKey( args, pv, lang )&lt;br /&gt;
	if SEO_CACHE[ ck ] then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	SEO_CACHE[ ck ] = true&lt;br /&gt;
&lt;br /&gt;
	local pageTitle	= pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local topic = t_trim( tostring( args[ &amp;quot;complete-topic&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if topic == &amp;quot;&amp;quot; then&lt;br /&gt;
		topic = pageTitle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local kw = buildSeoKeywords( args, lang )&lt;br /&gt;
&lt;br /&gt;
	wkSeoSet{&lt;br /&gt;
		title				= pageTitle .. &amp;quot; &amp;quot; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;) .. &amp;quot; – &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot;),&lt;br /&gt;
		title_mode			= pageTitle .. &amp;quot; &amp;quot; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;),&lt;br /&gt;
		title_separator		= string_format( seoL( lang, &amp;quot;title_separator&amp;quot; ), pageTitle ),&lt;br /&gt;
		description			= string_format( seoL( lang, &amp;quot;description&amp;quot; ), topic ),&lt;br /&gt;
		keywords			= kw,&lt;br /&gt;
		image				= seoL( lang, &amp;quot;image&amp;quot; ),&lt;br /&gt;
		image_alt			= seoL( lang, &amp;quot;image_alt&amp;quot; ),&lt;br /&gt;
		section				= seoL( lang, &amp;quot;section&amp;quot; ),&lt;br /&gt;
		site_name			= seoL( lang, &amp;quot;site_name&amp;quot; ),&lt;br /&gt;
		twitter_site		= seoL( lang, &amp;quot;twitter_site&amp;quot; ),&lt;br /&gt;
		locale				= seoL( lang, &amp;quot;locale&amp;quot; ),&lt;br /&gt;
		author				= seoL( lang, &amp;quot;author&amp;quot; ),&lt;br /&gt;
		robots				= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
		googlebot			= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers PERF : preprocess conditionnel + cache Bandeau&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function subMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.subsections&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubsectionBanner( pv, lang, key, opts, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local isReorg		= opts.reorg == true&lt;br /&gt;
	local linkHtml		= &amp;quot;&amp;quot;&lt;br /&gt;
	local title			= &amp;quot;&amp;quot;&lt;br /&gt;
	local text			= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	--	Lien de réorganisation (optionnel) — AddData (même source que le H2)&lt;br /&gt;
	if isReorg then&lt;br /&gt;
		local formName	= tostring( opts.form or &amp;quot;&amp;quot; )&lt;br /&gt;
		local tooltip	= tostring( opts.tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
		local linkLabel	= tostring( opts.link_label or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		if linkLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
			linkLabel = L( lang, &amp;quot;text&amp;quot;, &amp;quot;reorganize_link_label&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if formName ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linkHtml = addDataLink( formName, pv.rawTitle, linkLabel, tooltip )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Titre/texte (mêmes messages i18n que tes fonctions actuelles)&lt;br /&gt;
	if isReorg and linkHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot; )&lt;br /&gt;
		title = t_trim( tostring( title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			title = title .. &amp;quot;&amp;amp;nbsp;&amp;quot; .. linkHtml&lt;br /&gt;
		else&lt;br /&gt;
			title = linkHtml&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	text = subMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-avertissement wk-icon-before wk-icon-sensible&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;smw-highlighter smwttinline wk-icon-before wk-icon-help mw-no-invert&amp;quot; data-state=&amp;quot;inline&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;smwttcontent&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local cat = subMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW batch : on accumule et on flush une fois à la fin&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAdd( pending, key, val, multi )&lt;br /&gt;
	if not key or key == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type( val ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		val = t_trim( val )&lt;br /&gt;
		if val == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cur = pending[ key ]&lt;br /&gt;
&lt;br /&gt;
	if multi then&lt;br /&gt;
		--	Multi-valeurs : toujours en table côté pending&lt;br /&gt;
		if cur == nil then&lt;br /&gt;
			pending[ key ] = ( type( val ) == &amp;quot;table&amp;quot; ) and val or { val }&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type( cur ) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
			cur = { cur }&lt;br /&gt;
			pending[ key ] = cur&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type( val ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, x in ipairs( val ) do&lt;br /&gt;
				if x ~= nil then&lt;br /&gt;
					cur[ #cur + 1 ] = x&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur[ #cur + 1 ] = val&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Scalar : dernière valeur gagne (comportement le plus sûr)&lt;br /&gt;
	pending[ key ] = val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAddFromSepString( pending, key, raw, sep )&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	sep = sep or ITEM_SEP&lt;br /&gt;
&lt;br /&gt;
	local vals = {}&lt;br /&gt;
&lt;br /&gt;
	if raw:find( sep, 1, true ) then&lt;br /&gt;
		for part in t_gsplit( raw, sep, true ) do&lt;br /&gt;
			part = t_trim( part )&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				vals[ #vals + 1 ] = part&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		vals[ 1 ] = raw&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #vals &amp;gt; 0 then&lt;br /&gt;
		smwQueueAdd( pending, key, vals, true )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAddFromCSV( pending, key, raw )&lt;br /&gt;
	smwQueueAddFromSepString( pending, key, raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueMerge( dst, src )&lt;br /&gt;
	for k, v in pairs( src or {} ) do&lt;br /&gt;
		if type( v ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			smwQueueAdd( dst, k, v, true )&lt;br /&gt;
		else&lt;br /&gt;
			smwQueueAdd( dst, k, v, false )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	PageForms : utilitaires HTML / attributs&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
escapeAttr = function( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
		:gsub( &amp;quot;[\r\n\t]&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;amp;&amp;quot;, &amp;quot;&amp;amp;amp;&amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;gt;&amp;quot; )&lt;br /&gt;
		:gsub( &#039;&amp;quot;&#039;, &amp;quot;&amp;amp;quot;&amp;quot; )&lt;br /&gt;
	-- pas besoin d&#039;échapper &#039; si on entoure l&#039;attribut avec des guillemets doubles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	{{#tag}} utilitaire&lt;br /&gt;
local function tag( name, content, attrs )&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	if attrs then&lt;br /&gt;
		for k, v in pairs( attrs ) do&lt;br /&gt;
			table_insert( parts, string_format( &amp;quot;%s=%s&amp;quot;, k, v ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local src&lt;br /&gt;
	if #parts &amp;gt; 0 then&lt;br /&gt;
		src = string_format( &amp;quot;{{#tag:%s|%s|%s}}&amp;quot;, name, content or &amp;quot;&amp;quot;, table_concat( parts, &amp;quot;|&amp;quot; ) )&lt;br /&gt;
	else&lt;br /&gt;
		src = string_format( &amp;quot;{{#tag:%s|%s}}&amp;quot;, name, content or &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return F:preprocess( src )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function pf_escape( v )&lt;br /&gt;
	if not v then return &amp;quot;&amp;quot; end&lt;br /&gt;
	v = tostring( v )&lt;br /&gt;
	v = v:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; ):gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	return v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	PageForms : remplacement des #formlink (link) par Special:AddData&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkDbKey( page )&lt;br /&gt;
	local t = mw.title.new( page )&lt;br /&gt;
	if not t then&lt;br /&gt;
		return tostring( page or &amp;quot;&amp;quot; ):gsub( &amp;quot;%s&amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return t.prefixedText:gsub( &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkEncodeAddDataSegment( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;%%&amp;quot;, &amp;quot;%%25&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;%?&amp;quot;, &amp;quot;%%3F&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;#&amp;quot;, &amp;quot;%%23&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;/&amp;quot;, &amp;quot;%%2F&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkWikipediaUrl( page, lang )&lt;br /&gt;
	if not page or page == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local base = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wikipedia&amp;quot; )&lt;br /&gt;
	if not base or base == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return base .. uri_encode( page, &amp;quot;WIKI&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataPath( formName, pageTitle )&lt;br /&gt;
	local form = wkEncodeAddDataSegment( wkDbKey( formName ) )&lt;br /&gt;
	local page = wkEncodeAddDataSegment( wkDbKey( pageTitle ) )&lt;br /&gt;
	return &amp;quot;Special:AddData/&amp;quot; .. form .. &amp;quot;/&amp;quot; .. page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataLink( formName, pageTitle, linktext, tooltip )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle = tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local target = wkAddDataPath( formName, pageTitle )&lt;br /&gt;
&lt;br /&gt;
	local lt = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link bouton-modifier navigation-not-searchable noprint&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			target,&lt;br /&gt;
			lt&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format( &#039;[[%s|%s]]&#039;, target, lt )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryPath( formName )&lt;br /&gt;
	local form = wkEncodeAddDataSegment( wkDbKey( formName ) )&lt;br /&gt;
	return &amp;quot;Special:RunQuery/&amp;quot; .. form&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalizeTooltipText( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Apostrophes&lt;br /&gt;
	s = s:gsub( &amp;quot;&#039;&amp;quot;, &amp;quot;’&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Guillemets droits → typographiques&lt;br /&gt;
	s = s:gsub( &#039;&amp;quot;&#039;, &#039;“&#039; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryHtmlTagButton( formName, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	tooltip = normalizeTooltipText( tooltip )&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkRunQueryPath( formName )&lt;br /&gt;
	local href	= tostring( uri_localUrl( title, query ) )&lt;br /&gt;
&lt;br /&gt;
	local content = &amp;quot;＋ &amp;quot; .. label&lt;br /&gt;
&lt;br /&gt;
	return F:preprocess(&lt;br /&gt;
		&#039;&amp;lt;htmltag tagname=&amp;quot;a&amp;quot;&#039;&lt;br /&gt;
		.. &#039; href=&amp;quot;javascript:void(0)&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-href=&amp;quot;&#039; .. escapeAttr( href ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; class=&amp;quot;wk-btn__a wk-js-nav&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. content&lt;br /&gt;
		.. &#039;&amp;lt;/htmltag&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataGetButton( formName, pageTitle, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle	= tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkAddDataPath( formName, pageTitle )&lt;br /&gt;
	local url	= tostring( uri_fullUrl( title, query ) )	--	URL absolue obligatoire&lt;br /&gt;
&lt;br /&gt;
	local linkInner =&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;wk-btn__icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;➜&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;wk-btn__label&amp;quot;&amp;gt;&#039; .. label .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local link = &#039;[&#039; .. url .. &#039; &#039; .. linkInner .. &#039;]&#039;&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;wk-btn wk-auto-id mw-ui-button navigation-not-searchable&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. link&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function runQueryLink( formName, fieldLabel, fieldName, value, linktext, tooltip, extraParams )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	fieldLabel = tostring( fieldLabel or &amp;quot;&amp;quot; )&lt;br /&gt;
	fieldName = tostring( fieldName or &amp;quot;&amp;quot; )&lt;br /&gt;
	value = tostring( value or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or fieldLabel == &amp;quot;&amp;quot; or fieldName == &amp;quot;&amp;quot; or value == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = wkRunQueryPath( formName )&lt;br /&gt;
&lt;br /&gt;
	local q = {}&lt;br /&gt;
	q[ fieldLabel .. &amp;quot;[&amp;quot; .. fieldName .. &amp;quot;]&amp;quot; ] = value&lt;br /&gt;
&lt;br /&gt;
	if type( extraParams ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for k, v in pairs( extraParams ) do&lt;br /&gt;
			if k and k ~= &amp;quot;&amp;quot; and v ~= nil and tostring( v ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				q[ k ] = tostring( v )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	q[ &amp;quot;_run&amp;quot; ] = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local url = tostring( uri_fullUrl( title, q ) )&lt;br /&gt;
	local label = linktext or value&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local link = &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link masquer-externe&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			link&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format( &#039;&amp;lt;span class=&amp;quot;wk-adddata-link&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;, link )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function joinArticles( items, lang )&lt;br /&gt;
	local n = #items&lt;br /&gt;
	if n == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
	if n == 1 then return items[ 1 ] end&lt;br /&gt;
&lt;br /&gt;
	local conj = WD_I18N.msg( &amp;quot;Common.text&amp;quot;, lang, &amp;quot;list_conjunction_text&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		return items[ 1 ] .. conj .. items[ 2 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local last = items[ n ]&lt;br /&gt;
	local first = {}&lt;br /&gt;
	for i = 1, n - 1 do first[ i ] = items[ i ] end&lt;br /&gt;
	return table_concat( first, &amp;quot;, &amp;quot; ) .. conj .. last&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function listBreaker()&lt;br /&gt;
	return &amp;quot;\n\n&amp;lt;!--__WD_LIST_BREAK__--&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function push( t, s )&lt;br /&gt;
	t[ #t + 1 ] = s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux de sous-section pour les titres affichés&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;displayed_title_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_disadvantageous&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_LOOKUPS = {}&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgumentWarningLookup( lang )&lt;br /&gt;
	lang = tostring( lang or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if not ARGUMENT_WARNING_LOOKUPS[ lang ] then&lt;br /&gt;
		ARGUMENT_WARNING_LOOKUPS[ lang ] =&lt;br /&gt;
			buildSummaryLabelLookup( lang, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ARGUMENT_WARNING_LOOKUPS[ lang ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveKeyFromLookup( raw, lookup, allowedKeys, aliases )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local k = ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
	if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aliases and aliases[ raw ] then&lt;br /&gt;
		return aliases[ raw ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if allowedKeys then&lt;br /&gt;
		for _, kk in ipairs( allowedKeys ) do&lt;br /&gt;
			if raw == kk then&lt;br /&gt;
				return kk&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsArg = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsArg == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = getArgumentWarningLookup( lang )&lt;br /&gt;
	local hasBanner = false&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsArg, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, nil ) )&lt;br /&gt;
			hasBanner = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasBanner and cats then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;displayed_titles_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Arguments : extraction depuis chaînes&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkSplit2( s, sep )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	sep = tostring( sep or &amp;quot;&amp;quot; )&lt;br /&gt;
	if sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local i = s:find( sep, 1, true )&lt;br /&gt;
	if not i then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s:sub( 1, i - 1 ), s:sub( i + #sep )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkExtractArgumentItemsFromData( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) and not raw:find( FIELD_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local page, rest = wkSplit2( block, FIELD_SEP )&lt;br /&gt;
			local title, warnings = wkSplit2( rest, FIELD_SEP )&lt;br /&gt;
&lt;br /&gt;
			page = t_trim( page )&lt;br /&gt;
			if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				title = t_trim( title )&lt;br /&gt;
				warnings = t_trim( warnings )&lt;br /&gt;
&lt;br /&gt;
				if title == &amp;quot;&amp;quot; then&lt;br /&gt;
					title = page&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				items[ #items + 1 ] = {&lt;br /&gt;
					page = page,&lt;br /&gt;
					title = title,&lt;br /&gt;
					warnings = warnings&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkComputeArgumentItems( raw )&lt;br /&gt;
	local items = wkExtractArgumentItemsFromData( raw )&lt;br /&gt;
	if #items &amp;gt; 0 then&lt;br /&gt;
		return items, &amp;quot;data&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return {}, &amp;quot;none&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildArgumentData( items, lang, kind )&lt;br /&gt;
	items = items or {}&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = ( kind == &amp;quot;pro&amp;quot; ) and &amp;quot;Pro_argument_&amp;quot; or &amp;quot;Con_argument_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local listLines = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		table_insert( listLines, &amp;quot;* &amp;quot; .. it.title )&lt;br /&gt;
	end&lt;br /&gt;
	local listText = table_concat( listLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local argsVarParts = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		if it.page == it.title then&lt;br /&gt;
			table_insert( argsVarParts, it.page )&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( argsVarParts, it.page .. &amp;quot;⟬&amp;quot; .. it.title )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local argsVar = table_concat( argsVarParts, &amp;quot; -;- &amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local mapLines = {}&lt;br /&gt;
	for i, it in ipairs( items ) do&lt;br /&gt;
		table_insert( mapLines,&lt;br /&gt;
			&#039;&amp;lt;div  id=&amp;quot;&#039; .. idPrefix .. i .. &#039;_map&amp;quot; class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. it.title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHtml = table_concat( mapLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hoverLines = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		table_insert( hoverLines,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. &#039;[[&#039; .. it.page .. &#039;|&#039; .. it.title .. &#039;]]&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHoverHtml = table_concat( hoverLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		items = items,&lt;br /&gt;
		list = listText,&lt;br /&gt;
		argsVar = argsVar,&lt;br /&gt;
		map = mapHtml,&lt;br /&gt;
		mapHover = mapHoverHtml&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function computeArgumentMapsFromArgs( args, lang )&lt;br /&gt;
	local rawPro = args[ &amp;quot;pro-arguments&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawCon = args[ &amp;quot;con-arguments&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if rawPro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		rawPro = F:preprocess( rawPro )&lt;br /&gt;
	end&lt;br /&gt;
	if rawCon ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		rawCon = F:preprocess( rawCon )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pro, proMode = wkComputeArgumentItems( rawPro )&lt;br /&gt;
	local con, conMode = wkComputeArgumentItems( rawCon )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		pro = wkBuildArgumentData( pro, lang, &amp;quot;pro&amp;quot; ),&lt;br /&gt;
		con = wkBuildArgumentData( con, lang, &amp;quot;con&amp;quot; ),&lt;br /&gt;
		_mode = { pro = proMode, con = conMode }&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderArgumentLi( pv, lang, it, kind, idx, cats )&lt;br /&gt;
	local isPro = ( kind == &amp;quot;pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = isPro and &amp;quot;Pro_argument_&amp;quot; or &amp;quot;Con_argument_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local page = tostring( it.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local titleShown = tostring( it.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if titleShown == &amp;quot;&amp;quot; then&lt;br /&gt;
		titleShown = page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local aId = anchorId( titleShown )&lt;br /&gt;
	local warnings = tostring( it.warnings or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local banners = {}&lt;br /&gt;
	renderArgumentItemBanners( warnings, pv, lang, cats, banners )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;li id=&amp;quot;&#039;&lt;br /&gt;
		.. idPrefix .. tostring( idx )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument level-1&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div id=&amp;quot;&#039;&lt;br /&gt;
		.. escapeAttr( aId )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument-title wk-icon-before wk-icon-argument wk-icon-after wk-carret&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. page .. &#039;|&#039; .. titleShown .. &#039;]]&#039;&lt;br /&gt;
		.. ( #banners &amp;gt; 0 and table_concat( banners ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bloc d’en-tête / variables de page&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function computePageVars()&lt;br /&gt;
	local title = title_getCurrentTitle()&lt;br /&gt;
	local rawTitle = title.prefixedText&lt;br /&gt;
	local encoded = uri_encode( rawTitle, &amp;quot;WIKI&amp;quot; )&lt;br /&gt;
	local pageUrl = tostring( uri_fullUrl( title.prefixedText ) )&lt;br /&gt;
	local pageId = tostring( title.id or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		title = title,&lt;br /&gt;
		rawTitle = rawTitle,&lt;br /&gt;
		encoded = encoded,&lt;br /&gt;
		pageUrl = pageUrl,&lt;br /&gt;
		pageId = pageId&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeau principal&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderMetaWarningHtml( params )&lt;br /&gt;
	local color	= tostring( params.color or &amp;quot;&amp;quot; )&lt;br /&gt;
	local icon	= tostring( params.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local title	= tostring( params.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local text	= tostring( params.text or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau bandeau-&#039; .. color .. &#039; wk-icon-before &#039; .. icon .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-titre&amp;quot;&amp;gt;&#039; .. title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-texte&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMainBanner( frame, pv, lang )&lt;br /&gt;
	local titre = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;main_banner_title&amp;quot; ), t_nowiki( pv.rawTitle ) )&lt;br /&gt;
&lt;br /&gt;
	return renderMetaWarningHtml{&lt;br /&gt;
		color	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;main_banner_color&amp;quot; ),&lt;br /&gt;
		title	= titre,&lt;br /&gt;
		icon	= &#039;wk-icon-wikidebates&#039;,&lt;br /&gt;
		text	= &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;learn_more_label&amp;quot; ) .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;founding_principles_link&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux : rendu natif + résolution via label i18n (C optimisée)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local PROGRESS_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;progress_under_construction&amp;quot;,&lt;br /&gt;
	&amp;quot;progress_draft&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;title_non_standard&amp;quot;,&lt;br /&gt;
	&amp;quot;title_to_explain&amp;quot;,&lt;br /&gt;
	&amp;quot;title_to_simplify&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local DEBATE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;debate_unbalanced&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_redundant&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_fanciful&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_sensitive&amp;quot;,&lt;br /&gt;
	&amp;quot;outline_to_improve&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_generated_by_chatgpt&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function bannerMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.banners&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannerByKey( pv, lang, key, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local color	= bannerMsg( lang, key .. &amp;quot;_color&amp;quot; )&lt;br /&gt;
	local icon	= bannerMsg( lang, key .. &amp;quot;_icon&amp;quot; )&lt;br /&gt;
	local title	= bannerMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	local text	= bannerMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if color == &amp;quot;&amp;quot; and icon == &amp;quot;&amp;quot; and title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = renderMetaWarningHtml{&lt;br /&gt;
		color	= color,&lt;br /&gt;
		icon	= icon,&lt;br /&gt;
		title	= title,&lt;br /&gt;
		text	= text&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local cat = bannerMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildBannerLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( bannerMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveBannerKeyFromLookup( raw, lookup )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderWarningBanners( args, pv, cats, lang )&lt;br /&gt;
	local av = args[ &amp;quot;progress&amp;quot; ]&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local titleLookup	= buildBannerLabelLookup( lang, TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local debateLookup	= buildBannerLabelLookup( lang, DEBATE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local progLookup	= buildBannerLabelLookup( lang, PROGRESS_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
	local function renderBannersFromList( list, lookup )&lt;br /&gt;
		local html = {}&lt;br /&gt;
		for _, x in ipairs( splitCSV( list, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			local key = resolveBannerKeyFromLookup( x, lookup )&lt;br /&gt;
			if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert( html, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return table_concat( html )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;title-warnings&amp;quot; ] then&lt;br /&gt;
		table_insert( out, renderBannersFromList( args[ &amp;quot;title-warnings&amp;quot; ], titleLookup ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if av and t_trim( av ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local key = resolveBannerKeyFromLookup( av, progLookup )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isProgress( lang, av, &amp;quot;constructed&amp;quot; ) then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;constructed&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	elseif not isProgress( lang, av, &amp;quot;draft&amp;quot; ) and not isProgress( lang, av, &amp;quot;building&amp;quot; ) and not isProgress( lang, av, &amp;quot;constructed&amp;quot; ) then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;progress_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;debate-warnings&amp;quot; ] then&lt;br /&gt;
		table_insert( out, renderBannersFromList( args[ &amp;quot;debate-warnings&amp;quot; ], debateLookup ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Carte des arguments (en-tête)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentMapTop( lang, maps )&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local pro = ( maps.pro and maps.pro.map ) or &amp;quot;&amp;quot;&lt;br /&gt;
	local con = ( maps.con and maps.con.map ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local labelPour		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_pro_label&amp;quot; )&lt;br /&gt;
	local labelContre	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_con_label&amp;quot; )&lt;br /&gt;
	local msgPour		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg_short&amp;quot; )&lt;br /&gt;
	local msgContre		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg_short&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local root = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:attr( &amp;quot;id&amp;quot;, &amp;quot;Argument_map&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map--top&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;navigation-not-searchable&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local colP = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map__col&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;is-pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local colC = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map__col&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;is-con&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	colP:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__th&amp;quot; )&lt;br /&gt;
			:wikitext( labelPour )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colP:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__td&amp;quot; )&lt;br /&gt;
			:wikitext( pro ~= &amp;quot;&amp;quot; and pro or ( &#039;&amp;lt;div class=&amp;quot;carte-vide navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msgPour .. &#039;&amp;lt;/div&amp;gt;&#039; ) )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colC:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__th&amp;quot; )&lt;br /&gt;
			:wikitext( labelContre )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colC:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__td&amp;quot; )&lt;br /&gt;
			:wikitext( con ~= &amp;quot;&amp;quot; and con or ( &#039;&amp;lt;div class=&amp;quot;carte-vide navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msgContre .. &#039;&amp;lt;/div&amp;gt;&#039; ) )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	root:node( colP ):node( colC )&lt;br /&gt;
&lt;br /&gt;
	return tostring( root )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sous-parties d’introduction (format &amp;quot;Sous-partie&amp;quot; optimisé)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local INTRO_SUB_SEP		= &amp;quot;⟭⟭⟭&amp;quot;&lt;br /&gt;
local INTRO_FIELD_SEP	= &amp;quot;⟬⟬⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function wkParseIntroSubsections( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( INTRO_SUB_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, INTRO_SUB_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, INTRO_FIELD_SEP, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 3 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				title		= f[ 1 ],&lt;br /&gt;
				content		= f[ 2 ],&lt;br /&gt;
				warnings	= f[ 3 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local INTRO_SUB_WARNING_KEYS = {&lt;br /&gt;
	&amp;quot;too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;to_develop&amp;quot;,&lt;br /&gt;
	&amp;quot;unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;biased&amp;quot;,&lt;br /&gt;
	&amp;quot;refs_missing&amp;quot;,&lt;br /&gt;
	&amp;quot;style_to_review&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function buildIntroSubWarningLookup( lang )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, k in ipairs( INTRO_SUB_WARNING_KEYS ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, &amp;quot;intro_subbanner_&amp;quot; .. k .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = &amp;quot;intro_subbanner_&amp;quot; .. k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderIntroSubsection( pv, lang, it, cats, lookup )&lt;br /&gt;
	local titre = t_trim( tostring( it.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	local contenu = t_trim( tostring( it.content or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	local avert = t_trim( tostring( it.warnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if titre == &amp;quot;&amp;quot; then&lt;br /&gt;
		titre = L( lang, &amp;quot;text&amp;quot;, &amp;quot;default_subsection_title&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		&#039;&amp;lt;h3 class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-question&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. titre&lt;br /&gt;
		.. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;encadre-section-deroulante&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
	if avert ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local banners = {}&lt;br /&gt;
&lt;br /&gt;
		for lab in t_gsplit( avert, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			lab = t_trim( lab )&lt;br /&gt;
			if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local k = lookup[ lab ] or &amp;quot;&amp;quot;&lt;br /&gt;
				if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					local h = renderSubsectionBanner( pv, lang, k, {}, cats )&lt;br /&gt;
					if h and h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						banners[ #banners + 1 ] = h&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #banners &amp;gt; 0 then&lt;br /&gt;
			table_insert( out, &#039;&amp;lt;div class=&amp;quot;minibandeaux&amp;quot;&amp;gt;&#039; .. table_concat( banners ) .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if contenu ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( out, contenu )&lt;br /&gt;
	else&lt;br /&gt;
		local editForm		= L( lang, &amp;quot;forms&amp;quot;, &amp;quot;intro_edit_title&amp;quot; )&lt;br /&gt;
		local editTT		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_edit_tt&amp;quot; )&lt;br /&gt;
		local linkLabel		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_link_label&amp;quot; )&lt;br /&gt;
		local emptyIntro	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_msg&amp;quot; )&lt;br /&gt;
		local emptyCat		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_category&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local link = addDataLink(&lt;br /&gt;
			editForm,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			linkLabel,&lt;br /&gt;
			editTT&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(&lt;br /&gt;
			out,&lt;br /&gt;
			&amp;quot;&amp;lt;i&amp;gt;&amp;quot; .. emptyIntro	.. &amp;quot;&amp;lt;/i&amp;gt;&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		if emptyCat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. emptyCat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( out, &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderIntroSubsectionsBlock( pv, lang, raw, cats )&lt;br /&gt;
	local items = wkParseIntroSubsections( raw )&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildIntroSubWarningLookup( lang )&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		out[ #out + 1 ] = wkRenderIntroSubsection( pv, lang, it, cats, lookup )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Section : Introduction (sans fallback)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderIntroduction( args, pv, lang, cats )&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-question&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;understand_debate_title&amp;quot; )&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;intro_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local raw = args[ &amp;quot;introduction&amp;quot; ]&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local expanded = F:preprocess( raw )&lt;br /&gt;
		local subs = wkRenderIntroSubsectionsBlock( pv, lang, expanded, cats or {} )&lt;br /&gt;
&lt;br /&gt;
		if subs ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local s = ( h2 .. subs ):gsub( &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
			return s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cat = &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;intro_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	local body = &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot; style=&amp;quot;margin-bottom: 1em;&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_intro_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039; .. cat&lt;br /&gt;
&lt;br /&gt;
	local s = ( h2 .. body ):gsub( &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderWikipediaLinks( args, pv, lang )&lt;br /&gt;
	local raw = args[ &amp;quot;wikipedia-articles&amp;quot; ]&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local wrap = html_create( &amp;quot;div&amp;quot; ):addClass( &amp;quot;bandeau-section wk-icon-before wk-icon-wikipedia hover-top navigation-not-searchable&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hasPages = false&lt;br /&gt;
&lt;br /&gt;
	if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local expanded = F:preprocess( raw )&lt;br /&gt;
		local pages = wkParseWikipediaMarkers( expanded )&lt;br /&gt;
&lt;br /&gt;
		if #pages &amp;gt; 0 then&lt;br /&gt;
			hasPages = true&lt;br /&gt;
			local items = {}&lt;br /&gt;
&lt;br /&gt;
			for _, page in ipairs( pages ) do&lt;br /&gt;
				local url = wkWikipediaUrl( page, lang )&lt;br /&gt;
				items[ #items + 1 ] = &#039;&amp;lt;span class=&amp;quot;hover-wikipedia&amp;quot;&amp;gt;[&#039; .. url .. &#039; &#039; .. page .. &#039;]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			wrap:wikitext(&lt;br /&gt;
				string_format(&lt;br /&gt;
					L( lang, &amp;quot;text&amp;quot;, &amp;quot;wikipedia_seealso_msg&amp;quot; ),&lt;br /&gt;
					joinArticles( items, lang )&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			wrap:addClass( &amp;quot;aucun-contenu&amp;quot; )&lt;br /&gt;
				:wikitext( L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_wikipedia_msg&amp;quot; ) )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		wrap:addClass( &amp;quot;aucun-contenu&amp;quot; )&lt;br /&gt;
			:wikitext( L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_wikipedia_msg&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	wrap:wikitext(&lt;br /&gt;
		addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;wiki_seealso_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;wikipedia_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; or not hasPages then&lt;br /&gt;
		return tostring( wrap ) .. &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;wikipedia_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring( wrap )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderQuestionsFAQ( sujetComplet, sens, lang )&lt;br /&gt;
	local topic = ( sujetComplet and sujetComplet ~= &amp;quot;&amp;quot; ) and sujetComplet or &amp;quot;&amp;quot;&lt;br /&gt;
	local isCon = ( sens == &amp;quot;con&amp;quot; )&lt;br /&gt;
	local q&lt;br /&gt;
	if isCon then&lt;br /&gt;
		q = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q_con&amp;quot; ), topic )&lt;br /&gt;
	else&lt;br /&gt;
		q = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q_pro&amp;quot; ), topic )&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;div class=&amp;quot;question-FAQ&amp;quot;&amp;gt;&#039; .. q .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgsList( args, pv, lang, sens, maps, cats )&lt;br /&gt;
	local isCon = ( sens == &amp;quot;con&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hIconCon = &#039;is-con&#039;&lt;br /&gt;
	local hIconPro = &#039;is-pro&#039;&lt;br /&gt;
	local title = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_con_title&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_pro_title&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local btnForm = addDataLink(&lt;br /&gt;
		isCon and L( lang, &amp;quot;forms&amp;quot;, &amp;quot;args_con_edit_title&amp;quot; ) or L( lang, &amp;quot;forms&amp;quot;, &amp;quot;args_pro_edit_title&amp;quot; ),&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
		isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_con_edit_tt&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_pro_edit_tt&amp;quot; )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	push( out, listBreaker() )&lt;br /&gt;
	push( out,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument &#039; .. ( isCon and hIconCon or hIconPro ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. btnForm&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	push( out, renderQuestionsFAQ( args[ &amp;quot;complete-topic&amp;quot; ], sens, lang ) )&lt;br /&gt;
&lt;br /&gt;
	local mode = maps and maps._mode and ( isCon and maps._mode.con or maps._mode.pro ) or &amp;quot;none&amp;quot;&lt;br /&gt;
	local data = maps and ( isCon and maps.con or maps.pro ) or nil&lt;br /&gt;
	local items = data and data.items or {}&lt;br /&gt;
&lt;br /&gt;
	if ( mode == &amp;quot;data&amp;quot; ) and #items &amp;gt; 0 then&lt;br /&gt;
		local ul = html_create( &amp;quot;ul&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;argument-list&amp;quot; )&lt;br /&gt;
			:addClass( isCon and &amp;quot;is-con&amp;quot; or &amp;quot;is-pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local lis = {}&lt;br /&gt;
		local anyTitleWarnings = false&lt;br /&gt;
&lt;br /&gt;
		for i, it in ipairs( items ) do&lt;br /&gt;
			if it.warnings and t_trim( it.warnings ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				anyTitleWarnings = true&lt;br /&gt;
			end&lt;br /&gt;
			table_insert( lis, wkRenderArgumentLi( pv, lang, it, isCon and &amp;quot;con&amp;quot; or &amp;quot;pro&amp;quot;, i, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		ul:wikitext( table_concat( lis, &amp;quot;\n&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if anyTitleWarnings then&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;refs_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		push( out, tostring( ul ) )&lt;br /&gt;
	else&lt;br /&gt;
		local cat = isCon and ( &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;con_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; ) or ( &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;pro_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		local msg = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg&amp;quot; )&lt;br /&gt;
		table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msg .. &#039;&amp;lt;/div&amp;gt;&#039; .. cat )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sideLabel = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_word&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_word&amp;quot; )&lt;br /&gt;
	local label = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_add_label&amp;quot; ), sideLabel )&lt;br /&gt;
&lt;br /&gt;
	local tooltip = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_add_tt&amp;quot; ), sideLabel, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	local baseField = L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_title&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local rqTypeValue	= isCon and L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_con_type_label&amp;quot; ) or L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_pro_type_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local rqQuery = {}&lt;br /&gt;
	rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ]	= rqTypeValue&lt;br /&gt;
	rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]		= pv.pageId&lt;br /&gt;
	rqQuery[ &amp;quot;_run&amp;quot; ]					= &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	push( out,&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. wkRunQueryHtmlTagButton( baseField, label, tooltip, rqQuery )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections de références&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers FACTORISÉS : warnings + rendu de listes &amp;lt;li&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local REFERENCE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;reference_quality_insufficient&amp;quot;,&lt;br /&gt;
	&amp;quot;reference_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;dead_link&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function renderReferenceItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsRef = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsRef == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup( lang, REFERENCE_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsRef, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, REFERENCE_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderLiListFromArg( raw, parseFn, renderOneFn )&lt;br /&gt;
	local items = parseFn( raw )&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lis = {}&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local li = renderOneFn( item )&lt;br /&gt;
		if li and li ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lis[ #lis + 1 ] = li&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( lis, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local REF_SEP		= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local REF_FIELD_SEP	= &amp;quot;⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function wkParseBiblioMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( REF_FIELD_SEP, 1, true ) and not raw:find( REF_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, REF_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, REF_FIELD_SEP, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 12 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				authors		= f[ 1 ],&lt;br /&gt;
				article		= f[ 2 ],&lt;br /&gt;
				work		= f[ 3 ],&lt;br /&gt;
				volume		= f[ 4 ],&lt;br /&gt;
				number		= f[ 5 ],&lt;br /&gt;
				location	= f[ 6 ],&lt;br /&gt;
				page		= f[ 7 ],&lt;br /&gt;
				publisher	= f[ 8 ],&lt;br /&gt;
				place		= f[ 9 ],&lt;br /&gt;
				date		= f[ 10 ],&lt;br /&gt;
				link		= f[ 11 ],&lt;br /&gt;
				warnings	= f[ 12 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneBiblioLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		authors = L( lang, &amp;quot;text&amp;quot;, &amp;quot;refs_to_review&amp;quot; )&lt;br /&gt;
		table_insert( categories, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;refs_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	out[ #out + 1 ] = authors&lt;br /&gt;
&lt;br /&gt;
	local article = t_trim( item.article or &amp;quot;&amp;quot; )&lt;br /&gt;
	local work = t_trim( item.work or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;article_name&amp;quot; ), article, true )&lt;br /&gt;
	end&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;work_name&amp;quot; ), work, true )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « [&amp;quot; .. link .. &amp;quot; &amp;quot; .. article .. &amp;quot;] »&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « &amp;quot; .. article .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local volume = t_trim( item.volume or &amp;quot;&amp;quot; )&lt;br /&gt;
		if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &amp;quot; .. volume&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local number = t_trim( item.number or &amp;quot;&amp;quot; )&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, n°&amp;quot; .. number&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local location = t_trim( item.location or &amp;quot;&amp;quot; )&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. location&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local page = t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, p.&amp;quot; .. page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local publisher = t_trim( item.publisher or &amp;quot;&amp;quot; )&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;publishing_house&amp;quot; ), publisher, true )&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. publisher&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local place = t_trim( item.place or &amp;quot;&amp;quot; )&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;place_of_publication&amp;quot; ), place, true )&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. place&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local date = t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderBiblioListFromArg( raw, pv, lang, categories, smwPending )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseBiblioMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneBiblioLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWeblioMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( &amp;quot;⟭&amp;quot;, 1, true ) and not raw:find( &amp;quot;⟬&amp;quot;, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, &amp;quot;⟭&amp;quot;, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, &amp;quot;⟬&amp;quot;, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 6 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				page		= f[ 1 ],&lt;br /&gt;
				site		= f[ 2 ],&lt;br /&gt;
				link		= f[ 3 ],&lt;br /&gt;
				authors		= f[ 4 ],&lt;br /&gt;
				date		= f[ 5 ],&lt;br /&gt;
				warnings	= f[ 6 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneWeblioLi( pv, item, lang, categories, smwPending, side )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local page		= t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local site		= t_trim( item.site or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link		= t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors	= t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	local date		= t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;article_name&amp;quot; ), page, true )&lt;br /&gt;
	end&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;website_name&amp;quot; ), site, true )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local label = &amp;quot;&amp;quot;&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = page&lt;br /&gt;
		elseif site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = site&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if label == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = label&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; and page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. site .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Bandeaux d’avertissement&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	--	SMW auteurs (par côté)&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local propKey = &amp;quot;author&amp;quot;&lt;br /&gt;
		if side == &amp;quot;pro&amp;quot; then&lt;br /&gt;
			propKey = &amp;quot;author_pro&amp;quot;&lt;br /&gt;
		elseif side == &amp;quot;con&amp;quot; then&lt;br /&gt;
			propKey = &amp;quot;author_con&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for a in t_gsplit( authors, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			a = t_trim( a )&lt;br /&gt;
			if a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, smwProp( lang, propKey ), a, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderWeblioListFromArg( raw, pv, lang, categories, smwPending, side )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseWeblioMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneWeblioLi( pv, item, lang, categories, smwPending, side )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseVideoMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( &amp;quot;⟭&amp;quot;, 1, true ) and not raw:find( &amp;quot;⟬&amp;quot;, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, &amp;quot;⟭&amp;quot;, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, &amp;quot;⟬&amp;quot;, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 4 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				title		= f[ 1 ],&lt;br /&gt;
				link		= f[ 2 ],&lt;br /&gt;
				authors		= f[ 3 ],&lt;br /&gt;
				warnings	= f[ 4 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneVideoLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
	local title = t_trim( item.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. title .. &amp;quot;]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		out[ #out + 1 ] = title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderVideoListFromArg( raw, pv, lang, categories, smwPending )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseVideoMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneVideoLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRefBlock( pageVars, lang, iconClass, titleText, formKey, value )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		&#039;&amp;lt;h4 class=&amp;quot;titre-references wk-icon-before &#039; .. iconClass .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. titleText&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, formKey ),&lt;br /&gt;
			pageVars.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;section_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h4&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	if value and t_trim( value ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;ul&amp;gt;&amp;quot; .. value .. &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucune-reference navigation-not-searchable&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_references_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderReferences( args, pageVars, lang, categories, smwPending, refRaw )&lt;br /&gt;
	local wrap = {}&lt;br /&gt;
&lt;br /&gt;
	refRaw = refRaw or {}&lt;br /&gt;
	refRaw.bibliography = refRaw.bibliography or {}&lt;br /&gt;
	refRaw.webliography = refRaw.webliography or {}&lt;br /&gt;
	refRaw.videography = refRaw.videography or {}&lt;br /&gt;
&lt;br /&gt;
	table_insert( wrap, &#039;&amp;lt;h2 class=&amp;quot;wk-icon-before wk-icon-further&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;further_reading_title&amp;quot; ) .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
	--	Bibliography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Bibliography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-bibliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;bibliography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderBiblioListFromArg( refRaw.bibliography.pro, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderBiblioListFromArg( refRaw.bibliography.con, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderBiblioListFromArg( refRaw.bibliography.neutral, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Webliography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Webliography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-webliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;webliography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderWeblioListFromArg( refRaw.webliography.pro, pageVars, lang, categories, smwPending, &amp;quot;pro&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderWeblioListFromArg( refRaw.webliography.con, pageVars, lang, categories, smwPending, &amp;quot;con&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderWeblioListFromArg( refRaw.webliography.neutral, pageVars, lang, categories, smwPending, &amp;quot;neutral&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Videography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Videography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-videography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;videography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderVideoListFromArg( refRaw.videography.pro, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderVideoListFromArg( refRaw.videography.con, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderVideoListFromArg( refRaw.videography.neutral, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( wrap )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	JSON-LD : helpers QAPage / Breadcrumb / WebSite&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrl( lang, prefixKey, labelKey )&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. L( lang, &amp;quot;urls&amp;quot;, labelKey ),&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrlFromText( lang, prefixKey, text )&lt;br /&gt;
	text = t_trim( tostring( text or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. text,&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkFullUrl( titleText )&lt;br /&gt;
	titleText = t_trim( tostring( titleText or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if titleText == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return tostring( uri_fullUrl( titleText ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkTakeFirst( items, limit )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	limit = tonumber( limit ) or 0&lt;br /&gt;
&lt;br /&gt;
	if limit &amp;lt;= 0 then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #items do&lt;br /&gt;
		if i &amp;gt; limit then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		out[ #out + 1 ] = items[ i ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWebsiteNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#website&amp;quot;,&lt;br /&gt;
		url = homeUrl,&lt;br /&gt;
		name = siteName&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local homeLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home_label&amp;quot; )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local debatesLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
	local debatesUrl = wkBuildWikiUrl( lang, &amp;quot;portal_prefix&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;BreadcrumbList&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;,&lt;br /&gt;
		itemListElement = {&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 1,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = homeUrl,&lt;br /&gt;
					name = homeLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 2,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = debatesUrl,&lt;br /&gt;
					name = debatesLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 3,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
					name = pv.rawTitle&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSchemaPageLabel( it )&lt;br /&gt;
	local label = t_trim( tostring( ( it and it.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if label == &amp;quot;&amp;quot; then&lt;br /&gt;
		label = t_trim( tostring( ( it and it.title ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAnswerNode( it, kind, lang )&lt;br /&gt;
&lt;br /&gt;
	local pageLabel = t_trim( tostring( ( it and it.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if pageLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local answerName = t_trim( tostring( ( it and it.title ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if answerName == &amp;quot;&amp;quot; then&lt;br /&gt;
		answerName = pageLabel&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local url = wkFullUrl( pageLabel )&lt;br /&gt;
	if url == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local additionalType&lt;br /&gt;
	if kind == &amp;quot;pro&amp;quot; then&lt;br /&gt;
		additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;pro_label&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;con_label&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Answer&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#answer&amp;quot;,&lt;br /&gt;
		url = url,&lt;br /&gt;
&lt;br /&gt;
		name = answerName,&lt;br /&gt;
		text = pageLabel,&lt;br /&gt;
&lt;br /&gt;
		author = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
			name = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		additionalType = additionalType,&lt;br /&gt;
&lt;br /&gt;
		about = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSuggestedAnswers( maps, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local position = 1&lt;br /&gt;
&lt;br /&gt;
	local proItems = ( maps and maps.pro and maps.pro.items ) or {}&lt;br /&gt;
	local conItems = ( maps and maps.con and maps.con.items ) or {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkTakeFirst( proItems, 3 ) ) do&lt;br /&gt;
		local node = wkBuildAnswerNode( it, &amp;quot;pro&amp;quot;, lang )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ #out + 1 ] = node&lt;br /&gt;
			position = position + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkTakeFirst( conItems, 3 ) ) do&lt;br /&gt;
		local node = wkBuildAnswerNode( it, &amp;quot;con&amp;quot;, lang )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ #out + 1 ] = node&lt;br /&gt;
			position = position + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildIsPartOf( lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#website&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildIsRelatedTo( args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local raw = t_trim( tostring( ( args and args[ &amp;quot;related-debates&amp;quot; ] ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		part = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			count = count + 1&lt;br /&gt;
			if count &amp;gt; 5 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local url = wkFullUrl( part )&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#qa&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildKeywords( args, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local sections = splitCSV( args and args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
	local termSetId = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;sections_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #sections do&lt;br /&gt;
		if i &amp;gt; 4 then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local section = t_trim( tostring( sections[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;DefinedTerm&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrlFromText( lang, &amp;quot;category_prefix&amp;quot;, section ),&lt;br /&gt;
				name = section,&lt;br /&gt;
				inDefinedTermSet = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = termSetId&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAboutAndMentions( args )&lt;br /&gt;
	local about = {}&lt;br /&gt;
	local mentions = {}&lt;br /&gt;
&lt;br /&gt;
	local keywords = splitCSV( args and args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #keywords do&lt;br /&gt;
		local kw = t_trim( tostring( keywords[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if kw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Thing&amp;quot;,&lt;br /&gt;
				name = kw&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if i &amp;lt;= 2 then&lt;br /&gt;
				about[ #about + 1 ] = node&lt;br /&gt;
			else&lt;br /&gt;
				mentions[ #mentions + 1 ] = node&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return about, mentions&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildDiscussionUrl( pv, lang )&lt;br /&gt;
	local prefix = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;discussion_prefix&amp;quot; )&lt;br /&gt;
	return wkBuildWikiUrlFromText( lang, &amp;quot;discussion_prefix&amp;quot;, pv.rawTitle )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tagHtmlTag(tagName, content, attrs)&lt;br /&gt;
	local src = &amp;quot;{{#tag:htmltag|&amp;quot; .. (content or &amp;quot;&amp;quot;) .. &amp;quot;|tagname=&amp;quot; .. tostring(tagName)&lt;br /&gt;
&lt;br /&gt;
	if attrs then&lt;br /&gt;
		local keys = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
		for k in pairs(attrs) do&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			keys[n] = k&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			table_sort(keys)&lt;br /&gt;
			for i = 1, n do&lt;br /&gt;
				local k = keys[i]&lt;br /&gt;
				src = src .. &amp;quot;|&amp;quot; .. tostring(k) .. &amp;quot;=&amp;quot; .. tostring(attrs[k])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	src = src .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	return F:preprocess(src)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkProtectJsonLdForParser( json )&lt;br /&gt;
	if not json or json == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	json = tostring( json )&lt;br /&gt;
&lt;br /&gt;
	--	protéger les séparateurs de parser function&lt;br /&gt;
	json = json:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;/&amp;quot;, &amp;quot;\\/&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	éviter de fermer prématurément {{#tag:...}}&lt;br /&gt;
	json = json:gsub( &amp;quot;}}&amp;quot;, &amp;quot;} }&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return json&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
	authors = t_trim( tostring( authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for a in t_gsplit( authors, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
		a = t_trim( tostring( a or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
				name = a&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 1 then&lt;br /&gt;
		return out[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSingleNodeFromFirstItem( items, builder )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #( items or {} ) do&lt;br /&gt;
		local node = builder( items[ i ] )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ 1 ] = node&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromBibliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseBiblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromWebliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseWeblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local page = t_trim( tostring( item.page or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local site = t_trim( tostring( item.site or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if link == &amp;quot;&amp;quot; or page == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
			name = page,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.isPartOf = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
				name = site&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromVideography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseVideoMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local title = t_trim( tostring( item.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if title == &amp;quot;&amp;quot; or link == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;VideoObject&amp;quot;,&lt;br /&gt;
			name = title,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateSchemaJSONLD( pv, lang, args, maps, refRaw )&lt;br /&gt;
	local websiteNode = wkBuildWebsiteNode( lang )&lt;br /&gt;
	local breadcrumbNode = wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local about, mentions = wkBuildAboutAndMentions( args )&lt;br /&gt;
	local keywords = wkBuildKeywords( args, lang )&lt;br /&gt;
	local suggestedAnswer = wkBuildSuggestedAnswers( maps, lang )&lt;br /&gt;
	local isPartOf = wkBuildIsPartOf( lang )&lt;br /&gt;
	local isRelatedTo = wkBuildIsRelatedTo( args )&lt;br /&gt;
	local pageCreation = getPageCreation( pv, args )&lt;br /&gt;
	local questionText&lt;br /&gt;
	&lt;br /&gt;
	if args[ &amp;quot;complete-topic&amp;quot; ] and t_trim( args[ &amp;quot;complete-topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		questionText = string_format(&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q&amp;quot; ),&lt;br /&gt;
			t_trim( args[ &amp;quot;complete-topic&amp;quot; ] )&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		questionText = pv.rawTitle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	refRaw = refRaw or {}&lt;br /&gt;
	refRaw.bibliography = refRaw.bibliography or {}&lt;br /&gt;
	refRaw.webliography = refRaw.webliography or {}&lt;br /&gt;
	refRaw.videography = refRaw.videography or {}&lt;br /&gt;
&lt;br /&gt;
	local bibliographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.bibliography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		bibliographyRaw = refRaw.bibliography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.bibliography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if bibliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			bibliographyRaw = bibliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		bibliographyRaw = bibliographyRaw .. refRaw.bibliography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.bibliography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if bibliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			bibliographyRaw = bibliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		bibliographyRaw = bibliographyRaw .. refRaw.bibliography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local webliographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.webliography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		webliographyRaw = refRaw.webliography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.webliography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if webliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			webliographyRaw = webliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		webliographyRaw = webliographyRaw .. refRaw.webliography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.webliography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if webliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			webliographyRaw = webliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		webliographyRaw = webliographyRaw .. refRaw.webliography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local videographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.videography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		videographyRaw = refRaw.videography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.videography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if videographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			videographyRaw = videographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		videographyRaw = videographyRaw .. refRaw.videography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.videography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if videographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			videographyRaw = videographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		videographyRaw = videographyRaw .. refRaw.videography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local citations = {}&lt;br /&gt;
&lt;br /&gt;
	local b = wkBuildClaimCitationsFromBibliography( bibliographyRaw )&lt;br /&gt;
	if b[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = b[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local w = wkBuildClaimCitationsFromWebliography( webliographyRaw )&lt;br /&gt;
	if w[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = w[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local subjectOf = wkBuildClaimCitationsFromVideography( videographyRaw )&lt;br /&gt;
&lt;br /&gt;
	local qaNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;QAPage&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#qa&amp;quot;,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		educationalUse = {&lt;br /&gt;
			&amp;quot;debate&amp;quot;,&lt;br /&gt;
			&amp;quot;critical thinking&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		learningResourceType = &amp;quot;debate&amp;quot;,&lt;br /&gt;
		audience = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;EducationalAudience&amp;quot;,&lt;br /&gt;
			educationalLevel = {&lt;br /&gt;
				&amp;quot;general public&amp;quot;,&lt;br /&gt;
				&amp;quot;secondary education&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		isPartOf = isPartOf,&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		discussionUrl = wkBuildDiscussionUrl( pv, lang ),&lt;br /&gt;
		publisher = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
			name = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
		},&lt;br /&gt;
		mainEntity = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Question&amp;quot;,&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#question&amp;quot;,&lt;br /&gt;
			name = pv.rawTitle,&lt;br /&gt;
			text = questionText,&lt;br /&gt;
			answerCount = #suggestedAnswer,&lt;br /&gt;
			suggestedAnswer = suggestedAnswer&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if pageCreation and pageCreation ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		qaNode.mainEntity.datePublished = pageCreation&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #isRelatedTo &amp;gt; 0 then&lt;br /&gt;
		qaNode.isRelatedTo = isRelatedTo&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #keywords &amp;gt; 0 then&lt;br /&gt;
		qaNode.keywords = keywords&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #about &amp;gt; 0 then&lt;br /&gt;
		qaNode.about = about&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #mentions &amp;gt; 0 then&lt;br /&gt;
		qaNode.mentions = mentions&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #citations &amp;gt; 0 then&lt;br /&gt;
		qaNode.citation = citations&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if subjectOf[ 1 ] then&lt;br /&gt;
		qaNode.subjectOf = subjectOf[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {&lt;br /&gt;
		[ &amp;quot;@context&amp;quot; ] = &amp;quot;https://schema.org&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@graph&amp;quot; ] = {&lt;br /&gt;
			websiteNode,&lt;br /&gt;
			breadcrumbNode,&lt;br /&gt;
			qaNode&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local json = t_jsonEncode( data )&lt;br /&gt;
&lt;br /&gt;
	return tagHtmlTag( &amp;quot;script&amp;quot;, wkProtectJsonLdForParser( json ), {&lt;br /&gt;
		type = &amp;quot;application/ld+json&amp;quot;,&lt;br /&gt;
		[&amp;quot;class&amp;quot;] = &amp;quot;navigation-not-searchable&amp;quot;&lt;br /&gt;
	} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Champs divers (mots-clés, rubriques, connexes, interlangue)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderKeywords( args, pv, cats, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div style=&amp;quot;font-size: 95%; margin-top: 1em;&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_label_text&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;keywords&amp;quot; ] and t_trim( args[ &amp;quot;keywords&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local rendered = {}&lt;br /&gt;
&lt;br /&gt;
		local formName = L( lang, &amp;quot;forms&amp;quot;, &amp;quot;search_by_keywords_title&amp;quot; )&lt;br /&gt;
		local fieldLabel = formName&lt;br /&gt;
		local fieldName = L( lang, &amp;quot;params&amp;quot;, &amp;quot;keywords_field&amp;quot; )&lt;br /&gt;
		local tt = L( lang, &amp;quot;text&amp;quot;, &amp;quot;search_by_keyword_tt&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local typeField = L( lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_field&amp;quot; )&lt;br /&gt;
		local typeValue = L( lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_value&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local extra = {&lt;br /&gt;
			[ fieldLabel .. &amp;quot;[&amp;quot; .. typeField .. &amp;quot;]&amp;quot; ] = typeValue&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			k = t_trim( tostring( k or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local chip = runQueryLink( formName, fieldLabel, fieldName, k, k, tt, extra )&lt;br /&gt;
				if not chip or chip == &amp;quot;&amp;quot; then&lt;br /&gt;
					chip = k&lt;br /&gt;
				end&lt;br /&gt;
				if chip ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert( rendered, chip )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #rendered &amp;gt; 0 then&lt;br /&gt;
			table_insert( out, table_concat( rendered, &amp;quot;, &amp;quot; ) )&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot; ) .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot; ) .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;keywords_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderConnexes( args, pv, cats, lang )&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-parent&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;forms&amp;quot;, &amp;quot;related_edit_title&amp;quot; )&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;related_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;related_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local raw = args[ &amp;quot;related-debates&amp;quot; ]&lt;br /&gt;
	if raw and t_trim( raw ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local items = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
&lt;br /&gt;
		for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
			part = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				n = n + 1&lt;br /&gt;
				items[ n ] = &#039;&amp;lt;li style=&amp;quot;position: relative;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;hover-map&amp;quot;&amp;gt;[[&#039; .. part .. &#039;]]&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			return h2 .. &#039;&amp;lt;ul class=&amp;quot;hover-top searchaux&amp;quot;&amp;gt;&#039; .. table_concat( items ) .. &#039;&amp;lt;/ul&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;related_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	return h2 .. &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_related_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRubriques( args, cats, lang )&lt;br /&gt;
	if args[ &amp;quot;sections&amp;quot; ] and t_trim( args[ &amp;quot;sections&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for _, r in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			table_insert( out, &amp;quot;[[Category:&amp;quot; .. r .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
		return table_concat( out )&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;sections_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW (sans legacy)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function setSemanticData( args, pv, lang, maps, smwPending )&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local pro = maps.pro or {}&lt;br /&gt;
	local con = maps.con or {}&lt;br /&gt;
&lt;br /&gt;
	local pourPages = {}&lt;br /&gt;
	local contrePages = {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( pro.items or {} ) do&lt;br /&gt;
		if it.page and it.page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( pourPages, it.page )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( con.items or {} ) do&lt;br /&gt;
		if it.page and it.page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( contrePages, it.page )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local props = {}&lt;br /&gt;
&lt;br /&gt;
	local pourSurvol = t_trim( pro.mapHover or &amp;quot;&amp;quot; )&lt;br /&gt;
	local contreSurvol = t_trim( con.mapHover or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if pourSurvol == &amp;quot;&amp;quot; then&lt;br /&gt;
		pourSurvol = &#039;&amp;lt;div class=&amp;quot;carte-vide&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg_short&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if contreSurvol == &amp;quot;&amp;quot; then&lt;br /&gt;
		contreSurvol = &#039;&amp;lt;div class=&amp;quot;carte-vide&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg_short&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listePour = t_trim( pro.argsVar or &amp;quot;&amp;quot; )&lt;br /&gt;
	local listeContre = t_trim( con.argsVar or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;debate_name&amp;quot; ) ]		= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;debate_number&amp;quot; ) ]	= pv.pageId&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;breadcrumb&amp;quot; ) ]		= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;parent_debate&amp;quot; ) ]	= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;pro_list&amp;quot; ) ]		= listePour&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;con_list&amp;quot; ) ]		= listeContre&lt;br /&gt;
&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;arg_map&amp;quot; ) ] =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;wk-arg-map navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_pro_label&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. pourSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_con_label&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. contreSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	if #pourPages &amp;gt; 0 then&lt;br /&gt;
		props[ smwProp( lang, &amp;quot;arg_pro&amp;quot; ) ] = pourPages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #contrePages &amp;gt; 0 then&lt;br /&gt;
		props[ smwProp( lang, &amp;quot;arg_con&amp;quot; ) ] = contrePages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if smwPending then&lt;br /&gt;
		smwQueueMerge( props, smwPending )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	smwSetSafe( props )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Rendu principal&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.render( frame )&lt;br /&gt;
	for k in pairs( SEO_CACHE ) do&lt;br /&gt;
		SEO_CACHE[ k ] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args	= getArgs( frame )&lt;br /&gt;
	local lang	= detectLang( args )&lt;br /&gt;
	local pv	= computePageVars()&lt;br /&gt;
	local pieces, cats = {}, {}&lt;br /&gt;
	local smwPending = {}&lt;br /&gt;
	local refRaw = {&lt;br /&gt;
		bibliography = {},&lt;br /&gt;
		webliography = {},&lt;br /&gt;
		videography = {}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	smwQueueAddFromCSV(&lt;br /&gt;
		smwPending,&lt;br /&gt;
		smwProp( lang, &amp;quot;keyword&amp;quot; ),&lt;br /&gt;
		args[ &amp;quot;keywords&amp;quot; ]&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local maps = computeArgumentMapsFromArgs( args, lang )&lt;br /&gt;
&lt;br /&gt;
	table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;debates&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;topic&amp;quot; ] and t_trim( args[ &amp;quot;topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;debate_topic&amp;quot; ), args[ &amp;quot;topic&amp;quot; ], false )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;topic_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;complete-topic&amp;quot; ] and t_trim( args[ &amp;quot;complete-topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces, F:preprocess( &amp;quot;{{SHORTDESC: &amp;quot; .. string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_topic&amp;quot; ), args[ &amp;quot;complete-topic&amp;quot; ] ) .. &amp;quot;}}&amp;quot; ) )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;topic_complete_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		table_insert( pieces, F:preprocess( &amp;quot;{{SHORTDESC: &amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot; ) .. &amp;quot;}}&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args[&amp;quot;creation-date&amp;quot;] or t_trim(args[&amp;quot;creation-date&amp;quot;]) == &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;creation_date_missing&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderArgumentMapTop( lang, maps ) )&lt;br /&gt;
	table_insert( pieces, renderKeywords( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	local btnForm = addDataLink(&lt;br /&gt;
		L( lang, &amp;quot;forms&amp;quot;, &amp;quot;banners_edit_title&amp;quot; ),&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;debate_banners_edit_tt&amp;quot; )&lt;br /&gt;
	)&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-flag&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;warnings_title&amp;quot; ) ..  btnForm .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
	table_insert( pieces, renderMainBanner( F, pv, lang ) )&lt;br /&gt;
	table_insert( pieces, renderWarningBanners( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderIntroduction( args, pv, lang, cats ) )&lt;br /&gt;
	table_insert( pieces, renderWikipediaLinks( args, pv, lang ) )&lt;br /&gt;
	table_insert( pieces, renderArgsList( args, pv, lang, &amp;quot;pro&amp;quot;, maps, cats ) )&lt;br /&gt;
	table_insert( pieces, renderArgsList( args, pv, lang, &amp;quot;con&amp;quot;, maps, cats ) )&lt;br /&gt;
&lt;br /&gt;
	if not isProgress( lang, args[ &amp;quot;progress&amp;quot; ], &amp;quot;draft&amp;quot; ) then&lt;br /&gt;
		local target = L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_ns_label&amp;quot; ) .. &amp;quot;:&amp;quot; .. pv.rawTitle .. &amp;quot; (ID)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local ns			= L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_ns_label&amp;quot; )&lt;br /&gt;
		local f_debat	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_debate_field&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local box = {}&lt;br /&gt;
		table_insert( box, &#039;&amp;lt;h2 class=&amp;quot;navigation-not-searchable noprint wk-icon-before wk-icon-selfeval&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_title&amp;quot; ) .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
		local startBtn = wkAddDataGetButton(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;self_eval_home_title&amp;quot; ),&lt;br /&gt;
			target,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_start_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_start_tt&amp;quot; ),&lt;br /&gt;
			{&lt;br /&gt;
				[ ns .. &amp;quot;[&amp;quot; .. f_debat .. &amp;quot;]&amp;quot; ]	= pv.rawTitle&lt;br /&gt;
			}&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(&lt;br /&gt;
			box,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;boite-info navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_blurb&amp;quot; )&lt;br /&gt;
			.. startBtn&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert( pieces, table_concat( box ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderReferences( args, pv, lang, cats, smwPending, refRaw ) )&lt;br /&gt;
	table_insert( pieces, renderConnexes( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;latest-changes-button navigation-not-searchable noprint wk-icon-before wk-icon-refresh&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_title&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes-button wk-btn mw-ui-button&amp;quot;&#039;&lt;br /&gt;
		.. &#039; title=&amp;quot;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_show_tt&amp;quot; ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-page=&amp;quot;&#039; .. t_nowiki( pv.rawTitle ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_show_label&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes-wrapper&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderRubriques( args, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	setSemanticData( args, pv, lang, maps, smwPending )&lt;br /&gt;
&lt;br /&gt;
	renderFullSEO( args, pv, lang )&lt;br /&gt;
	table_insert( pieces, table_concat( cats ) )&lt;br /&gt;
&lt;br /&gt;
	local renameLink = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;rename_special_page_text&amp;quot; ), pv.encoded )&lt;br /&gt;
	table_insert( pieces,&lt;br /&gt;
		&#039;&amp;lt;span id=&amp;quot;bouton-renommer&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;[[&#039;&lt;br /&gt;
		.. renameLink .. &#039;|&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;rename_link_label&amp;quot; ) .. &#039;]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-sujet&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataLink( L( lang, &amp;quot;forms&amp;quot;, &amp;quot;topic_edit_title&amp;quot; ), pv.rawTitle, L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ), L( lang, &amp;quot;text&amp;quot;, &amp;quot;topic_edit_tt&amp;quot; ) )&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-categories&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataLink( L( lang, &amp;quot;forms&amp;quot;, &amp;quot;sections_edit_title&amp;quot; ), pv.rawTitle, L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ), L( lang, &amp;quot;text&amp;quot;, &amp;quot;sections_edit_tt&amp;quot; ) )&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] and t_trim( tostring( args[&amp;quot;interlanguage&amp;quot;] or &amp;quot;&amp;quot; ) ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces, args[ &amp;quot;interlanguage&amp;quot; ] )&lt;br /&gt;
		table_insert( pieces,&lt;br /&gt;
			&#039;&amp;lt;span id=&amp;quot;bouton-modifier-interlangue&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&#039;&lt;br /&gt;
			.. &#039; data-wk-tooltip=&amp;quot;&#039; .. escapeAttr( L( lang, &amp;quot;text&amp;quot;, &amp;quot;interlanguage_edit_tt&amp;quot; ) ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. addDataLink(&lt;br /&gt;
				L( lang, &amp;quot;forms&amp;quot;, &amp;quot;interlanguage_edit_title&amp;quot; ),&lt;br /&gt;
				pv.rawTitle,&lt;br /&gt;
				L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; )&lt;br /&gt;
			)&lt;br /&gt;
			.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderDebateSchemaJSONLD( pv, lang, args, maps, refRaw ) )&lt;br /&gt;
&lt;br /&gt;
	return table_concat( pieces, &amp;quot;&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:Argument&amp;diff=10556</id>
		<title>Module:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:Argument&amp;diff=10556"/>
		<updated>2026-03-24T16:16:16Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--	Module:Argument (i18n multi-lang) — Optimisé / Purifié&lt;br /&gt;
--	Objectif : rendu du modèle « Argument » (MediaWiki 1.43) fidèle au rendu existant&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Accès global au frame + VariablesLua (accélération sans changer le rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mw				= mw&lt;br /&gt;
local F					= mw.getCurrentFrame()&lt;br /&gt;
local V					= (mw.ext and mw.ext.VariablesLua) or nil&lt;br /&gt;
local WD_I18N			= require(&#039;Module:WD/I18N&#039;)&lt;br /&gt;
&lt;br /&gt;
--	Locaux (micro-optis)&lt;br /&gt;
local tostring			= tostring&lt;br /&gt;
local type				= type&lt;br /&gt;
local tonumber			= tonumber&lt;br /&gt;
local ipairs			= ipairs&lt;br /&gt;
local pairs				= pairs&lt;br /&gt;
local table_concat		= table.concat&lt;br /&gt;
local table_insert		= table.insert&lt;br /&gt;
local table_remove		= table.remove&lt;br /&gt;
local table_sort		= table.sort&lt;br /&gt;
local t_trim			= mw.text.trim&lt;br /&gt;
local t_gsplit			= mw.text.gsplit&lt;br /&gt;
local t_nowiki			= mw.text.nowiki&lt;br /&gt;
local t_jsonEncode		= mw.text.jsonEncode&lt;br /&gt;
local t_jsonDecode		= mw.text.jsonDecode&lt;br /&gt;
local html_create		= mw.html.create&lt;br /&gt;
local mw_title_new		= mw.title.new&lt;br /&gt;
local mw_uri_encode		= mw.uri.encode&lt;br /&gt;
local mw_uri_decode		= mw.uri.decode&lt;br /&gt;
local mw_uri_fullUrl	= mw.uri.fullUrl&lt;br /&gt;
local uri_localUrl		= mw.uri.localUrl&lt;br /&gt;
local mw_util			= mw.util&lt;br /&gt;
local mw_util_getUrl	= (mw_util and mw_util.getUrl) or nil&lt;br /&gt;
local mw_hash			= (mw.hash and type(mw.hash.hashValue) == &amp;quot;function&amp;quot;) and mw.hash or nil&lt;br /&gt;
local string_format		= string.format&lt;br /&gt;
local gsub				= string.gsub&lt;br /&gt;
local ITEM_SEP			= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local FIELD_SEP			= &amp;quot;⟬&amp;quot;&lt;br /&gt;
local QUOTE_ITEM_SEP	= &amp;quot;⟭⟭⟭&amp;quot;&lt;br /&gt;
local QUOTE_FIELD_SEP	= &amp;quot;⟬⟬⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Anchor intégré (remplace Module:Anchor)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function anchorId( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Normalisation des apostrophes HTML éventuelles&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#039;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;apos;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Nettoyage minimal&lt;br /&gt;
	s = gsub( s, &amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
	s = t_trim( s )&lt;br /&gt;
&lt;br /&gt;
	--	Espaces → underscore&lt;br /&gt;
	s = gsub( s, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Suppression caractères cassants (HTML / wiki)&lt;br /&gt;
	s = gsub( s, &#039;[%[%]{}|#&amp;lt;&amp;gt;&amp;quot;]&#039;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	wrappers VariablesLua (no-op si extension absente)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function vset(name, val)&lt;br /&gt;
	if V and type(V.vardefine) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		pcall(V.vardefine, name, val ~= nil and tostring(val) or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function vget(name)&lt;br /&gt;
	if V and type(V.var) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		local ok, res = pcall(V.var, name)&lt;br /&gt;
		if ok then return res end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectLang(args)&lt;br /&gt;
	return WD_I18N.getLangFromArgs(args or {})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	I18N : cache local (par rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local I18N_DOMAIN = {}&lt;br /&gt;
local I18N_MSG = {}&lt;br /&gt;
&lt;br /&gt;
local function L(lang, section, key, ...)&lt;br /&gt;
	lang = tostring(lang or &amp;quot;fr&amp;quot;)&lt;br /&gt;
	section = tostring(section or &amp;quot;&amp;quot;)&lt;br /&gt;
	key = tostring(key or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local domain = I18N_DOMAIN[section]&lt;br /&gt;
	if not domain then&lt;br /&gt;
		domain = &amp;quot;Argument.&amp;quot; .. section&lt;br /&gt;
		I18N_DOMAIN[section] = domain&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if select(&amp;quot;#&amp;quot;, ...) == 0 then&lt;br /&gt;
		local k = lang .. &amp;quot;\n&amp;quot; .. domain .. &amp;quot;\n&amp;quot; .. key&lt;br /&gt;
		local hit = I18N_MSG[k]&lt;br /&gt;
		if hit ~= nil then&lt;br /&gt;
			return hit&lt;br /&gt;
		end&lt;br /&gt;
		local text = WD_I18N.msg(domain, lang, key)&lt;br /&gt;
		I18N_MSG[k] = text&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return WD_I18N.msg(domain, lang, key, ...)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Caches (bornage mémoire) — Patch #6&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function cacheMake(max)&lt;br /&gt;
	return { data = {}, order = {}, max = max or 200 }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cacheGet(C, k)&lt;br /&gt;
	return C.data[k]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cachePut(C, k, v)&lt;br /&gt;
	if C.data[k] ~= nil then&lt;br /&gt;
		C.data[k] = v&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	C.data[k] = v&lt;br /&gt;
	table_insert(C.order, k)&lt;br /&gt;
	if #C.order &amp;gt; (C.max or 200) then&lt;br /&gt;
		local old = table_remove(C.order, 1)&lt;br /&gt;
		if old ~= nil then&lt;br /&gt;
			C.data[old] = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Mémoïsation expandTemplate (bandeaux, schemas, etc.)&lt;br /&gt;
local EXPAND_CACHE = cacheMake(250)&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Tooltip normalize (apostrophes / guillemets)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function normalizeTooltipText(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
	s = s:gsub(&amp;quot;&#039;&amp;quot;, &amp;quot;’&amp;quot;)&lt;br /&gt;
	s = s:gsub(&#039;&amp;quot;&#039;, &amp;quot;“&amp;quot;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local canonicalTitle&lt;br /&gt;
&lt;br /&gt;
local function fastParamsKey(params)&lt;br /&gt;
	if type(params) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for _ in pairs(params) do&lt;br /&gt;
		n = n + 1&lt;br /&gt;
		if n &amp;gt; 2 then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n == 1 and params[1] ~= nil then&lt;br /&gt;
		return &amp;quot;1=&amp;quot; .. tostring(params[1])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		local k1, k2 = nil, nil&lt;br /&gt;
		for k in pairs(params) do&lt;br /&gt;
			if not k1 then&lt;br /&gt;
				k1 = k&lt;br /&gt;
			else&lt;br /&gt;
				k2 = k&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local a, b = tostring(k1), tostring(k2)&lt;br /&gt;
		if a &amp;gt; b then&lt;br /&gt;
			k1, k2 = k2, k1&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return tostring(k1) .. &amp;quot;=&amp;quot; .. tostring(params[k1]) .. &amp;quot;&amp;amp;&amp;quot; .. tostring(k2) .. &amp;quot;=&amp;quot; .. tostring(params[k2])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function safeJsonEncode(obj)&lt;br /&gt;
	local ok, s = pcall(t_jsonEncode, obj)&lt;br /&gt;
	if ok and type(s) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(obj or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function expandCached(frame, title, params)&lt;br /&gt;
	local pk = fastParamsKey(params)&lt;br /&gt;
	local k&lt;br /&gt;
	if pk then&lt;br /&gt;
		k = tostring(title or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot; .. pk&lt;br /&gt;
	else&lt;br /&gt;
		k = tostring(title or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot; .. safeJsonEncode(params or {})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hit = cacheGet(EXPAND_CACHE, k)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return hit&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ok, res = pcall(function()&lt;br /&gt;
		return frame:expandTemplate{ title = title, args = params or {} }&lt;br /&gt;
	end)&lt;br /&gt;
	local out = ok and (res or &amp;quot;&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	cachePut(EXPAND_CACHE, k, out)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSMW()&lt;br /&gt;
	return type(mw.smw) == &amp;quot;table&amp;quot; and type(mw.smw.set) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function escapeAttr(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	return s&lt;br /&gt;
		:gsub(&amp;quot;[\r\n\t]&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
		:gsub(&amp;quot;&amp;amp;&amp;quot;, &amp;quot;&amp;amp;amp;&amp;quot;)&lt;br /&gt;
		:gsub(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br /&gt;
		:gsub(&amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;gt;&amp;quot;)&lt;br /&gt;
		:gsub(&#039;&amp;quot;&#039;, &amp;quot;&amp;amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame)&lt;br /&gt;
	local A = {}&lt;br /&gt;
&lt;br /&gt;
	local function addArgs(src)&lt;br /&gt;
		if not src then return end&lt;br /&gt;
		for k, v in pairs(src) do&lt;br /&gt;
			if type(v) == &amp;quot;string&amp;quot; and v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				A[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	if parent and parent.args then&lt;br /&gt;
		addArgs(parent.args)&lt;br /&gt;
	end&lt;br /&gt;
	if frame and frame.args then&lt;br /&gt;
		addArgs(frame.args)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return A&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitCSV(s, sep)&lt;br /&gt;
	if not s or s == &amp;quot;&amp;quot; then return {} end&lt;br /&gt;
	sep = sep or &amp;quot;,&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if not s:find(sep, 1, true) then&lt;br /&gt;
		local one = t_trim(s)&lt;br /&gt;
		if one ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			return { one }&lt;br /&gt;
		end&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for part in t_gsplit(s, sep, true) do&lt;br /&gt;
		part = t_trim(part)&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(out, part)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Patch #1 : split littéral multi-caractères (ex: &amp;quot;⟭&amp;quot;)&lt;br /&gt;
local function splitByLiteral(s, sep, maxParts)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	sep = tostring(sep or &amp;quot;&amp;quot;)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return { s }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local n = 0&lt;br /&gt;
	local seplen = #sep&lt;br /&gt;
&lt;br /&gt;
	while true do&lt;br /&gt;
		local j = s:find(sep, i, true)&lt;br /&gt;
		if not j then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			out[n] = s:sub(i)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		n = n + 1&lt;br /&gt;
		out[n] = s:sub(i, j - 1)&lt;br /&gt;
		i = j + seplen&lt;br /&gt;
&lt;br /&gt;
		if maxParts and n &amp;gt;= maxParts then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			out[n] = s:sub(i)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSplit2( s, sep )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	sep = tostring( sep or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local i = s:find( sep, 1, true )&lt;br /&gt;
	if not i then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s:sub( 1, i - 1 ), s:sub( i + #sep )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkExtractItemsFromSerializedData( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Heuristique: si aucun séparateur, pas notre format&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral( raw, ITEM_SEP )&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs( blocks ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local page, rest = wkSplit2( block, FIELD_SEP )&lt;br /&gt;
			local title, warnings = wkSplit2( rest, FIELD_SEP )&lt;br /&gt;
&lt;br /&gt;
			page = t_trim( page )&lt;br /&gt;
&lt;br /&gt;
			if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				title = t_trim( title )&lt;br /&gt;
				warnings = t_trim( warnings )&lt;br /&gt;
&lt;br /&gt;
				if title == &amp;quot;&amp;quot; then&lt;br /&gt;
					title = page&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table_insert( items, {&lt;br /&gt;
					page = page,&lt;br /&gt;
					title = title,&lt;br /&gt;
					warnings = warnings&lt;br /&gt;
				} )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local TITLE_CACHE = cacheMake(600)&lt;br /&gt;
&lt;br /&gt;
local function titleNewCached(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	local hit = cacheGet(TITLE_CACHE, s)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return (hit ~= false) and hit or nil&lt;br /&gt;
	end&lt;br /&gt;
	local t = mw_title_new(s)&lt;br /&gt;
	cachePut(TITLE_CACHE, s, t or false)&lt;br /&gt;
	return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkDbKey(page)&lt;br /&gt;
	page = tostring(page or &amp;quot;&amp;quot;)&lt;br /&gt;
	if page == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not page:find(&amp;quot;:&amp;quot;, 1, true) and not page:find(&amp;quot;[%[%]{}|#&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return page:gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local t = titleNewCached(page)&lt;br /&gt;
	if not t then&lt;br /&gt;
		return page:gsub(&amp;quot;%s&amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return t.prefixedText:gsub(&amp;quot; &amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkEncodePathSegment(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;%%&amp;quot;, &amp;quot;%%25&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;%?&amp;quot;, &amp;quot;%%3F&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;#&amp;quot;, &amp;quot;%%23&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;/&amp;quot;, &amp;quot;%%2F&amp;quot;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataPath(formName, pageTitle)&lt;br /&gt;
	local form = wkEncodePathSegment(wkDbKey(formName))&lt;br /&gt;
	local page = wkEncodePathSegment(wkDbKey(pageTitle))&lt;br /&gt;
	return &amp;quot;Special:AddData/&amp;quot; .. form .. &amp;quot;/&amp;quot; .. page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataLink( formName, pageTitle, linktext, tooltip, opts )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle = tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = ( type( opts ) == &amp;quot;table&amp;quot; ) and opts or {}&lt;br /&gt;
&lt;br /&gt;
	local target = wkAddDataPath( formName, pageTitle )&lt;br /&gt;
&lt;br /&gt;
	local lt = linktext&lt;br /&gt;
	if lt == nil or lt == &amp;quot;&amp;quot; then&lt;br /&gt;
		lt = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local classes = &amp;quot;wk-adddata-link navigation-not-searchable noprint&amp;quot;&lt;br /&gt;
	if opts.editButton == true then&lt;br /&gt;
		classes = classes .. &amp;quot; bouton-modifier&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;%s&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			classes,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			target,&lt;br /&gt;
			lt&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format(&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		classes,&lt;br /&gt;
		target,&lt;br /&gt;
		lt&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataEditLink( formName, pageTitle, linktext, tooltip )&lt;br /&gt;
	return addDataLink( formName, pageTitle, linktext, tooltip, { editButton = true } )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryPath(formName)&lt;br /&gt;
	local form = wkEncodePathSegment(wkDbKey(formName))&lt;br /&gt;
	return &amp;quot;Special:RunQuery/&amp;quot; .. form&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryHtmlTagButton( formName, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	tooltip = normalizeTooltipText( tooltip )&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkRunQueryPath( formName )&lt;br /&gt;
	local href	= tostring( uri_localUrl( title, query ) )&lt;br /&gt;
&lt;br /&gt;
	local content = &amp;quot;＋ &amp;quot; .. label&lt;br /&gt;
&lt;br /&gt;
	return F:preprocess(&lt;br /&gt;
		&#039;&amp;lt;htmltag tagname=&amp;quot;a&amp;quot;&#039;&lt;br /&gt;
		.. &#039; href=&amp;quot;javascript:void(0)&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-href=&amp;quot;&#039; .. escapeAttr( href ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; class=&amp;quot;wk-btn__a wk-js-nav&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. content&lt;br /&gt;
		.. &#039;&amp;lt;/htmltag&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function absUrlFromTitle(title, q)&lt;br /&gt;
	local ok, url = pcall(mw_uri_fullUrl, title, q)&lt;br /&gt;
	if ok and url then&lt;br /&gt;
		return tostring(url)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local server = &amp;quot;&amp;quot;&lt;br /&gt;
	if mw.site and mw.site.server then&lt;br /&gt;
		server = tostring(mw.site.server or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if mw_util_getUrl then&lt;br /&gt;
		return server .. tostring(mw_util_getUrl(title, q))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return server .. tostring(uri_localUrl(title, q))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function runQueryLink(opts)&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local formName	= tostring(opts.form or &amp;quot;&amp;quot;)&lt;br /&gt;
	local fieldName	= tostring(opts.field or &amp;quot;&amp;quot;)&lt;br /&gt;
	local value		= tostring(opts.value or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or fieldName == &amp;quot;&amp;quot; or value == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= tostring(opts._title or &amp;quot;&amp;quot;)&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		title = wkRunQueryPath(formName)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q		= {}&lt;br /&gt;
	local qkey	= tostring(opts._qkey or &amp;quot;&amp;quot;)&lt;br /&gt;
	if qkey == &amp;quot;&amp;quot; then&lt;br /&gt;
		qkey = formName .. &amp;quot;[&amp;quot; .. fieldName .. &amp;quot;]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	q[qkey] = value&lt;br /&gt;
&lt;br /&gt;
	local extra = opts.extra&lt;br /&gt;
	if type(extra) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for k, v in pairs(extra) do&lt;br /&gt;
			local kk = tostring(k or &amp;quot;&amp;quot;)&lt;br /&gt;
			if kk ~= &amp;quot;&amp;quot; and v ~= nil then&lt;br /&gt;
				local vv = tostring(v)&lt;br /&gt;
				if vv ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					if kk:find(&amp;quot;%[&amp;quot;, 1, true) then&lt;br /&gt;
						q[kk] = vv&lt;br /&gt;
					else&lt;br /&gt;
						q[formName .. &amp;quot;[&amp;quot; .. kk .. &amp;quot;]&amp;quot;] = vv&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	q[&amp;quot;_run&amp;quot;] = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local url	= absUrlFromTitle(title, q)&lt;br /&gt;
	local label	= tostring(opts.label or value)&lt;br /&gt;
	local tt		= normalizeTooltipText(tostring(opts.tooltip or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	local link = &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link masquer-externe&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr(tt),&lt;br /&gt;
			link&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string.format(&#039;&amp;lt;span class=&amp;quot;wk-adddata-link&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;, link)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function listBreaker()&lt;br /&gt;
	return &amp;quot;\n\n&amp;lt;!--__WD_LIST_BREAK__--&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : props refs (i18n via PF) — comme Debate&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function pfProp( PF, k, fallback )&lt;br /&gt;
	local v = PF and PF[ k ] or &amp;quot;&amp;quot;&lt;br /&gt;
	v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v&lt;br /&gt;
	end&lt;br /&gt;
	return fallback or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwPropRef( PF, key )&lt;br /&gt;
	--	Utilise PF.prop_* (i18n), fallback sur tes noms existants&lt;br /&gt;
	if key == &amp;quot;authors&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_author&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;article_name&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_article_name&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;work_name&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_work_name&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;publishing_house&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_publishing_house&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if key == &amp;quot;place_of_publication&amp;quot; then&lt;br /&gt;
		return pfProp( PF, &amp;quot;prop_place_of_publication&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW batch : queue + flush unique&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAdd(pending, key, val, multi)&lt;br /&gt;
	if not pending or not key or key == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type(val) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		val = t_trim(val)&lt;br /&gt;
		if val == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cur = pending[key]&lt;br /&gt;
&lt;br /&gt;
	if multi then&lt;br /&gt;
		if cur == nil then&lt;br /&gt;
			pending[key] = (type(val) == &amp;quot;table&amp;quot;) and val or { val }&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type(cur) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
			cur = { cur }&lt;br /&gt;
			pending[key] = cur&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type(val) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, x in ipairs(val) do&lt;br /&gt;
				if x ~= nil then&lt;br /&gt;
					cur[#cur + 1] = x&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur[#cur + 1] = val&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pending[key] = val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Minibandeaux (summary-warnings) — rendu natif (sans modèle)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local JUSTIFICATION_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;justifications_to_reorganize&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local OBJECTION_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;objections_to_reorganize&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local QUOTE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;quote_too_short&amp;quot;,&lt;br /&gt;
	&amp;quot;quote_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;quote_ref_incomplete&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local REFERENCE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;reference_quality_insufficient&amp;quot;,&lt;br /&gt;
	&amp;quot;reference_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;dead_link&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local SUMMARY_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;summary_disadvantageous&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_to_be_written&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_to_separate&amp;quot;,&lt;br /&gt;
	&amp;quot;summary_style_to_review&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local SUMMARY_WARNING_ALIASES = nil&lt;br /&gt;
&lt;br /&gt;
local DISPLAYED_TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;displayed_title_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_disadvantageous&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function subMsg( lang, key, ... )&lt;br /&gt;
	return L( lang, &amp;quot;subsection_banners&amp;quot;, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryAliases( lang )&lt;br /&gt;
	local a = {}&lt;br /&gt;
&lt;br /&gt;
	for _, key in ipairs( SUMMARY_WARNING_BANNER_KEYS ) do&lt;br /&gt;
		local alias = subMsg( lang, key .. &amp;quot;_alias&amp;quot; )&lt;br /&gt;
		alias = t_trim( tostring( alias or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if alias ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			for _, one in ipairs( splitCSV( alias, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				one = t_trim( tostring( one or &amp;quot;&amp;quot; ) )&lt;br /&gt;
				if one ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					a[ one ] = key&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return a&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Résolveur générique : label -&amp;gt; key, alias -&amp;gt; key, ou key directe si autorisée&lt;br /&gt;
local function resolveKeyFromLookup(raw, lookup, allowedKeys, aliases)&lt;br /&gt;
	raw = t_trim(tostring(raw or &amp;quot;&amp;quot;))&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 1) Match par label i18n&lt;br /&gt;
	local k = (lookup and lookup[raw]) or &amp;quot;&amp;quot;&lt;br /&gt;
	if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 2) Match par alias (optionnel)&lt;br /&gt;
	if aliases and aliases[raw] then&lt;br /&gt;
		return aliases[raw]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- 3) Match direct si l&#039;utilisateur a mis la key brute&lt;br /&gt;
	if allowedKeys then&lt;br /&gt;
		for _, kk in ipairs(allowedKeys) do&lt;br /&gt;
			if raw == kk then&lt;br /&gt;
				return kk&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubsectionBanner( pv, lang, key, opts, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local isReorg		= opts.reorg == true&lt;br /&gt;
	local icon			= tostring( opts.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local linkHtml		= &amp;quot;&amp;quot;&lt;br /&gt;
	local title			= &amp;quot;&amp;quot;&lt;br /&gt;
	local text			= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	--	Lien de réorganisation (optionnel) — AddData (même source que le H2)&lt;br /&gt;
	if isReorg then&lt;br /&gt;
		local formName	= tostring( opts.form or &amp;quot;&amp;quot; )&lt;br /&gt;
		local tooltip	= tostring( opts.tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
		local linkLabel	= tostring( opts.link_label or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		if linkLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
			linkLabel = L( lang, &amp;quot;text&amp;quot;, &amp;quot;reorganize_link_label&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if formName ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linkHtml = addDataLink( formName, pv.rawTitle, linkLabel, tooltip )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Titre/texte (mêmes messages i18n que tes fonctions actuelles)&lt;br /&gt;
	if isReorg and linkHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot; )&lt;br /&gt;
		title = t_trim( tostring( title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			title = title .. &amp;quot;&amp;amp;nbsp;&amp;quot; .. linkHtml&lt;br /&gt;
		else&lt;br /&gt;
			title = linkHtml&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	text = subMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-avertissement wk-icon-before wk-icon-sensible&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;smw-highlighter smwttinline wk-icon-before wk-icon-help mw-no-invert&amp;quot; data-state=&amp;quot;inline&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;smwttcontent&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local cat = subMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseBiblioMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find(FIELD_SEP, 1, true) and not raw:find(ITEM_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral(raw, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 12 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				authors		= f[1],&lt;br /&gt;
				article		= f[2],&lt;br /&gt;
				work		= f[3],&lt;br /&gt;
				volume		= f[4],&lt;br /&gt;
				number		= f[5],&lt;br /&gt;
				location	= f[6],&lt;br /&gt;
				page		= f[7],&lt;br /&gt;
				publisher	= f[8],&lt;br /&gt;
				place		= f[9],&lt;br /&gt;
				date		= f[10],&lt;br /&gt;
				link		= f[11],&lt;br /&gt;
				warnings	= f[12]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWeblioMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find(FIELD_SEP, 1, true) and not raw:find(ITEM_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral(raw, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 6 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				page		= f[1],&lt;br /&gt;
				site		= f[2],&lt;br /&gt;
				link		= f[3],&lt;br /&gt;
				authors		= f[4],&lt;br /&gt;
				date		= f[5],&lt;br /&gt;
				warnings	= f[6]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseVideoMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find(FIELD_SEP, 1, true) and not raw:find(ITEM_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks = splitByLiteral(raw, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 4 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				title		= f[1],&lt;br /&gt;
				link		= f[2],&lt;br /&gt;
				authors		= f[3],&lt;br /&gt;
				warnings	= f[4]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderReferenceItemBanners(itemWarnings, pv, lang, cats, out)&lt;br /&gt;
	local warnsRef = t_trim(tostring(itemWarnings or &amp;quot;&amp;quot;))&lt;br /&gt;
	if warnsRef == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup(lang, REFERENCE_WARNING_BANNER_KEYS)&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs(splitCSV(warnsRef, &amp;quot;,&amp;quot;)) do&lt;br /&gt;
		local key = resolveKeyFromLookup(x, lookup, REFERENCE_WARNING_BANNER_KEYS)&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(out, renderSubsectionBanner(pv, lang, key, nil, cats))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneBiblioLi( item, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		authors = PF.unknown_author&lt;br /&gt;
	end&lt;br /&gt;
	out[ #out + 1 ] = authors&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local k = smwPending and smwPropRef( PF, &amp;quot;authors&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			smwQueueAdd( smwPending, k, authors, true )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local article = t_trim( item.article or &amp;quot;&amp;quot; )&lt;br /&gt;
	local work = t_trim( item.work or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		if smwPending then&lt;br /&gt;
			local ka = smwPropRef( PF, &amp;quot;article_name&amp;quot; )&lt;br /&gt;
			if ka ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, ka, article, true )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local kw = smwPropRef( PF, &amp;quot;work_name&amp;quot; )&lt;br /&gt;
			if kw ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, kw, work, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « [&amp;quot; .. link .. &amp;quot; &amp;quot; .. article .. &amp;quot;] »&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « &amp;quot; .. article .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local volume = t_trim( item.volume or &amp;quot;&amp;quot; )&lt;br /&gt;
	if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. volume&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local number = t_trim( item.number or &amp;quot;&amp;quot; )&lt;br /&gt;
	if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, n°&amp;quot; .. number&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local location = t_trim( item.location or &amp;quot;&amp;quot; )&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. location&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local page = t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, p.&amp;quot; .. page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local publisher = t_trim( item.publisher or &amp;quot;&amp;quot; )&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. publisher&lt;br /&gt;
		do&lt;br /&gt;
			local kp = smwPending and smwPropRef( PF, &amp;quot;publishing_house&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
			if kp ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, kp, publisher, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local place = t_trim( item.place or &amp;quot;&amp;quot; )&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. place&lt;br /&gt;
		do&lt;br /&gt;
			local kp = smwPending and smwPropRef( PF, &amp;quot;place_of_publication&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
			if kp ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, kp, place, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local date = t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners(item.warnings, pv, lang, cats, out)&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneWeblioLi( item, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local page		= t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local site		= t_trim( item.site or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link		= t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local date		= t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors	= t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local k = smwPending and smwPropRef( PF, &amp;quot;authors&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; and authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			smwQueueAdd( smwPending, k, authors, true )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local label = &amp;quot;&amp;quot;&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = page&lt;br /&gt;
		elseif site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = site&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; and label ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = (page ~= &amp;quot;&amp;quot; and page) or site&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; and page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. site .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners(item.warnings, pv, lang, cats, out)&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneVideoLi( item, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local title = t_trim( item.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local k = smwPending and smwPropRef( PF, &amp;quot;authors&amp;quot; ) or &amp;quot;&amp;quot;&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; and authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			smwQueueAdd( smwPending, k, authors, true )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if link ~= &amp;quot;&amp;quot; and title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. title .. &amp;quot;]&amp;quot;&lt;br /&gt;
	elseif title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners(item.warnings, pv, lang, cats, out)&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderReferencesFromRaw( rawB, rawW, rawV, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	local b, w, v = {}, {}, {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkParseBiblioMarkers( rawB ) ) do&lt;br /&gt;
		b[ #b + 1 ] = wkRenderOneBiblioLi( it, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	end&lt;br /&gt;
	for _, it in ipairs( wkParseWeblioMarkers( rawW ) ) do&lt;br /&gt;
		w[ #w + 1 ] = wkRenderOneWeblioLi( it, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	end&lt;br /&gt;
	for _, it in ipairs( wkParseVideoMarkers( rawV ) ) do&lt;br /&gt;
		v[ #v + 1 ] = wkRenderOneVideoLi( it, pv, lang, cats, PF, smwPending, args )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #b == 0 and #w == 0 and #v == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = table_concat( {&lt;br /&gt;
		table_concat( b, &amp;quot;\n&amp;quot; ),&lt;br /&gt;
		table_concat( w, &amp;quot;\n&amp;quot; ),&lt;br /&gt;
		table_concat( v, &amp;quot;\n&amp;quot; )&lt;br /&gt;
	}, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	out = t_trim( out )&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	htmltag : générateur (mode qui marche)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function tagHtmlTag(tagName, content, attrs)&lt;br /&gt;
	local src = &amp;quot;{{#tag:htmltag|&amp;quot; .. (content or &amp;quot;&amp;quot;) .. &amp;quot;|tagname=&amp;quot; .. tostring(tagName)&lt;br /&gt;
&lt;br /&gt;
	if attrs then&lt;br /&gt;
		local keys = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
		for k in pairs(attrs) do&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			keys[n] = k&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			table_sort(keys)&lt;br /&gt;
			for i = 1, n do&lt;br /&gt;
				local k = keys[i]&lt;br /&gt;
				src = src .. &amp;quot;|&amp;quot; .. tostring(k) .. &amp;quot;=&amp;quot; .. tostring(attrs[k])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	src = src .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	return F:preprocess(src)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : cache fin (par rendu) — bornés (Patch #6)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SMW_ASK_CACHE = cacheMake(250)&lt;br /&gt;
local SMW_TITLES_CACHE = cacheMake(250)&lt;br /&gt;
&lt;br /&gt;
--	Patch #2 : clé cache non-collidable (length-prefix)&lt;br /&gt;
local function smwKeyFromArray(q)&lt;br /&gt;
	if type(q) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		local s = tostring(q or &amp;quot;&amp;quot;)&lt;br /&gt;
		return tostring(#s) .. &amp;quot;:&amp;quot; .. s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local idx = {}&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for k in pairs(q) do&lt;br /&gt;
		if type(k) == &amp;quot;number&amp;quot; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			idx[n] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_sort(idx)&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	for i = 1, n do&lt;br /&gt;
		local v = tostring(q[idx[i]] or &amp;quot;&amp;quot;)&lt;br /&gt;
		parts[i] = tostring(#v) .. &amp;quot;:&amp;quot; .. v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(parts, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwSetSafe(props)&lt;br /&gt;
	if not mw.smw or type(mw.smw.set) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall(mw.smw.set, props)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Cache négatif (sentinelle false)&lt;br /&gt;
local function smwAskSafe(q)&lt;br /&gt;
	if not hasSMW() or type(mw.smw.ask) ~= &amp;quot;function&amp;quot; then return nil end&lt;br /&gt;
&lt;br /&gt;
	local k = smwKeyFromArray(q)&lt;br /&gt;
	local hit = cacheGet(SMW_ASK_CACHE, k)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return (hit ~= false) and hit or nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ok, res = pcall(function() return mw.smw.ask(q) end)&lt;br /&gt;
	if ok then&lt;br /&gt;
		cachePut(SMW_ASK_CACHE, k, res)&lt;br /&gt;
		return res&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cachePut(SMW_ASK_CACHE, k, false)&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bloc d’en-tête / variables de page (cache key-safe)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function computePageVars()&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	local rawTitle = title.prefixedText&lt;br /&gt;
	local encoded = mw_uri_encode(rawTitle, &amp;quot;WIKI&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local pageUrl = &amp;quot;&amp;quot;&lt;br /&gt;
	do&lt;br /&gt;
		local ok, u = pcall(mw_uri_fullUrl, title.prefixedText)&lt;br /&gt;
		pageUrl = (ok and u) and tostring(u) or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pageId = tostring(title.id or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		title = title,&lt;br /&gt;
		rawTitle = rawTitle,&lt;br /&gt;
		encoded = encoded,&lt;br /&gt;
		pageUrl = pageUrl,&lt;br /&gt;
		pageId = pageId&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPageCreation(pv, args)&lt;br /&gt;
	local v = args and args[&amp;quot;creation-date&amp;quot;]&lt;br /&gt;
	v = (type(v) == &amp;quot;string&amp;quot;) and t_trim(v) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Cache SMW (parents) + cartes pré-rendues&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeSMWCache()&lt;br /&gt;
	return {&lt;br /&gt;
		debatsPour = nil,&lt;br /&gt;
		debatsContre = nil,&lt;br /&gt;
		justifs = nil,&lt;br /&gt;
		objs = nil,&lt;br /&gt;
&lt;br /&gt;
		debatsTousFinal = nil,&lt;br /&gt;
&lt;br /&gt;
		debatCardsTous = nil,&lt;br /&gt;
		debatCardsPour = nil,&lt;br /&gt;
		debatCardsContre = nil,&lt;br /&gt;
		argCardsJustifs = nil,&lt;br /&gt;
		argCardsObjs = nil,&lt;br /&gt;
&lt;br /&gt;
		breadcrumbChainsFinal = nil,&lt;br /&gt;
		parentDebatesFinal = nil&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Titre : avertissements + catégories (legacy)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderTitleWarnings(pv, cats, lang)&lt;br /&gt;
	local title = pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local n = 0&lt;br /&gt;
	for w in t_gsplit(title, &amp;quot;%s+&amp;quot;) do&lt;br /&gt;
		w = t_trim(w)&lt;br /&gt;
		if w ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			if n &amp;gt;= 3 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if n &amp;gt; 0 and n &amp;lt; 3 then&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;warningbox cdx-message cdx-message--block cdx-message--warning navigation-not-searchable&amp;quot;&amp;gt;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
			.. L(lang, &amp;quot;text&amp;quot;, &amp;quot;title_too_short_msg&amp;quot;)&lt;br /&gt;
			.. &#039; [[Special:MovePage/&#039; .. pv.encoded .. &#039;|&#039; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;rename_page_label&amp;quot;) .. &#039;]]&#039;&lt;br /&gt;
			.. &#039; &#039; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;if_needed_msg&amp;quot;)&lt;br /&gt;
			.. &#039;\&#039;\&#039;\&#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;title_very_short&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if title:sub(-1) == &amp;quot;.&amp;quot; and title:sub(-4) ~= &amp;quot;etc.&amp;quot; then&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;warningbox cdx-message cdx-message--block cdx-message--warning navigation-not-searchable&amp;quot;&amp;gt;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
			.. L(lang, &amp;quot;text&amp;quot;, &amp;quot;title_ends_with_dot_msg&amp;quot;)&lt;br /&gt;
			.. &#039; [[Special:MovePage/&#039; .. pv.encoded .. &#039;|&#039; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;rename_page_label&amp;quot;) .. &#039;]]&#039;&lt;br /&gt;
			.. &#039;\&#039;\&#039;\&#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;title_ends_with_dot&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if lang == &amp;quot;fr&amp;quot; then&lt;br /&gt;
		local prefix3 = title:sub(1, 3)&lt;br /&gt;
		local prefix4 = title:sub(1, 4)&lt;br /&gt;
		local prefix5 = title:sub(1, 5)&lt;br /&gt;
		local prefix6 = title:sub(1, 6)&lt;br /&gt;
		local prefix10 = title:sub(1, 10)&lt;br /&gt;
		local prefix13 = title:sub(1, 13)&lt;br /&gt;
&lt;br /&gt;
		if prefix3 == &amp;quot;Ça&amp;quot; then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:Titres d&#039;arguments commençant par \&amp;quot;Cela\&amp;quot;]]&amp;quot;)&lt;br /&gt;
		elseif prefix3 == &amp;quot;Sa&amp;quot; then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:Titres d&#039;arguments commençant par \&amp;quot;Sa\&amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map4 = {&lt;br /&gt;
			[&amp;quot;Ces&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Ces\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Cet&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Cet\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Ils&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Ils\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Ses&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Ses\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Son&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Son\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map4[prefix4] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map4[prefix4] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map5 = {&lt;br /&gt;
			[&amp;quot;Cela&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Cela\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Elle&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Elle\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Leur&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Leur\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Leurs&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Leurs\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Non,&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Non\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Nous&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Nous\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Oui,&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Oui\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map5[prefix5] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map5[prefix5] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map6 = {&lt;br /&gt;
			[&amp;quot;Cette&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Cette\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Elles&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Elles\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map6[prefix6] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map6[prefix6] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local map10 = {&lt;br /&gt;
			[&amp;quot;C&#039;est faux&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;C&#039;est faux\&amp;quot;&amp;quot;,&lt;br /&gt;
			[&amp;quot;Hors-sujet&amp;quot;] = &amp;quot;Titres d&#039;arguments commençant par \&amp;quot;Hors-sujet\&amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
		if map10[prefix10] then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. map10[prefix10] .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if prefix13 == &amp;quot;Au contraire,&amp;quot; then&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:Titres d&#039;arguments commençant par \&amp;quot;Au contraire\&amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : helpers (avec cache fin)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function uniqList(list)&lt;br /&gt;
	local out, seen = {}, {}&lt;br /&gt;
	for _, x in ipairs(list or {}) do&lt;br /&gt;
		x = t_trim(tostring(x or &amp;quot;&amp;quot;))&lt;br /&gt;
		if x ~= &amp;quot;&amp;quot; and not seen[x] then&lt;br /&gt;
			seen[x] = true&lt;br /&gt;
			table_insert(out, x)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwAskTitles(conditions, limit)&lt;br /&gt;
	limit = tonumber(limit) or 200&lt;br /&gt;
&lt;br /&gt;
	local q = {}&lt;br /&gt;
	for _, c in ipairs(conditions or {}) do&lt;br /&gt;
		table_insert(q, c)&lt;br /&gt;
	end&lt;br /&gt;
	table_insert(q, &amp;quot;limit=&amp;quot; .. tostring(limit))&lt;br /&gt;
	table_insert(q, &amp;quot;link=none&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local ck = &amp;quot;TITLES\n&amp;quot; .. smwKeyFromArray(q)&lt;br /&gt;
	local hit = cacheGet(SMW_TITLES_CACHE, ck)&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return hit&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(q)&lt;br /&gt;
	if type(res) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
		cachePut(SMW_TITLES_CACHE, ck, {})&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out, seen = {}, {}&lt;br /&gt;
	for _, row in ipairs(res) do&lt;br /&gt;
		local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
		if type(ft) == &amp;quot;string&amp;quot; and ft ~= &amp;quot;&amp;quot; and not seen[ft] then&lt;br /&gt;
			seen[ft] = true&lt;br /&gt;
			table_insert(out, ft)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cachePut(SMW_TITLES_CACHE, ck, out)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	(Parents) : ask unifié + robuste + fallback&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function normTitle(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;_&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
	return t_trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
canonicalTitle = function(s)&lt;br /&gt;
	s = t_trim(tostring(s or &amp;quot;&amp;quot;))&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
	s = s:gsub(&amp;quot;^:%s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	s = s:gsub(&amp;quot;^%[%[%s*&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;%s*%]%]$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	s = (s:match(&amp;quot;^([^%]|]+)%|&amp;quot;) or s)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
&lt;br /&gt;
	local t = titleNewCached(s)&lt;br /&gt;
	return t and t.prefixedText or s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	Patch #5 : sécuriser les titres utilisés dans les requêtes SMW&lt;br /&gt;
local function smwSafeTitle(s)&lt;br /&gt;
	s = canonicalTitle(s)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	s = s:gsub(&amp;quot;#.*$&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if s:find(&amp;quot;[%[%]{}|&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function containsTitle(val, target)&lt;br /&gt;
	target = normTitle(target)&lt;br /&gt;
	if target == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function checkOne(x)&lt;br /&gt;
		if x == nil then return false end&lt;br /&gt;
&lt;br /&gt;
		if type(x) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			return normTitle(x) == target&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			local ft = x.fulltext or x.page or x.name or x.title&lt;br /&gt;
			if type(ft) == &amp;quot;string&amp;quot; and normTitle(ft) == target then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
			for _, y in ipairs(x) do&lt;br /&gt;
				if checkOne(y) then&lt;br /&gt;
					return true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return checkOne(val)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureDebateParents(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.debatsPour ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argTitle = smwSafeTitle(pv.rawTitle)&lt;br /&gt;
&lt;br /&gt;
	local propPro = tostring(PF.prop_arg_pro or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propCon = tostring(PF.prop_arg_con or &amp;quot;&amp;quot;)&lt;br /&gt;
	if propPro == &amp;quot;&amp;quot; or propCon == &amp;quot;&amp;quot; or argTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		cache.debatsPour = {}&lt;br /&gt;
		cache.debatsContre = {}&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q = {&lt;br /&gt;
		&amp;quot;([[&amp;quot; .. propPro .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] OR [[&amp;quot; .. propCon .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] )&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propPro .. &amp;quot;=pro&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propCon .. &amp;quot;=con&amp;quot;,&lt;br /&gt;
		&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
		&amp;quot;link=none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(q)&lt;br /&gt;
	local debatsPour, debatsContre = {}, {}&lt;br /&gt;
	local seenP, seenC = {}, {}&lt;br /&gt;
&lt;br /&gt;
	if type(res) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for _, row in ipairs(res) do&lt;br /&gt;
			local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
			if type(ft) == &amp;quot;string&amp;quot; and ft ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				if containsTitle(row.pro, argTitle) and not seenP[ft] then&lt;br /&gt;
					seenP[ft] = true&lt;br /&gt;
					table_insert(debatsPour, ft)&lt;br /&gt;
				end&lt;br /&gt;
				if containsTitle(row.con, argTitle) and not seenC[ft] then&lt;br /&gt;
					seenC[ft] = true&lt;br /&gt;
					table_insert(debatsContre, ft)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #debatsPour == 0 and #debatsContre == 0 then&lt;br /&gt;
		debatsPour = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propPro .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
		debatsContre = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propCon .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.debatsPour = debatsPour&lt;br /&gt;
	cache.debatsContre = debatsContre&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.justifs ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argTitle = smwSafeTitle(pv.rawTitle)&lt;br /&gt;
&lt;br /&gt;
	local propJustif = tostring(PF.prop_justif or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propObj = tostring(PF.prop_obj or &amp;quot;&amp;quot;)&lt;br /&gt;
	if propJustif == &amp;quot;&amp;quot; or propObj == &amp;quot;&amp;quot; or argTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		cache.justifs = {}&lt;br /&gt;
		cache.objs = {}&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q = {&lt;br /&gt;
		&amp;quot;([[&amp;quot; .. propJustif .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] OR [[&amp;quot; .. propObj .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]] )&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propJustif .. &amp;quot;=justif&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propObj .. &amp;quot;=obj&amp;quot;,&lt;br /&gt;
		&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
		&amp;quot;link=none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(q)&lt;br /&gt;
	local justifs, objs = {}, {}&lt;br /&gt;
	local seenJ, seenO = {}, {}&lt;br /&gt;
&lt;br /&gt;
	if type(res) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for _, row in ipairs(res) do&lt;br /&gt;
			local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
			if type(ft) == &amp;quot;string&amp;quot; and ft ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				if containsTitle(row.justif, argTitle) and not seenJ[ft] then&lt;br /&gt;
					seenJ[ft] = true&lt;br /&gt;
					table_insert(justifs, ft)&lt;br /&gt;
				end&lt;br /&gt;
				if containsTitle(row.obj, argTitle) and not seenO[ft] then&lt;br /&gt;
					seenO[ft] = true&lt;br /&gt;
					table_insert(objs, ft)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #justifs == 0 and #objs == 0 then&lt;br /&gt;
		justifs = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propJustif .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
		objs = uniqList(smwAskTitles({ &amp;quot;[[&amp;quot; .. propObj .. &amp;quot;::&amp;quot; .. argTitle .. &amp;quot;]]&amp;quot; }, 200))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.justifs = justifs&lt;br /&gt;
	cache.objs = objs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Fil d’Ariane : longueur (byte-safe, sans Unicode libs)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function breadcrumbLenByteSafe(ch)&lt;br /&gt;
	if type(ch) ~= &amp;quot;string&amp;quot; or ch == &amp;quot;&amp;quot; then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sep = &amp;quot;⟭&amp;quot;&lt;br /&gt;
	local seplen = 3&lt;br /&gt;
	local n = 0&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local Ls = #ch&lt;br /&gt;
&lt;br /&gt;
	local function trimAscii(s)&lt;br /&gt;
		return (tostring(s or &amp;quot;&amp;quot;):match(&amp;quot;^%s*(.-)%s*$&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	while i &amp;lt;= Ls + 1 do&lt;br /&gt;
		local j = ch:find(sep, i, true)&lt;br /&gt;
		local part&lt;br /&gt;
		if j then&lt;br /&gt;
			part = ch:sub(i, j - 1)&lt;br /&gt;
			i = j + seplen&lt;br /&gt;
		else&lt;br /&gt;
			part = ch:sub(i)&lt;br /&gt;
			i = Ls + 2&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if trimAscii(part) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			if n &amp;gt;= 6 then&lt;br /&gt;
				return n&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Débats parents : calcul final&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function ensureDebateParentsFinal(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.debatsTousFinal ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local final = {}&lt;br /&gt;
&lt;br /&gt;
	ensureDebateParents(pv, cache, PF)&lt;br /&gt;
	for _, d in ipairs(cache.debatsPour or {}) do&lt;br /&gt;
		table_insert(final, canonicalTitle(d))&lt;br /&gt;
	end&lt;br /&gt;
	for _, d in ipairs(cache.debatsContre or {}) do&lt;br /&gt;
		table_insert(final, canonicalTitle(d))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasSMW() then&lt;br /&gt;
		ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
		local propBreadcrumb   = tostring(PF.prop_breadcrumb or &amp;quot;&amp;quot;)&lt;br /&gt;
		local propParentDebate = tostring(PF.prop_parent_debate or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		if propBreadcrumb ~= &amp;quot;&amp;quot; and propParentDebate ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local parents = {}&lt;br /&gt;
			for _, a in ipairs(cache.justifs or {}) do table_insert(parents, canonicalTitle(a)) end&lt;br /&gt;
			for _, a in ipairs(cache.objs or {}) do table_insert(parents, canonicalTitle(a)) end&lt;br /&gt;
			parents = uniqList(parents)&lt;br /&gt;
&lt;br /&gt;
			if #parents &amp;gt; 0 then&lt;br /&gt;
				local conds = {}&lt;br /&gt;
				for _, t in ipairs(parents) do&lt;br /&gt;
					local safe = smwSafeTitle(t)&lt;br /&gt;
					if safe ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						table_insert(conds, &amp;quot;[[&amp;quot; .. safe .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if #conds &amp;gt; 0 then&lt;br /&gt;
					local q = {&lt;br /&gt;
						&amp;quot;(&amp;quot; .. table_concat(conds, &amp;quot; OR &amp;quot;) .. &amp;quot;)&amp;quot;,&lt;br /&gt;
						&amp;quot;?&amp;quot; .. propBreadcrumb .. &amp;quot;=chain&amp;quot;,&lt;br /&gt;
						&amp;quot;?&amp;quot; .. propParentDebate .. &amp;quot;=pdeb&amp;quot;,&lt;br /&gt;
						&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
						&amp;quot;link=none&amp;quot;&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					local res = smwAskSafe(q)&lt;br /&gt;
					if type(res) == &amp;quot;table&amp;quot; then&lt;br /&gt;
						for _, row in ipairs(res) do&lt;br /&gt;
							local chain = row.chain&lt;br /&gt;
							local okLen = false&lt;br /&gt;
&lt;br /&gt;
							if type(chain) == &amp;quot;string&amp;quot; then&lt;br /&gt;
								local n = breadcrumbLenByteSafe(chain)&lt;br /&gt;
								okLen = (n &amp;gt; 0 and n &amp;lt; 6)&lt;br /&gt;
							elseif type(chain) == &amp;quot;table&amp;quot; then&lt;br /&gt;
								for _, ch in ipairs(chain) do&lt;br /&gt;
									if type(ch) == &amp;quot;string&amp;quot; then&lt;br /&gt;
										local n = breadcrumbLenByteSafe(ch)&lt;br /&gt;
										if n &amp;gt; 0 and n &amp;lt; 6 then&lt;br /&gt;
											okLen = true&lt;br /&gt;
											break&lt;br /&gt;
										end&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
&lt;br /&gt;
							if okLen then&lt;br /&gt;
								local pdeb = row.pdeb&lt;br /&gt;
								if type(pdeb) == &amp;quot;string&amp;quot; and t_trim(pdeb) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
									table_insert(final, canonicalTitle(pdeb))&lt;br /&gt;
								elseif type(pdeb) == &amp;quot;table&amp;quot; then&lt;br /&gt;
									for _, x in ipairs(pdeb) do&lt;br /&gt;
										if type(x) == &amp;quot;string&amp;quot; and t_trim(x) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
											table_insert(final, canonicalTitle(x))&lt;br /&gt;
										elseif type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
											local ft = x.fulltext or x.page or x[1]&lt;br /&gt;
											if type(ft) == &amp;quot;string&amp;quot; and t_trim(ft) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
												table_insert(final, canonicalTitle(ft))&lt;br /&gt;
											end&lt;br /&gt;
										end&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.debatsTousFinal = uniqList(final)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Parents : cartes (normalisation + rendu 100% Lua) + cache (borné)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function normalizeTitleForCard(s)&lt;br /&gt;
	s = t_trim(tostring(s or &amp;quot;&amp;quot;))&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if s:byte(1) ~= 58 and not s:find(&amp;quot;[%[&amp;lt;&amp;amp;]&amp;quot;) then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	s = s:gsub(&amp;quot;^:%s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local target = s:match(&amp;quot;^%[%[([^%]|]+)%|.-%]%]$&amp;quot;)&lt;br /&gt;
			or s:match(&amp;quot;^%[%[([^%]]+)%]%]$&amp;quot;)&lt;br /&gt;
		if target and target ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			s = target&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	s = t_trim(s):gsub(&amp;quot;^:%s*&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if s:find(&amp;quot;&amp;amp;&amp;quot;, 1, true) then&lt;br /&gt;
		s = s&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;nbsp;&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;#160;&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;amp;&amp;quot;, &amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;quot;&amp;quot;, &#039;&amp;quot;&#039;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;lt;&amp;quot;, &amp;quot;&amp;lt;&amp;quot;)&lt;br /&gt;
			:gsub(&amp;quot;&amp;amp;gt;&amp;quot;, &amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return t_trim(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local URLENC_CACHE = cacheMake(2000)&lt;br /&gt;
&lt;br /&gt;
local function mwUrlEncodePF(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	local hit = cacheGet(URLENC_CACHE, s)&lt;br /&gt;
	if hit ~= nil then return hit end&lt;br /&gt;
&lt;br /&gt;
	local out = mw_uri_encode(s, &amp;quot;QUERY&amp;quot;)&lt;br /&gt;
	out = out:gsub(&amp;quot;%%20&amp;quot;, &amp;quot;+&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	cachePut(URLENC_CACHE, s, out)&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function argumentMapCardLua(targetTitle, currentArgTitle, typeValue)&lt;br /&gt;
	local t = normalizeTitleForCard(targetTitle)&lt;br /&gt;
	local a = normalizeTitleForCard(currentArgTitle)&lt;br /&gt;
&lt;br /&gt;
	local p2 = mwUrlEncodePF(a)&lt;br /&gt;
&lt;br /&gt;
	local dataAttr = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	if typeValue and typeValue ~= &#039;&#039; then&lt;br /&gt;
		dataAttr = &#039; data-&#039; .. typeValue .. &#039;=&amp;quot;&#039; .. escapeAttr( p2 ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;hover-map&amp;quot;&#039;&lt;br /&gt;
		.. dataAttr&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. t .. &#039;]]&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local CARD_CACHE = cacheMake(600)&lt;br /&gt;
&lt;br /&gt;
local function cardRendered(kind, targetTitle, currentArgTitle, typeValue)&lt;br /&gt;
	local key =&lt;br /&gt;
		kind .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. tostring(targetTitle or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. tostring(currentArgTitle or &amp;quot;&amp;quot;) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. tostring(typeValue or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local cached = cacheGet(CARD_CACHE, key)&lt;br /&gt;
	if cached ~= nil then&lt;br /&gt;
		return cached&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rendered = argumentMapCardLua(targetTitle, currentArgTitle, typeValue)&lt;br /&gt;
&lt;br /&gt;
	cachePut(CARD_CACHE, key, rendered)&lt;br /&gt;
	return rendered&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cardDebateRendered(debateTitle, currentArgTitle, typeValue)&lt;br /&gt;
	return cardRendered(&amp;quot;debate&amp;quot;, debateTitle, currentArgTitle, typeValue)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cardArgumentRendered(argTitle, currentArgTitle, typeValue)&lt;br /&gt;
	return cardRendered(&amp;quot;argument&amp;quot;, argTitle, currentArgTitle, typeValue)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureDebateCards(pv, cache, lang, PF)&lt;br /&gt;
	if not cache or cache.debatCardsTous ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argTitle = pv.rawTitle&lt;br /&gt;
&lt;br /&gt;
	local function debateKey(d)&lt;br /&gt;
		return canonicalTitle(d)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local linked = {}&lt;br /&gt;
&lt;br /&gt;
	for _, d in ipairs(cache.debatsPour or {}) do&lt;br /&gt;
		local k = debateKey(d)&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linked[k] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for _, d in ipairs(cache.debatsContre or {}) do&lt;br /&gt;
		local k = debateKey(d)&lt;br /&gt;
		if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linked[k] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cardsTous = {}&lt;br /&gt;
	for _, d in ipairs(cache.parentDebatesFinal or {}) do&lt;br /&gt;
		local k = debateKey(d)&lt;br /&gt;
		local typeDebate = (k ~= &amp;quot;&amp;quot; and linked[k]) and &amp;quot;debate&amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
		table_insert(cardsTous, cardDebateRendered(d, argTitle, typeDebate))&lt;br /&gt;
	end&lt;br /&gt;
	cache.debatCardsTous = cardsTous&lt;br /&gt;
&lt;br /&gt;
	local cardsPour = {}&lt;br /&gt;
	for _, d in ipairs(cache.debatsPour or {}) do&lt;br /&gt;
		table_insert(cardsPour, cardDebateRendered(d, argTitle, &amp;quot;debate&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	cache.debatCardsPour = cardsPour&lt;br /&gt;
&lt;br /&gt;
	local cardsContre = {}&lt;br /&gt;
	for _, d in ipairs(cache.debatsContre or {}) do&lt;br /&gt;
		table_insert(cardsContre, cardDebateRendered(d, argTitle, &amp;quot;debate&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	cache.debatCardsContre = cardsContre&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ensureArgumentCards(pv, cache, PF)&lt;br /&gt;
	if not cache or cache.argCardsJustifs ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
	local argTitle		= pv.rawTitle&lt;br /&gt;
	local typeArgument	= &amp;quot;argument&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local cj = {}&lt;br /&gt;
	for _, a in ipairs(cache.justifs or {}) do&lt;br /&gt;
		table_insert(cj, cardArgumentRendered(a, argTitle, typeArgument))&lt;br /&gt;
	end&lt;br /&gt;
	cache.argCardsJustifs = cj&lt;br /&gt;
&lt;br /&gt;
	local co = {}&lt;br /&gt;
	for _, a in ipairs(cache.objs or {}) do&lt;br /&gt;
		table_insert(co, cardArgumentRendered(a, argTitle, typeArgument))&lt;br /&gt;
	end&lt;br /&gt;
	cache.argCardsObjs = co&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Parents : bandeaux rendus en Lua&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function ensureDot(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then return s end&lt;br /&gt;
	if s:sub(-1) == &amp;quot;.&amp;quot; then return s end&lt;br /&gt;
	return s .. &amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderParentBanner(iconClass, texte)&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-en-tete searchaux wk-icon-before &#039; .. iconClass .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. ensureDot(texte)&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux : rendu natif + résolution via label i18n (aligné Debate)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function bannerMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Argument.banners&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMetaWarningHtml( params )&lt;br /&gt;
	local color	= tostring( params.color or &amp;quot;&amp;quot; )&lt;br /&gt;
	local icon	= tostring( params.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local title	= tostring( params.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local text	= tostring( params.text or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau bandeau-&#039; .. color .. &#039; wk-icon-before &#039; .. icon .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-titre&amp;gt;&#039; .. title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-texte&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannerByKey( pv, lang, key, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local color	= bannerMsg( lang, key .. &amp;quot;_color&amp;quot; )&lt;br /&gt;
	local icon	= bannerMsg( lang, key .. &amp;quot;_icon&amp;quot; )&lt;br /&gt;
	local title	= bannerMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	local text	= bannerMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if color == &amp;quot;&amp;quot; and icon == &amp;quot;&amp;quot; and title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = renderMetaWarningHtml{&lt;br /&gt;
		color	= color,&lt;br /&gt;
		icon	= icon,&lt;br /&gt;
		title	= title,&lt;br /&gt;
		text	= text&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local cat = bannerMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildBannerLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( bannerMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveBannerKeyFromLookup( raw, lookup )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannersFromArgList( rawList, lookup, pv, lang, cats )&lt;br /&gt;
	local html = {}&lt;br /&gt;
	for _, x in ipairs( splitCSV( rawList, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveBannerKeyFromLookup( x, lookup )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( html, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table_concat( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;title_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;title_disadvantageous&amp;quot;,&lt;br /&gt;
	&amp;quot;title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;title_too_long&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;argument_sensitive&amp;quot;,&lt;br /&gt;
	&amp;quot;argument_fanciful&amp;quot;,&lt;br /&gt;
	&amp;quot;argument_potentially_illegal&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Survol des cartes d&#039;arguments&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function joinCards(cards, lang)&lt;br /&gt;
	local n = (cards and #cards) or 0&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if n == 1 then&lt;br /&gt;
		return cards[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local conj = L(lang, &amp;quot;text&amp;quot;, &amp;quot;list_conjunction_text&amp;quot;)&lt;br /&gt;
	conj = tostring(conj or &amp;quot; et &amp;quot;)&lt;br /&gt;
	conj = conj:gsub(&amp;quot;%s+&amp;quot;, &amp;quot;&amp;amp;#32;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		return (cards[1] or &amp;quot;&amp;quot;) .. conj .. (cards[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local head = table_concat(cards, &amp;quot;, &amp;quot;, 1, n - 1)&lt;br /&gt;
	return head .. conj .. (cards[n] or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateParentsBoxes(pv, cats, lang, cache, PF)&lt;br /&gt;
	if not hasSMW() then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	ensureDebateParents(pv, cache, PF)&lt;br /&gt;
	ensureDebateCards(pv, cache, lang, PF)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local nTous = #(cache.parentDebatesFinal or {})&lt;br /&gt;
	if nTous &amp;gt; 0 then&lt;br /&gt;
		local msgKey = (nTous == 1) and &amp;quot;parent_used_in_debate_1&amp;quot; or &amp;quot;parent_used_in_debate_n&amp;quot;&lt;br /&gt;
		local texte = string.format(L(lang, &amp;quot;text&amp;quot;, msgKey), &amp;quot;: &amp;quot; .. joinCards(cache.debatCardsTous, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-parent&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cache.debatsPour and #cache.debatsPour &amp;gt; 0 then&lt;br /&gt;
		local msgKey = (#cache.debatsPour == 1) and &amp;quot;parent_is_pro_in_1&amp;quot; or &amp;quot;parent_is_pro_in_n&amp;quot;&lt;br /&gt;
		local texte = string.format(L(lang, &amp;quot;text&amp;quot;, msgKey), &amp;quot;: &amp;quot; .. joinCards(cache.debatCardsPour, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-pro&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cache.debatsContre and #cache.debatsContre &amp;gt; 0 then&lt;br /&gt;
		local msgKey = (#cache.debatsContre == 1) and &amp;quot;parent_is_con_in_1&amp;quot; or &amp;quot;parent_is_con_in_n&amp;quot;&lt;br /&gt;
		local texte = string.format(L(lang, &amp;quot;text&amp;quot;, msgKey), &amp;quot;: &amp;quot; .. joinCards(cache.debatCardsContre, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-against&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentParentsBoxes(pv, cats, lang, cache, PF)&lt;br /&gt;
	if not hasSMW() then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
	ensureArgumentCards(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	if cache.justifs and #cache.justifs &amp;gt; 0 then&lt;br /&gt;
		local texte = string.format(PF.parent_is_justification_of, &amp;quot;: &amp;quot; .. joinCards(cache.argCardsJustifs, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-pro&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if cache.objs and #cache.objs &amp;gt; 0 then&lt;br /&gt;
		local texte = string.format(PF.parent_is_objection_to, &amp;quot;: &amp;quot; .. joinCards(cache.argCardsObjs, lang))&lt;br /&gt;
		table_insert(out, renderParentBanner(&amp;quot;wk-icon-argument is-against&amp;quot;, texte))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebatesParentsBottom(pv, lang, cache, PF)&lt;br /&gt;
	if not hasSMW() then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
	ensureDebateCards(pv, cache, lang, PF)&lt;br /&gt;
&lt;br /&gt;
	local n = #(cache.parentDebatesFinal or {})&lt;br /&gt;
	if n == 0 then&lt;br /&gt;
		return &#039;&amp;lt;h2 id=&amp;quot;Parent_debates&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = (n == 1) and PF.parent_debates_title_1 or PF.parent_debates_title_n&lt;br /&gt;
&lt;br /&gt;
	local lis = {}&lt;br /&gt;
	for _, card in ipairs(cache.debatCardsTous or {}) do&lt;br /&gt;
		table_insert(lis,&lt;br /&gt;
			&#039;&amp;lt;li style=&amp;quot;position: relative;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. card&lt;br /&gt;
			.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;h2 id=&amp;quot;Parent_debates&amp;quot; class=&amp;quot;wk-icon-before wk-icon-parent&amp;quot;&amp;gt;&#039; .. title .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;ul class=&amp;quot;hover-top navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. table_concat(lis)&lt;br /&gt;
		.. &#039;&amp;lt;/ul&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	INITIALIZATION : bloc (si page “vide” / non initialisée)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local computeArgumentMapsFromData&lt;br /&gt;
&lt;br /&gt;
local function renderInitializationBlock(args, pv, cats, lang, cache, PF)&lt;br /&gt;
&lt;br /&gt;
	local hasParents =&lt;br /&gt;
		(#(cache.parentDebatesFinal or {}) &amp;gt; 0)&lt;br /&gt;
		or (#(cache.justifs or {}) &amp;gt; 0)&lt;br /&gt;
		or (#(cache.objs or {}) &amp;gt; 0)&lt;br /&gt;
&lt;br /&gt;
	local initRaw = args[&amp;quot;initialization&amp;quot;]&lt;br /&gt;
	initRaw = (type(initRaw) == &amp;quot;string&amp;quot;) and t_trim(initRaw) or &amp;quot;&amp;quot;&lt;br /&gt;
	local hasInit = (initRaw ~= &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if hasParents and hasInit then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_initialized .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not hasParents) and hasInit then&lt;br /&gt;
&lt;br /&gt;
		local today = tostring(F:preprocess(&amp;quot;{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}&amp;quot;))&lt;br /&gt;
		local creationDate = t_trim(tostring(args[&amp;quot;creation-date&amp;quot;] or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
		if creationDate == today then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_uninitialized .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local parts = splitByLiteral(initRaw, &amp;quot;@&amp;quot;, 2)&lt;br /&gt;
		local initType = t_trim(parts[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
		local parentId = t_trim(parts[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local parentPage = &amp;quot;&amp;quot;&lt;br /&gt;
		do&lt;br /&gt;
			parentId = tostring(parentId or &amp;quot;&amp;quot;)&lt;br /&gt;
			parentId = t_trim(parentId)&lt;br /&gt;
			parentId = parentId:match(&amp;quot;(%d+)&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			if parentId ~= &amp;quot;&amp;quot; and mw and mw.smw and type(mw.smw.ask) == &amp;quot;function&amp;quot; then&lt;br /&gt;
				local ok, res = pcall(mw.smw.ask, {&lt;br /&gt;
					&amp;quot;[[Page ID::&amp;quot; .. parentId .. &amp;quot;]]&amp;quot;,&lt;br /&gt;
					&amp;quot;limit=1&amp;quot;,&lt;br /&gt;
					&amp;quot;link=none&amp;quot;&lt;br /&gt;
				})&lt;br /&gt;
&lt;br /&gt;
				if ok and type(res) == &amp;quot;table&amp;quot; and res[1] then&lt;br /&gt;
					local row = res[1]&lt;br /&gt;
					local ft = row.fulltext or row.page or row[1]&lt;br /&gt;
&lt;br /&gt;
					if type(ft) == &amp;quot;string&amp;quot; then&lt;br /&gt;
						ft = t_trim(ft)&lt;br /&gt;
						if ft ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							parentPage = ft&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		parentPage = canonicalTitle(parentPage)&lt;br /&gt;
&lt;br /&gt;
		if parentPage == &amp;quot;&amp;quot; then&lt;br /&gt;
			return renderBannerByKey(pv, lang, &amp;quot;argument_orphan&amp;quot;, cats)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local title = pv.rawTitle&lt;br /&gt;
&lt;br /&gt;
		local t_arg_pro			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;arg_pro&amp;quot;)&lt;br /&gt;
		local t_arg_con			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;arg_con&amp;quot;)&lt;br /&gt;
		local t_justification	= L(lang, &amp;quot;params&amp;quot;, &amp;quot;justification_type_label&amp;quot;)&lt;br /&gt;
		local t_objection		= L(lang, &amp;quot;params&amp;quot;, &amp;quot;objection_type_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local formName = nil&lt;br /&gt;
&lt;br /&gt;
		if initType == t_arg_pro then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;edit_args_pro&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		elseif initType == t_arg_con then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;edit_args_con&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		elseif initType == t_justification then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;justifications&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		elseif initType == t_objection then&lt;br /&gt;
			formName = L(lang, &amp;quot;forms&amp;quot;, &amp;quot;objections&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not formName or formName == &amp;quot;&amp;quot; or not initType or initType == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local idx = 99&lt;br /&gt;
		local prefix = initType .. &amp;quot;[&amp;quot; .. tostring(idx) .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local qsParts = {&lt;br /&gt;
			prefix .. &amp;quot;[&amp;quot; .. L(lang, &amp;quot;params&amp;quot;, &amp;quot;page&amp;quot;) .. &amp;quot;]=&amp;quot; .. title&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local displayedTitleParam = t_trim(tostring(L(lang, &amp;quot;params&amp;quot;, &amp;quot;displayed_title&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		if displayedTitleParam ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(qsParts,&lt;br /&gt;
				prefix .. &amp;quot;[&amp;quot; .. displayedTitleParam .. &amp;quot;]=&amp;quot; .. title&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local qs = table_concat(qsParts, &amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local warnTitle = PF.init_warning_title&lt;br /&gt;
		local warnIntro = string.format(PF.init_warning_intro, title)&lt;br /&gt;
&lt;br /&gt;
		local yesText = PF.init_yes_finish_label or PF.edit or &amp;quot;&amp;quot;&lt;br /&gt;
		local yesTooltip = PF.init_yes_tt or &amp;quot;&amp;quot;&lt;br /&gt;
		local okText = string.format(PF.init_ok_text or &amp;quot;%s&amp;quot;, parentPage)&lt;br /&gt;
		local noText = PF.init_no_rename_label or PF.rename_link_text or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local summary&lt;br /&gt;
		if initType == t_arg_pro then&lt;br /&gt;
			summary = PF.init_summary_pro&lt;br /&gt;
		elseif initType == t_arg_con then&lt;br /&gt;
			summary = PF.init_summary_con&lt;br /&gt;
		elseif initType == t_justification then&lt;br /&gt;
			summary = PF.init_summary_justif&lt;br /&gt;
		elseif initType == t_objection then&lt;br /&gt;
			summary = PF.init_summary_obj&lt;br /&gt;
		else&lt;br /&gt;
			summary = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if summary ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			summary = summary .. &amp;quot; : « &amp;quot; .. title .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local src =&lt;br /&gt;
			&amp;quot;{{#autoedit:&amp;quot;&lt;br /&gt;
			.. &amp;quot;| form = &amp;quot; .. formName&lt;br /&gt;
			.. &amp;quot;| target = &amp;quot; .. parentPage&lt;br /&gt;
			.. &amp;quot;| query string = &amp;quot; .. qs&lt;br /&gt;
			.. &amp;quot;| link text = &amp;quot; .. yesText&lt;br /&gt;
			.. &amp;quot;| link type = button&amp;quot;&lt;br /&gt;
			.. &amp;quot;| tooltip = &amp;quot; .. yesTooltip&lt;br /&gt;
			.. &amp;quot;| ok text = &amp;quot; .. okText&lt;br /&gt;
			.. (summary ~= &amp;quot;&amp;quot; and (&amp;quot;| summary = &amp;quot; .. summary) or &amp;quot;&amp;quot;)&lt;br /&gt;
			.. &amp;quot;| reload&amp;quot;&lt;br /&gt;
			.. &amp;quot;}}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local auto = &amp;quot;&amp;quot;&lt;br /&gt;
		do&lt;br /&gt;
			local ok, r = pcall(F.preprocess, F, src)&lt;br /&gt;
			auto = (ok and r) and r or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local renameLink =&lt;br /&gt;
			&amp;quot;[[Special:MovePage/&amp;quot; .. pv.encoded .. &amp;quot;|&amp;quot; .. noText .. &amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local renameBtn =&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;bouton-autoedit-renommer&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. renameLink&lt;br /&gt;
			.. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;warningbox cdx-message cdx-message--block cdx-message--warning navigation-not-searchable&amp;quot;&amp;gt;\&#039;\&#039;\&#039;&#039;&lt;br /&gt;
			.. warnTitle&lt;br /&gt;
			.. &#039;\&#039;\&#039;\&#039;\n\n&#039;&lt;br /&gt;
			.. warnIntro&lt;br /&gt;
			.. &#039;\n&amp;lt;div style=&amp;quot;margin-top: 1em;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. auto&lt;br /&gt;
			.. renameBtn&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&amp;lt;!-- Fin de warningbox --&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (not hasParents) and (not hasInit) then&lt;br /&gt;
		return renderBannerByKey(pv, lang, &amp;quot;argument_orphan&amp;quot;, cats)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Fil d’Ariane : 1 seule requête SMW&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function ensureBreadcrumbSelection(pv, cache, cats, lang, PF)&lt;br /&gt;
	if not cache or cache.breadcrumbChainsFinal ~= nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.breadcrumbChainsFinal = {}&lt;br /&gt;
	cache.parentDebatesFinal = {}&lt;br /&gt;
&lt;br /&gt;
	if not hasSMW() or type(mw.smw.ask) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	lang = lang or &amp;quot;fr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local title = smwSafeTitle(pv.rawTitle)&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local propBreadcrumb = tostring(PF.prop_breadcrumb or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propDebateName = tostring(PF.prop_debate_name or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propPro = tostring(PF.prop_arg_pro or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propCon = tostring(PF.prop_arg_con or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propJustif = tostring(PF.prop_justif or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propObj = tostring(PF.prop_obj or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if propBreadcrumb == &amp;quot;&amp;quot; or propPro == &amp;quot;&amp;quot; or propCon == &amp;quot;&amp;quot; or propJustif == &amp;quot;&amp;quot; or propObj == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local q = {&lt;br /&gt;
		&amp;quot;([[&amp;quot; .. propJustif .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] OR [[&amp;quot; .. propObj .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] OR [[&amp;quot; .. propPro .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] OR [[&amp;quot; .. propCon .. &amp;quot;::&amp;quot; .. title .. &amp;quot;]] )&amp;quot;,&lt;br /&gt;
		&amp;quot;?&amp;quot; .. propBreadcrumb .. &amp;quot;=chain&amp;quot;,&lt;br /&gt;
		(propDebateName ~= &amp;quot;&amp;quot; and (&amp;quot;?&amp;quot; .. propDebateName .. &amp;quot;=debateName&amp;quot;) or nil),&lt;br /&gt;
		&amp;quot;limit=200&amp;quot;,&lt;br /&gt;
		&amp;quot;link=none&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local qq = {}&lt;br /&gt;
	for _, x in ipairs(q) do&lt;br /&gt;
		if x then&lt;br /&gt;
			table_insert(qq, x)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local res = smwAskSafe(qq)&lt;br /&gt;
	if type(res) ~= &amp;quot;table&amp;quot; or #res == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local bestByDebate = {}&lt;br /&gt;
&lt;br /&gt;
	local function consider(ch)&lt;br /&gt;
		if type(ch) ~= &amp;quot;string&amp;quot; or ch == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local parts = splitByLiteral(ch, &amp;quot;⟭&amp;quot;)&lt;br /&gt;
		local clean = {}&lt;br /&gt;
		for _, part in ipairs(parts) do&lt;br /&gt;
			part = t_trim(part)&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				clean[#clean + 1] = part&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local n = #clean&lt;br /&gt;
		if n == 0 then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local root = canonicalTitle(clean[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
		if root == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local cur = bestByDebate[root]&lt;br /&gt;
		if not cur or n &amp;lt; cur.len then&lt;br /&gt;
			bestByDebate[root] = {&lt;br /&gt;
				root = root,&lt;br /&gt;
				chain = table_concat(clean, &amp;quot;⟭&amp;quot;),&lt;br /&gt;
				len = n&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, row in ipairs(res) do&lt;br /&gt;
		local chain = row.chain&lt;br /&gt;
&lt;br /&gt;
		if type(chain) == &amp;quot;string&amp;quot; then&lt;br /&gt;
			consider(chain)&lt;br /&gt;
		elseif type(chain) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, ch in ipairs(chain) do&lt;br /&gt;
				consider(ch)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local selected = {}&lt;br /&gt;
	for _, item in pairs(bestByDebate) do&lt;br /&gt;
		selected[#selected + 1] = item&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #selected == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #selected &amp;gt; 1 then&lt;br /&gt;
		local filtered = {}&lt;br /&gt;
		for _, item in ipairs(selected) do&lt;br /&gt;
			if item.len &amp;lt; 4 then&lt;br /&gt;
				filtered[#filtered + 1] = item&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		selected = filtered&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #selected == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local chains = {}&lt;br /&gt;
	local debates = {}&lt;br /&gt;
	local tooLong = false&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs(selected) do&lt;br /&gt;
		local newChain = item.chain .. &amp;quot;⟭&amp;quot; .. title&lt;br /&gt;
&lt;br /&gt;
		if breadcrumbLenByteSafe(newChain) &amp;gt; 4 then&lt;br /&gt;
			tooLong = true&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		chains[#chains + 1] = newChain&lt;br /&gt;
		debates[#debates + 1] = item.root&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if tooLong then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;breadcrumb_too_long&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	cache.breadcrumbChainsFinal = uniqList(chains)&lt;br /&gt;
	cache.parentDebatesFinal = uniqList(debates)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildArgumentData(items)&lt;br /&gt;
	items = items or {}&lt;br /&gt;
&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
	--	Liste texte (affichage)&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local listLines = {}&lt;br /&gt;
	for _, it in ipairs(items) do&lt;br /&gt;
		table_insert(listLines, &amp;quot;* &amp;quot; .. tostring(it.title or &amp;quot;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	local listText = table_concat(listLines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local argsVarParts = {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs(items) do&lt;br /&gt;
		local page = t_trim(tostring(it.page or &amp;quot;&amp;quot;))&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local title = t_trim(tostring(it.title or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
			if title == &amp;quot;&amp;quot; or title == page then&lt;br /&gt;
				table_insert(argsVarParts, page)&lt;br /&gt;
			else&lt;br /&gt;
				table_insert(&lt;br /&gt;
					argsVarParts,&lt;br /&gt;
					page&lt;br /&gt;
					.. FIELD_SEP&lt;br /&gt;
					.. title&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local argsVar = table_concat(argsVarParts, ITEM_SEP)&lt;br /&gt;
&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
	--	Carte hover (HTML)&lt;br /&gt;
	------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local hoverLines = {}&lt;br /&gt;
	for _, it in ipairs(items) do&lt;br /&gt;
		table_insert(hoverLines,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. &#039;[[&#039; .. tostring(it.page or &amp;quot;&amp;quot;) .. &#039;|&#039; .. tostring(it.title or &amp;quot;&amp;quot;) .. &#039;]]&#039; .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHoverHtml = table_concat(hoverLines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		items		= items,&lt;br /&gt;
		list		= listText,&lt;br /&gt;
		argsVar		= argsVar,&lt;br /&gt;
		mapHover	= mapHoverHtml&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
computeArgumentMapsFromData = function(args)&lt;br /&gt;
	local rawJ = args[&amp;quot;justifications&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawO = args[&amp;quot;objections&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local justifItems = wkExtractItemsFromSerializedData( rawJ )&lt;br /&gt;
	local objItems = wkExtractItemsFromSerializedData( rawO )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		justif	= wkBuildArgumentData( justifItems ),&lt;br /&gt;
		obj		= wkBuildArgumentData( objItems )&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsArg = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsArg == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup( lang, DISPLAYED_TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local hasBanner = false&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsArg, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, DISPLAYED_TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, nil ) )&lt;br /&gt;
			hasBanner = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasBanner and cats then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;displayed_titles_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderArgumentLi( pv, lang, it, kind, idx, cats )&lt;br /&gt;
	local isJustif = ( kind == &amp;quot;justif&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = isJustif and &amp;quot;Justification_&amp;quot; or &amp;quot;Objection_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local page = tostring( it.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local titleShown = tostring( it.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if titleShown == &amp;quot;&amp;quot; then&lt;br /&gt;
		titleShown = page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local aId = anchorId( titleShown )&lt;br /&gt;
	local warnings = tostring( it.warnings or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local banners = {}&lt;br /&gt;
	renderArgumentItemBanners( warnings, pv, lang, cats, banners )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;li id=&amp;quot;&#039;&lt;br /&gt;
		.. idPrefix .. tostring( idx )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div id=&amp;quot;&#039;&lt;br /&gt;
		.. escapeAttr( aId )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument-title wk-icon-before wk-icon-argument wk-icon-after wk-carret&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. page .. &#039;|&#039; .. titleShown .. &#039;]]&#039;&lt;br /&gt;
		.. ( #banners &amp;gt; 0 and table_concat( banners ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Mots-clés : lien direct RunQuery (GET)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderKeywords(args, pv, cats, lang, PF)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert(out, &#039;&amp;lt;div style=&amp;quot;font-size: 95%; margin-top: 1em;&amp;quot;&amp;gt;&#039; .. PF.keywords_label)&lt;br /&gt;
&lt;br /&gt;
	local raw = args[&amp;quot;keywords&amp;quot;]&lt;br /&gt;
	if raw and raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local extra = nil&lt;br /&gt;
		if PF.search_type_field ~= &amp;quot;&amp;quot; and PF.search_type_value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			extra = { [PF.search_type_field] = PF.search_type_value }&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local rq_title = wkRunQueryPath(PF.form_search_by_keywords)&lt;br /&gt;
		local rq_qkey = PF.form_search_by_keywords .. &amp;quot;[&amp;quot; .. PF.keywords_field .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local rendered = {}&lt;br /&gt;
		for _, k in ipairs(splitCSV(raw, &amp;quot;,&amp;quot;)) do&lt;br /&gt;
			k = t_trim(tostring(k or &amp;quot;&amp;quot;))&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local chip = runQueryLink{&lt;br /&gt;
					form = PF.form_search_by_keywords,&lt;br /&gt;
					field = PF.keywords_field,&lt;br /&gt;
					value = k,&lt;br /&gt;
					label = k,&lt;br /&gt;
					tooltip = PF.search_by_keyword_tt,&lt;br /&gt;
					extra = extra,&lt;br /&gt;
					_title = rq_title,&lt;br /&gt;
					_qkey = rq_qkey&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if chip and chip ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(rendered, chip)&lt;br /&gt;
				else&lt;br /&gt;
					table_insert(rendered, k)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #rendered &amp;gt; 0 then&lt;br /&gt;
			table_insert(out, table_concat(rendered, &amp;quot;, &amp;quot;))&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. PF.none .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_keywords .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. PF.none .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_keywords .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(out,&lt;br /&gt;
		addDataEditLink(&lt;br /&gt;
			PF.form_edit_keywords,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_keywords_tooltip&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSummary(args, pv, cats, lang, PF)&lt;br /&gt;
	local edit = addDataEditLink(&lt;br /&gt;
		PF.form_edit_summary,&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		PF.edit_summary_tooltip&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	table_insert(out,&lt;br /&gt;
		&#039;&amp;lt;h2 id=&amp;quot;Summary&amp;quot; class=&amp;quot;section-modifiable wk-icon-before wk-icon-summary&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. PF.summary&lt;br /&gt;
		.. edit&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local raw = args[ &amp;quot;summary-warnings&amp;quot; ]&lt;br /&gt;
		raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lookup = buildSummaryLabelLookup( lang, SUMMARY_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
			local aliases = SUMMARY_WARNING_ALIASES&lt;br /&gt;
			if not aliases or aliases._lang ~= lang then&lt;br /&gt;
				aliases = buildSummaryAliases(lang)&lt;br /&gt;
				aliases._lang = lang&lt;br /&gt;
				SUMMARY_WARNING_ALIASES = aliases&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for _, x in ipairs( splitCSV( raw, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				local key = resolveKeyFromLookup(&lt;br /&gt;
					x,&lt;br /&gt;
					lookup,&lt;br /&gt;
					SUMMARY_WARNING_BANNER_KEYS,&lt;br /&gt;
					aliases&lt;br /&gt;
				)&lt;br /&gt;
&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert( out, renderSubsectionBanner( pv, lang, key, nil, cats ) )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;summary&amp;quot;] and args[&amp;quot;summary&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(out, &amp;quot;&amp;lt;div class=&#039;argument-summary&#039;&amp;gt;\n&amp;quot; .. args[&amp;quot;summary&amp;quot;] .. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_summary .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_summary .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderQuotes(args, pv, cats, lang, PF)&lt;br /&gt;
	local edit = addDataEditLink(&lt;br /&gt;
		PF.form_edit_quotes,&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		PF.edit_quotes_tooltip&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local idAttr = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	table_insert(out,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-quote&amp;quot;&#039; .. idAttr .. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. PF.quotes&lt;br /&gt;
		.. edit&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local q = args[&amp;quot;quotes&amp;quot;]&lt;br /&gt;
	if q and q ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(out, q)&lt;br /&gt;
	else&lt;br /&gt;
		table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_quotes .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_quotes .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateDetailed(args, pv, cats, lang, PF)&lt;br /&gt;
	if not args[&amp;quot;detailed-debate&amp;quot;] or args[&amp;quot;detailed-debate&amp;quot;] == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_has_detailed_debate .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local edit = addDataEditLink(&lt;br /&gt;
		PF.form_edit_detailed_debate,&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
		string.format(PF.edit_detailed_debate_tooltip, pv.rawTitle)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-details&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. PF.detailed_debate&lt;br /&gt;
		.. edit .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local debat = canonicalTitle(args[&amp;quot;detailed-debate&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
	local mapHtml = &amp;quot;&amp;quot;&lt;br /&gt;
	if hasSMW() and type(mw.smw.ask) == &amp;quot;function&amp;quot; and PF.prop_argument_map and PF.prop_argument_map ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local debatSafe = smwSafeTitle(debat)&lt;br /&gt;
		if debatSafe ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local res = smwAskSafe({&lt;br /&gt;
				&amp;quot;[[&amp;quot; .. debatSafe .. &amp;quot;]]&amp;quot;,&lt;br /&gt;
				&amp;quot;?&amp;quot; .. PF.prop_argument_map .. &amp;quot;=map&amp;quot;,&lt;br /&gt;
				&amp;quot;limit=1&amp;quot;,&lt;br /&gt;
				&amp;quot;link=none&amp;quot;&lt;br /&gt;
			})&lt;br /&gt;
&lt;br /&gt;
			if type(res) == &amp;quot;table&amp;quot; and res[1] and res[1].map then&lt;br /&gt;
				local v = res[1].map&lt;br /&gt;
				if type(v) == &amp;quot;string&amp;quot; then&lt;br /&gt;
					mapHtml = v&lt;br /&gt;
				elseif type(v) == &amp;quot;table&amp;quot; then&lt;br /&gt;
					for _, x in ipairs(v) do&lt;br /&gt;
						if type(x) == &amp;quot;string&amp;quot; and t_trim(x) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							mapHtml = x&lt;br /&gt;
							break&lt;br /&gt;
						elseif type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
							local ft = x.fulltext or x.page or x[1]&lt;br /&gt;
							if type(ft) == &amp;quot;string&amp;quot; and t_trim(ft) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
								mapHtml = ft&lt;br /&gt;
								break&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local box =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-debat-detaille&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. string.format(PF.arg_is_debate, t_nowiki(pv.rawTitle))&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert navigation-not-searchable onglet-externe&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. PF.detailed_debate_label .. &#039;&amp;lt;span class=&amp;quot;onglet-externe&amp;quot;&amp;gt;[[ &#039; .. debat .. &#039; ]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local mapBox = &amp;quot;&amp;quot;&lt;br /&gt;
	if mapHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		mapBox =&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;encart-debat-detaille onglet-externe&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;titre-debat-detaille&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. debat&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. mapHtml&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return h2 .. box .. mapBox&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function safeRubriqueValue(s)&lt;br /&gt;
	s = t_trim(tostring(s or &amp;quot;&amp;quot;))&lt;br /&gt;
	if s == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if s:find(&amp;quot;[%[%]{}|#&amp;lt;&amp;gt;]&amp;quot;) then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	s = s:gsub(&amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
	s = t_trim(s)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRubriques(args, cats, lang, PF)&lt;br /&gt;
	if args[&amp;quot;sections&amp;quot;] and args[&amp;quot;sections&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		local nOk = 0&lt;br /&gt;
		for _, r in ipairs(splitCSV(args[&amp;quot;sections&amp;quot;], &amp;quot;,&amp;quot;)) do&lt;br /&gt;
			r = safeRubriqueValue(r)&lt;br /&gt;
			if r ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				nOk = nOk + 1&lt;br /&gt;
				table_insert(out, &amp;quot;[[Category:&amp;quot; .. r .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if nOk &amp;gt; 0 then&lt;br /&gt;
			return table_concat(out)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;[[Category:&amp;quot; .. PF.cat_no_sections .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;[[Category:&amp;quot; .. PF.cat_no_sections .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	CITATIONS&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
local function wkParseQuoteMarkers(raw)&lt;br /&gt;
	raw = tostring(raw or &amp;quot;&amp;quot;)&lt;br /&gt;
	raw = t_trim(raw)&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Heuristique: si aucun séparateur de champ, pas notre format&lt;br /&gt;
	if not raw:find(QUOTE_FIELD_SEP, 1, true) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
	local blocks&lt;br /&gt;
&lt;br /&gt;
	--	Si séparateur d’items présent : split&lt;br /&gt;
	if raw:find(QUOTE_ITEM_SEP, 1, true) then&lt;br /&gt;
		blocks = splitByLiteral(raw, QUOTE_ITEM_SEP)&lt;br /&gt;
	else&lt;br /&gt;
		blocks = { raw }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, block in ipairs(blocks) do&lt;br /&gt;
		block = t_trim(block)&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			local parts = splitByLiteral(block, QUOTE_FIELD_SEP)&lt;br /&gt;
&lt;br /&gt;
			for _, part in ipairs(parts) do&lt;br /&gt;
				f[#f + 1] = t_trim(tostring(part or &amp;quot;&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 13 do&lt;br /&gt;
				f[i] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[#items + 1] = {&lt;br /&gt;
				quote		= f[1],&lt;br /&gt;
				authors		= f[2],&lt;br /&gt;
				article		= f[3],&lt;br /&gt;
				work		= f[4],&lt;br /&gt;
				volume		= f[5],&lt;br /&gt;
				number		= f[6],&lt;br /&gt;
				page		= f[7],&lt;br /&gt;
				location	= f[8],&lt;br /&gt;
				publisher	= f[9],&lt;br /&gt;
				place		= f[10],&lt;br /&gt;
				date		= f[11],&lt;br /&gt;
				link		= f[12],&lt;br /&gt;
				warnings	= f[13]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneQuoteHtml(item, idx, pv, lang, cats, PF)&lt;br /&gt;
	local quote		= tostring(item.quote or &amp;quot;&amp;quot;)&lt;br /&gt;
	local authors	= t_trim(item.authors or &amp;quot;&amp;quot;)&lt;br /&gt;
	local article	= t_trim(item.article or &amp;quot;&amp;quot;)&lt;br /&gt;
	local work		= t_trim(item.work or &amp;quot;&amp;quot;)&lt;br /&gt;
	local volume	= t_trim(item.volume or &amp;quot;&amp;quot;)&lt;br /&gt;
	local number	= t_trim(item.number or &amp;quot;&amp;quot;)&lt;br /&gt;
	local page		= t_trim(item.page or &amp;quot;&amp;quot;)&lt;br /&gt;
	local location	= t_trim(item.location or &amp;quot;&amp;quot;)&lt;br /&gt;
	local publisher	= t_trim(item.publisher or &amp;quot;&amp;quot;)&lt;br /&gt;
	local place		= t_trim(item.place or &amp;quot;&amp;quot;)&lt;br /&gt;
	local date		= t_trim(item.date or &amp;quot;&amp;quot;)&lt;br /&gt;
	local link		= t_trim(item.link or &amp;quot;&amp;quot;)&lt;br /&gt;
	local warnings	= t_trim(item.warnings or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	Accumulateurs VariablesLua (comme Module:Quote)&lt;br /&gt;
	vset(&amp;quot;WD_QUOTES_MAX&amp;quot;, tostring(idx))&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_AUTHORS&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_AUTHORS&amp;quot;, (cur == &amp;quot;&amp;quot; and authors) or (cur .. &amp;quot;,&amp;quot; .. authors))&lt;br /&gt;
	end&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_ARTICLES&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_ARTICLES&amp;quot;, (cur == &amp;quot;&amp;quot; and article) or (cur .. &amp;quot;,&amp;quot; .. article))&lt;br /&gt;
	end&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_WORKS&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_WORKS&amp;quot;, (cur == &amp;quot;&amp;quot; and work) or (cur .. &amp;quot;,&amp;quot; .. work))&lt;br /&gt;
	end&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_PUBLISHERS&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_PUBLISHERS&amp;quot;, (cur == &amp;quot;&amp;quot; and publisher) or (cur .. &amp;quot;,&amp;quot; .. publisher))&lt;br /&gt;
	end&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local cur = t_trim(tostring(vget(&amp;quot;WD_QUOTES_PLACES&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		vset(&amp;quot;WD_QUOTES_PLACES&amp;quot;, (cur == &amp;quot;&amp;quot; and place) or (cur .. &amp;quot;,&amp;quot; .. place))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Blockquote&lt;br /&gt;
	local warnHtml = &amp;quot;&amp;quot;&lt;br /&gt;
	if warnings ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local lookup = buildSummaryLabelLookup( lang, QUOTE_WARNING_BANNER_KEYS )&lt;br /&gt;
		local b = {}&lt;br /&gt;
&lt;br /&gt;
		for x in t_gsplit( warnings, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			x = t_trim( x )&lt;br /&gt;
			if x ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local key = resolveKeyFromLookup( x, lookup, QUOTE_WARNING_BANNER_KEYS )&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					local h = renderSubsectionBanner(&lt;br /&gt;
						pv,&lt;br /&gt;
						lang,&lt;br /&gt;
						key,&lt;br /&gt;
						nil,&lt;br /&gt;
						cats&lt;br /&gt;
					)&lt;br /&gt;
					if h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						b[ #b + 1 ] = h&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #b &amp;gt; 0 then&lt;br /&gt;
			warnHtml = &amp;quot;&amp;lt;div&amp;gt;&amp;quot; .. table_concat( b, &amp;quot;&amp;quot; ) .. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local bq =&lt;br /&gt;
		&#039;&amp;lt;blockquote data-wk-cite=&amp;quot;&#039; .. tostring(idx) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. warnHtml&lt;br /&gt;
		.. &#039;« &#039; .. quote .. &#039; »&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/blockquote&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	--	Référence (sans fallback demandé =&amp;gt; on n’invente pas d’auteur)&lt;br /&gt;
	local ref = {}&lt;br /&gt;
	table_insert(ref, &#039;&amp;lt;div class=&amp;quot;reference-citation&amp;quot; data-wk-cite=&amp;quot;&#039; .. tostring(idx) .. &#039;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( ref, authors )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( ref, PF.unknown_author )&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_authors .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(ref, &#039;, « [&#039; .. link .. &#039; &#039; .. article .. &#039;] »&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			table_insert(ref, &#039;, « &#039; .. article .. &#039; »&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(ref, &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert(ref, &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				table_insert(ref, &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; and number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert(ref, &amp;quot;, vol. &amp;quot; .. volume)&lt;br /&gt;
		end&lt;br /&gt;
		table_insert(ref, &amp;quot;, n°&amp;amp;#160;&amp;quot; .. number)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, p.&amp;quot; .. page)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. location)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. publisher)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. place)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(ref, &amp;quot;, &amp;quot; .. date)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(ref, &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local html = bq .. &amp;quot;\n&amp;quot; .. table_concat(ref) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if idx &amp;gt;= 1 and idx &amp;lt;= 4 then&lt;br /&gt;
		vset(&amp;quot;WD_QUOTE_&amp;quot; .. tostring(idx), html)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderQuotesFromSerialized(raw, pv, lang, cats, PF)&lt;br /&gt;
	local items = wkParseQuoteMarkers(raw)&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for i, it in ipairs( items ) do&lt;br /&gt;
		out[ #out + 1 ] = wkRenderOneQuoteHtml( it, i, pv, lang, cats, PF )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW : setSemanticData + argument_map/justif_list/obj_list&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function setSemanticData(args, pv, lang, cache, PF, maps, rawB, rawW, rawV)&lt;br /&gt;
	local props = {}&lt;br /&gt;
&lt;br /&gt;
	props[PF.prop_arg_name] = pv.rawTitle&lt;br /&gt;
	props[PF.prop_arg_number] = pv.pageId&lt;br /&gt;
&lt;br /&gt;
	if hasSMW() then&lt;br /&gt;
		ensureDebateParentsFinal(pv, cache, PF)&lt;br /&gt;
		ensureArgumentParents(pv, cache, PF)&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local chains = uniqList(cache.breadcrumbChainsFinal or {})&lt;br /&gt;
&lt;br /&gt;
			if #chains &amp;gt; 0 and PF.prop_breadcrumb and PF.prop_breadcrumb ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				props[PF.prop_breadcrumb] = chains&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if PF.prop_parent_debate and PF.prop_parent_debate ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local dp = uniqList(cache.parentDebatesFinal or {})&lt;br /&gt;
				if #dp &amp;gt; 0 then&lt;br /&gt;
					props[PF.prop_parent_debate] = dp&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local parents = {}&lt;br /&gt;
			for _, x in ipairs(cache.justifs or {}) do&lt;br /&gt;
				table_insert(parents, canonicalTitle(x))&lt;br /&gt;
			end&lt;br /&gt;
			for _, x in ipairs(cache.objs or {}) do&lt;br /&gt;
				table_insert(parents, canonicalTitle(x))&lt;br /&gt;
			end&lt;br /&gt;
			parents = uniqList(parents)&lt;br /&gt;
&lt;br /&gt;
			if #parents &amp;gt; 0 and PF.prop_parent_argument and PF.prop_parent_argument ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				props[PF.prop_parent_argument] = parents&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local justif = maps.justif or {}&lt;br /&gt;
	local obj = maps.obj or {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = {}&lt;br /&gt;
		for _, it in ipairs((justif.items or {})) do&lt;br /&gt;
			local t = canonicalTitle(it.page or &amp;quot;&amp;quot;)&lt;br /&gt;
			if t ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert(lst, t)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		lst = uniqList(lst)&lt;br /&gt;
&lt;br /&gt;
		if #lst &amp;gt; 0 and PF.prop_justif and PF.prop_justif ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_justif] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = {}&lt;br /&gt;
		for _, it in ipairs((obj.items or {})) do&lt;br /&gt;
			local t = canonicalTitle(it.page or &amp;quot;&amp;quot;)&lt;br /&gt;
			if t ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert(lst, t)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		lst = uniqList(lst)&lt;br /&gt;
&lt;br /&gt;
		if #lst &amp;gt; 0 and PF.prop_obj and PF.prop_obj ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_obj] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local justifSurvol = t_trim(justif.mapHover or &amp;quot;&amp;quot;)&lt;br /&gt;
	local objSurvol = t_trim(obj.mapHover or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	if justifSurvol == &amp;quot;&amp;quot; then justifSurvol = &#039;&amp;lt;div class=&amp;quot;argument-title--map carte-vide&amp;quot;&amp;gt;&#039; .. PF.no_justifications_short .. &#039;&amp;lt;/div&amp;gt;&#039; end&lt;br /&gt;
	if objSurvol == &amp;quot;&amp;quot; then objSurvol = &#039;&amp;lt;div class=&amp;quot;argument-title--map carte-vide&amp;quot;&amp;gt;&#039; .. PF.no_objections_short .. &#039;&amp;lt;/div&amp;gt;&#039; end&lt;br /&gt;
&lt;br /&gt;
	if PF.prop_argument_map and PF.prop_argument_map ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		props[ PF.prop_argument_map ] =&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;wk-arg-map navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. PF.justifications .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. justifSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. PF.objections .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. objSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = t_trim(justif.argsVar or &amp;quot;&amp;quot;)&lt;br /&gt;
		if lst ~= &amp;quot;&amp;quot; and PF.prop_justif_list and PF.prop_justif_list ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_justif_list] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local lst = t_trim(obj.argsVar or &amp;quot;&amp;quot;)&lt;br /&gt;
		if lst ~= &amp;quot;&amp;quot; and PF.prop_obj_list and PF.prop_obj_list ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			props[PF.prop_obj_list] = lst&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local mc = args[&amp;quot;keywords&amp;quot;]&lt;br /&gt;
	if mc and mc ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local list = splitCSV(mc, &amp;quot;,&amp;quot;)&lt;br /&gt;
		if #list &amp;gt; 0 then&lt;br /&gt;
			props[PF.prop_keyword] = list&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;detailed-debate&amp;quot;] and args[&amp;quot;detailed-debate&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		props[PF.prop_detailed_debate] = canonicalTitle(args[&amp;quot;detailed-debate&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local function uniqCSVVar( varName )&lt;br /&gt;
			local raw = tostring( vget( varName ) or &amp;quot;&amp;quot; )&lt;br /&gt;
			raw = t_trim( raw )&lt;br /&gt;
			if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local lst = splitCSV( raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
			lst = uniqList( lst )&lt;br /&gt;
			return ( #lst &amp;gt; 0 ) and lst or nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authors = uniqCSVVar( &amp;quot;WD_QUOTES_AUTHORS&amp;quot; )&lt;br /&gt;
		if authors then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;authors&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, authors, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local articles = uniqCSVVar( &amp;quot;WD_QUOTES_ARTICLES&amp;quot; )&lt;br /&gt;
		if articles then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;article_name&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, articles, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local works = uniqCSVVar( &amp;quot;WD_QUOTES_WORKS&amp;quot; )&lt;br /&gt;
		if works then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;work_name&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, works, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local pubs = uniqCSVVar( &amp;quot;WD_QUOTES_PUBLISHERS&amp;quot; )&lt;br /&gt;
		if pubs then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;publishing_house&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, pubs, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local places = uniqCSVVar( &amp;quot;WD_QUOTES_PLACES&amp;quot; )&lt;br /&gt;
		if places then&lt;br /&gt;
			local k = smwPropRef( PF, &amp;quot;place_of_publication&amp;quot; )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( props, k, places, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		if args[&amp;quot;sections&amp;quot;] and args[&amp;quot;sections&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lst = {}&lt;br /&gt;
			for _, r in ipairs(splitCSV(args[&amp;quot;sections&amp;quot;], &amp;quot;,&amp;quot;)) do&lt;br /&gt;
				r = safeRubriqueValue(r)&lt;br /&gt;
				if r ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(lst, r)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			lst = uniqList(lst)&lt;br /&gt;
	&lt;br /&gt;
			if #lst &amp;gt; 0 and PF.prop_section and PF.prop_section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				props[PF.prop_section] = lst&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	smwSetSafe(props)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO via Wikiseo (mw.ext.seo.set)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SEO_CACHE = cacheMake(60)&lt;br /&gt;
&lt;br /&gt;
local function wkSeoHas()&lt;br /&gt;
	return mw.ext&lt;br /&gt;
		and mw.ext.seo&lt;br /&gt;
		and type( mw.ext.seo.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSeoSet( data )&lt;br /&gt;
	if not wkSeoHas() then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall( mw.ext.seo.set, data )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoL( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Argument.seo&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoJoinList( items )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local seen = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs( items or {} ) do&lt;br /&gt;
		v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; and not seen[ v ] then&lt;br /&gt;
			seen[ v ] = true&lt;br /&gt;
			out[ #out + 1 ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out, &amp;quot;, &amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSeoKeywords( args, lang )&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, s in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return seoJoinList( items )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoKeyPart(s)&lt;br /&gt;
	s = tostring(s or &amp;quot;&amp;quot;)&lt;br /&gt;
	if mw_hash then&lt;br /&gt;
		local ok, h = pcall(mw_hash.hashValue, &amp;quot;md5&amp;quot;, s)&lt;br /&gt;
		if ok and type(h) == &amp;quot;string&amp;quot; and h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			return h&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderFullSEO( args, pv, lang )&lt;br /&gt;
	local titleText		= pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local ck =&lt;br /&gt;
		&amp;quot;SEO\n&amp;quot; .. tostring( lang or &amp;quot;&amp;quot; ) .. &amp;quot;\n&amp;quot; .. tostring( pv.pageId or &amp;quot;&amp;quot; ) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. titleText .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. seoKeyPart( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ) .. &amp;quot;\n&amp;quot;&lt;br /&gt;
		.. seoKeyPart( args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hit = cacheGet( SEO_CACHE, ck )&lt;br /&gt;
	if hit ~= nil then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	cachePut( SEO_CACHE, ck, true )&lt;br /&gt;
&lt;br /&gt;
	local topic = t_trim( tostring( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if topic == &amp;quot;&amp;quot; then&lt;br /&gt;
		topic = titleText&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local kw = buildSeoKeywords( args, lang )&lt;br /&gt;
&lt;br /&gt;
	wkSeoSet{&lt;br /&gt;
		title				= titleText .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;space&amp;quot;) .. &amp;quot;: &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;) .. &amp;quot; – &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot;),&lt;br /&gt;
		title_mode			= titleText .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;space&amp;quot;) .. &amp;quot;: &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;),&lt;br /&gt;
		title_separator		= string_format( seoL( lang, &amp;quot;title_separator&amp;quot; ), titleText ),&lt;br /&gt;
		description			= string_format( seoL( lang, &amp;quot;description&amp;quot; ), topic ),&lt;br /&gt;
		keywords			= kw,&lt;br /&gt;
		author				= seoL( lang, &amp;quot;author&amp;quot; ),&lt;br /&gt;
		image				= seoL( lang, &amp;quot;image&amp;quot; ),&lt;br /&gt;
		image_alt			= seoL( lang, &amp;quot;image_alt&amp;quot; ),&lt;br /&gt;
		type				= &amp;quot;article&amp;quot;,&lt;br /&gt;
		section				= seoL( lang, &amp;quot;section&amp;quot; ),&lt;br /&gt;
		site_name			= seoL( lang, &amp;quot;site_name&amp;quot; ),&lt;br /&gt;
		twitter_site		= seoL( lang, &amp;quot;twitter_site&amp;quot; ),&lt;br /&gt;
		locale				= seoL( lang, &amp;quot;locale&amp;quot; ),&lt;br /&gt;
		robots				= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
		googlebot			= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	JSON-LD : helpers Argument / Breadcrumb / WebSite&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrl( lang, prefixKey, labelKey )&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. mw_uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. L( lang, &amp;quot;urls&amp;quot;, labelKey ),&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrlFromText( lang, prefixKey, text )&lt;br /&gt;
	text = t_trim( tostring( text or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. mw_uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. text,&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkFullUrl( titleText )&lt;br /&gt;
	titleText = t_trim( tostring( titleText or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if titleText == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ok, u = pcall( mw_uri_fullUrl, titleText )&lt;br /&gt;
	if ok and u then&lt;br /&gt;
		return tostring( u )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkTakeFirst( items, limit )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	limit = tonumber( limit ) or 0&lt;br /&gt;
&lt;br /&gt;
	if limit &amp;lt;= 0 then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #items do&lt;br /&gt;
		if i &amp;gt; limit then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		out[ #out + 1 ] = items[ i ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWebsiteNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#website&amp;quot;,&lt;br /&gt;
		url = homeUrl,&lt;br /&gt;
		name = siteName&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local homeLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home_label&amp;quot; )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local argsLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;arguments_label&amp;quot; )&lt;br /&gt;
	local argsUrl = wkBuildWikiUrl( lang, &amp;quot;portal_prefix&amp;quot;, &amp;quot;arguments_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;BreadcrumbList&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;,&lt;br /&gt;
		itemListElement = {&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 1,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = homeUrl,&lt;br /&gt;
					name = homeLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 2,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = argsUrl,&lt;br /&gt;
					name = argsLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 3,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
					name = pv.rawTitle&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAboutAndMentions( args )&lt;br /&gt;
	local about = {}&lt;br /&gt;
	local mentions = {}&lt;br /&gt;
	local rawKeywords = splitCSV( args and args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #rawKeywords do&lt;br /&gt;
		local kw = t_trim( tostring( rawKeywords[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if kw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Thing&amp;quot;,&lt;br /&gt;
				name = kw&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if i &amp;lt;= 3 then&lt;br /&gt;
				about[ #about + 1 ] = node&lt;br /&gt;
			else&lt;br /&gt;
				mentions[ #mentions + 1 ] = node&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return about, mentions&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildKeywords( args, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local sections = splitCSV( args and args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
	local termSetId = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;sections_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #sections do&lt;br /&gt;
		if i &amp;gt; 4 then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local section = t_trim( tostring( sections[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;DefinedTerm&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrlFromText( lang, &amp;quot;category_prefix&amp;quot;, section ),&lt;br /&gt;
				name = section,&lt;br /&gt;
				inDefinedTermSet = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = termSetId&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildDiscussionUrl( pv, lang )&lt;br /&gt;
	return wkBuildWikiUrlFromText( lang, &amp;quot;discussion_prefix&amp;quot;, pv.rawTitle )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAppendAllValidIds( out, titles, suffix, lang )&lt;br /&gt;
	local added = false&lt;br /&gt;
&lt;br /&gt;
	for _, title in ipairs( titles or {} ) do&lt;br /&gt;
		title = canonicalTitle( t_trim( tostring( title or &amp;quot;&amp;quot; ) ) )&lt;br /&gt;
&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local url = wkFullUrl( title, lang )&lt;br /&gt;
&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. suffix&lt;br /&gt;
				}&lt;br /&gt;
				added = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return added&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAppendFirstValidId( out, titles, suffix, lang )&lt;br /&gt;
	for _, title in ipairs( titles or {} ) do&lt;br /&gt;
		title = canonicalTitle( t_trim( tostring( title or &amp;quot;&amp;quot; ) ) )&lt;br /&gt;
&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local url = wkFullUrl( title, lang )&lt;br /&gt;
&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. suffix&lt;br /&gt;
				}&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimIsPartOf( lang, cache )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;arguments_label&amp;quot; )&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local debats = {}&lt;br /&gt;
&lt;br /&gt;
	for _, d in ipairs( cache and cache.debatsPour or {} ) do&lt;br /&gt;
		table_insert( debats, canonicalTitle( d ) )&lt;br /&gt;
	end&lt;br /&gt;
	for _, d in ipairs( cache and cache.debatsContre or {} ) do&lt;br /&gt;
		table_insert( debats, canonicalTitle( d ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	debats = uniqList( debats )&lt;br /&gt;
&lt;br /&gt;
	if wkAppendAllValidIds( out, debats, &amp;quot;#qa&amp;quot;, lang ) then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if wkAppendFirstValidId( out, cache and cache.justifs or {}, &amp;quot;#claim&amp;quot;, lang ) then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if wkAppendFirstValidId( out, cache and cache.objs or {}, &amp;quot;#claim&amp;quot;, lang ) then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildHasPart( args, maps, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local detailedDebate = t_trim( tostring( args and args[ &amp;quot;detailed-debate&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	detailedDebate = canonicalTitle( detailedDebate )&lt;br /&gt;
&lt;br /&gt;
	if detailedDebate ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local url = wkFullUrl( detailedDebate, lang )&lt;br /&gt;
&lt;br /&gt;
		if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#qa&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
			return out&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local justifItems = ( maps and maps.justif and maps.justif.items ) or {}&lt;br /&gt;
	local objItems = ( maps and maps.obj and maps.obj.items ) or {}&lt;br /&gt;
&lt;br /&gt;
	for i = 1, math.min( #justifItems, 3 ) do&lt;br /&gt;
		local item = justifItems[ i ]&lt;br /&gt;
		local argTitle = t_trim( tostring( ( item and item.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		argTitle = canonicalTitle( argTitle )&lt;br /&gt;
&lt;br /&gt;
		local url = wkFullUrl( argTitle, lang )&lt;br /&gt;
&lt;br /&gt;
		if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;,&lt;br /&gt;
				additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;justification_label&amp;quot; )&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, math.min( #objItems, 1 ) do&lt;br /&gt;
		local item = objItems[ i ]&lt;br /&gt;
		local argTitle = t_trim( tostring( ( item and item.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		argTitle = canonicalTitle( argTitle )&lt;br /&gt;
&lt;br /&gt;
		local url = wkFullUrl( argTitle, lang )&lt;br /&gt;
&lt;br /&gt;
		if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;,&lt;br /&gt;
				additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;objection_label&amp;quot; )&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildQuoteAuthorValue( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local authors = splitCSV( raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if #authors == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #authors == 1 then&lt;br /&gt;
		return {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
			name = authors[ 1 ]&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for _, one in ipairs( authors ) do&lt;br /&gt;
		one = t_trim( tostring( one or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if one ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
				name = one&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSingleNodeFromFirstItem( items, buildNode )&lt;br /&gt;
	if type( items ) ~= &amp;quot;table&amp;quot; or not items[ 1 ] then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local node = buildNode( items[ 1 ] )&lt;br /&gt;
&lt;br /&gt;
	if node then&lt;br /&gt;
		return { node }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromQuotes( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseQuoteMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromBibliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseBiblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromWebliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseWeblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local page = t_trim( tostring( item.page or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local site = t_trim( tostring( item.site or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if link == &amp;quot;&amp;quot; or page == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
			name = page,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.isPartOf = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
				name = site&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromVideography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseVideoMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local title = t_trim( tostring( item.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if title == &amp;quot;&amp;quot; or link == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;VideoObject&amp;quot;,&lt;br /&gt;
			name = title,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkProtectJsonLdForParser( json )&lt;br /&gt;
	if not json or json == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	json = tostring( json )&lt;br /&gt;
&lt;br /&gt;
	--	protéger les séparateurs de parser function&lt;br /&gt;
	json = json:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;/&amp;quot;, &amp;quot;\\/&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	éviter de fermer prématurément {{#tag:...}}&lt;br /&gt;
	json = json:gsub( &amp;quot;}}&amp;quot;, &amp;quot;} }&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return json&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentSchemaJSONLD( args, pv, lang, cache, PF, maps )&lt;br /&gt;
	ensureDebateParentsFinal( pv, cache, PF )&lt;br /&gt;
	ensureArgumentParents( pv, cache, PF )&lt;br /&gt;
	ensureBreadcrumbSelection( pv, cache, {}, lang, PF )&lt;br /&gt;
&lt;br /&gt;
	local websiteNode = wkBuildWebsiteNode( lang )&lt;br /&gt;
	local breadcrumbNode = wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local about, mentions = wkBuildAboutAndMentions( args )&lt;br /&gt;
	local keywords = wkBuildKeywords( args, lang )&lt;br /&gt;
	local isPartOf = wkBuildClaimIsPartOf( lang, cache )&lt;br /&gt;
	local hasPart = wkBuildHasPart( args, maps, lang )&lt;br /&gt;
	local creationDate = getPageCreation(pv, args)&lt;br /&gt;
&lt;br /&gt;
	local citations = {}&lt;br /&gt;
	&lt;br /&gt;
	local q = wkBuildClaimCitationsFromQuotes(&lt;br /&gt;
		args[ &amp;quot;_quotes_wikitext&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
	if q[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = q[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local b = wkBuildClaimCitationsFromBibliography(&lt;br /&gt;
		args[ &amp;quot;bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
	if b[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = b[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local w = wkBuildClaimCitationsFromWebliography(&lt;br /&gt;
		args[ &amp;quot;webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
	if w[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = w[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local subjectOf = wkBuildClaimCitationsFromVideography(&lt;br /&gt;
		args[ &amp;quot;videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local pageNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		isPartOf = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#website&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		mainEntity = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#claim&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local claimNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#claim&amp;quot;,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		learningResourceType = &amp;quot;argument&amp;quot;,&lt;br /&gt;
		educationalUse = &amp;quot;analysis&amp;quot;,&lt;br /&gt;
		educationalLevel = &amp;quot;higher education&amp;quot;,&lt;br /&gt;
		audience = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;EducationalAudience&amp;quot;,&lt;br /&gt;
			educationalRole = &amp;quot;student&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		isPartOf = isPartOf,&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		discussionUrl = wkBuildDiscussionUrl( pv, lang ),&lt;br /&gt;
		publisher = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
			name = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;name&amp;quot;] and t_trim(args[&amp;quot;name&amp;quot;]) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		claimNode.alternateName = args[&amp;quot;name&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local summary = t_trim( tostring( args and args[ &amp;quot;summary&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if summary ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			claimNode.abstract = summary&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if creationDate then&lt;br /&gt;
		claimNode.datePublished = creationDate&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #about &amp;gt; 0 then&lt;br /&gt;
		claimNode.about = about&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #mentions &amp;gt; 0 then&lt;br /&gt;
		claimNode.mentions = mentions&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #keywords &amp;gt; 0 then&lt;br /&gt;
		claimNode.keywords = keywords&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #hasPart &amp;gt; 0 then&lt;br /&gt;
		claimNode.hasPart = hasPart&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #citations &amp;gt; 0 then&lt;br /&gt;
		claimNode.citation = citations&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #subjectOf &amp;gt; 0 then&lt;br /&gt;
		claimNode.subjectOf = subjectOf&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {&lt;br /&gt;
		[ &amp;quot;@context&amp;quot; ] = &amp;quot;https://schema.org&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@graph&amp;quot; ] = {&lt;br /&gt;
			websiteNode,&lt;br /&gt;
			breadcrumbNode,&lt;br /&gt;
			pageNode,&lt;br /&gt;
			claimNode&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local json = safeJsonEncode( data )&lt;br /&gt;
	&lt;br /&gt;
	return tagHtmlTag( &amp;quot;script&amp;quot;, wkProtectJsonLdForParser( json ), {&lt;br /&gt;
		type = &amp;quot;application/ld+json&amp;quot;,&lt;br /&gt;
		[&amp;quot;class&amp;quot;] = &amp;quot;navigation-not-searchable&amp;quot;&lt;br /&gt;
	} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Rendu principal (i18n)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_AUTHORS&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_ARTICLES&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_WORKS&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_PUBLISHERS&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_PLACES&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTES_MAX&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_1&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_2&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_3&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	vset( &amp;quot;WD_QUOTE_4&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	EXPAND_CACHE = cacheMake(250)&lt;br /&gt;
	CARD_CACHE = cacheMake(600)&lt;br /&gt;
	SMW_ASK_CACHE = cacheMake(250)&lt;br /&gt;
	SMW_TITLES_CACHE = cacheMake(250)&lt;br /&gt;
	I18N_DOMAIN = {}&lt;br /&gt;
	I18N_MSG = {}&lt;br /&gt;
	TITLE_CACHE = cacheMake(600)&lt;br /&gt;
	SEO_CACHE = cacheMake(60)&lt;br /&gt;
&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local function norm(k)&lt;br /&gt;
		local v = args[k]&lt;br /&gt;
		if type(v) ~= &amp;quot;string&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		v = t_trim(v)&lt;br /&gt;
		if v == &amp;quot;&amp;quot; then&lt;br /&gt;
			args[k] = nil&lt;br /&gt;
		else&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	norm(&amp;quot;summary&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;quotes&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;bibliography&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;webliography&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;videography&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;keywords&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;sections&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;interlanguage&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;detailed-debate&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	norm(&amp;quot;title-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;argument-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;summary-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;justification-warnings&amp;quot;)&lt;br /&gt;
	norm(&amp;quot;objection-warnings&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local rawB = args[&amp;quot;bibliography&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawW = args[&amp;quot;webliography&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawV = args[&amp;quot;videography&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if type(args[&amp;quot;justifications&amp;quot;]) ~= &amp;quot;string&amp;quot; then args[&amp;quot;justifications&amp;quot;] = nil end&lt;br /&gt;
	if type(args[&amp;quot;objections&amp;quot;]) ~= &amp;quot;string&amp;quot; then args[&amp;quot;objections&amp;quot;] = nil end&lt;br /&gt;
&lt;br /&gt;
	local lang	= detectLang(args)&lt;br /&gt;
	local pv		= computePageVars()&lt;br /&gt;
	pv.lang = lang&lt;br /&gt;
&lt;br /&gt;
	local cache	= makeSMWCache()&lt;br /&gt;
	local pieces, cats = {}, {}&lt;br /&gt;
&lt;br /&gt;
	local PF = {}&lt;br /&gt;
&lt;br /&gt;
	PF.file_search						= L(lang, &amp;quot;files&amp;quot;, &amp;quot;search&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.parent_is_justification_of		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_is_justification_of&amp;quot;)&lt;br /&gt;
	PF.parent_is_objection_to			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_is_objection_to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.keywords_label					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_label_text&amp;quot;)&lt;br /&gt;
	PF.none								= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.keywords_field					= L(lang, &amp;quot;params&amp;quot;, &amp;quot;keywords_field&amp;quot;)&lt;br /&gt;
	PF.form_search_by_keywords			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;search_by_keywords_title&amp;quot;)&lt;br /&gt;
	PF.search_by_keyword_tt				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;search_by_keyword_tt&amp;quot;)&lt;br /&gt;
	PF.search_type_field				= tostring(L(lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_field&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
	PF.search_type_value				= tostring(L(lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_value&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_keywords				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;keywords_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_keywords_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_summary				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;summary_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_summary_tooltip				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;summary_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_quotes					= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;quotes_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_quotes_tooltip				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;quotes_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_references				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;references_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_references_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;references_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_justifications			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;justifications_form&amp;quot;)&lt;br /&gt;
	PF.edit_justifications_tooltip		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justifications_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_objections				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;objections_form&amp;quot;)&lt;br /&gt;
	PF.edit_objections_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objections_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_new_arg_title				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_title&amp;quot;)&lt;br /&gt;
	PF.arg_new_title_field_base			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;arg_new_title_field_base&amp;quot;)&lt;br /&gt;
	PF.justification_add_label			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justification_add_label&amp;quot;)&lt;br /&gt;
	PF.justification_add_tt				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justification_add_tt&amp;quot;)&lt;br /&gt;
	PF.objection_add_label				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objection_add_label&amp;quot;)&lt;br /&gt;
	PF.objection_add_tt					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objection_add_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.summary							= L(lang, &amp;quot;text&amp;quot;, &amp;quot;summary_title&amp;quot;)&lt;br /&gt;
	PF.no_summary						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_summary_msg&amp;quot;)&lt;br /&gt;
	PF.quotes							= L(lang, &amp;quot;text&amp;quot;, &amp;quot;quotes_title&amp;quot;)&lt;br /&gt;
	PF.no_quotes						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_quotes_msg&amp;quot;)&lt;br /&gt;
	PF.references						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;references_title&amp;quot;)&lt;br /&gt;
	PF.no_references					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_references_msg&amp;quot;)&lt;br /&gt;
	PF.justifications					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;justifications_title&amp;quot;)&lt;br /&gt;
	PF.no_justifications				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_justifications_msg&amp;quot;)&lt;br /&gt;
	PF.no_justifications_short			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_justifications_short_msg&amp;quot;)&lt;br /&gt;
	PF.objections						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;objections_title&amp;quot;)&lt;br /&gt;
	PF.no_objections					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_objections_msg&amp;quot;)&lt;br /&gt;
	PF.no_objections_short				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;none_objections_short_msg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_detailed_debate		= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;detailed_debate_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_detailed_debate_tooltip		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;detailed_debate_edit_tt&amp;quot;)&lt;br /&gt;
	PF.detailed_debate					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;detailed_debate_title&amp;quot;)&lt;br /&gt;
	PF.detailed_debate_label			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;detailed_debate_label_text&amp;quot;)&lt;br /&gt;
	PF.arg_is_debate					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;arg_is_debate_msg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_sections				= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;sections_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_sections_tooltip			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;sections_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.form_edit_interlanguage			= L(lang, &amp;quot;forms&amp;quot;, &amp;quot;interlanguage_edit_title&amp;quot;)&lt;br /&gt;
	PF.edit_interlanguage_tooltip		= L(lang, &amp;quot;text&amp;quot;, &amp;quot;interlanguage_edit_tt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.edit								= L(lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot;)&lt;br /&gt;
	PF.rename_link_text					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;rename_link_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.type_justification				= L(lang, &amp;quot;params&amp;quot;, &amp;quot;justification_type_label&amp;quot;)&lt;br /&gt;
	PF.type_objection					= L(lang, &amp;quot;params&amp;quot;, &amp;quot;objection_type_label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.unknown_author					= L( lang, &amp;quot;text&amp;quot;, &amp;quot;unknown_author&amp;quot; )&lt;br /&gt;
	PF.more_quotes_button				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;more_quotes_button&amp;quot;)&lt;br /&gt;
	PF.more_quotes_note					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;more_quotes_note&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.parent_debates_title_1			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_debates_title_1&amp;quot;)&lt;br /&gt;
	PF.parent_debates_title_n			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;parent_debates_title_n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	PF.cat_arguments					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;arguments&amp;quot;)&lt;br /&gt;
	PF.cat_no_keywords					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_summary					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;summary_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_quotes					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;quotes_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_references				= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;references_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_justifications			= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;justifications_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_objections				= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;objections_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_sections					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;sections_missing&amp;quot;)&lt;br /&gt;
	PF.cat_no_content					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;content_missing&amp;quot;)&lt;br /&gt;
	PF.cat_has_detailed_debate			= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;has_detailed_debate&amp;quot;)&lt;br /&gt;
	PF.cat_no_authors					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;authors_missing&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	props “contenu”&lt;br /&gt;
	PF.prop_arg_name					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_page_name&amp;quot;)&lt;br /&gt;
	PF.prop_arg_number					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_number&amp;quot;)&lt;br /&gt;
	PF.prop_argument_map				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;argument_map&amp;quot;)&lt;br /&gt;
	PF.prop_justif_list					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;justif_list&amp;quot;)&lt;br /&gt;
	PF.prop_obj_list					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;obj_list&amp;quot;)&lt;br /&gt;
	PF.prop_keyword						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;keyword&amp;quot;)&lt;br /&gt;
	PF.prop_detailed_debate				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;detailed_debate&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	props refs (depuis Références, pas depuis citations)&lt;br /&gt;
	PF.prop_author						= L( lang, &amp;quot;props&amp;quot;, &amp;quot;author&amp;quot; )&lt;br /&gt;
	PF.prop_article_name				= L( lang, &amp;quot;props&amp;quot;, &amp;quot;article_name&amp;quot; )&lt;br /&gt;
	PF.prop_work_name					= L( lang, &amp;quot;props&amp;quot;, &amp;quot;work_name&amp;quot; )&lt;br /&gt;
	PF.prop_publishing_house			= L( lang, &amp;quot;props&amp;quot;, &amp;quot;publishing_house&amp;quot; )&lt;br /&gt;
	PF.prop_place_of_publication		= L( lang, &amp;quot;props&amp;quot;, &amp;quot;place_of_publication&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	props “ask/parents/breadcrumb”&lt;br /&gt;
	PF.prop_arg_pro						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_pro&amp;quot;)&lt;br /&gt;
	PF.prop_arg_con						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;arg_con&amp;quot;)&lt;br /&gt;
	PF.prop_justif						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;justif&amp;quot;)&lt;br /&gt;
	PF.prop_obj							= L(lang, &amp;quot;props&amp;quot;, &amp;quot;obj&amp;quot;)&lt;br /&gt;
	PF.prop_breadcrumb					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;breadcrumb&amp;quot;)&lt;br /&gt;
	PF.prop_debate_name					= L(lang, &amp;quot;props&amp;quot;, &amp;quot;debate_name&amp;quot;)&lt;br /&gt;
	PF.prop_parent_debate				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;parent_debate&amp;quot;)&lt;br /&gt;
	PF.prop_parent_argument				= L(lang, &amp;quot;props&amp;quot;, &amp;quot;parent_argument&amp;quot;)&lt;br /&gt;
	PF.prop_section						= L(lang, &amp;quot;props&amp;quot;, &amp;quot;section&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	--	INITIALIZATION&lt;br /&gt;
	PF.cat_initialized					= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;initialized&amp;quot;)&lt;br /&gt;
	PF.cat_uninitialized				= L(lang, &amp;quot;categories&amp;quot;, &amp;quot;uninitialized&amp;quot;)&lt;br /&gt;
	PF.init_warning_title				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_warning_title&amp;quot;)&lt;br /&gt;
	PF.init_warning_intro				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_warning_intro&amp;quot;)&lt;br /&gt;
	PF.init_yes_finish_label			= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_yes_finish_label&amp;quot;)&lt;br /&gt;
	PF.init_yes_tt						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_yes_tt&amp;quot;)&lt;br /&gt;
	PF.init_ok_text						= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_ok_text&amp;quot;)&lt;br /&gt;
	PF.init_no_rename_label				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_no_rename_label&amp;quot;)&lt;br /&gt;
	PF.init_summary_pro					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_pro&amp;quot;)&lt;br /&gt;
	PF.init_summary_con					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_con&amp;quot;)&lt;br /&gt;
	PF.init_summary_justif				= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_justif&amp;quot;)&lt;br /&gt;
	PF.init_summary_obj					= L(lang, &amp;quot;text&amp;quot;, &amp;quot;init_summary_obj&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local q = args[&amp;quot;quotes&amp;quot;]&lt;br /&gt;
		if type(q) == &amp;quot;string&amp;quot; and q ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local ok, r = pcall(F.preprocess, F, q)&lt;br /&gt;
			if ok and type(r) == &amp;quot;string&amp;quot; then&lt;br /&gt;
				args[&amp;quot;_quotes_wikitext&amp;quot;] = r&lt;br /&gt;
				args[&amp;quot;quotes&amp;quot;] = wkRenderQuotesFromSerialized( r, pv, lang, cats, PF )&lt;br /&gt;
			else&lt;br /&gt;
				args[&amp;quot;_quotes_wikitext&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
				args[&amp;quot;quotes&amp;quot;] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hasResume		= args[&amp;quot;summary&amp;quot;] ~= nil&lt;br /&gt;
	local hasQuotes	= args[&amp;quot;quotes&amp;quot;] ~= nil&lt;br /&gt;
	local hasRefs		= (args[&amp;quot;bibliography&amp;quot;] ~= nil) or (args[&amp;quot;webliography&amp;quot;] ~= nil) or (args[&amp;quot;videography&amp;quot;] ~= nil)&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;name&amp;quot;] then&lt;br /&gt;
		table_insert(pieces, F:preprocess(&amp;quot;{{SHORTDESC: &amp;quot; .. args[&amp;quot;name&amp;quot;] .. &amp;quot;}}&amp;quot;))&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;has_alt_name&amp;quot; ) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_arguments .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderTitleWarnings(pv, cats, lang))&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local titleLookup	= buildBannerLabelLookup( lang, TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
		local argLookup		= buildBannerLabelLookup( lang, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
		local out = {}&lt;br /&gt;
&lt;br /&gt;
		if args[ &amp;quot;title-warnings&amp;quot; ] then&lt;br /&gt;
			table_insert( out, renderBannersFromArgList( args[ &amp;quot;title-warnings&amp;quot; ], titleLookup, pv, lang, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if args[ &amp;quot;argument-warnings&amp;quot; ] then&lt;br /&gt;
			table_insert( out, renderBannersFromArgList( args[ &amp;quot;argument-warnings&amp;quot; ], argLookup, pv, lang, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #out &amp;gt; 0 then&lt;br /&gt;
			table_insert( pieces, table_concat( out ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local maps = computeArgumentMapsFromData(args)&lt;br /&gt;
&lt;br /&gt;
	ensureBreadcrumbSelection(pv, cache, cats, lang, PF)&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderDebateParentsBoxes(pv, cats, lang, cache, PF))&lt;br /&gt;
	table_insert(pieces, renderArgumentParentsBoxes(pv, cats, lang, cache, PF))&lt;br /&gt;
	table_insert(pieces, renderInitializationBlock(args, pv, cats, lang, cache, PF, maps))&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderKeywords(args, pv, cats, lang, PF))&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderSummary(args, pv, cats, lang, PF))&lt;br /&gt;
	table_insert(pieces, renderQuotes(args, pv, cats, lang, PF))&lt;br /&gt;
&lt;br /&gt;
	local detailed = renderDebateDetailed(args, pv, cats, lang, PF)&lt;br /&gt;
	if detailed ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(pieces, detailed)&lt;br /&gt;
	else&lt;br /&gt;
		local out = {}&lt;br /&gt;
&lt;br /&gt;
		local editRefs = addDataEditLink(&lt;br /&gt;
			PF.form_edit_references,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_references_tooltip&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-bibliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. PF.references&lt;br /&gt;
			.. editRefs .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local refsHtml = wkRenderReferencesFromRaw( rawB, rawW, rawV, pv, lang, cats, PF, nil, args )&lt;br /&gt;
&lt;br /&gt;
			if refsHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert( out, &#039;&amp;lt;ul class=&amp;quot;references-argument&amp;quot;&amp;gt;&#039; .. refsHtml .. &#039;&amp;lt;/ul&amp;gt;&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_references .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
				table_insert( cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_references .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local justifItems = (maps.justif and maps.justif.items) or {}&lt;br /&gt;
		local objItems    = (maps.obj and maps.obj.items) or {}&lt;br /&gt;
&lt;br /&gt;
		--	Justifications&lt;br /&gt;
		local editJust = addDataEditLink(&lt;br /&gt;
			PF.form_edit_justifications,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_justifications_tooltip&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. PF.justifications&lt;br /&gt;
			.. editJust .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local raw = args[ &amp;quot;justification-warnings&amp;quot; ]&lt;br /&gt;
		raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lookup = buildSummaryLabelLookup( lang, JUSTIFICATION_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
			for _, x in ipairs( splitCSV( raw, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				local key = resolveKeyFromLookup( x, lookup, JUSTIFICATION_WARNING_BANNER_KEYS )&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(&lt;br /&gt;
						out,&lt;br /&gt;
						renderSubsectionBanner(&lt;br /&gt;
							pv,&lt;br /&gt;
							lang,&lt;br /&gt;
							key,&lt;br /&gt;
							{&lt;br /&gt;
								reorg	= true,&lt;br /&gt;
								form	= PF.form_edit_justifications,&lt;br /&gt;
								tooltip	= PF.edit_justifications_tooltip&lt;br /&gt;
							},&lt;br /&gt;
							cats&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
		if #justifItems &amp;gt; 0 then&lt;br /&gt;
			local ulJ = html_create(&amp;quot;ul&amp;quot;):addClass(&amp;quot;argument-list is-pro&amp;quot;)&lt;br /&gt;
			local lis = {}&lt;br /&gt;
			for i, it in ipairs(justifItems) do&lt;br /&gt;
				table_insert(lis, wkRenderArgumentLi(pv, lang, it, &amp;quot;justif&amp;quot;, i, cats))&lt;br /&gt;
			end&lt;br /&gt;
			ulJ:wikitext(table_concat(lis, &amp;quot;\n&amp;quot;))&lt;br /&gt;
			table_insert(out, tostring(ulJ))&lt;br /&gt;
		else&lt;br /&gt;
			table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_justifications .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_justifications .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local baseField = tostring( PF.arg_new_title_field_base or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local sideLabel = tostring( PF.side_pro_word or &amp;quot;pour&amp;quot; )&lt;br /&gt;
			local label = tostring( PF.justification_add_label or &amp;quot;&amp;quot; )&lt;br /&gt;
			local tooltip = string_format( PF.justification_add_tt, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
			local rqForm = tostring( PF.form_new_arg_title or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local rqQuery = {}&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ] = tostring( PF.type_justification or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]   = tostring( pv.pageId or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ &amp;quot;_run&amp;quot; ]                = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			table_insert( out,&lt;br /&gt;
				&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. wkRunQueryHtmlTagButton( rqForm, label, tooltip, rqQuery )&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		--	Objections&lt;br /&gt;
		local editObj = addDataEditLink(&lt;br /&gt;
			PF.form_edit_objections,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			&amp;quot;&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
			PF.edit_objections_tooltip&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(out,&lt;br /&gt;
			listBreaker()&lt;br /&gt;
			.. &#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. PF.objections&lt;br /&gt;
			.. editObj .. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local raw = args[ &amp;quot;objection-warnings&amp;quot; ]&lt;br /&gt;
		raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local lookup = buildSummaryLabelLookup( lang, OBJECTION_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
			for _, x in ipairs( splitCSV( raw, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
				local key = resolveKeyFromLookup( x, lookup, OBJECTION_WARNING_BANNER_KEYS )&lt;br /&gt;
				if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert(&lt;br /&gt;
						out,&lt;br /&gt;
						renderSubsectionBanner(&lt;br /&gt;
							pv,&lt;br /&gt;
							lang,&lt;br /&gt;
							key,&lt;br /&gt;
							{&lt;br /&gt;
								reorg	= true,&lt;br /&gt;
								form	= PF.form_edit_objections,&lt;br /&gt;
								tooltip	= PF.edit_objections_tooltip&lt;br /&gt;
							},&lt;br /&gt;
							cats&lt;br /&gt;
						)&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
		if #objItems &amp;gt; 0 then&lt;br /&gt;
			local ulO = html_create(&amp;quot;ul&amp;quot;):addClass(&amp;quot;argument-list is-con&amp;quot;)&lt;br /&gt;
			local lis = {}&lt;br /&gt;
			for i, it in ipairs(objItems) do&lt;br /&gt;
				table_insert(lis, wkRenderArgumentLi(pv, lang, it, &amp;quot;obj&amp;quot;, i, cats))&lt;br /&gt;
			end&lt;br /&gt;
			ulO:wikitext(table_concat(lis, &amp;quot;\n&amp;quot;))&lt;br /&gt;
			table_insert(out, tostring(ulO))&lt;br /&gt;
		else&lt;br /&gt;
			table_insert(out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. PF.no_objections .. &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
			table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_objections .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		do&lt;br /&gt;
			local baseField = tostring( PF.arg_new_title_field_base or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local label = tostring( PF.objection_add_label or &amp;quot;&amp;quot; )&lt;br /&gt;
			local tooltip = string_format( PF.objection_add_tt, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
			local rqForm = tostring( PF.form_new_arg_title or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
			local rqQuery = {}&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ] = tostring( PF.type_objection or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]   = tostring( pv.pageId or &amp;quot;&amp;quot; )&lt;br /&gt;
			rqQuery[ &amp;quot;_run&amp;quot; ]                = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
			table_insert( out,&lt;br /&gt;
				&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. wkRunQueryHtmlTagButton( rqForm, label, tooltip, rqQuery )&lt;br /&gt;
				.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		--	Inject rendu&lt;br /&gt;
		table_insert(pieces, table_concat(out))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderDebatesParentsBottom(pv, lang, cache, PF))&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] then&lt;br /&gt;
		table_insert(pieces, args[&amp;quot;interlanguage&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not args[&amp;quot;creation-date&amp;quot;] or t_trim(args[&amp;quot;creation-date&amp;quot;]) == &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. L(lang, &amp;quot;categories&amp;quot;, &amp;quot;creation_date_missing&amp;quot;) .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, renderRubriques(args, cats, lang, PF))&lt;br /&gt;
&lt;br /&gt;
	if (not hasResume) and (not hasQuotes) and (not hasRefs) then&lt;br /&gt;
		table_insert(cats, &amp;quot;[[Category:&amp;quot; .. PF.cat_no_content .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	setSemanticData(args, pv, lang, cache, PF, maps, rawB, rawW, rawV)&lt;br /&gt;
&lt;br /&gt;
	renderFullSEO( args, pv, lang )&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, table_concat(cats, &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces,&lt;br /&gt;
		&#039;&amp;lt;span id=&amp;quot;bouton-renommer&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;[[Special:MovePage/&#039;&lt;br /&gt;
		.. pv.encoded .. &#039;| &#039; .. PF.rename_link_text .. &#039;]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert(pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-categories&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataEditLink(PF.form_edit_sections, pv.rawTitle, PF.edit, PF.edit_sections_tooltip)&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] and t_trim( tostring( args[&amp;quot;interlanguage&amp;quot;] or &amp;quot;&amp;quot; ) ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces,&lt;br /&gt;
			&#039;&amp;lt;span id=&amp;quot;bouton-modifier-interlangue&amp;quot; style=&amp;quot;display: none;&amp;quot;&#039;&lt;br /&gt;
			.. &#039; data-wk-tooltip=&amp;quot;&#039; .. escapeAttr( PF.edit_interlanguage_tooltip ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. addDataEditLink( PF.form_edit_interlanguage, pv.rawTitle, PF.edit, PF.edit_interlanguage_tooltip )&lt;br /&gt;
			.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderArgumentSchemaJSONLD( args, pv, lang, cache, PF, maps ) )&lt;br /&gt;
&lt;br /&gt;
	return table_concat(pieces, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Common.css&amp;diff=10555</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Common.css&amp;diff=10555"/>
		<updated>2026-03-23T23:34:57Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Cette page contrôle l&#039;apparence pour toutes les skins. */&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * INTERFACE&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
/* Pour utiliser la police d&#039;écriture Nunito Sans */&lt;br /&gt;
@import url(&#039;https://fonts.googleapis.com/css2?family=Nunito+Sans&amp;amp;display=swap&#039;);&lt;br /&gt;
body, .mw-body h1, .mw-body-content h1, .mw-body-content h2 {&lt;br /&gt;
	font-family: &#039;Nunito Sans&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
/* Transferts août */&lt;br /&gt;
/* Pour masquer la dernière date de modification et la taille des pages affichées lors d&#039;une recherche */&lt;br /&gt;
.mw-search-result-data {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
/* Masquer &amp;quot;Politique de confidentialité&amp;quot;, &amp;quot;Avertissements&amp;quot; et &amp;quot;Version mobile&amp;quot; dans le pied de page */&lt;br /&gt;
#footer-places-privacy, #footer-places-disclaimers {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * PAGE D&#039;ACCUEIL&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
/* Pour le format vignettes de la page d&#039;accueil */&lt;br /&gt;
.grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));&lt;br /&gt;
	grid-gap: 1.5em;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	text-align: center;&lt;br /&gt;
}&lt;br /&gt;
.grid .card {&lt;br /&gt;
	border: solid 2px var(--color-emphasized,#101418);&lt;br /&gt;
	border-radius: 20px;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding: 2.5rem 1.5rem 1.5rem 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
.grid .card img {&lt;br /&gt;
	height: 70px;&lt;br /&gt;
}&lt;br /&gt;
.grid .card h2 {&lt;br /&gt;
	margin-top: 1.5em !important;&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
	border: none;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.grid .card h2 a {&lt;br /&gt;
	color: inherit !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * PAGES DE DÉBATS ET D&#039;ARGUMENTS&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
.carte-vide {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* BOUTONS DE MODIFICATION */&lt;br /&gt;
.bouton-modifier {&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	padding-left: 4px;&lt;br /&gt;
}&lt;br /&gt;
.bouton-modifier a {&lt;br /&gt;
	display: inline-block !important;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	background-image: linear-gradient(transparent, transparent), url(&amp;quot;/w/images/fr/b/ba/Modifier.svg&amp;quot;);&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	font-size: 0;&lt;br /&gt;
}&lt;br /&gt;
.bouton-modifier a:active {&lt;br /&gt;
	outline: 2px solid #3366cc;&lt;br /&gt;
}&lt;br /&gt;
.bouton-modifier a:hover {&lt;br /&gt;
	transform: scale(1.03);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.carte-debat-detaille {&lt;br /&gt;
	color: var(--color-emphasized,#101418);&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	padding: 5px;&lt;br /&gt;
}&lt;br /&gt;
.titre-debat-detaille {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: 115%;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	margin-bottom: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
.aucun-contenu, .aucun-argument {&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	margin-bottom: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
.aucune-reference {&lt;br /&gt;
	margin: 0.25em 0.5em 0 0.5em;&lt;br /&gt;
	font-size: 90%;&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
h4.titre-references {&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding-left: calc( var(--wd-icon-width) + var(--wd-icon-gap) );&lt;br /&gt;
	--wd-icon-width: 17px;&lt;br /&gt;
	--wd-icon-height: 17px;&lt;br /&gt;
	--wd-icon-gap: 0.45em;&lt;br /&gt;
}&lt;br /&gt;
h4.titre-references:first-of-type {&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bandeau-en-tete {&lt;br /&gt;
	padding-bottom: .5em;&lt;br /&gt;
	margin: .5em 0;&lt;br /&gt;
	background-color: var(--background-color-base, #fff);&lt;br /&gt;
	font-style: italic;&lt;br /&gt;
	border-bottom: 1px var(--border-color-muted, #eaecf0) solid;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding-left: calc( var(--wd-arg-icon-size) + var(--wd-arg-icon-gap) );&lt;br /&gt;
	--wd-arg-icon-size: 16px;&lt;br /&gt;
	--wd-icon-width: 16px;&lt;br /&gt;
	--wd-icon-height: 16px;&lt;br /&gt;
}&lt;br /&gt;
.boite-info {&lt;br /&gt;
	padding: 1em 1.5em;&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
blockquote {&lt;br /&gt;
	quotes: &amp;quot;&amp;quot; &amp;quot;&amp;quot;;&lt;br /&gt;
	font-family: &#039;Linux Libertine&#039;,&#039;Georgia&#039;,&#039;Times&#039;,serif;&lt;br /&gt;
}&lt;br /&gt;
blockquote .bandeau-avertissement {&lt;br /&gt;
	font-size: 78% !important;&lt;br /&gt;
	font-family: &#039;Nunito Sans&#039;, sans-serif;&lt;br /&gt;
}&lt;br /&gt;
.reference-citation {&lt;br /&gt;
	text-align: right;&lt;br /&gt;
	font-family: &#039;Linux Libertine&#039;,&#039;Georgia&#039;,&#039;Times&#039;,serif;&lt;br /&gt;
}&lt;br /&gt;
.quotes-expandable-button {&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	color: var(--color-progressive,#36c);&lt;br /&gt;
}&lt;br /&gt;
.quotes-content-drop.show {&lt;br /&gt;
	display: inline;&lt;br /&gt;
}&lt;br /&gt;
.more-content-button {&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	color: var(--color-progressive,#36c);&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
.gallery.mw-gallery-traditional {&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
}&lt;br /&gt;
.interwikiextract br {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.resume-modifications {&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
	display: inline;&lt;br /&gt;
	margin-right: 1em;&lt;br /&gt;
	color: var(--color-progressive,#36c);&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
.resume-modifications:hover {&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
.latest-changes-button {&lt;br /&gt;
	font-size: x-small;&lt;br /&gt;
}&lt;br /&gt;
.question-FAQ {&lt;br /&gt;
	font-size: 84%;&lt;br /&gt;
	color: var(--color-subtle,#54595d);&lt;br /&gt;
	width: auto;&lt;br /&gt;
}&lt;br /&gt;
.masquer-externe a.external.text, .wk-btn a.external.text {&lt;br /&gt;
	background: none;&lt;br /&gt;
	padding-right: 0;&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * FONCTION DE SECTIONS DÉROULANTES (mw-collapsible-toggle amélioré)&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
/* Sections déroulantes — version minimale */&lt;br /&gt;
.fr-collapsible {&lt;br /&gt;
	overflow-anchor: none;&lt;br /&gt;
}&lt;br /&gt;
.fr-collapsible-toggle {&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	outline: 0;&lt;br /&gt;
}&lt;br /&gt;
.fr-collapsible-toggle:focus,&lt;br /&gt;
.fr-collapsible-toggle:hover {&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
/* Contenu (important : jamais display:none) */&lt;br /&gt;
.fr-collapsible .fr-collapsible-content {&lt;br /&gt;
	display: block !important;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	height: 0;&lt;br /&gt;
	opacity: 0;&lt;br /&gt;
	transition: height .22s ease, opacity .22s linear;&lt;br /&gt;
}&lt;br /&gt;
.fr-collapsible-toggle-expanded .fleche-deroulante img {&lt;br /&gt;
	transform: scaleY(-1);&lt;br /&gt;
}&lt;br /&gt;
.fr-expanded .fr-collapsible-content {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
/* Optionnel : masquer les libellés texte up/down selon l&#039;état */&lt;br /&gt;
.fr-collapsible-toggle-expanded span.up { display: none; }&lt;br /&gt;
.fr-collapsible-toggle-collapsed span.down { display: none; }&lt;br /&gt;
/* Accessibilité */&lt;br /&gt;
@media (prefers-reduced-motion: reduce) {&lt;br /&gt;
	.fr-collapsible .fr-collapsible-content {&lt;br /&gt;
		transition: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
.encadre-section-deroulante {&lt;br /&gt;
	border: 1px solid var(--border-color-base);&lt;br /&gt;
	border-radius: 5px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * AUTOÉVALUATIONS&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
.bouton-selectionne .oo-ui-buttonElement-button {&lt;br /&gt;
	border: 3px solid !important;&lt;br /&gt;
}&lt;br /&gt;
.bouton-non-selectionne .oo-ui-buttonElement-button {&lt;br /&gt;
	padding: 0.546875em 1em !important;&lt;br /&gt;
	border: 1px solid var(--color-progressive,#36c) !important;&lt;br /&gt;
	background-color: var(--color-progressive,#36c) !important;&lt;br /&gt;
	color: var(--background-color-base, #fff) !important;&lt;br /&gt;
	font-weight: bold !important;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * EXTENSIONS&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
/* Abusefilter */&lt;br /&gt;
.mw-abusefilter-diff-context, .mw-abusefilter-diff-multiline td { /* les longues lignes sans espace sont fréquentes */&lt;br /&gt;
	word-wrap: break-word;&lt;br /&gt;
	max-width: 40em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Masque un champ inutile dans Special:Nouvelles pages */&lt;br /&gt;
.mwe-pt-snippet {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pour masquer un champ dans Template Data */&lt;br /&gt;
.ve-ui-mwTemplatePage-description-extra {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Comments */&lt;br /&gt;
.c-delete a {&lt;br /&gt;
	color: var(--color-destructive,#d73333) !important;&lt;br /&gt;
}&lt;br /&gt;
.c-order-select select {&lt;br /&gt;
	border: 1px solid;&lt;br /&gt;
}&lt;br /&gt;
.c-ignored {&lt;br /&gt;
	border-color: var(--border-color-subtle,#c8ccd1);&lt;br /&gt;
}&lt;br /&gt;
/* Pour l&#039;extension Flow */&lt;br /&gt;
h2.flow-topic-title, h2.flow-board-header-title {&lt;br /&gt;
	margin-top : 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.flow-component.flow-board-page.flow-full-height-side-rail .flow-board-header::before {&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle,#f8f9fa);&lt;br /&gt;
	border: 1px solid var(--border-color-subtle, #a2a9b1);&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.flow-board-header * {&lt;br /&gt;
	color: var(--color-base,#202122) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * FORMULAIRES SÉMANTIQUES&lt;br /&gt;
\*/&lt;br /&gt;
.select2-match-entire {&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
/* Pour les champs de formulaire */&lt;br /&gt;
table.formtable th {&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
#pfForm textarea {&lt;br /&gt;
	font-size: 1em;&lt;br /&gt;
	line-height: 1.5em;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	width: 100% !important;&lt;br /&gt;
	resize: none;&lt;br /&gt;
	font-family: inherit;&lt;br /&gt;
}&lt;br /&gt;
/* Pour les cases à cocher des formulaires */&lt;br /&gt;
#pfForm input[type=&amp;quot;checkbox&amp;quot;] {&lt;br /&gt;
	margin-right: 0;&lt;br /&gt;
	margin-left: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
.checkboxLabel {&lt;br /&gt;
	font-size: 0.875em;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	margin-right: 1em !important;&lt;br /&gt;
	display: inline-flex !important;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
}&lt;br /&gt;
/* Pour les caractères des tokens */&lt;br /&gt;
li.select2-search-choice {&lt;br /&gt;
	font-size:0.875em;&lt;br /&gt;
}&lt;br /&gt;
/* Pour les champs de résumés et de citations des formulaires */&lt;br /&gt;
.champ-texte-formulaire {&lt;br /&gt;
	font-family: serif !important;&lt;br /&gt;
	font-size: 100% !important;&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
}&lt;br /&gt;
/* Boites de multi-instances dans les formulaires */&lt;br /&gt;
.multipleTemplateInstance {&lt;br /&gt;
	background-color: #f6f6f6;&lt;br /&gt;
	height: unset !important;&lt;br /&gt;
}&lt;br /&gt;
/* Pour enlever l&#039;opacité du bouton &amp;quot;Supprimer une instance&amp;quot; */&lt;br /&gt;
td.instanceRemove, td.instanceAddAbove {&lt;br /&gt;
	opacity: 100;&lt;br /&gt;
}&lt;br /&gt;
.tippy-tooltip.light-border-theme {&lt;br /&gt;
	max-width: 600px !important;&lt;br /&gt;
}&lt;br /&gt;
.tippy-content-container {&lt;br /&gt;
	max-height: none !important;&lt;br /&gt;
}&lt;br /&gt;
.tippy-header {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.logo-aide-parametre {&lt;br /&gt;
	background-image: url(&amp;quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjtJREFUeNrEl90rZHEYx88Z1Ma42JCX2dj2QlmlRUoujLjaKLlwsVIuJNn9ExSbi0GScoHEBW64keLGxW4zXCGUFSUvkYzduVjbmiWG2e/DQwcz5/zO2D2/pz7NnDPnPN/v/N4ftdR9qQhGDCgAxSAXvALx/NspOASrYB4sgguRpNECzySBelALsg2erebPTTAGhsEPvRdsBgkbwQpoFxDXRhZw8btNkRhIAJNggJs60nCAPjAFEkUNpIFZUKWX2ZmkKl+c0Te0vI0yMlLJOR1GBuifT4N8vWypL9QHomSm4Y1Rbyp5nDsxnAH6PsIP6kb+S/XJvUy7KtIlNHtGtbpaAzRYykWyLP8MPrl3dB4UHRfvwafHBpLBZ9EMXoi1bVwpvwO31x5fUBnavTYzOFtBinYdaAo3SsMFiXp8gUhnB421j6CFWiAW1CnWB2nGUQsUgddm36bpp42erWtlxmuqG9JJm1qgVJEXZTaeGrLinS3U6mRhOMiAXaKBeDKgSjRwsxD5Jer7yYBXooFjMrAm0cAaGXBLNOAmA3PUFBLEv9OWQgZ+gXEJBibAyd123GvxbPCz5v15YA90WWigG+w8PhF1ggULxJdAR6gj2TmoAfv/UfwAfABn4SqjXVABZkCG7j7qCUQiXnHX9Hp1wTrl/8fdscA5v4lWRjt8UHE9c3b4OQfl2jZbG/4BzaAQDAKfCWEqSPu5mm7mXCFDNVGe0zG6hAohkMPXMfzbJa9stK94wFe+Noy/AgwAS/d56gvLz80AAAAASUVORK5CYII=&amp;quot;);&lt;br /&gt;
	background-position: right;&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-size: 12px;&lt;br /&gt;
	padding-right: 17px;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
.champ-requis {&lt;br /&gt;
	background-image: url(//fr.wikidebates.org/w/images/fr/a/a9/Champ-requis.svg);&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: 5px;&lt;br /&gt;
	background-size: 13px;&lt;br /&gt;
	padding-right: 20px;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
/* Pour les messages d&#039;erreurs en haut de formulaire */&lt;br /&gt;
#form_error_header {&lt;br /&gt;
	margin: 1em 0 -0.85em 0 !important;&lt;br /&gt;
}&lt;br /&gt;
/* Pour agrandir le champ &amp;quot;Résumé des modifications&amp;quot; */&lt;br /&gt;
#wpSummary {&lt;br /&gt;
	max-width: none !important;&lt;br /&gt;
}&lt;br /&gt;
/* Pour masquer la recherche avancée dans le formulaire &amp;quot;Nouveau titre d&#039;argument&amp;quot; */&lt;br /&gt;
.page-Spécial_RunQuery_Nouveau_titre_d_argument .pf-runquery-formcontent,&lt;br /&gt;
.page-Special_RunQuery_New_argument_title .pf-runquery-formcontent,&lt;br /&gt;
.page-Spécial_RunQuery_Nouveau_titre_d_argument #ooui-1,&lt;br /&gt;
.page-Special_RunQuery_New_argument_title #ooui-1 {&lt;br /&gt;
	display: none !important;&lt;br /&gt;
}&lt;br /&gt;
.select2-dropdown {&lt;br /&gt;
	border-color: var(--border-color-base,#e7e7e7);&lt;br /&gt;
	border-radius: 1px;&lt;br /&gt;
}&lt;br /&gt;
.select2-dropdown, .ve-area-wrapper {&lt;br /&gt;
	background-color: var(--background-color-base, #fff);&lt;br /&gt;
}&lt;br /&gt;
#pfForm .createboxInput, #pfForm .mandatoryField, #pfForm textarea {&lt;br /&gt;
	border-color: var(--border-color-base,#e7e7e7);&lt;br /&gt;
}&lt;br /&gt;
#pfForm .multipleTemplateInstance, .action-formedit .select2-dropdown {&lt;br /&gt;
	background-color: var(--background-color-interactive);&lt;br /&gt;
}&lt;br /&gt;
#pfForm .formtable textarea, #pfForm .createboxInput, #pfForm .oo-ui-textInputWidget.oo-ui-widget-enabled .oo-ui-inputWidget-input, #pfForm .pfTokens, .select2-results__option, #pfForm .multipleTemplateInstance select, .ve-area-wrapper .oo-ui-toolbar-bar {&lt;br /&gt;
	background-color: var(--background-color-base, #fff);&lt;br /&gt;
}&lt;br /&gt;
#pfForm .select2-container--default .select2-selection--multiple .select2-selection__choice {&lt;br /&gt;
	background-color: var(--background-color-neutral);&lt;br /&gt;
	border: none;&lt;br /&gt;
}&lt;br /&gt;
.action-formedit .select2-container--default .select2-results__option[aria-selected=&amp;quot;true&amp;quot;] {&lt;br /&gt;
	background-color: var(--background-color-disabled);&lt;br /&gt;
}&lt;br /&gt;
#pfForm select {&lt;br /&gt;
	min-height: 3em !important;&lt;br /&gt;
}&lt;br /&gt;
#pfForm .oo-ui-checkboxInputWidget {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	padding: 0.5em 0;&lt;br /&gt;
}&lt;br /&gt;
/* Exception pour les boutons &amp;quot;Modification mineure&amp;quot; et &amp;quot;Suivre cette page&amp;quot; */&lt;br /&gt;
#pfForm label[title] &amp;gt; .oo-ui-checkboxInputWidget {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
span#wpMinoredit, span#wpWatchthis {&lt;br /&gt;
	margin-right: 6px !important;&lt;br /&gt;
}&lt;br /&gt;
.barre-arborescence {&lt;br /&gt;
	color: var(--color-subtle,#54595d);&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
#pfForm .loadingImage {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
#pfForm .editOptions .oo-ui-layout.oo-ui-labelElement.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-header {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: 115%;&lt;br /&gt;
}&lt;br /&gt;
#formName {&lt;br /&gt;
	margin-top: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
.logo-aide img {&lt;br /&gt;
	margin-left: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * MODE SOMBRE&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
	:root.skin-theme-clientpref-os {&lt;br /&gt;
		/* Spotify-like */&lt;br /&gt;
		--background-color-base: #121212;&lt;br /&gt;
		--background-color-neutral-subtle: #0d0d0d;&lt;br /&gt;
		/* Bordures allégées */&lt;br /&gt;
		--border-color-base: #363431;&lt;br /&gt;
		--border-color-subtle: #363431;&lt;br /&gt;
		--border-color-muted: #363431;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	:root.skin-theme-clientpref-os .vector-page-titlebar::after {&lt;br /&gt;
		background-color: var(--border-color-subtle, #c8ccd1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:root.skin-theme-clientpref-os img.mw-file-element,&lt;br /&gt;
	:root.skin-theme-clientpref-os .bouton-modifier,&lt;br /&gt;
	:root.skin-theme-clientpref-os img.picto-dropdown,&lt;br /&gt;
	:root.skin-theme-clientpref-os .flow-board-header .mw-ui-icon-speechBubbles::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .mw-ui-icon-before::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .mw-ui-icon-close::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .wk-icon-before::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .wk-icon-after::after {&lt;br /&gt;
		filter: invert(1) hue-rotate(180deg);&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-theme-clientpref-os .mw-no-invert img,&lt;br /&gt;
	:root.skin-theme-clientpref-os .mw-no-invert::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .gallery img,&lt;br /&gt;
	:root.skin-theme-clientpref-os .is-con .wk-icon-argument::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .is-con.wk-icon-argument::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .is-against.wk-icon-argument::before {&lt;br /&gt;
		filter: none !important;&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-theme-clientpref-os .mw-notification,&lt;br /&gt;
	:root.skin-theme-clientpref-os .hover-wrapper {&lt;br /&gt;
		box-shadow: none !important;&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-theme-clientpref-os .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;top&amp;quot;] .tippy-arrow::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;top&amp;quot;] .tippy-arrow::after {&lt;br /&gt;
		border-top-color: var(--border-color-subtle, #a2a9b1) !important;&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-theme-clientpref-os .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;bottom&amp;quot;] .tippy-arrow::before,&lt;br /&gt;
	:root.skin-theme-clientpref-os .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;bottom&amp;quot;] .tippy-arrow::after {&lt;br /&gt;
		border-bottom-color: var(--border-color-subtle, #a2a9b1) !important;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	:root.skin-theme-clientpref-os:root {&lt;br /&gt;
		--border-color-base: #363431;&lt;br /&gt;
		--border-color-subtle: #363431;&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-theme-clientpref-os .hover-wrapper,&lt;br /&gt;
	:root.skin-theme-clientpref-os .bandeau-rouge {&lt;br /&gt;
		background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
	}&lt;br /&gt;
	:root.skin-theme-clientpref-os .mw-ui-button.mw-ui-quiet:hover {&lt;br /&gt;
		background-color: var(--background-color-interactive);&lt;br /&gt;
	}&lt;br /&gt;
	html.skin-theme-clientpref-os img.mw-file-element {&lt;br /&gt;
		background: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:root.skin-theme-clientpref-night {&lt;br /&gt;
	/* Spotify-like */&lt;br /&gt;
	/*	Fond du contenu (page) */&lt;br /&gt;
	--background-color-base: #121212;&lt;br /&gt;
	/*	Surfaces « neutres » (menus, barres latérales, TOC, panneaux) */&lt;br /&gt;
	--background-color-neutral-subtle: #0d0d0d;&lt;br /&gt;
	/* Bordures allégées */&lt;br /&gt;
	--border-color-base: #363431;&lt;br /&gt;
	--border-color-subtle: #363431;&lt;br /&gt;
	--border-color-muted: #363431;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
:root.skin-theme-clientpref-night img.mw-file-element,&lt;br /&gt;
:root.skin-theme-clientpref-night .bouton-modifier,&lt;br /&gt;
:root.skin-theme-clientpref-night img.picto-dropdown,&lt;br /&gt;
:root.skin-theme-clientpref-night .flow-board-header .mw-ui-icon-speechBubbles::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .mw-ui-icon-before::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .mw-ui-icon-close::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .wk-icon-before::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .wk-icon-after::after {&lt;br /&gt;
	filter: invert(1) hue-rotate(180deg);&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night .mw-no-invert img,&lt;br /&gt;
:root.skin-theme-clientpref-night .mw-no-invert::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .gallery img,&lt;br /&gt;
:root.skin-theme-clientpref-night .is-con .wk-icon-argument::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .is-con.wk-icon-argument::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .is-against.wk-icon-argument::before {&lt;br /&gt;
	filter: none !important;&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night .mw-notification,&lt;br /&gt;
:root.skin-theme-clientpref-night .hover-wrapper {&lt;br /&gt;
	box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;top&amp;quot;] .tippy-arrow::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;top&amp;quot;] .tippy-arrow::after {&lt;br /&gt;
	border-top-color: var(--border-color-subtle, #a2a9b1) !important;&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;bottom&amp;quot;] .tippy-arrow::before,&lt;br /&gt;
:root.skin-theme-clientpref-night .tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;bottom&amp;quot;] .tippy-arrow::after {&lt;br /&gt;
	border-bottom-color: var(--border-color-subtle, #a2a9b1) !important;&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night .hover-wrapper,&lt;br /&gt;
:root.skin-theme-clientpref-night .bandeau-rouge {&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night .mw-ui-button.mw-ui-quiet:hover {&lt;br /&gt;
	background-color: var(--background-color-interactive);&lt;br /&gt;
}&lt;br /&gt;
:root.skin-theme-clientpref-night img.mw-file-element {&lt;br /&gt;
	background: none !important;&lt;br /&gt;
}&lt;br /&gt;
#wpRemember {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*\&lt;br /&gt;
* * MODE CLAIR&lt;br /&gt;
\*/&lt;br /&gt;
&lt;br /&gt;
.c-item,&lt;br /&gt;
.mw-footer {&lt;br /&gt;
	border-color: var(--border-color-subtle, #c8ccd1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Pour la couleur du texte */&lt;br /&gt;
.smw-column-header,&lt;br /&gt;
.c-form-title {&lt;br /&gt;
	color: var(--color-emphasized,#101418);&lt;br /&gt;
}&lt;br /&gt;
.smw-property-page-results .header-row &amp;gt; .header-title {&lt;br /&gt;
	border-bottom-color: var(--border-color-muted,#dadde3);&lt;br /&gt;
	color: var(--color-emphasized,#101418);&lt;br /&gt;
}&lt;br /&gt;
.smw-property-page-results .header-title,&lt;br /&gt;
.smw-table-row header-row {&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
}&lt;br /&gt;
.smw-property-page-results .value-row:hover {&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle);&lt;br /&gt;
}&lt;br /&gt;
#mw-pages .smw-ui-pagination a, .smw-ui-input-filter {&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle);&lt;br /&gt;
	border-color: var(--border-color-muted,#dadde3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pour la couleur de fond des bandeaux */&lt;br /&gt;
.bandeau,&lt;br /&gt;
.boite-info {&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
}&lt;br /&gt;
.bandeau-titre {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
.minibandeaux {&lt;br /&gt;
	margin: 0.25em 0 0.5em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pour la couleur des bordures */&lt;br /&gt;
.bandeau-section,&lt;br /&gt;
.hover-wrapper {&lt;br /&gt;
	background-color: var(--background-color-base, #fff);&lt;br /&gt;
	border-color: var(--border-color-muted,#dadde3) !important;&lt;br /&gt;
}&lt;br /&gt;
.bandeau .bandeau-section {&lt;br /&gt;
	border-color: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
.bandeau-avertissement {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	border-left: 4px solid #f82;&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle,#f8f9fa);&lt;br /&gt;
	padding: 0.25em;&lt;br /&gt;
	margin-bottom: 4px;&lt;br /&gt;
}&lt;br /&gt;
.bandeau-debat-detaille {&lt;br /&gt;
	border-style: solid;&lt;br /&gt;
	border-width: 0 0 0 6px;&lt;br /&gt;
	margin: 1em 0;&lt;br /&gt;
	padding: 2px 10px;&lt;br /&gt;
	border-color: var(--color-side, #02a68f);&lt;br /&gt;
}&lt;br /&gt;
.encart-debat-detaille {&lt;br /&gt;
	color: var(--color-base,#202122);&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
	font-size: 95%;&lt;br /&gt;
	padding: 1.5%;&lt;br /&gt;
}&lt;br /&gt;
.titre-debat-detaille {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: 140%;&lt;br /&gt;
	line-height: 1.25;&lt;br /&gt;
	margin-bottom: 0.25em;&lt;br /&gt;
}&lt;br /&gt;
/* Pour les bandeaux d&#039;avertissement */&lt;br /&gt;
.warningbox.cdx-message.cdx-message--block.cdx-message--warning.navigation-not-searchable {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pour les boutons */&lt;br /&gt;
.site-button,&lt;br /&gt;
.c-order-select select {&lt;br /&gt;
	border-color: var(--border-color-subtle, #a2a9b1) !important;&lt;br /&gt;
	background-color: var(--background-color-interactive-subtle,#f8f9fa);&lt;br /&gt;
	color: var(--color-base,#202122);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pour l&#039;autocomplétion de Spécial:Parcourir */&lt;br /&gt;
.autocomplete-suggestions {&lt;br /&gt;
	background: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
	color: var(--color-base,#202122);&lt;br /&gt;
	border-color: var(--border-color-subtle, #363431);&lt;br /&gt;
	box-shadow: none;&lt;br /&gt;
}&lt;br /&gt;
.autocomplete-suggestion {&lt;br /&gt;
	border-bottom-color: var(--border-color-subtle, #363431);&lt;br /&gt;
}&lt;br /&gt;
.autocomplete-selected {&lt;br /&gt;
	background: var(--background-color-base, #121212);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.tippy-box[data-placement^=&amp;quot;bottom&amp;quot;] &amp;gt; .tippy-arrow::before {&lt;br /&gt;
	top: -9px;&lt;br /&gt;
	left: 2px;&lt;br /&gt;
}&lt;br /&gt;
.tippy-box[data-placement^=&amp;quot;top&amp;quot;] &amp;gt; .tippy-arrow::before {&lt;br /&gt;
	top: 16px;&lt;br /&gt;
	left: 2px;&lt;br /&gt;
}&lt;br /&gt;
.tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;bottom&amp;quot;] &amp;gt; .tippy-arrow::after,&lt;br /&gt;
.tippy-box[data-theme~=&amp;quot;light-border&amp;quot;][data-placement^=&amp;quot;top&amp;quot;] &amp;gt; .tippy-arrow::after {&lt;br /&gt;
	display: none;&lt;br /&gt;
}&lt;br /&gt;
.minerva__tab-container .minerva__tab.new .minerva__tab-text {&lt;br /&gt;
	color: var(--color-subtle,#54595d);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Formulaires sémantiques */&lt;br /&gt;
#pfForm .pfTokens {&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	min-height: 3em;&lt;br /&gt;
}&lt;br /&gt;
.select2-selection__rendered {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.select2-container .select2-search--inline .select2-search__field,&lt;br /&gt;
li.select2-search.select2-search--inline,&lt;br /&gt;
.pf-select2-container {&lt;br /&gt;
	margin: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
.select2-container--default .select2-selection--multiple .select2-selection__choice {&lt;br /&gt;
	margin-top: 5px !important;&lt;br /&gt;
	margin-bottom: 0 !important;&lt;br /&gt;
	padding: 4px 8px !important;&lt;br /&gt;
}&lt;br /&gt;
li.select2-search.select2-search--inline {&lt;br /&gt;
	padding: 4px 0;&lt;br /&gt;
	margin-top: 5px !important;&lt;br /&gt;
}&lt;br /&gt;
#pfForm .formtable .inputSpan textarea {&lt;br /&gt;
	min-height: 3em !important;&lt;br /&gt;
	resize: none;&lt;br /&gt;
	padding-top: .65em !important;&lt;br /&gt;
	padding-bottom: .65em !important;&lt;br /&gt;
}&lt;br /&gt;
#pfForm textarea.autoGrow {&lt;br /&gt;
	height: auto;&lt;br /&gt;
	overflow-y: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
li.hover-map {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bouton-ajouter.mw-ui-button {&lt;br /&gt;
	font-size: x-small;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
}&lt;br /&gt;
.wk-btn {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	width: max-content;&lt;br /&gt;
}&lt;br /&gt;
.wk-btn &amp;gt; a {&lt;br /&gt;
	color: var(--color-base,#202122) !important;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	padding: 5px 12px !important;&lt;br /&gt;
}&lt;br /&gt;
.wk-btn__icon {&lt;br /&gt;
	margin-right: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
.wk-auto-id {&lt;br /&gt;
	margin-top: 1em;&lt;br /&gt;
	padding: 0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============================================&lt;br /&gt;
	Wikidébats — Icônes arguments POUR / CONTRE&lt;br /&gt;
	CSS avec variables centralisées&lt;br /&gt;
	============================================ */&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
	--border-color-base: #eaecf0;&lt;br /&gt;
	--border-color-subtle: #eaecf0;&lt;br /&gt;
	--border-color-muted: #eaecf0;&lt;br /&gt;
	--accent-pro: #3ba58c;&lt;br /&gt;
	--accent-con: #d95a6f;&lt;br /&gt;
&lt;br /&gt;
	/* Icônes */&lt;br /&gt;
	--wd-arg-icon-pro: url(&amp;quot;/w/images/fr/8/87/Argument-pour.svg&amp;quot;);&lt;br /&gt;
	--wd-arg-icon-con: url(&amp;quot;/w/images/fr/f/fb/Argument-contre.svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	/* Tailles par défaut */&lt;br /&gt;
	--wd-arg-icon-size: 19px;&lt;br /&gt;
	--wd-arg-icon-gap: 0.4em;&lt;br /&gt;
	--wd-question-icon-size: 20px;&lt;br /&gt;
	--wd-carret-size: 13px;&lt;br /&gt;
	--wd-carret-gap: 0.35em;&lt;br /&gt;
&lt;br /&gt;
	/* Positionnement icône */&lt;br /&gt;
	--wd-icon-top: calc(0.5 * var(--wd-line-height) * 1em);&lt;br /&gt;
	--wd-icon-left: 0;&lt;br /&gt;
	--wd-icon-right: auto;&lt;br /&gt;
	&lt;br /&gt;
	/* Décalages texte */&lt;br /&gt;
	--wd-arg-icon-left: 0;&lt;br /&gt;
	--wd-arg-title-padding: calc(var(--wd-arg-icon-size) + var(--wd-arg-icon-gap));&lt;br /&gt;
	--wd-arg-title-map-mb: 0.5em;&lt;br /&gt;
&lt;br /&gt;
	/* Typo */&lt;br /&gt;
	--wd-line-height: 1.35;&lt;br /&gt;
&lt;br /&gt;
	--wd-icon-transform: translateY(-50%)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.is-pro {&lt;br /&gt;
	--color-side: #02a68f;&lt;br /&gt;
}&lt;br /&gt;
.is-con {&lt;br /&gt;
	--color-side: #d92343;&lt;br /&gt;
}&lt;br /&gt;
.argument-title {&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	line-height: var(--wd-line-height);&lt;br /&gt;
	padding-right: 2em;&lt;br /&gt;
	padding-left: calc(var(--wd-arg-icon-left) + var(--wd-arg-icon-size) + var(--wd-arg-icon-gap));&lt;br /&gt;
}&lt;br /&gt;
.argument-title .bandeau-avertissement {&lt;br /&gt;
	padding-top: 2px;&lt;br /&gt;
	padding-bottom: 2px;&lt;br /&gt;
	cursor: initial;&lt;br /&gt;
	font-size: 78%;&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-before {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-before::before, .wk-icon-after::after {&lt;br /&gt;
	content: &amp;quot;&amp;quot;;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: var(--wd-icon-top);&lt;br /&gt;
	left: var(--wd-icon-left);&lt;br /&gt;
	right: var(--wd-icon-right);&lt;br /&gt;
	transform: var(--wd-icon-transform);&lt;br /&gt;
	background-repeat: no-repeat;&lt;br /&gt;
	background-position: center;&lt;br /&gt;
	background-size: contain;&lt;br /&gt;
	background-image: var(--wd-icon-url);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-before::before {&lt;br /&gt;
	left: var(--wd-icon-left);&lt;br /&gt;
	width: var(--wd-icon-width);&lt;br /&gt;
	height: var(--wd-icon-height);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-after::after {&lt;br /&gt;
	left: var(--wd-icon-after-left);&lt;br /&gt;
	width: var(--wd-icon-after-width);&lt;br /&gt;
	height: var(--wd-icon-after-height);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-argument {&lt;br /&gt;
	--wd-icon-left: var(--wd-arg-icon-left);&lt;br /&gt;
	--wd-icon-width: var(--wd-arg-icon-size);&lt;br /&gt;
	--wd-icon-height: var(--wd-arg-icon-size);&lt;br /&gt;
	--wd-icon-url: var(--wd-arg-icon-url);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-question.fr-collapsible-toggle {&lt;br /&gt;
	--wd-icon-after-width: var(--wd-question-icon-size);&lt;br /&gt;
	--wd-icon-after-height: var(--wd-question-icon-size);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-after.fr-collapsible-toggle {&lt;br /&gt;
	text-indent: calc(var(--wd-icon-after-gap) + var(--wd-icon-after-width));&lt;br /&gt;
	--wd-icon-after-left: calc( var(--wd-carret-size) + var(--wd-carret-gap) );&lt;br /&gt;
	--wd-icon-after-gap: 0.45em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* POUR / CONTRE */&lt;br /&gt;
&lt;br /&gt;
.is-pro, .is-con .is-con {&lt;br /&gt;
	--wd-arg-icon-url: var(--wd-arg-icon-pro);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.is-con, .is-con .is-pro, .is-against {&lt;br /&gt;
	--wd-arg-icon-url: var(--wd-arg-icon-con);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Liens */&lt;br /&gt;
&lt;br /&gt;
.argument-list .argument-title &amp;gt; a {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	color: var(--color-base,#202122) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Carte d’arguments */&lt;br /&gt;
#Argument_map {&lt;br /&gt;
	background-color: var(--background-color-neutral-subtle, #f8f9fa);&lt;br /&gt;
	padding-left: 1.5%;&lt;br /&gt;
	--wd-arg-title-map-mb: 0.65em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Carte */&lt;br /&gt;
.argument-title--map {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	margin-bottom: var(--wd-arg-title-map-mb, 0.5em);&lt;br /&gt;
	line-height: var(--wd-line-height);&lt;br /&gt;
	--wd-arg-icon-size: 13px;&lt;br /&gt;
	--wd-arg-icon-gap: 0.3em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.argument-list .argument-title.visited &amp;gt; a {&lt;br /&gt;
	color: var(--color-disabled, #72777d) !important;&lt;br /&gt;
}&lt;br /&gt;
.argument-list .argument-title:hover {&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
#Argument_map .argument-title--map {&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	color: var(--color-progressive,#36c);&lt;br /&gt;
}&lt;br /&gt;
#Argument_map .argument-title--map.visited {&lt;br /&gt;
	color: var(--color-visited,#6a60b0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wk-carret.fr-collapsible-toggle::before, .wk-carret.argument-title::after {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/3/38/Expand.svg);&lt;br /&gt;
	opacity: .7;&lt;br /&gt;
}&lt;br /&gt;
.wk-carret.fr-collapsible-toggle {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-left: calc(var(--wd-carret-size) + var(--wd-carret-gap)) !important;&lt;br /&gt;
	line-height: var(--wd-line-height) !important;&lt;br /&gt;
}&lt;br /&gt;
.wk-carret.fr-collapsible-toggle::before {&lt;br /&gt;
	--wd-icon-width: var(--wd-carret-size);&lt;br /&gt;
	--wd-icon-height: var(--wd-carret-size);&lt;br /&gt;
}&lt;br /&gt;
.wk-carret.argument-title::after {&lt;br /&gt;
	--wd-icon-after-width: var(--wd-carret-size);&lt;br /&gt;
	--wd-icon-after-height: var(--wd-carret-size);&lt;br /&gt;
}&lt;br /&gt;
.wk-carret.argument-title::after {&lt;br /&gt;
	--wd-icon-transform: translateY(-50%) rotate(-90deg);&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
	--wd-icon-left: auto;&lt;br /&gt;
	--wd-icon-right: 0;&lt;br /&gt;
}&lt;br /&gt;
.wk-carret.fr-collapsible-toggle-expanded::before {&lt;br /&gt;
	--wd-icon-transform: translateY(-50%) scaleY(-1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Mode lecture (overlay)&lt;br /&gt;
   ========================= */&lt;br /&gt;
&lt;br /&gt;
/* 1) Quand le mode lecture est ouvert : on bloque le scroll page */&lt;br /&gt;
html.wk-reading-active,&lt;br /&gt;
body.wk-reading-active{&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
/* 2) Overlay plein écran */&lt;br /&gt;
#wk-reading-mode {&lt;br /&gt;
	inset: 0;&lt;br /&gt;
	z-index: 999;&lt;br /&gt;
	background: var(--background-color-neutral-subtle);&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	bottom: auto;&lt;br /&gt;
	height: 100vh;&lt;br /&gt;
	overflow-y: auto;&lt;br /&gt;
	-webkit-overflow-scrolling: touch;&lt;br /&gt;
}&lt;br /&gt;
/* Panneau mode lecture : taille fixe */&lt;br /&gt;
#wk-reading-mode .wk-reading-panel {&lt;br /&gt;
	/* largeur wiki FIXE */&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	min-height: 100%;&lt;br /&gt;
	margin: 0 auto;&lt;br /&gt;
&lt;br /&gt;
	/* fond du panneau */&lt;br /&gt;
	background: var(--background-color-base, #fff);&lt;br /&gt;
&lt;br /&gt;
	/* layout interne */&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	box-sizing: border-box;&lt;br /&gt;
&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	-webkit-overflow-scrolling: touch;&lt;br /&gt;
	overscroll-behavior: contain;&lt;br /&gt;
	padding: 1.5em 0 2em 2em;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-content{&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	overflow: auto;&lt;br /&gt;
	-webkit-overflow-scrolling: touch;&lt;br /&gt;
	padding: 0 3em 1em 1em;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-stack {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	flex: 0 0 auto;&lt;br /&gt;
	padding-bottom: 1em;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-stack .wk-reading__item {&lt;br /&gt;
	position: sticky;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	user-select: none;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-stack .is-root .wk-reading__title {&lt;br /&gt;
	padding-left: 0.25em;&lt;br /&gt;
	margin-left: 0;&lt;br /&gt;
	border-left: none;&lt;br /&gt;
	--wd-font-size: 125%;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-stack .wk-reading__title {&lt;br /&gt;
	border-bottom: 1px solid var(--border-color-base,#a2a9b1);&lt;br /&gt;
	border-left: 2px solid var(--border-color-base,#a2a9b1);&lt;br /&gt;
	box-shadow: 0 1px 2px rgba(0,0,0,.06);&lt;br /&gt;
	margin-left: 1em;&lt;br /&gt;
	padding: 10px 12px 10px 12px;&lt;br /&gt;
	font-size: var(--wd-font-size);&lt;br /&gt;
	line-height: var(--wd-line-height);&lt;br /&gt;
	--wd-arg-icon-size: 16px;&lt;br /&gt;
	--wd-arg-icon-left: calc( -1 * var(--wd-arg-icon-size) / 2 - 1px);&lt;br /&gt;
	--wd-line-height: 1.2;&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
	--wd-font-size: 100%;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-stack .wk-reading__item:hover {&lt;br /&gt;
	text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-stack .wk-reading__item.is-current {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-panel h2 {&lt;br /&gt;
	font-size: 125% !important;&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-panel h2.wk-icon-argument {&lt;br /&gt;
	--wd-icon-size: 21px;&lt;br /&gt;
	--wd-icon-gap: 0.4em;&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-h1__title {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: 140%;&lt;br /&gt;
	line-height: 1.35;&lt;br /&gt;
	padding-left: calc( var(--wd-arg-icon-size) + 0.45em );&lt;br /&gt;
	--wd-arg-icon-size: 23px;&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-siblings__current {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	cursor: default;&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-siblings__label {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	font-size: 94%;&lt;br /&gt;
	margin: 1em 0 0.5em 0.5em;&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-siblings__item .wk-reading-siblings__title {&lt;br /&gt;
	line-height: 1.2;&lt;br /&gt;
	--wd-line-height: 1.2;&lt;br /&gt;
	--wd-arg-icon-size: 13px;&lt;br /&gt;
	--wd-arg-icon-left: calc(-1 * var(--wd-arg-icon-size) / 2 - 11px);&lt;br /&gt;
	--wd-icon-top: calc(0.5 * var(--wd-line-height) * 1em);&lt;br /&gt;
}&lt;br /&gt;
ul.wk-reading-siblings__list {&lt;br /&gt;
	list-style-type: none;&lt;br /&gt;
	margin-left: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
li.wk-reading-siblings__item {&lt;br /&gt;
	font-size: 85%;&lt;br /&gt;
	margin-bottom: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
#wk-reading-left {&lt;br /&gt;
	background-color: var(--background-color-base,#fff);&lt;br /&gt;
	padding: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-before {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-before {&lt;br /&gt;
	--wd-icon-width: var(--wd-icon-size);&lt;br /&gt;
	--wd-icon-height: var(--wd-icon-size);&lt;br /&gt;
}&lt;br /&gt;
.wk-reading-content h2 .wk-icon-before {&lt;br /&gt;
	padding-left: calc(var(--wd-icon-gap) + var(--wd-icon-size));&lt;br /&gt;
	--wd-icon-gap: 0.35em;&lt;br /&gt;
	--wd-icon-size: 22px;&lt;br /&gt;
	--wd-arg-icon-size: 20px;&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-orphan {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/d/d8/Argument-orphelin.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-question {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/8/8d/Presentation-wikidebats.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-further {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/e/e6/Pour-aller-plus-loin.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-flag {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/5/5e/Drapeau-avertissement.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-selfeval {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/a/a4/Autotest.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-refresh {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/2/23/Debats-modifies.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-related {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/5/5e/Debats-connexes.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-summary {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/c/c6/Contributions.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-quote {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/6/6e/Citation.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-bibliography {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/9/9e/Bibliographie.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-webliography {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/7/77/Sitographie.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-videography {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/5/5f/Videographie.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-details {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/3/3f/Parcourir.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-parent {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/e/e3/Fleche-haut.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-construction {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/d/d4/Debat-construction.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-wikidebates {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/8/8f/Icone-Wikidebats.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-redundant {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/2/20/Debat-redondant.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-unbalanced {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/a/a2/Debat-desequilibre.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-confusion {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/7/78/Plan-a-ameliorer.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-draft {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/9/93/Ebauche-debat.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-neutral {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/a/a0/Ni-pour-ni-contre.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-page {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/e/e5/Ouvrir-lien.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-link {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/7/7d/Copier-lien.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-edit {&lt;br /&gt;
	--wd-icon-url: url(&amp;quot;/w/images/fr/b/ba/Modifier.svg&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h2.wk-icon-selfeval {&lt;br /&gt;
	--wd-icon-size: 17px;&lt;br /&gt;
	--wd-icon-height: 21px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-refresh {&lt;br /&gt;
	--wd-icon-size: 16px;&lt;br /&gt;
	--wd-icon-height: 21px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-further {&lt;br /&gt;
	--wd-icon-size: 20px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-related {&lt;br /&gt;
	--wd-icon-size: 20px;&lt;br /&gt;
	--wd-icon-height: 21px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-flag {&lt;br /&gt;
	--wd-icon-size: 14px;&lt;br /&gt;
	--wd-icon-height: 20px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-question {&lt;br /&gt;
	--wd-icon-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-argument {&lt;br /&gt;
	--wd-icon-size: 22px;&lt;br /&gt;
	--wd-arg-icon-size: 22px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-summary {&lt;br /&gt;
	--wd-icon-size: 17px;&lt;br /&gt;
	--wd-icon-height: 21px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-quote {&lt;br /&gt;
	--wd-icon-size: 17px;&lt;br /&gt;
	--wd-icon-height: 20px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-bibliography {&lt;br /&gt;
	--wd-icon-size: 15px;&lt;br /&gt;
	--wd-icon-height: 20px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-details {&lt;br /&gt;
	--wd-icon-size: 17px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-parent {&lt;br /&gt;
	--wd-icon-size: 20px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-construction {&lt;br /&gt;
	--wd-icon-height: 20px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-wikidebates {&lt;br /&gt;
	--wd-icon-size: 48px;&lt;br /&gt;
	--wd-icon-height: 31px;&lt;br /&gt;
}&lt;br /&gt;
h2.wk-icon-unbalanced {&lt;br /&gt;
	--wd-icon-height: 31px;&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-more {&lt;br /&gt;
	--wd-icon-url: url(/w/load.php?modules=skins.minerva.overflow.icons&amp;amp;image=ellipsis&amp;amp;format=original&amp;amp;skin=minerva&amp;amp;version=6h97v);&lt;br /&gt;
	--wd-icon-width: 18px;&lt;br /&gt;
	--wd-icon-height: 18px;&lt;br /&gt;
	--wd-icon-transform: translate(-50%, -50%) rotate(-90deg);&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
	--wd-icon-left: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.bandeau.wk-icon-before {&lt;br /&gt;
	padding-left: 84px;&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
	--wd-icon-left: 12px;&lt;br /&gt;
	--wd-icon-width: 60px;&lt;br /&gt;
	--wd-icon-height: 40px;&lt;br /&gt;
}&lt;br /&gt;
.bandeau.wk-icon-title {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/9/90/Titre-a-revoir.svg);&lt;br /&gt;
	--wd-icon-height: 54px;&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-sensible {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/8/88/Debat-sensible.svg);&lt;br /&gt;
}&lt;br /&gt;
.bandeau.wk-icon-saugrenu {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/1/1f/Debat-saugrenu.svg);&lt;br /&gt;
	--wd-icon-height: 34px;&lt;br /&gt;
}&lt;br /&gt;
.bandeau.wk-icon-illegal {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/a/a5/Argument-potentiellement-illegal.svg);&lt;br /&gt;
	--wd-icon-height: 34px;&lt;br /&gt;
}&lt;br /&gt;
.bandeau-avertissement.wk-icon-before {&lt;br /&gt;
	padding-left: 24px;&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
	--wd-icon-width: 15px;&lt;br /&gt;
	--wd-icon-height: 15px;&lt;br /&gt;
	--wd-icon-left: 5px;&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-help {&lt;br /&gt;
	padding-left: 1.5em;&lt;br /&gt;
  	cursor: pointer;&lt;br /&gt;
	--wd-icon-width: 13px;&lt;br /&gt;
	--wd-icon-height: 13px;&lt;br /&gt;
	--wd-icon-left: 4px;&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/2/28/Information.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-wikipedia {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/2/28/Wikipedia.svg);&lt;br /&gt;
}&lt;br /&gt;
.wk-icon-loupe {&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/4/48/Loupe.svg);&lt;br /&gt;
	--wd-icon-width: 13px;&lt;br /&gt;
	--wd-icon-height: 40px;&lt;br /&gt;
	--wd-icon-left: 5px;&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
}&lt;br /&gt;
.bandeau-section.wk-icon-loupe {&lt;br /&gt;
	padding-left: 25px;&lt;br /&gt;
}&lt;br /&gt;
.bandeau-section.wk-icon-wikipedia {&lt;br /&gt;
	padding: 0.5em 0 0.5em 2.25em;&lt;br /&gt;
	line-height: 1.5;&lt;br /&gt;
	--wd-icon-url: url(/w/images/fr/2/28/Wikipedia.svg);&lt;br /&gt;
	--wd-icon-width: 18px;&lt;br /&gt;
	--wd-icon-height: 18px;&lt;br /&gt;
	--wd-icon-left: 3px;&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.argument-summary {&lt;br /&gt;
	margin-top: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.fr-collapsible-toggle.wk-icon-bibliography {&lt;br /&gt;
	--wd-icon-after-width: 14px;&lt;br /&gt;
	--wd-icon-after-height: 19px;&lt;br /&gt;
}&lt;br /&gt;
.fr-collapsible-toggle.wk-icon-webliography {&lt;br /&gt;
	--wd-icon-after-width: 17px;&lt;br /&gt;
	--wd-icon-after-height: 19px;&lt;br /&gt;
}&lt;br /&gt;
.fr-collapsible-toggle.wk-icon-videography {&lt;br /&gt;
	--wd-icon-after-width: 19px;&lt;br /&gt;
	--wd-icon-after-height: 19px;&lt;br /&gt;
}&lt;br /&gt;
.titre-references {&lt;br /&gt;
	--wd-icon-after-left: calc(var(--wd-carret-size) + var(--wd-carret-gap));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wk-arg-map {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	gap: 1em;&lt;br /&gt;
}&lt;br /&gt;
.wk-arg-map__col {&lt;br /&gt;
	flex: 1 1 0;&lt;br /&gt;
}&lt;br /&gt;
.wk-arg-map__th {&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	margin-bottom: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
.wk-arg-map__td {&lt;br /&gt;
	padding-right: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
.wk-arg-map--top .wk-arg-map__col {&lt;br /&gt;
	margin-top: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wk-reading-h1 {&lt;br /&gt;
	position: sticky;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: flex-start;&lt;br /&gt;
	border-bottom: 1px solid var(--border-color-base, #a2a9b1);&lt;br /&gt;
	padding-bottom: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-btn {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	width: 2em;&lt;br /&gt;
	height: 2em;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	opacity: 0.9;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-more {&lt;br /&gt;
	position: relative;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-menu {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 100%;&lt;br /&gt;
	right: 0;&lt;br /&gt;
	margin-top: 0.5em;&lt;br /&gt;
	margin-right: 0.25em;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	min-width: max-content;&lt;br /&gt;
	padding: 0.4em 0;&lt;br /&gt;
	background-color: var(--background-color-base);&lt;br /&gt;
	border: 1px solid var(--border-color-base,#a2a9b1);&lt;br /&gt;
	border-radius: 6px;&lt;br /&gt;
	box-shadow: 0 4px 16px rgba(0,0,0,0.12);&lt;br /&gt;
	transition: background-color 0.2s, color 0.2s;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-menu[hidden] { display: none; }&lt;br /&gt;
.wk-h1-menu a {&lt;br /&gt;
	color: var(--color-progressive) !important;&lt;br /&gt;
	margin: 0.5em 1em;&lt;br /&gt;
	text-indent: 1.8em;&lt;br /&gt;
	--wd-icon-width: 18px;&lt;br /&gt;
	--wd-icon-height: 18px;&lt;br /&gt;
	--wd-icon-top: 50%;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-btn.wk-icon-more:hover {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-btn.wk-icon-more:active,&lt;br /&gt;
.wk-h1-btn.wk-icon-more[aria-expanded=&amp;quot;true&amp;quot;] {&lt;br /&gt;
	opacity: 0.6;&lt;br /&gt;
}&lt;br /&gt;
.wk-h1-menu .wk-icon-before {&lt;br /&gt;
	--wd-icon-width: 14px;&lt;br /&gt;
}&lt;br /&gt;
.bouton-autoedit-renommer {&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	vertical-align: middle;&lt;br /&gt;
	border-style: solid;&lt;br /&gt;
	border-width: 1px;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	border-color: var(--border-color-base,#a2a9b1);&lt;br /&gt;
	background-color: var(--background-color-interactive-subtle,#f8f9fa);&lt;br /&gt;
	padding-left: 12px;&lt;br /&gt;
	padding-right: 12px;&lt;br /&gt;
	font-weight: bold;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	user-select: none;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	padding-top: 8px;&lt;br /&gt;
	padding-bottom: 8px;&lt;br /&gt;
}&lt;br /&gt;
.bouton-autoedit-renommer a {&lt;br /&gt;
	color: var(--color-progressive,#36c);&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.bouton-autoedit-renommer a:visited {&lt;br /&gt;
	color: var(--color-progressive,#36c);&lt;br /&gt;
}&lt;br /&gt;
.bouton-autoedit-renommer:hover {&lt;br /&gt;
	background-color: var(--background-color-base,#fff);&lt;br /&gt;
	border-color: var(--border-color-progressive--hover,#4b77d6);&lt;br /&gt;
}&lt;br /&gt;
.bouton-autoedit-renommer a:hover, .bouton-autoedit-renommer a:active {&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Does_God_exist%3F&amp;diff=10495</id>
		<title>Does God exist?</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Does_God_exist%3F&amp;diff=10495"/>
		<updated>2026-03-22T23:36:40Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Undo revision 10413 by Wikinuma (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Debate&lt;br /&gt;
|type=for/against&lt;br /&gt;
|topic=the existence of God&lt;br /&gt;
|progress=Debate under construction&lt;br /&gt;
|introduction={{Subsection&lt;br /&gt;
|title=Definition&lt;br /&gt;
|content=God is the transcendent Creator of the Universe. This is what we mean when we speak of God, leaving aside the thousand and one particular conceptions we may have of him.&lt;br /&gt;
}}{{Subsection&lt;br /&gt;
|title=Kant did not abolish Metaphysics&lt;br /&gt;
|content=For most continental philosophers, rational questioning about the existence of God is no longer relevant after the Kantian Critique. Following many other contemporary philosophers, the analytical philosopher Nicholas Woterstorff, a specialist in Kant, questions the skeptical reading of the master of Konigsberg: &amp;quot;In my opinion, although Kant denied that we can have knowledge of God, he defended not only the possibility of judgments about God, but also the possibility of judgments about God based solely on reason.&amp;quot;[1] According to this expert, Kant has been (very) misinterpreted.&lt;br /&gt;
}}{{Subsection&lt;br /&gt;
|title=A revival of the debate over the last few decades&lt;br /&gt;
|content=&amp;quot;Never since the end of the Middle Ages have the philosophy of religion and philosophical theology been as flourishing as in the last forty years in the philosophy of the analytic tradition. During this period, analytic philosophers have had intense and serious discussions on topics such as the relationship between God and evil, the precise nature of divine omnipotence, the question of whether God knows in advance what persons will do freely, whether God is eternal, whether he is impassible, simple, and so on.&amp;quot;1 Clearly, one can no longer say that metaphysical questions must be excluded from philosophy, unless one is very unfamiliar with the Anglo-Saxon domain.&lt;br /&gt;
&lt;br /&gt;
See Nicholas Wolterstorff, &amp;quot;The Origins of Analytical Philosophy of Religion&amp;quot;, online in Revue Théo-Rème, 2/2012. Link:&lt;br /&gt;
https://journals.openedition.org/theoremes/265&lt;br /&gt;
}}&lt;br /&gt;
|wikipedia-articles={{Wikipedia article&lt;br /&gt;
|page=God&lt;br /&gt;
}}{{Wikipedia article&lt;br /&gt;
|page=Arguments for the existence of God&lt;br /&gt;
}}&lt;br /&gt;
|pro-arguments={{Pro argument&lt;br /&gt;
|page=God is the first cause of the universe&lt;br /&gt;
|displayed-title=God is the first cause of the universe&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=The order and complexity of the world presuppose a Creator God&lt;br /&gt;
|displayed-title=The order and complexity of the world presuppose a creator&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=There are divine interventions&lt;br /&gt;
|displayed-title=There are divine interventions&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=God created a morality independent of men&lt;br /&gt;
|displayed-title=There is a morality independent of men&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=Only God is the guarantor of the reality and veracity of the world.&lt;br /&gt;
|displayed-title=Only God is the guarantor of the reality and veracity of the world.&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=God&#039;s existence is contained in his concept&lt;br /&gt;
|displayed-title=God&#039;s existence is contained in his concept&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=We have concepts within us that only God could have created.&lt;br /&gt;
|displayed-title=We have concepts within us that only God could have created.&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=The God hypothesis is simpler than the atheist hypothesis&lt;br /&gt;
|displayed-title=The God hypothesis is simpler than the atheist hypothesis&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=Human nature aspires to God&lt;br /&gt;
|displayed-title=Human nature aspires to God&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=God&#039;s existence can be experienced with immediate certainty&lt;br /&gt;
|displayed-title=God&#039;s existence can be experienced with immediate certainty&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=Freedom is inexplicable within the framework of materialism&lt;br /&gt;
|displayed-title=Human freedom is inexplicable in atheism&lt;br /&gt;
}}&lt;br /&gt;
|con-arguments={{Con argument&lt;br /&gt;
|page=No evidence of a god&lt;br /&gt;
|displayed-title=No evidence of a god&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=There is no spirit outside matter&lt;br /&gt;
|displayed-title=There is no spirit outside matter&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=There is too much suffering and injustice for there to be a god&lt;br /&gt;
|displayed-title=There is too much suffering and injustice for there to be a god&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Religions contradict each other&lt;br /&gt;
|displayed-title=Religions contradict each other&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Human freedom contradicts the existence of a god&lt;br /&gt;
|displayed-title=Man is free&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=The absence of human freedom contradicts the existence of a god&lt;br /&gt;
|displayed-title=Man is determined&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=God is a contradictory concept&lt;br /&gt;
|displayed-title=God is a contradictory concept&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Human existence is no match for God&lt;br /&gt;
|displayed-title=Human existence is no match for God&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=God is an invention&lt;br /&gt;
|displayed-title=God is an invention&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=God is but the name of our ignorance&lt;br /&gt;
|displayed-title=God is but the name of our ignorance&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Arguments for the existence of God are all argumentative biases&lt;br /&gt;
|displayed-title=Arguments for the existence of God are all argumentative biases&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=The universe is too empty, too ancient and too vast to correspond to the God of religions.&lt;br /&gt;
|displayed-title=The universe is too empty, too ancient and too vast to correspond to the God of religions.&lt;br /&gt;
}}&lt;br /&gt;
|pro-bibliography={{Pro bibliographical reference&lt;br /&gt;
|authors=Anselme de Cantorbery&lt;br /&gt;
|work=Monologion. Proslogion&lt;br /&gt;
|publisher=Cerf&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1986&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Averroès&lt;br /&gt;
|work=Discours décisif&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1996&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=George Berkeley&lt;br /&gt;
|work=Trois dialogues entre Hylas et Philonous&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1999 (1713)&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=René Descartes&lt;br /&gt;
|work=Méditations métaphysiques&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Fénelon&lt;br /&gt;
|work=Traité de l&#039;existence de Dieu&lt;br /&gt;
|publisher=Éditions Universitaires&lt;br /&gt;
|date=1995&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Étienne Gilson&lt;br /&gt;
|work=L&#039;Athéisme difficile&lt;br /&gt;
|publisher=Vrin&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1979&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Frédéric Guillaud&lt;br /&gt;
|work=Dieu existe&lt;br /&gt;
|publisher=Le Cerf&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2013&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Karl Jaspers&lt;br /&gt;
|work=Introduction à la philosophie&lt;br /&gt;
|publisher=Plon&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1951&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Raymond Ruyer&lt;br /&gt;
|work=Dieu des religions, Dieu de la science&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1970&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Richard Swinburne&lt;br /&gt;
|work=Y a-t-il un Dieu ?&lt;br /&gt;
|publisher=Ithaque&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2009&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Jean Staune&lt;br /&gt;
|work=Notre existence a-t-elle un sens ? (Une enquête scientifique et philosophique)&lt;br /&gt;
|publisher=Fayard, coll. Pluriel&lt;br /&gt;
|date=2017&lt;br /&gt;
}}&lt;br /&gt;
|con-bibliography={{Con bibliographical reference&lt;br /&gt;
|authors=Michel-Yves Bolloré, Olivier Bonnassies&lt;br /&gt;
|work=Dieu, la science, les preuves : l&#039;aube d&#039;une révolution&lt;br /&gt;
|publisher=Guy Trédaniel&lt;br /&gt;
|date=2021&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Paul Davies&lt;br /&gt;
|work=L&#039;esprit de Dieu&lt;br /&gt;
|publisher=Hachette Littérature&lt;br /&gt;
|date=1998&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=André Comte-Sponville&lt;br /&gt;
|article=Dieu existe-t-il ?&lt;br /&gt;
|work=L&#039;esprit de l&#039;athéisme&lt;br /&gt;
|publisher=Albin Michel&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2006&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Richard Dawkins&lt;br /&gt;
|work=Pour en finir avec Dieu&lt;br /&gt;
|publisher=Robert Laffont&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2008&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Ludwig Feuerbach&lt;br /&gt;
|work=L&#039;essence du christianisme&lt;br /&gt;
|publisher=Gallimard&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1992 (1841)&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Richard Dawkins&lt;br /&gt;
|work=L&#039;horloger aveugle&lt;br /&gt;
|publisher=Robert Laffont&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1999&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Sigmund Freud&lt;br /&gt;
|work=L&#039;avenir d&#039;une illusion&lt;br /&gt;
|date=1927&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Christopher Hitchens&lt;br /&gt;
|work=Dieu n&#039;est pas grand&lt;br /&gt;
|publisher=Belfond&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2009&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Michel Onfray&lt;br /&gt;
|work=Traité d&#039;athéologie&lt;br /&gt;
|publisher=Grasset&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2005&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Bertrand Russell&lt;br /&gt;
|work=Pourquoi je ne suis pas chrétien&lt;br /&gt;
|place=Montréal&lt;br /&gt;
|date=2011&lt;br /&gt;
}}&lt;br /&gt;
|bibliography={{Bibliographical reference&lt;br /&gt;
|authors=Jean-Paul Sartre&lt;br /&gt;
|work=L&#039;existentialisme est un humanisme&lt;br /&gt;
|publisher=Gallimard&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1946&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=David Hume&lt;br /&gt;
|work=Dialogues sur la religion naturelle&lt;br /&gt;
|publisher=Folio&lt;br /&gt;
|date=2009&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=Leszek Kołakowski&lt;br /&gt;
|work=Philosophie de la religion&lt;br /&gt;
|publisher=Gallimard&lt;br /&gt;
|date=1985&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=Bernard Sève&lt;br /&gt;
|work=La question philosophique de l&#039;existence de Dieu&lt;br /&gt;
|publisher=PUF&lt;br /&gt;
|date=1994&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=Hans Küng&lt;br /&gt;
|work=Dieu existe-t-il ?&lt;br /&gt;
|publisher=Le Seuil&lt;br /&gt;
|date=1981&lt;br /&gt;
}}&lt;br /&gt;
|webliography={{Web reference&lt;br /&gt;
|link=https://fr.wikipedia.org/wiki/Arguments_sur_l God&#039;s_existence&lt;br /&gt;
|page=Arguments for the existence of God&lt;br /&gt;
|site=Wikipedia&lt;br /&gt;
}}{{Web reference&lt;br /&gt;
|link=https://agora.qc.ca/thematiques/mort/dossiers/le_dieu_pathetique_de_la_theologie&lt;br /&gt;
|page=The pathetic God of theology&lt;br /&gt;
|site=Agora Québec&lt;br /&gt;
}}{{Web reference&lt;br /&gt;
|link=https://journals.openedition.org/theoremes/265&lt;br /&gt;
|page=The origins of analytic philosophy of religion&lt;br /&gt;
|authors=Nicholas Wolterstorff&lt;br /&gt;
|site=ThéoRèmes magazine&lt;br /&gt;
|date=2012&lt;br /&gt;
}}&lt;br /&gt;
|con-videography={{Con video reference&lt;br /&gt;
|title=Proof of god&#039;s non-existence&lt;br /&gt;
|link=https://youtu.be/yUm6Hrqnqqk&lt;br /&gt;
}}&lt;br /&gt;
|videography={{Video reference&lt;br /&gt;
|title=Does science bring us closer to God? (Skeptical interview #7)&lt;br /&gt;
|link=https://www.youtube.com/watch?v=5qwln9eUdeg&lt;br /&gt;
}}&lt;br /&gt;
|related-debates={{Related debate&lt;br /&gt;
|page=Is belief in God beneficial?&lt;br /&gt;
}}{{Related debate&lt;br /&gt;
|page=Do religions converge?&lt;br /&gt;
}}{{Related debate&lt;br /&gt;
|page=Is religion compatible with Marxism?&lt;br /&gt;
}}{{Related debate&lt;br /&gt;
|page=Are science and religion compatible?&lt;br /&gt;
}}&lt;br /&gt;
|sections=Philosophy, Religion and Spirituality&lt;br /&gt;
|keywords=God, existence, first cause, materialism&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Does_God_exist%3F&amp;diff=10413</id>
		<title>Does God exist?</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Does_God_exist%3F&amp;diff=10413"/>
		<updated>2026-03-22T23:36:10Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: /* Pro arguments */ Added argument: “Test 01”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Debate&lt;br /&gt;
|type=for/against&lt;br /&gt;
|topic=the existence of God&lt;br /&gt;
|progress=Debate under construction&lt;br /&gt;
|introduction={{Subsection&lt;br /&gt;
|title=Definition&lt;br /&gt;
|content=God is the transcendent Creator of the Universe. This is what we mean when we speak of God, leaving aside the thousand and one particular conceptions we may have of him.&lt;br /&gt;
}}{{Subsection&lt;br /&gt;
|title=Kant did not abolish Metaphysics&lt;br /&gt;
|content=For most continental philosophers, rational questioning about the existence of God is no longer relevant after the Kantian Critique. Following many other contemporary philosophers, the analytical philosopher Nicholas Woterstorff, a specialist in Kant, questions the skeptical reading of the master of Konigsberg: &amp;quot;In my opinion, although Kant denied that we can have knowledge of God, he defended not only the possibility of judgments about God, but also the possibility of judgments about God based solely on reason.&amp;quot;[1] According to this expert, Kant has been (very) misinterpreted.&lt;br /&gt;
}}{{Subsection&lt;br /&gt;
|title=A revival of the debate over the last few decades&lt;br /&gt;
|content=&amp;quot;Never since the end of the Middle Ages have the philosophy of religion and philosophical theology been as flourishing as in the last forty years in the philosophy of the analytic tradition. During this period, analytic philosophers have had intense and serious discussions on topics such as the relationship between God and evil, the precise nature of divine omnipotence, the question of whether God knows in advance what persons will do freely, whether God is eternal, whether he is impassible, simple, and so on.&amp;quot;1 Clearly, one can no longer say that metaphysical questions must be excluded from philosophy, unless one is very unfamiliar with the Anglo-Saxon domain.&lt;br /&gt;
&lt;br /&gt;
See Nicholas Wolterstorff, &amp;quot;The Origins of Analytical Philosophy of Religion&amp;quot;, online in Revue Théo-Rème, 2/2012. Link:&lt;br /&gt;
https://journals.openedition.org/theoremes/265&lt;br /&gt;
}}&lt;br /&gt;
|wikipedia-articles={{Wikipedia article&lt;br /&gt;
|page=God&lt;br /&gt;
}}{{Wikipedia article&lt;br /&gt;
|page=Arguments for the existence of God&lt;br /&gt;
}}&lt;br /&gt;
|pro-arguments={{Pro argument&lt;br /&gt;
|page=God is the first cause of the universe&lt;br /&gt;
|displayed-title=God is the first cause of the universe&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=The order and complexity of the world presuppose a Creator God&lt;br /&gt;
|displayed-title=The order and complexity of the world presuppose a creator&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=There are divine interventions&lt;br /&gt;
|displayed-title=There are divine interventions&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=God created a morality independent of men&lt;br /&gt;
|displayed-title=There is a morality independent of men&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=Only God is the guarantor of the reality and veracity of the world.&lt;br /&gt;
|displayed-title=Only God is the guarantor of the reality and veracity of the world.&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=God&#039;s existence is contained in his concept&lt;br /&gt;
|displayed-title=God&#039;s existence is contained in his concept&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=We have concepts within us that only God could have created.&lt;br /&gt;
|displayed-title=We have concepts within us that only God could have created.&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=The God hypothesis is simpler than the atheist hypothesis&lt;br /&gt;
|displayed-title=The God hypothesis is simpler than the atheist hypothesis&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=Human nature aspires to God&lt;br /&gt;
|displayed-title=Human nature aspires to God&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=God&#039;s existence can be experienced with immediate certainty&lt;br /&gt;
|displayed-title=God&#039;s existence can be experienced with immediate certainty&lt;br /&gt;
}}{{Pro argument&lt;br /&gt;
|page=Freedom is inexplicable within the framework of materialism&lt;br /&gt;
|displayed-title=Human freedom is inexplicable in atheism&lt;br /&gt;
}}&lt;br /&gt;
{{Pro argument&lt;br /&gt;
|page=Test 01&lt;br /&gt;
|displayed-title=Test 01&lt;br /&gt;
}}&lt;br /&gt;
|con-arguments={{Con argument&lt;br /&gt;
|page=No evidence of a god&lt;br /&gt;
|displayed-title=No evidence of a god&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=There is no spirit outside matter&lt;br /&gt;
|displayed-title=There is no spirit outside matter&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=There is too much suffering and injustice for there to be a god&lt;br /&gt;
|displayed-title=There is too much suffering and injustice for there to be a god&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Religions contradict each other&lt;br /&gt;
|displayed-title=Religions contradict each other&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Human freedom contradicts the existence of a god&lt;br /&gt;
|displayed-title=Man is free&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=The absence of human freedom contradicts the existence of a god&lt;br /&gt;
|displayed-title=Man is determined&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=God is a contradictory concept&lt;br /&gt;
|displayed-title=God is a contradictory concept&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Human existence is no match for God&lt;br /&gt;
|displayed-title=Human existence is no match for God&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=God is an invention&lt;br /&gt;
|displayed-title=God is an invention&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=God is but the name of our ignorance&lt;br /&gt;
|displayed-title=God is but the name of our ignorance&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=Arguments for the existence of God are all argumentative biases&lt;br /&gt;
|displayed-title=Arguments for the existence of God are all argumentative biases&lt;br /&gt;
}}{{Con argument&lt;br /&gt;
|page=The universe is too empty, too ancient and too vast to correspond to the God of religions.&lt;br /&gt;
|displayed-title=The universe is too empty, too ancient and too vast to correspond to the God of religions.&lt;br /&gt;
}}&lt;br /&gt;
|pro-bibliography={{Pro bibliographical reference&lt;br /&gt;
|authors=Anselme de Cantorbery&lt;br /&gt;
|work=Monologion. Proslogion&lt;br /&gt;
|publisher=Cerf&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1986&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Averroès&lt;br /&gt;
|work=Discours décisif&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1996&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=George Berkeley&lt;br /&gt;
|work=Trois dialogues entre Hylas et Philonous&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1999 (1713)&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=René Descartes&lt;br /&gt;
|work=Méditations métaphysiques&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Fénelon&lt;br /&gt;
|work=Traité de l&#039;existence de Dieu&lt;br /&gt;
|publisher=Éditions Universitaires&lt;br /&gt;
|date=1995&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Étienne Gilson&lt;br /&gt;
|work=L&#039;Athéisme difficile&lt;br /&gt;
|publisher=Vrin&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1979&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Frédéric Guillaud&lt;br /&gt;
|work=Dieu existe&lt;br /&gt;
|publisher=Le Cerf&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2013&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Karl Jaspers&lt;br /&gt;
|work=Introduction à la philosophie&lt;br /&gt;
|publisher=Plon&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1951&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Raymond Ruyer&lt;br /&gt;
|work=Dieu des religions, Dieu de la science&lt;br /&gt;
|publisher=Flammarion&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1970&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Richard Swinburne&lt;br /&gt;
|work=Y a-t-il un Dieu ?&lt;br /&gt;
|publisher=Ithaque&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2009&lt;br /&gt;
}}{{Pro bibliographical reference&lt;br /&gt;
|authors=Jean Staune&lt;br /&gt;
|work=Notre existence a-t-elle un sens ? (Une enquête scientifique et philosophique)&lt;br /&gt;
|publisher=Fayard, coll. Pluriel&lt;br /&gt;
|date=2017&lt;br /&gt;
}}&lt;br /&gt;
|con-bibliography={{Con bibliographical reference&lt;br /&gt;
|authors=Michel-Yves Bolloré, Olivier Bonnassies&lt;br /&gt;
|work=Dieu, la science, les preuves : l&#039;aube d&#039;une révolution&lt;br /&gt;
|publisher=Guy Trédaniel&lt;br /&gt;
|date=2021&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Paul Davies&lt;br /&gt;
|work=L&#039;esprit de Dieu&lt;br /&gt;
|publisher=Hachette Littérature&lt;br /&gt;
|date=1998&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=André Comte-Sponville&lt;br /&gt;
|article=Dieu existe-t-il ?&lt;br /&gt;
|work=L&#039;esprit de l&#039;athéisme&lt;br /&gt;
|publisher=Albin Michel&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2006&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Richard Dawkins&lt;br /&gt;
|work=Pour en finir avec Dieu&lt;br /&gt;
|publisher=Robert Laffont&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2008&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Ludwig Feuerbach&lt;br /&gt;
|work=L&#039;essence du christianisme&lt;br /&gt;
|publisher=Gallimard&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1992 (1841)&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Richard Dawkins&lt;br /&gt;
|work=L&#039;horloger aveugle&lt;br /&gt;
|publisher=Robert Laffont&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1999&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Sigmund Freud&lt;br /&gt;
|work=L&#039;avenir d&#039;une illusion&lt;br /&gt;
|date=1927&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Christopher Hitchens&lt;br /&gt;
|work=Dieu n&#039;est pas grand&lt;br /&gt;
|publisher=Belfond&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2009&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Michel Onfray&lt;br /&gt;
|work=Traité d&#039;athéologie&lt;br /&gt;
|publisher=Grasset&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=2005&lt;br /&gt;
}}{{Con bibliographical reference&lt;br /&gt;
|authors=Bertrand Russell&lt;br /&gt;
|work=Pourquoi je ne suis pas chrétien&lt;br /&gt;
|place=Montréal&lt;br /&gt;
|date=2011&lt;br /&gt;
}}&lt;br /&gt;
|bibliography={{Bibliographical reference&lt;br /&gt;
|authors=Jean-Paul Sartre&lt;br /&gt;
|work=L&#039;existentialisme est un humanisme&lt;br /&gt;
|publisher=Gallimard&lt;br /&gt;
|place=Paris&lt;br /&gt;
|date=1946&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=David Hume&lt;br /&gt;
|work=Dialogues sur la religion naturelle&lt;br /&gt;
|publisher=Folio&lt;br /&gt;
|date=2009&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=Leszek Kołakowski&lt;br /&gt;
|work=Philosophie de la religion&lt;br /&gt;
|publisher=Gallimard&lt;br /&gt;
|date=1985&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=Bernard Sève&lt;br /&gt;
|work=La question philosophique de l&#039;existence de Dieu&lt;br /&gt;
|publisher=PUF&lt;br /&gt;
|date=1994&lt;br /&gt;
}}{{Bibliographical reference&lt;br /&gt;
|authors=Hans Küng&lt;br /&gt;
|work=Dieu existe-t-il ?&lt;br /&gt;
|publisher=Le Seuil&lt;br /&gt;
|date=1981&lt;br /&gt;
}}&lt;br /&gt;
|webliography={{Web reference&lt;br /&gt;
|link=https://fr.wikipedia.org/wiki/Arguments_sur_l God&#039;s_existence&lt;br /&gt;
|page=Arguments for the existence of God&lt;br /&gt;
|site=Wikipedia&lt;br /&gt;
}}{{Web reference&lt;br /&gt;
|link=https://agora.qc.ca/thematiques/mort/dossiers/le_dieu_pathetique_de_la_theologie&lt;br /&gt;
|page=The pathetic God of theology&lt;br /&gt;
|site=Agora Québec&lt;br /&gt;
}}{{Web reference&lt;br /&gt;
|link=https://journals.openedition.org/theoremes/265&lt;br /&gt;
|page=The origins of analytic philosophy of religion&lt;br /&gt;
|authors=Nicholas Wolterstorff&lt;br /&gt;
|site=ThéoRèmes magazine&lt;br /&gt;
|date=2012&lt;br /&gt;
}}&lt;br /&gt;
|con-videography={{Con video reference&lt;br /&gt;
|title=Proof of god&#039;s non-existence&lt;br /&gt;
|link=https://youtu.be/yUm6Hrqnqqk&lt;br /&gt;
}}&lt;br /&gt;
|videography={{Video reference&lt;br /&gt;
|title=Does science bring us closer to God? (Skeptical interview #7)&lt;br /&gt;
|link=https://www.youtube.com/watch?v=5qwln9eUdeg&lt;br /&gt;
}}&lt;br /&gt;
|related-debates={{Related debate&lt;br /&gt;
|page=Is belief in God beneficial?&lt;br /&gt;
}}{{Related debate&lt;br /&gt;
|page=Do religions converge?&lt;br /&gt;
}}{{Related debate&lt;br /&gt;
|page=Is religion compatible with Marxism?&lt;br /&gt;
}}{{Related debate&lt;br /&gt;
|page=Are science and religion compatible?&lt;br /&gt;
}}&lt;br /&gt;
|sections=Philosophy, Religion and Spirituality&lt;br /&gt;
|keywords=God, existence, first cause, materialism&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Test_01&amp;diff=10412</id>
		<title>Test 01</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Test_01&amp;diff=10412"/>
		<updated>2026-03-22T23:36:10Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created page with &amp;quot;{{Argument |initialization=Pro argument@521 |creation-date=2026-03-22 }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Argument&lt;br /&gt;
|initialization=Pro argument@521&lt;br /&gt;
|creation-date=2026-03-22&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10327</id>
		<title>Form:New argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10327"/>
		<updated>2026-03-22T23:35:34Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouvel argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New argument&lt;br /&gt;
| button text = Edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Add content to the argument&lt;br /&gt;
| edit title = Edit content to the argument&lt;br /&gt;
}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|initialization|hidden}}}&lt;br /&gt;
{{{field|name|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot; style=&amp;quot;font-style: italic; font-size: 105%; margin-bottom: 1em;&amp;quot;&amp;gt;You can now add a summary, one or more quotes, one or more references, and fill in the categories to which the argument relates.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Bibliography.svg | 17px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&lt;br /&gt;
{{{field|reference-warnings|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{field|creation-date|default={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 1.5em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:New_argument_title&amp;diff=10264</id>
		<title>Template:New argument title</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:New_argument_title&amp;diff=10264"/>
		<updated>2026-03-22T23:33:48Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le modèle “Nouveau titre d&#039;argument”. Il devrait être appelé selon le format suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Nouveau titre d&#039;argument&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Modifiez la page pour voir le texte du modèle.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; font-size:110%;&amp;quot;&amp;gt;This title will be the one displayed in the debate.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Recommendations&amp;lt;/h5&amp;gt;&lt;br /&gt;
# This title must make &#039;&#039;&#039;reading as smooth as possible&#039;&#039;&#039;.&lt;br /&gt;
# He must present the argument in &#039;&#039;&#039;its strongest and most convincing version&#039;&#039;&#039;.&lt;br /&gt;
# Prefer &#039;&#039;&#039;short formulations that everyone can understand&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{#forminput:&lt;br /&gt;
  | form = New argument&lt;br /&gt;
  | query string = Argument[initialization]={{{type|}}}@{{{ID|}}}&lt;br /&gt;
  | placeholder = This will be the title displayed in the debate&lt;br /&gt;
  | button text = Validate&lt;br /&gt;
}}{{#if: {{{type|}}}&lt;br /&gt;
  | &#039;&#039;&#039;Warning&#039;&#039;&#039;: If the argument you want to add already exists, click on the button {{#formlink:&lt;br /&gt;
    | link text = Add an existing argument&lt;br /&gt;
    | form =  {{{type}}}s&lt;br /&gt;
    | target = {{#replace: {{#ask: [[Page ID:: {{{ID|}}}]] | link = none}} | ? | %3F}}&lt;br /&gt;
    | tooltip = Go to the form to add an existing argument&lt;br /&gt;
  }}.&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=MediaWiki:Common.js&amp;diff=10252</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=MediaWiki:Common.js&amp;diff=10252"/>
		<updated>2026-03-22T23:29:40Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mw.loader.using( [ &#039;mediawiki.util&#039; ] ).then( function () {&lt;br /&gt;
	(function () {&lt;br /&gt;
		var rawReferrer = document.referrer || &#039;&#039;;&lt;br /&gt;
		var referrer = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
		try {&lt;br /&gt;
			referrer = decodeURIComponent( rawReferrer );&lt;br /&gt;
		} catch ( e ) {&lt;br /&gt;
			referrer = rawReferrer;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var pageName = mw.config.get( &#039;wgPageName&#039; ) || &#039;&#039;;&lt;br /&gt;
		var reloadKey = &#039;wk-delayed-reload-&#039; + pageName;&lt;br /&gt;
		var cameFromNewArgumentForm = referrer.indexOf( &#039;/New_argument/&#039; ) !== -1;&lt;br /&gt;
&lt;br /&gt;
		if ( !cameFromNewArgumentForm ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if ( sessionStorage.getItem( reloadKey ) === &#039;1&#039; ) {&lt;br /&gt;
			sessionStorage.removeItem( reloadKey );&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sessionStorage.setItem( reloadKey, &#039;1&#039; );&lt;br /&gt;
&lt;br /&gt;
		setTimeout( function () {&lt;br /&gt;
			window.location.href = mw.util.getUrl( pageName );&lt;br /&gt;
		}, 500 );&lt;br /&gt;
	})();&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_debate&amp;diff=10251</id>
		<title>Form:New debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_debate&amp;diff=10251"/>
		<updated>2026-03-22T23:18:52Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouveau débat”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New debate&lt;br /&gt;
| button text = Create or edit debate&lt;br /&gt;
| autocomplete on category = Debates&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Debate forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Create the debate&lt;br /&gt;
| edit title = Edit the debate&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Debate}}}&lt;br /&gt;
{{{field|type|hidden}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; font-size: 105%;&amp;quot;&amp;gt;You are about to create a new debate page. Please fill in the corresponding categories before registering.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|topic|hidden}}}&lt;br /&gt;
{{{field|progress|hidden|mandatory|default=Draft}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|debate-warnings|hidden}}}&lt;br /&gt;
{{{field|introduction|hidden|holds template}}}&lt;br /&gt;
{{{field|wikipedia-articles|hidden|holds template}}}&lt;br /&gt;
{{{field|pro-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|con-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-bibliographie|hidden}}}&lt;br /&gt;
{{{field|pro-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-sitographie|hidden}}}&lt;br /&gt;
{{{field|pro-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-vidéographie|hidden}}}&lt;br /&gt;
{{{field|pro-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
{{{field|related-debates|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.6em&amp;quot;&amp;gt;[[File: Categories.svg | 20px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each debate is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of debate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the sections directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|mandatory|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the debate. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Only add keywords directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|mandatory|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{field|creation-date|default={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Subsection|multiple|add button text=Add a subsection|embed in field=Debate[introduction]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|content|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Wikipedia article|add button text=Add a Wikipedia article|multiple|embed in field=Debate[wikipedia-articles]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro argument|add button text=Add an argument|multiple|embed in field=Debate[pro-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con argument|add button text=Add an argument|multiple|embed in field=Debate[con-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[pro-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[con-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro web reference|multiple|add button text=Add a reference|embed in field=Debate[pro-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con web reference|multiple|add button text=Add a reference|embed in field=Debate[con-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a reference|embed in field=Debate[webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro video reference|multiple|add button text=Add a reference|embed in field=Debate[pro-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con video reference|multiple|add button text=Add a reference|embed in field=Debate[con-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a reference|embed in field=Debate[videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Related debate|multiple|add button text=Add a related debate|embed in field=Debate[related-debates]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 2em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10250</id>
		<title>Form:New argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10250"/>
		<updated>2026-03-22T23:18:24Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouvel argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New argument&lt;br /&gt;
| button text = Edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Add content to the argument&lt;br /&gt;
| edit title = Edit content to the argument&lt;br /&gt;
}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|default={{BASEPAGENAME}}|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{{field|name|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot; style=&amp;quot;font-style: italic; font-size: 105%; margin-bottom: 1em;&amp;quot;&amp;gt;You can now add a summary, one or more quotes, one or more references, and fill in the categories to which the argument relates.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Bibliography.svg | 17px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&lt;br /&gt;
{{{field|reference-warnings|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{field|creation-date|default={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 1.5em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Debate&amp;diff=10249</id>
		<title>Template:Debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Debate&amp;diff=10249"/>
		<updated>2026-03-22T22:51:15Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates used in a debate page]]&lt;br /&gt;
{{#template_params:&lt;br /&gt;
|topic&lt;br /&gt;
|complete-topic&lt;br /&gt;
|progress&lt;br /&gt;
|title-warnings&lt;br /&gt;
|debate-warnings&lt;br /&gt;
|introduction&lt;br /&gt;
|wikipedia-articles&lt;br /&gt;
|pro-arguments&lt;br /&gt;
|con-arguments&lt;br /&gt;
|pro-bibliography&lt;br /&gt;
|con-bibliography&lt;br /&gt;
|bibliography&lt;br /&gt;
|pro-webliography&lt;br /&gt;
|con-webliography&lt;br /&gt;
|webliography&lt;br /&gt;
|pro-videography&lt;br /&gt;
|con-videography&lt;br /&gt;
|videography&lt;br /&gt;
|related-debates&lt;br /&gt;
|sections&lt;br /&gt;
|keywords&lt;br /&gt;
|creation-date&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#invoke:Debate|render&lt;br /&gt;
  |topic={{{topic|}}}&lt;br /&gt;
  |complete-topic={{{complete-topic|}}}&lt;br /&gt;
  |progress={{{progress|}}}&lt;br /&gt;
  |title-warnings={{{title-warnings|}}}&lt;br /&gt;
  |debate-warnings={{{debate-warnings|}}}&lt;br /&gt;
  |introduction={{{introduction|}}}&lt;br /&gt;
  |wikipedia-articles={{{wikipedia-articles|}}}&lt;br /&gt;
  |pro-arguments={{{pro-arguments|}}}&lt;br /&gt;
  |con-arguments={{{con-arguments|}}}&lt;br /&gt;
  |pro-bibliography={{{pro-bibliography|}}}&lt;br /&gt;
  |con-bibliography={{{con-bibliography|}}}&lt;br /&gt;
  |bibliography={{{bibliography|}}}&lt;br /&gt;
  |pro-webliography={{{pro-webliography|}}}&lt;br /&gt;
  |con-webliography={{{con-webliography|}}}&lt;br /&gt;
  |webliography={{{webliography|}}}&lt;br /&gt;
  |pro-videography={{{pro-webliography|}}}&lt;br /&gt;
  |con-videography={{{con-videography|}}}&lt;br /&gt;
  |videography={{{videography|}}}&lt;br /&gt;
  |related-debates={{{related-debates|}}}&lt;br /&gt;
  |sections={{{sections|}}}&lt;br /&gt;
  |keywords={{{keywords|}}}&lt;br /&gt;
  |creation-date={{{creation-date|}}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10248</id>
		<title>Template:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10248"/>
		<updated>2026-03-22T22:49:58Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates used in an argument page]][[Category: Argument templates]]&lt;br /&gt;
{{#template_params:&lt;br /&gt;
|initialization&lt;br /&gt;
|name&lt;br /&gt;
|title-warnings&lt;br /&gt;
|argument-warnings&lt;br /&gt;
|summary-warnings&lt;br /&gt;
|summary&lt;br /&gt;
|quotes&lt;br /&gt;
|reference-warnings&lt;br /&gt;
|bibliography&lt;br /&gt;
|webliography&lt;br /&gt;
|videography&lt;br /&gt;
|justification-warnings&lt;br /&gt;
|justifications&lt;br /&gt;
|objection-warnings&lt;br /&gt;
|objections&lt;br /&gt;
|detailed-debate&lt;br /&gt;
|sections&lt;br /&gt;
|keywords&lt;br /&gt;
|creation-date&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:Argument|render&lt;br /&gt;
  | initialization = {{{initialization|}}}&lt;br /&gt;
  | title-warnings = {{{title-warnings|}}}&lt;br /&gt;
  | argument-warnings = {{{argument-warnings|}}}&lt;br /&gt;
  | summary-warnings = {{{summary-warnings|}}}&lt;br /&gt;
  | summary = {{{summary|}}}&lt;br /&gt;
  | quotes = {{{quotes|}}}&lt;br /&gt;
  | reference-warnings = {{{reference-warnings|}}}&lt;br /&gt;
  | bibliography = {{{bibliography|}}}&lt;br /&gt;
  | webliography = {{{webliography|}}}&lt;br /&gt;
  | videography = {{{videography|}}}&lt;br /&gt;
  | justification-warnings = {{{justification-warnings|}}}&lt;br /&gt;
  | justifications = {{{justifications|}}}&lt;br /&gt;
  | objection-warnings = {{{objection-warnings|}}}&lt;br /&gt;
  | objections = {{{objections|}}}&lt;br /&gt;
  | detailed-debate = {{{detailed-debate|}}}&lt;br /&gt;
  | sections = {{{sections|}}}&lt;br /&gt;
  | keywords = {{{keywords|}}}&lt;br /&gt;
  | creation-date = {{{creation-date|}}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10247</id>
		<title>Template:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10247"/>
		<updated>2026-03-22T22:45:31Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates used in an argument page]][[Category: Argument templates]]&lt;br /&gt;
{{#template_params:&lt;br /&gt;
|initialization&lt;br /&gt;
|title-warnings&lt;br /&gt;
|argument-warnings&lt;br /&gt;
|summary-warnings&lt;br /&gt;
|summary&lt;br /&gt;
|quotes&lt;br /&gt;
|reference-warnings&lt;br /&gt;
|bibliography&lt;br /&gt;
|webliography&lt;br /&gt;
|videography&lt;br /&gt;
|justification-warnings&lt;br /&gt;
|justifications&lt;br /&gt;
|objection-warnings&lt;br /&gt;
|objections&lt;br /&gt;
|detailed-debate&lt;br /&gt;
|sections&lt;br /&gt;
|keywords&lt;br /&gt;
|creation-date&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:Argument|render&lt;br /&gt;
  | initialization = {{{initialization|}}}&lt;br /&gt;
  | title-warnings = {{{title-warnings|}}}&lt;br /&gt;
  | argument-warnings = {{{argument-warnings|}}}&lt;br /&gt;
  | summary-warnings = {{{summary-warnings|}}}&lt;br /&gt;
  | summary = {{{summary|}}}&lt;br /&gt;
  | quotes = {{{quotes|}}}&lt;br /&gt;
  | reference-warnings = {{{reference-warnings|}}}&lt;br /&gt;
  | bibliography = {{{bibliography|}}}&lt;br /&gt;
  | webliography = {{{webliography|}}}&lt;br /&gt;
  | videography = {{{videography|}}}&lt;br /&gt;
  | justification-warnings = {{{justification-warnings|}}}&lt;br /&gt;
  | justifications = {{{justifications|}}}&lt;br /&gt;
  | objection-warnings = {{{objection-warnings|}}}&lt;br /&gt;
  | objections = {{{objections|}}}&lt;br /&gt;
  | detailed-debate = {{{detailed-debate|}}}&lt;br /&gt;
  | sections = {{{sections|}}}&lt;br /&gt;
  | keywords = {{{keywords|}}}&lt;br /&gt;
  | creation-date = {{{creation-date|}}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10246</id>
		<title>Template:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10246"/>
		<updated>2026-03-22T22:45:10Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates used in an argument page]][[Category: Argument templates]]&lt;br /&gt;
{{#template_params:&lt;br /&gt;
|initialization=&lt;br /&gt;
|title-warnings=&lt;br /&gt;
|argument-warnings=&lt;br /&gt;
|summary-warnings=&lt;br /&gt;
|summary=&lt;br /&gt;
|quotes=&lt;br /&gt;
|reference-warnings=&lt;br /&gt;
|bibliography=&lt;br /&gt;
|webliography=&lt;br /&gt;
|videography=&lt;br /&gt;
|justification-warnings=&lt;br /&gt;
|justifications=&lt;br /&gt;
|objection-warnings=&lt;br /&gt;
|objections=&lt;br /&gt;
|detailed-debate=&lt;br /&gt;
|sections=&lt;br /&gt;
|keywords=&lt;br /&gt;
|creation-date=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:Argument|render&lt;br /&gt;
  | initialization = {{{initialization|}}}&lt;br /&gt;
  | title-warnings = {{{title-warnings|}}}&lt;br /&gt;
  | argument-warnings = {{{argument-warnings|}}}&lt;br /&gt;
  | summary-warnings = {{{summary-warnings|}}}&lt;br /&gt;
  | summary = {{{summary|}}}&lt;br /&gt;
  | quotes = {{{quotes|}}}&lt;br /&gt;
  | reference-warnings = {{{reference-warnings|}}}&lt;br /&gt;
  | bibliography = {{{bibliography|}}}&lt;br /&gt;
  | webliography = {{{webliography|}}}&lt;br /&gt;
  | videography = {{{videography|}}}&lt;br /&gt;
  | justification-warnings = {{{justification-warnings|}}}&lt;br /&gt;
  | justifications = {{{justifications|}}}&lt;br /&gt;
  | objection-warnings = {{{objection-warnings|}}}&lt;br /&gt;
  | objections = {{{objections|}}}&lt;br /&gt;
  | detailed-debate = {{{detailed-debate|}}}&lt;br /&gt;
  | sections = {{{sections|}}}&lt;br /&gt;
  | keywords = {{{keywords|}}}&lt;br /&gt;
  | creation-date = {{{creation-date|}}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10245</id>
		<title>Template:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Argument&amp;diff=10245"/>
		<updated>2026-03-22T22:45:01Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates used in an argument page]][[Category: Argument templates]]&lt;br /&gt;
{{#template_params:&lt;br /&gt;
|initialisation=&lt;br /&gt;
|title-warnings=&lt;br /&gt;
|argument-warnings=&lt;br /&gt;
|summary-warnings=&lt;br /&gt;
|summary=&lt;br /&gt;
|quotes=&lt;br /&gt;
|reference-warnings=&lt;br /&gt;
|bibliography=&lt;br /&gt;
|webliography=&lt;br /&gt;
|videography=&lt;br /&gt;
|justification-warnings=&lt;br /&gt;
|justifications=&lt;br /&gt;
|objection-warnings=&lt;br /&gt;
|objections=&lt;br /&gt;
|detailed-debate=&lt;br /&gt;
|sections=&lt;br /&gt;
|keywords=&lt;br /&gt;
|creation-date=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#invoke:Argument|render&lt;br /&gt;
  | initialization = {{{initialization|}}}&lt;br /&gt;
  | title-warnings = {{{title-warnings|}}}&lt;br /&gt;
  | argument-warnings = {{{argument-warnings|}}}&lt;br /&gt;
  | summary-warnings = {{{summary-warnings|}}}&lt;br /&gt;
  | summary = {{{summary|}}}&lt;br /&gt;
  | quotes = {{{quotes|}}}&lt;br /&gt;
  | reference-warnings = {{{reference-warnings|}}}&lt;br /&gt;
  | bibliography = {{{bibliography|}}}&lt;br /&gt;
  | webliography = {{{webliography|}}}&lt;br /&gt;
  | videography = {{{videography|}}}&lt;br /&gt;
  | justification-warnings = {{{justification-warnings|}}}&lt;br /&gt;
  | justifications = {{{justifications|}}}&lt;br /&gt;
  | objection-warnings = {{{objection-warnings|}}}&lt;br /&gt;
  | objections = {{{objections|}}}&lt;br /&gt;
  | detailed-debate = {{{detailed-debate|}}}&lt;br /&gt;
  | sections = {{{sections|}}}&lt;br /&gt;
  | keywords = {{{keywords|}}}&lt;br /&gt;
  | creation-date = {{{creation-date|}}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Category:Articles_without_date_creation&amp;diff=10244</id>
		<title>Category:Articles without date creation</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Category:Articles_without_date_creation&amp;diff=10244"/>
		<updated>2026-03-21T19:25:38Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created page with &amp;quot;This is the Articles without date creation category.  Category:Arguments to review&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Articles without date creation category.&lt;br /&gt;
&lt;br /&gt;
[[Category:Arguments to review]]&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10243</id>
		<title>Form:New argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10243"/>
		<updated>2026-03-21T17:55:03Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouvel argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New argument&lt;br /&gt;
| button text = Edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Add content to the argument&lt;br /&gt;
| edit title = Edit content to the argument&lt;br /&gt;
}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|default={{BASEPAGENAME}}|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{{field|name|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot; style=&amp;quot;font-style: italic; font-size: 105%; margin-bottom: 1em;&amp;quot;&amp;gt;You can now add a summary, one or more quotes, one or more references, and fill in the categories to which the argument relates.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Bibliography.svg | 17px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&lt;br /&gt;
{{{field|reference-warnings|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{field|creation-date|default={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY}}|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 1.5em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_debate&amp;diff=10242</id>
		<title>Form:New debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_debate&amp;diff=10242"/>
		<updated>2026-03-21T17:54:43Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouveau débat”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New debate&lt;br /&gt;
| button text = Create or edit debate&lt;br /&gt;
| autocomplete on category = Debates&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Debate forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Create the debate&lt;br /&gt;
| edit title = Edit the debate&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Debate}}}&lt;br /&gt;
{{{field|type|hidden}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; font-size: 105%;&amp;quot;&amp;gt;You are about to create a new debate page. Please fill in the corresponding categories before registering.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|topic|hidden}}}&lt;br /&gt;
{{{field|progress|hidden|mandatory|default=Draft}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|debate-warnings|hidden}}}&lt;br /&gt;
{{{field|introduction|hidden|holds template}}}&lt;br /&gt;
{{{field|wikipedia-articles|hidden|holds template}}}&lt;br /&gt;
{{{field|pro-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|con-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-bibliographie|hidden}}}&lt;br /&gt;
{{{field|pro-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-sitographie|hidden}}}&lt;br /&gt;
{{{field|pro-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-vidéographie|hidden}}}&lt;br /&gt;
{{{field|pro-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
{{{field|related-debates|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.6em&amp;quot;&amp;gt;[[File: Categories.svg | 20px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each debate is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of debate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the sections directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|mandatory|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the debate. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Only add keywords directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|mandatory|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{field|creation-date|default={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY}}|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Subsection|multiple|add button text=Add a subsection|embed in field=Debate[introduction]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|content|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Wikipedia article|add button text=Add a Wikipedia article|multiple|embed in field=Debate[wikipedia-articles]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro argument|add button text=Add an argument|multiple|embed in field=Debate[pro-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con argument|add button text=Add an argument|multiple|embed in field=Debate[con-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[pro-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[con-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro web reference|multiple|add button text=Add a reference|embed in field=Debate[pro-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con web reference|multiple|add button text=Add a reference|embed in field=Debate[con-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a reference|embed in field=Debate[webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro video reference|multiple|add button text=Add a reference|embed in field=Debate[pro-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con video reference|multiple|add button text=Add a reference|embed in field=Debate[con-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a reference|embed in field=Debate[videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Related debate|multiple|add button text=Add a related debate|embed in field=Debate[related-debates]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 2em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_debate&amp;diff=10222</id>
		<title>Form:New debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_debate&amp;diff=10222"/>
		<updated>2026-03-20T10:56:28Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouveau débat”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New debate&lt;br /&gt;
| button text = Create or edit debate&lt;br /&gt;
| autocomplete on category = Debates&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Debate forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Create the debate&lt;br /&gt;
| edit title = Edit the debate&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Debate}}}&lt;br /&gt;
{{{field|type|hidden}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; font-size: 105%;&amp;quot;&amp;gt;You are about to create a new debate page. Please fill in the corresponding categories before registering.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|topic|hidden}}}&lt;br /&gt;
{{{field|progress|hidden|mandatory|default=Draft}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|debate-warnings|hidden}}}&lt;br /&gt;
{{{field|introduction|hidden|holds template}}}&lt;br /&gt;
{{{field|wikipedia-articles|hidden|holds template}}}&lt;br /&gt;
{{{field|pro-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|con-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-bibliographie|hidden}}}&lt;br /&gt;
{{{field|pro-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-sitographie|hidden}}}&lt;br /&gt;
{{{field|pro-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-vidéographie|hidden}}}&lt;br /&gt;
{{{field|pro-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
{{{field|related-debates|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.6em&amp;quot;&amp;gt;[[File: Categories.svg | 20px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each debate is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of debate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the sections directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|mandatory|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the debate. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Only add keywords directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|mandatory|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Subsection|multiple|add button text=Add a subsection|embed in field=Debate[introduction]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|content|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Wikipedia article|add button text=Add a Wikipedia article|multiple|embed in field=Debate[wikipedia-articles]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro argument|add button text=Add an argument|multiple|embed in field=Debate[pro-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con argument|add button text=Add an argument|multiple|embed in field=Debate[con-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[pro-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[con-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro web reference|multiple|add button text=Add a reference|embed in field=Debate[pro-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con web reference|multiple|add button text=Add a reference|embed in field=Debate[con-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a reference|embed in field=Debate[webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro video reference|multiple|add button text=Add a reference|embed in field=Debate[pro-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con video reference|multiple|add button text=Add a reference|embed in field=Debate[con-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a reference|embed in field=Debate[videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Related debate|multiple|add button text=Add a related debate|embed in field=Debate[related-debates]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 2em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10221</id>
		<title>Form:New argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10221"/>
		<updated>2026-03-20T10:43:59Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouvel argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New argument&lt;br /&gt;
| button text = Edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Add content to the argument&lt;br /&gt;
| edit title = Edit content to the argument&lt;br /&gt;
}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|default={{BASEPAGENAME}}|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot; style=&amp;quot;font-style: italic; font-size: 105%; margin-bottom: 1em;&amp;quot;&amp;gt;You can now add a summary, one or more quotes, one or more references, and fill in the categories to which the argument relates.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Bibliography.svg | 17px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&lt;br /&gt;
{{{field|reference-warnings|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 1.5em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:Debate&amp;diff=10220</id>
		<title>Form:Debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:Debate&amp;diff=10220"/>
		<updated>2026-03-20T10:41:44Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Débat”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = Debate&lt;br /&gt;
| button text = Create or edit debate&lt;br /&gt;
| autocomplete on category = Debates&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Debate forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Create the debate&lt;br /&gt;
| edit title = Edit the debate&lt;br /&gt;
}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{{for template|Debate}}}&lt;br /&gt;
{{{field|type|mandatory|input type=radiobutton|values=pro/con, for/against|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.6em&amp;quot;&amp;gt;[[File: Contributions.svg | 18px | link=]]&amp;lt;/span&amp;gt;Topic&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Reformulez le sujet du débat. Il s&#039;affichera en-dessous du titre de la page.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Indentation&lt;br /&gt;
|title=Example&lt;br /&gt;
|content= &lt;br /&gt;
* &#039;&#039;Titre du débat&#039;&#039; : Dieu existe-t-il ?&lt;br /&gt;
* &#039;&#039;Descriptif&#039;&#039; : Arguments pour et contre l&#039;existence de Dieu&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{{field|topic|mandatory}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.6em&amp;quot;&amp;gt;[[File: Warning-flag.svg | 17px | link=]]&amp;lt;/span&amp;gt;Banners&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Information banners can be displayed at the head of the debate to notify visitors of any shortcomings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress level&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;Three levels of advancement can be distinguished for the debate:&lt;br /&gt;
* A &#039;&#039;&#039;draft&#039;&#039;&#039; is a more or less organized list of arguments;&lt;br /&gt;
* A &#039;&#039;&#039;debate under construction&#039;&#039;&#039; lists a large number of arguments that are not necessarily written;&lt;br /&gt;
* A &#039;&#039;&#039;constructed debate&#039;&#039;&#039; is a complete debate written to the end.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|progress|input type=dropdown|values=Draft, Debate under construction, Constructed debate|mandatory|default=Draft}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Title warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If the title of the debate poses a problem, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Non-standard title&#039;&#039;&#039;: the question asked does not have the possible answer &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;;&lt;br /&gt;
* &#039;&#039;&#039;Title to be simplified&#039;&#039;&#039;: the wording is unnecessarily complex;&lt;br /&gt;
* &#039;&#039;&#039;Title to be explained&#039;&#039;&#039;: the question asked is not clear or is ambiguous.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|title-warnings|input type=checkboxes|values=Non-standard title, Title to simplify, Title to be explained}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Debate warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If certain aspects of the debate are problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Sensitive debate&#039;&#039;&#039; if it presents arguments that may shock;&lt;br /&gt;
* &#039;&#039;&#039;Fanciful debate&#039;&#039;&#039; if its presence in the public space is not obvious;&lt;br /&gt;
* &#039;&#039;&#039;Redundant debate&#039;&#039;&#039; if it duplicates another debate on the site;&lt;br /&gt;
* &#039;&#039;&#039;Unbalanced debate&#039;&#039;&#039; if it favors one side to the detriment of the other;&lt;br /&gt;
* &#039;&#039;&#039;Plan to improve&#039;&#039;&#039; if arguments are redundant, need to be unraveled, or if the structure can be clarified.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|debate-warnings|input type=checkboxes|values=Sensitive debate, Fanciful debate, Redundant debate, Unbalanced debate, Plan to improve}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|introduction|hidden|holds template}}}&lt;br /&gt;
{{{field|wikipedia-articles|hidden|holds template}}}&lt;br /&gt;
{{{field|pro-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|con-arguments|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-bibliographie|hidden}}}&lt;br /&gt;
{{{field|pro-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-sitographie|hidden}}}&lt;br /&gt;
{{{field|pro-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
{{{field|avertissements-vidéographie|hidden}}}&lt;br /&gt;
{{{field|pro-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|con-videography|hidden|holds template}}}&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
{{{field|related-debates|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.6em&amp;quot;&amp;gt;[[File: Categories.svg | 20px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each debate is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of debate.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the sections directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|mandatory|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the debate. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Only add keywords directly related to this debate. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|mandatory|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Subsection|multiple|add button text=Add a subsection|embed in field=Debate[introduction]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|content|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Wikipedia article|add button text=Add a Wikipedia article|multiple|embed in field=Debate[wikipedia-articles]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro argument|add button text=Add an argument|multiple|embed in field=Debate[pro-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con argument|add button text=Add an argument|multiple|embed in field=Debate[con-arguments]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[pro-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[con-bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a reference|embed in field=Debate[bibliography]}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro web reference|multiple|add button text=Add a reference|embed in field=Debate[pro-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con web reference|multiple|add button text=Add a reference|embed in field=Debate[con-webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a reference|embed in field=Debate[webliography]}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|site|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Pro video reference|multiple|add button text=Add a reference|embed in field=Debate[pro-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Con video reference|multiple|add button text=Add a reference|embed in field=Debate[con-videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a reference|embed in field=Debate[videography]}}}&lt;br /&gt;
{{{field|title|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Related debate|multiple|add button text=Add a related debate|embed in field=Debate[related-debates]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;editOptions&amp;quot; style=&amp;quot;margin-top: 1em&amp;quot;&amp;gt;{{{standard input|summary|label=Edit summary:}}}&lt;br /&gt;
{{Edit summary}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&lt;br /&gt;
{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:Argument&amp;diff=10219</id>
		<title>Form:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:Argument&amp;diff=10219"/>
		<updated>2026-03-20T10:41:30Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = Argument&lt;br /&gt;
| button text = Create or edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Edit argument&lt;br /&gt;
| edit title = Edit argument&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Warning-flag.svg | 15px | link=]]&amp;lt;/span&amp;gt;Warning banners&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Information banners can be displayed at the top of the page to warn visitors of any shortcomings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Title warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If the title of the argument is problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Disadvantageous title&#039;&#039;&#039;: the title presents the argument in a lacunary or caricatured way;&lt;br /&gt;
* &#039;&#039;&#039;Unclear title&#039;&#039;&#039;: the title is confusing, jargon, too allusive or telegraphic;&lt;br /&gt;
* &#039;&#039;&#039;Incomplete title&#039;&#039;&#039;: the title is ambiguous or incomprehensible on its own;&lt;br /&gt;
* &#039;&#039;&#039;Title too long&#039;&#039;&#039;: the title contains several sentences or is generally too developed.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|title-warnings|input type=checkboxes|values=Disadvantageous title, Unclear title, Incomplete title, Too long title}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Argument warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If certain aspects of the argument are problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Sensitive argument&#039;&#039;&#039; if it exposes arguments that may shock;&lt;br /&gt;
* &#039;&#039;&#039;Fanciful argument&#039;&#039;&#039; if its presence in the public space is not obvious;&lt;br /&gt;
* &#039;&#039;&#039;Potentially illegal argument&#039;&#039;&#039; if you believe it violates the law.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|argument-warnings|input type=checkboxes|values=Sensitive argument, Fanciful argument, Potentially illegal argument}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|summary-warnings|input type=checkboxes|values=Summary to be written, Arguments to separate, Too long summary, Unclear summary, Disadvantageous summary, Style to review}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message pointing out the shortcomings of this summary:&lt;br /&gt;
* &#039;&#039;&#039;Summary to be written&#039;&#039;&#039;: No content has been provided or the text entered corresponds to a note taking.&lt;br /&gt;
* &#039;&#039;&#039;Arguments to separate&#039;&#039;&#039;: This text mixes arguments that need to be separated. Create a specific page for each of them.&lt;br /&gt;
* &#039;&#039;&#039;Too long summary&#039;&#039;&#039;: This text contains redundancies, heavy sentences, or is globally too developed.&lt;br /&gt;
* &#039;&#039;&#039;Unclear summary&#039;&#039;&#039;: This text is confusing, jargon, too complex or too telegraphic.&lt;br /&gt;
* &#039;&#039;&#039;Disadvantageous summary&#039;&#039;&#039;: The argument is presented in a lacunary or caricatured way. A more convincing version needs to be written.&lt;br /&gt;
* &#039;&#039;&#039;Style to review&#039;&#039;&#039;: This summary is written in a personal way (“I think that…”) or too familiar.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|reference-warnings|input type=checkboxes|values=Too many references, Many incomplete references}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message indicating the gaps in the bibliography:&lt;br /&gt;
* &#039;&#039;&#039;Too many references&#039;&#039;&#039;: the bibliography lists more than ten publications;&lt;br /&gt;
* &#039;&#039;&#039;Many incomplete references&#039;&#039;&#039;: important information (publisher, year, etc.) is missing from the publications.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;; position: relative; bottom: 2px;&amp;quot;&amp;gt;[[File: Browse.svg | 19px | link=]]&amp;lt;/span&amp;gt;Detailed debate&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the argument is the subject of a debate in its own right, enter the title of the existing debate on Wikidebates :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Indentation&lt;br /&gt;
|title=Example&lt;br /&gt;
|content=&lt;br /&gt;
* Argument: There is no free will&lt;br /&gt;
* Detailed debate: Do we have free will?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;zone-debat-detaille&amp;quot; style=&amp;quot;margin-top: 1em;&amp;quot;&amp;gt;{{{field|detailed-debate|input type=tokens|max values=1|existing values only|delimiter=@@@|values from category=Debates|size=100|placeholder=ex: Do we have free will?}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;editOptions&amp;quot; style=&amp;quot;margin-top: 1em&amp;quot;&amp;gt;{{{standard input|summary|label=Edit summary:}}}&lt;br /&gt;
{{Edit summary}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&lt;br /&gt;
{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10218</id>
		<title>Form:New argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10218"/>
		<updated>2026-03-20T10:38:09Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouvel argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New argument&lt;br /&gt;
| button text = Edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Add content to the argument&lt;br /&gt;
| edit title = Edit content to the argument&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|default={{BASEPAGENAME}}|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot; style=&amp;quot;font-style: italic; font-size: 105%; margin-bottom: 1em;&amp;quot;&amp;gt;You can now add a summary, one or more quotes, one or more references, and fill in the categories to which the argument relates.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Bibliography.svg | 17px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&lt;br /&gt;
{{{field|reference-warnings|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 1.5em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10217</id>
		<title>Form:New argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:New_argument&amp;diff=10217"/>
		<updated>2026-03-20T10:36:34Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Nouvel argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = New argument&lt;br /&gt;
| button text = Edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Add content to the argument&lt;br /&gt;
| edit title = Edit content to the argument&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|default={{BASEPAGENAME}}|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot; style=&amp;quot;font-style: italic; font-size: 105%; margin-bottom: 1em;&amp;quot;&amp;gt;You can now add a summary, one or more quotes, one or more references, and fill in the categories to which the argument relates.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&lt;br /&gt;
{{{field|reference-warnings|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: 1.5em;&amp;quot;&amp;gt;{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:Argument&amp;diff=10216</id>
		<title>Form:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:Argument&amp;diff=10216"/>
		<updated>2026-03-20T10:31:46Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = Argument&lt;br /&gt;
| button text = Create or edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Edit argument&lt;br /&gt;
| edit title = Edit argument&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Warning-flag.svg | 15px | link=]]&amp;lt;/span&amp;gt;Warning banners&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Information banners can be displayed at the top of the page to warn visitors of any shortcomings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Title warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If the title of the argument is problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Disadvantageous title&#039;&#039;&#039;: the title presents the argument in a lacunary or caricatured way;&lt;br /&gt;
* &#039;&#039;&#039;Unclear title&#039;&#039;&#039;: the title is confusing, jargon, too allusive or telegraphic;&lt;br /&gt;
* &#039;&#039;&#039;Incomplete title&#039;&#039;&#039;: the title is ambiguous or incomprehensible on its own;&lt;br /&gt;
* &#039;&#039;&#039;Title too long&#039;&#039;&#039;: the title contains several sentences or is generally too developed.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|title-warnings|input type=checkboxes|values=Disadvantageous title, Unclear title, Incomplete title, Too long title}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Argument warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If certain aspects of the argument are problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Sensitive argument&#039;&#039;&#039; if it exposes arguments that may shock;&lt;br /&gt;
* &#039;&#039;&#039;Fanciful argument&#039;&#039;&#039; if its presence in the public space is not obvious;&lt;br /&gt;
* &#039;&#039;&#039;Potentially illegal argument&#039;&#039;&#039; if you believe it violates the law.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|argument-warnings|input type=checkboxes|values=Sensitive argument, Fanciful argument, Potentially illegal argument}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 19px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|summary-warnings|input type=checkboxes|values=Summary to be written, Arguments to separate, Too long summary, Unclear summary, Disadvantageous summary, Style to review}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message pointing out the shortcomings of this summary:&lt;br /&gt;
* &#039;&#039;&#039;Summary to be written&#039;&#039;&#039;: No content has been provided or the text entered corresponds to a note taking.&lt;br /&gt;
* &#039;&#039;&#039;Arguments to separate&#039;&#039;&#039;: This text mixes arguments that need to be separated. Create a specific page for each of them.&lt;br /&gt;
* &#039;&#039;&#039;Too long summary&#039;&#039;&#039;: This text contains redundancies, heavy sentences, or is globally too developed.&lt;br /&gt;
* &#039;&#039;&#039;Unclear summary&#039;&#039;&#039;: This text is confusing, jargon, too complex or too telegraphic.&lt;br /&gt;
* &#039;&#039;&#039;Disadvantageous summary&#039;&#039;&#039;: The argument is presented in a lacunary or caricatured way. A more convincing version needs to be written.&lt;br /&gt;
* &#039;&#039;&#039;Style to review&#039;&#039;&#039;: This summary is written in a personal way (“I think that…”) or too familiar.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|reference-warnings|input type=checkboxes|values=Too many references, Many incomplete references}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message indicating the gaps in the bibliography:&lt;br /&gt;
* &#039;&#039;&#039;Too many references&#039;&#039;&#039;: the bibliography lists more than ten publications;&lt;br /&gt;
* &#039;&#039;&#039;Many incomplete references&#039;&#039;&#039;: important information (publisher, year, etc.) is missing from the publications.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;; position: relative; bottom: 2px;&amp;quot;&amp;gt;[[File: Browse.svg | 19px | link=]]&amp;lt;/span&amp;gt;Detailed debate&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the argument is the subject of a debate in its own right, enter the title of the existing debate on Wikidebates :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Indentation&lt;br /&gt;
|title=Example&lt;br /&gt;
|content=&lt;br /&gt;
* Argument: There is no free will&lt;br /&gt;
* Detailed debate: Do we have free will?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;zone-debat-detaille&amp;quot; style=&amp;quot;margin-top: 1em;&amp;quot;&amp;gt;{{{field|detailed-debate|input type=tokens|max values=1|existing values only|delimiter=@@@|values from category=Debates|size=100|placeholder=ex: Do we have free will?}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 23px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;editOptions&amp;quot; style=&amp;quot;margin-top: 1em&amp;quot;&amp;gt;{{{standard input|summary|label=Edit summary:}}}&lt;br /&gt;
{{Edit summary}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&lt;br /&gt;
{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:Argument&amp;diff=10215</id>
		<title>Form:Argument</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:Argument&amp;diff=10215"/>
		<updated>2026-03-20T10:19:46Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Argument”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = Argument&lt;br /&gt;
| button text = Create or edit argument&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Edit argument&lt;br /&gt;
| edit title = Edit argument&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{TOC|level=1}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;nomobile&amp;quot;&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Warning-flag.svg | 15px | link=]]&amp;lt;/span&amp;gt;Warning banners&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Information banners can be displayed at the top of the page to warn visitors of any shortcomings.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Title warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If the title of the argument is problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Disadvantageous title&#039;&#039;&#039;: the title presents the argument in a lacunary or caricatured way;&lt;br /&gt;
* &#039;&#039;&#039;Unclear title&#039;&#039;&#039;: the title is confusing, jargon, too allusive or telegraphic;&lt;br /&gt;
* &#039;&#039;&#039;Incomplete title&#039;&#039;&#039;: the title is ambiguous or incomprehensible on its own;&lt;br /&gt;
* &#039;&#039;&#039;Title too long&#039;&#039;&#039;: the title contains several sentences or is generally too developed.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|title-warnings|input type=checkboxes|values=Disadvantageous title, Unclear title, Incomplete title, Too long title}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Argument warnings&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin: 0.5em 0 0.75em 0;&amp;quot;&amp;gt;If certain aspects of the argument are problematic, notify readers by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Sensitive argument&#039;&#039;&#039; if it exposes arguments that may shock;&lt;br /&gt;
* &#039;&#039;&#039;Fanciful argument&#039;&#039;&#039; if its presence in the public space is not obvious;&lt;br /&gt;
* &#039;&#039;&#039;Potentially illegal argument&#039;&#039;&#039; if you believe it violates the law.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|argument-warnings|input type=checkboxes|values=Sensitive argument, Fanciful argument, Potentially illegal argument}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Contributions.svg | 18px | link=]]&amp;lt;/span&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Write here the simple or complex reasoning behind this argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Strive to present the argument clearly and concisely, in its strongest and most convincing version.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Treat here one and only one argument, each argument having to be the object of a distinct page.&lt;br /&gt;
&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|summary-warnings|input type=checkboxes|values=Summary to be written, Arguments to separate, Too long summary, Unclear summary, Disadvantageous summary, Style to review}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message pointing out the shortcomings of this summary:&lt;br /&gt;
* &#039;&#039;&#039;Summary to be written&#039;&#039;&#039;: No content has been provided or the text entered corresponds to a note taking.&lt;br /&gt;
* &#039;&#039;&#039;Arguments to separate&#039;&#039;&#039;: This text mixes arguments that need to be separated. Create a specific page for each of them.&lt;br /&gt;
* &#039;&#039;&#039;Too long summary&#039;&#039;&#039;: This text contains redundancies, heavy sentences, or is globally too developed.&lt;br /&gt;
* &#039;&#039;&#039;Unclear summary&#039;&#039;&#039;: This text is confusing, jargon, too complex or too telegraphic.&lt;br /&gt;
* &#039;&#039;&#039;Disadvantageous summary&#039;&#039;&#039;: The argument is presented in a lacunary or caricatured way. A more convincing version needs to be written.&lt;br /&gt;
* &#039;&#039;&#039;Style to review&#039;&#039;&#039;: This summary is written in a personal way (“I think that…”) or too familiar.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{{field|summary|input type=textarea|editor=visualeditor}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Quote.svg | 18px | link=]]&amp;lt;/span&amp;gt;Quotes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Here you can copy excerpts from books, articles, studies, broadcasts, web pages, etc. These extracts allow us to see how the above argument is defended in the public arena, with all its persuasive force. Quotes can also be used to give examples, support or deepen the demonstration. Choose clear and compelling excerpts and place the most impactful quote first.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Recommendations:&#039;&#039;&#039;&lt;br /&gt;
* Choose clear and compelling excerpts and place the most impactful quote first.&lt;br /&gt;
* Each quotation must cover one argument and only one. If your snippet mixes other arguments, you can remove them using square brackets: […].&lt;br /&gt;
* Truncate quotations with square brackets so as not to exceed ten lines.&lt;br /&gt;
* Fill in at least the author, the title of the article or work, and the link in the case of a web page.&lt;br /&gt;
&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;References&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; margin-bottom: 0.5em;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|reference-warnings|input type=checkboxes|values=Too many references, Many incomplete references}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message indicating the gaps in the bibliography:&lt;br /&gt;
* &#039;&#039;&#039;Too many references&#039;&#039;&#039;: the bibliography lists more than ten publications;&lt;br /&gt;
* &#039;&#039;&#039;Many incomplete references&#039;&#039;&#039;: important information (publisher, year, etc.) is missing from the publications.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed titre-section-deroulante&amp;quot;&amp;gt;&amp;lt;h3 class=&amp;quot;fr-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;pictogramme sub&amp;quot;&amp;gt;[[File: Bibliography.svg | 16px | text-bottom | link= | alt=]]&amp;lt;/span&amp;gt;Bibliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed titre-section-deroulante&amp;quot;&amp;gt;&amp;lt;h3 class=&amp;quot;fr-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;pictogramme&amp;quot;&amp;gt;[[File: Webliography.svg | 18px | link= | alt=]]&amp;lt;/span&amp;gt;Webliography&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed titre-section-deroulante&amp;quot;&amp;gt;&amp;lt;h3 class=&amp;quot;fr-collapsible-toggle&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;pictogramme&amp;quot;&amp;gt;[[File: Videography.svg | 22px | link= | alt=]]&amp;lt;/span&amp;gt;Videography&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;; position: relative; bottom: 2px;&amp;quot;&amp;gt;[[File: Browse.svg | 19px | link=]]&amp;lt;/span&amp;gt;Detailed debate&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;If the argument is the subject of a debate in its own right, enter the title of the existing debate on Wikidebates :&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Indentation&lt;br /&gt;
|title=Example&lt;br /&gt;
|content=&lt;br /&gt;
* Argument: There is no free will&lt;br /&gt;
* Detailed debate: Do we have free will?&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;zone-debat-detaille&amp;quot; style=&amp;quot;margin-top: 1em;&amp;quot;&amp;gt;{{{field|detailed-debate|input type=tokens|max values=1|existing values only|delimiter=@@@|values from category=Debates|size=100|placeholder=ex: Do we have free will?}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.5em;&amp;quot;&amp;gt;[[File: Categories.svg | 22px | link=]]&amp;lt;/span&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Each argument is attached to different general sections and to different thematic keywords that categorize it and allow it to be found.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;General sections&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Tick one or more boxes according to the main areas of argument.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Check only the items directly attached to this argument. Prefer precision to completeness.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|sections|property=Section|input type=checkboxes|values=Culture, Ecology, Economy, Education, Ethics, Geopolitics, Health, History, Law, Philosophy, Planning, Politics, Psychology, Religion and spirituality, Science, Society, Sport and leisure, Technology|hide select all}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Thematic keywords&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Enter the keyword(s) corresponding to the theme(s) covered by the argument. For each keyword, click on it in the drop-down list to validate it.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 0.75em;&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;: Enter no more and no less than the keywords needed to characterize the argument.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{field|keywords|input type=tokens|property=Keyword|placeholder=ex: legalization, cannabis}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Quote&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Copy your excerpt here (without quotes). It must cover one argument and only one.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can use square brackets […] to truncate the quotation in order to make the reading more fluid and retain only the important passages.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|quote|mandatory|input type=textarea|editor=visualeditor|placeholder=ex: Each has his past shut in him like the leaves of a book known to him by heart and his friends can only read the title.}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the quote in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which the quote is found.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this quote is found in a scientific or academic journal in different volumes, enter here the number of the volume in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this quote is in a numbered periodical (review, magazine), enter here the number of the periodical in which the quotation is published.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Page(s)&lt;br /&gt;
|help = If this quote is in a printed book or journal, you can enter the relevant page numbers here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: Do not write the word “page” or its abbreviations “p.” or “pg.”.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|placeholder=ex: 56-57}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If this quote is in a specific part of a book (chapter, section, book, verse, law article number, etc.), you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = If this quote is in a book, enter the name of its publishing house here (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = If this quote is in a book, enter the name of the city in which it was published here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this quotation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If you pulled this quote from a website or online document, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;min-width: 20%&amp;quot; | {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the quote poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Too short quote&#039;&#039;&#039;: The selected excerpt does not contain any reasoning or example. Select a longer extract or delete the quote.&lt;br /&gt;
* &#039;&#039;&#039;Too long quote&#039;&#039;&#039;: The selected excerpt is too long or mixes up separate arguments. Delete the superfluous passages, if necessary by using the square brackets […], or cut this extract into several quotations each centered on an argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete quote reference&#039;&#039;&#039;: Some important fields (author, title, date, …) have not been filled in. By checking this box, you indicate that the references of this citation must be completed.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Too short quote, Too long quote, Incomplete quote reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for the argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;editOptions&amp;quot; style=&amp;quot;margin-top: 1em&amp;quot;&amp;gt;{{{standard input|summary|label=Edit summary:}}}&lt;br /&gt;
{{Edit summary}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&lt;br /&gt;
{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Property:Debate_topic&amp;diff=10214</id>
		<title>Property:Debate topic</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Property:Debate_topic&amp;diff=10214"/>
		<updated>2026-03-19T08:27:30Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created a property of type Text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Text]].&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:Debate&amp;diff=10213</id>
		<title>Module:Debate</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:Debate&amp;diff=10213"/>
		<updated>2026-03-19T08:25:43Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--	Module:Debate (i18n FR/EN) — Optimisé&lt;br /&gt;
--	Objectif : rendu du modèle « Débat » (MediaWiki 1.43) fidèle au rendu existant&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Accès global au frame + VariablesLua (accélération sans changer le rendu)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local mw			= mw&lt;br /&gt;
local F				= mw.getCurrentFrame()&lt;br /&gt;
local V				= ( mw.ext and mw.ext.VariablesLua ) or nil&lt;br /&gt;
local WD_I18N		= require( &#039;Module:WD/I18N&#039; )&lt;br /&gt;
local uri_encode	= mw.uri.encode&lt;br /&gt;
local string_format	= string.format&lt;br /&gt;
local title_getCurrentTitle	= mw.title.getCurrentTitle&lt;br /&gt;
local uri_fullUrl			= mw.uri.fullUrl&lt;br /&gt;
local uri_localUrl			= mw.uri.localUrl&lt;br /&gt;
&lt;br /&gt;
--	Locaux (micro-optis)&lt;br /&gt;
local tostring		= tostring&lt;br /&gt;
local type			= type&lt;br /&gt;
local ipairs		= ipairs&lt;br /&gt;
local pairs			= pairs&lt;br /&gt;
local table_concat	= table.concat&lt;br /&gt;
local table_insert	= table.insert&lt;br /&gt;
local table_sort	= table.sort&lt;br /&gt;
local t_trim		= mw.text.trim&lt;br /&gt;
local t_gsplit		= mw.text.gsplit&lt;br /&gt;
local t_nowiki		= mw.text.nowiki&lt;br /&gt;
local t_jsonEncode	= mw.text.jsonEncode&lt;br /&gt;
local t_jsonDecode	= mw.text.jsonDecode&lt;br /&gt;
local html_create	= mw.html.create&lt;br /&gt;
local gsub			= string.gsub&lt;br /&gt;
&lt;br /&gt;
--	Forward decl (utilisé avant définition)&lt;br /&gt;
local escapeAttr&lt;br /&gt;
&lt;br /&gt;
local ITEM_SEP	= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local FIELD_SEP	= &amp;quot;⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--	wrappers VariablesLua (no-op si extension absente)&lt;br /&gt;
local function vset( name, val )&lt;br /&gt;
	if V and type( V.vardefine ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		pcall( V.vardefine, name, val ~= nil and tostring( val ) or &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local function vget( name )&lt;br /&gt;
	if V and type( V.var ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		local ok, res = pcall( V.var, name )&lt;br /&gt;
		if ok then return res end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectLang( args )&lt;br /&gt;
	return WD_I18N.getLangFromArgs( args or {} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function L( lang, section, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.&amp;quot; .. section, lang, key, ... )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwProp( lang, key )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.props&amp;quot;, lang, key )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isProgress( lang, val, key )&lt;br /&gt;
	if not val or val == &amp;quot;&amp;quot; then return false end&lt;br /&gt;
	local label = WD_I18N.msg( &amp;quot;Debate.progress&amp;quot;, lang, key )&lt;br /&gt;
	return val == label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Anchor intégré (remplace Module:Anchor)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function anchorId( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Normalisation des apostrophes HTML éventuelles&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#039;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;#39;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
	s = gsub( s, &amp;quot;&amp;amp;apos;&amp;quot;, &amp;quot;&#039;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Nettoyage minimal&lt;br /&gt;
	s = gsub( s, &amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
	s = t_trim( s )&lt;br /&gt;
&lt;br /&gt;
	--	Espaces → underscore&lt;br /&gt;
	s = gsub( s, &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Suppression caractères cassants (HTML / wiki)&lt;br /&gt;
	s = gsub( s, &#039;[%[%]{}|#&amp;lt;&amp;gt;&amp;quot;]&#039;, &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getArgs( frame )&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local A = {}&lt;br /&gt;
&lt;br /&gt;
	local function add( k, v )&lt;br /&gt;
		if v == nil then return end&lt;br /&gt;
		v = t_trim( tostring( v ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			A[ k ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if parent and parent.args then&lt;br /&gt;
		for k, v in pairs( parent.args ) do&lt;br /&gt;
			add( k, v )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if frame.args then&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			add( k, v )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return A&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitCSV( s, sep )&lt;br /&gt;
	if not s or s == &amp;quot;&amp;quot; then return {} end&lt;br /&gt;
	sep = sep or &amp;quot;,&amp;quot;&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for part in t_gsplit( s, sep, true ) do&lt;br /&gt;
		part = t_trim( part )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then table_insert( out, part ) end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWikipediaMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	On attend maintenant une série de &amp;quot;Titre⟭&amp;quot;&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pages = {}&lt;br /&gt;
&lt;br /&gt;
	for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		part = t_trim( part )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			pages[ #pages + 1 ] = part&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return pages&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSMW()&lt;br /&gt;
	return type( mw.smw ) == &amp;quot;table&amp;quot; and type( mw.smw.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwSetSafe( props )&lt;br /&gt;
	if not mw.smw or type( mw.smw.set ) ~= &amp;quot;function&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pcall( function()&lt;br /&gt;
		mw.smw.set( props )&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwAskSafe( q )&lt;br /&gt;
	if not hasSMW() then return nil end&lt;br /&gt;
	local ok, res = pcall( function() return mw.smw.ask( q ) end )&lt;br /&gt;
	return ok and res or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO : cache “par rendu”&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local SEO_CACHE = {}&lt;br /&gt;
&lt;br /&gt;
local function seoCacheKey( args, pv, lang )&lt;br /&gt;
	return table_concat( {&lt;br /&gt;
		tostring( lang or &amp;quot;&amp;quot; ),&lt;br /&gt;
		pv.pageId or &amp;quot;&amp;quot;,&lt;br /&gt;
		tostring( pv.rawTitle or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;complete-topic&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
		tostring( args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot; ),&lt;br /&gt;
	}, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Wikiseo helpers&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkSeoHas()&lt;br /&gt;
	return mw.ext&lt;br /&gt;
		and mw.ext.seo&lt;br /&gt;
		and type( mw.ext.seo.set ) == &amp;quot;function&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSeoSet( data )&lt;br /&gt;
	if not wkSeoHas() then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	pcall( mw.ext.seo.set, data )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoL( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.seo&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function seoJoinList( items )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local seen = {}&lt;br /&gt;
&lt;br /&gt;
	for _, v in ipairs( items or {} ) do&lt;br /&gt;
		v = t_trim( tostring( v or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if v ~= &amp;quot;&amp;quot; and not seen[ v ] then&lt;br /&gt;
			seen[ v ] = true&lt;br /&gt;
			out[ #out + 1 ] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out, &amp;quot;, &amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildSeoKeywords( args, lang )&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, s in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		items[ #items + 1 ] = s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return seoJoinList( items )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPageCreation(pv, args)&lt;br /&gt;
	--	1) Priorité : paramètre PageForms / modèle&lt;br /&gt;
	local v = args and args[ &amp;quot;creation-date&amp;quot; ]&lt;br /&gt;
	v = (type(v) == &amp;quot;string&amp;quot;) and t_trim(v) or &amp;quot;&amp;quot;&lt;br /&gt;
	if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return v&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = pv and pv.title&lt;br /&gt;
	local page = title and title.prefixedText or &amp;quot;&amp;quot;&lt;br /&gt;
	if page == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	2) Sinon : SMW ?Date de création&lt;br /&gt;
	if hasSMW() and type(mw.smw.ask) == &amp;quot;function&amp;quot; then&lt;br /&gt;
		local res = smwAskSafe({&lt;br /&gt;
			&amp;quot;[[&amp;quot; .. page .. &amp;quot;]]&amp;quot;,&lt;br /&gt;
			&amp;quot;?Creation date#-F[Y-m-d\\TH:i:s\\Z]=cd&amp;quot;,&lt;br /&gt;
			&amp;quot;limit=1&amp;quot;,&lt;br /&gt;
			&amp;quot;link=none&amp;quot;&lt;br /&gt;
		})&lt;br /&gt;
&lt;br /&gt;
		if type(res) == &amp;quot;table&amp;quot; and res[1] then&lt;br /&gt;
			local cd = res[1].cd&lt;br /&gt;
			return cd&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SEO principal (avec cache)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderFullSEO( args, pv, lang )&lt;br /&gt;
	--	cache par rendu&lt;br /&gt;
	local ck = seoCacheKey( args, pv, lang )&lt;br /&gt;
	if SEO_CACHE[ ck ] then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	SEO_CACHE[ ck ] = true&lt;br /&gt;
&lt;br /&gt;
	local pageTitle	= pv.rawTitle or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local topic = t_trim( tostring( args[ &amp;quot;complete-topic&amp;quot; ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if topic == &amp;quot;&amp;quot; then&lt;br /&gt;
		topic = pageTitle&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local kw = buildSeoKeywords( args, lang )&lt;br /&gt;
&lt;br /&gt;
	wkSeoSet{&lt;br /&gt;
		title				= pageTitle .. &amp;quot; &amp;quot; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;) .. &amp;quot; – &amp;quot; .. L(lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot;),&lt;br /&gt;
		title_mode			= pageTitle .. &amp;quot; &amp;quot; .. L(lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot;),&lt;br /&gt;
		title_separator		= string_format( seoL( lang, &amp;quot;title_separator&amp;quot; ), pageTitle ),&lt;br /&gt;
		description			= string_format( seoL( lang, &amp;quot;description&amp;quot; ), topic ),&lt;br /&gt;
		keywords			= kw,&lt;br /&gt;
		image				= seoL( lang, &amp;quot;image&amp;quot; ),&lt;br /&gt;
		image_alt			= seoL( lang, &amp;quot;image_alt&amp;quot; ),&lt;br /&gt;
		section				= seoL( lang, &amp;quot;section&amp;quot; ),&lt;br /&gt;
		site_name			= seoL( lang, &amp;quot;site_name&amp;quot; ),&lt;br /&gt;
		twitter_site		= seoL( lang, &amp;quot;twitter_site&amp;quot; ),&lt;br /&gt;
		locale				= seoL( lang, &amp;quot;locale&amp;quot; ),&lt;br /&gt;
		author				= seoL( lang, &amp;quot;author&amp;quot; ),&lt;br /&gt;
		robots				= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
		googlebot			= &amp;quot;index,follow&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers PERF : preprocess conditionnel + cache Bandeau&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function subMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.subsections&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderSubsectionBanner( pv, lang, key, opts, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	opts = opts or {}&lt;br /&gt;
&lt;br /&gt;
	local isReorg		= opts.reorg == true&lt;br /&gt;
	local linkHtml		= &amp;quot;&amp;quot;&lt;br /&gt;
	local title			= &amp;quot;&amp;quot;&lt;br /&gt;
	local text			= &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	--	Lien de réorganisation (optionnel) — AddData (même source que le H2)&lt;br /&gt;
	if isReorg then&lt;br /&gt;
		local formName	= tostring( opts.form or &amp;quot;&amp;quot; )&lt;br /&gt;
		local tooltip	= tostring( opts.tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
		local linkLabel	= tostring( opts.link_label or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		if linkLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
			linkLabel = L( lang, &amp;quot;text&amp;quot;, &amp;quot;reorganize_link_label&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if formName ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			linkHtml = addDataLink( formName, pv.rawTitle, linkLabel, tooltip )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Titre/texte (mêmes messages i18n que tes fonctions actuelles)&lt;br /&gt;
	if isReorg and linkHtml ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot; )&lt;br /&gt;
		title = t_trim( tostring( title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if title ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			title = title .. &amp;quot;&amp;amp;nbsp;&amp;quot; .. linkHtml&lt;br /&gt;
		else&lt;br /&gt;
			title = linkHtml&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		title = subMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	text = subMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau-avertissement wk-icon-before wk-icon-sensible&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;smw-highlighter smwttinline wk-icon-before wk-icon-help mw-no-invert&amp;quot; data-state=&amp;quot;inline&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;smwttcontent&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local cat = subMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW batch : on accumule et on flush une fois à la fin&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAdd( pending, key, val, multi )&lt;br /&gt;
	if not key or key == &amp;quot;&amp;quot; or val == nil then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if type( val ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		val = t_trim( val )&lt;br /&gt;
		if val == &amp;quot;&amp;quot; then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cur = pending[ key ]&lt;br /&gt;
&lt;br /&gt;
	if multi then&lt;br /&gt;
		--	Multi-valeurs : toujours en table côté pending&lt;br /&gt;
		if cur == nil then&lt;br /&gt;
			pending[ key ] = ( type( val ) == &amp;quot;table&amp;quot; ) and val or { val }&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type( cur ) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
			cur = { cur }&lt;br /&gt;
			pending[ key ] = cur&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if type( val ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			for _, x in ipairs( val ) do&lt;br /&gt;
				if x ~= nil then&lt;br /&gt;
					cur[ #cur + 1 ] = x&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cur[ #cur + 1 ] = val&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Scalar : dernière valeur gagne (comportement le plus sûr)&lt;br /&gt;
	pending[ key ] = val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAddFromSepString( pending, key, raw, sep )&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	sep = sep or ITEM_SEP&lt;br /&gt;
&lt;br /&gt;
	local vals = {}&lt;br /&gt;
&lt;br /&gt;
	if raw:find( sep, 1, true ) then&lt;br /&gt;
		for part in t_gsplit( raw, sep, true ) do&lt;br /&gt;
			part = t_trim( part )&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				vals[ #vals + 1 ] = part&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		vals[ 1 ] = raw&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #vals &amp;gt; 0 then&lt;br /&gt;
		smwQueueAdd( pending, key, vals, true )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueAddFromCSV( pending, key, raw )&lt;br /&gt;
	smwQueueAddFromSepString( pending, key, raw, &amp;quot;,&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function smwQueueMerge( dst, src )&lt;br /&gt;
	for k, v in pairs( src or {} ) do&lt;br /&gt;
		if type( v ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
			smwQueueAdd( dst, k, v, true )&lt;br /&gt;
		else&lt;br /&gt;
			smwQueueAdd( dst, k, v, false )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	PageForms : utilitaires HTML / attributs&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
escapeAttr = function( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
		:gsub( &amp;quot;[\r\n\t]&amp;quot;, &amp;quot; &amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;amp;&amp;quot;, &amp;quot;&amp;amp;amp;&amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot; )&lt;br /&gt;
		:gsub( &amp;quot;&amp;gt;&amp;quot;, &amp;quot;&amp;amp;gt;&amp;quot; )&lt;br /&gt;
		:gsub( &#039;&amp;quot;&#039;, &amp;quot;&amp;amp;quot;&amp;quot; )&lt;br /&gt;
	-- pas besoin d&#039;échapper &#039; si on entoure l&#039;attribut avec des guillemets doubles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--	{{#tag}} utilitaire&lt;br /&gt;
local function tag( name, content, attrs )&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	if attrs then&lt;br /&gt;
		for k, v in pairs( attrs ) do&lt;br /&gt;
			table_insert( parts, string_format( &amp;quot;%s=%s&amp;quot;, k, v ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local src&lt;br /&gt;
	if #parts &amp;gt; 0 then&lt;br /&gt;
		src = string_format( &amp;quot;{{#tag:%s|%s|%s}}&amp;quot;, name, content or &amp;quot;&amp;quot;, table_concat( parts, &amp;quot;|&amp;quot; ) )&lt;br /&gt;
	else&lt;br /&gt;
		src = string_format( &amp;quot;{{#tag:%s|%s}}&amp;quot;, name, content or &amp;quot;&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return F:preprocess( src )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function pf_escape( v )&lt;br /&gt;
	if not v then return &amp;quot;&amp;quot; end&lt;br /&gt;
	v = tostring( v )&lt;br /&gt;
	v = v:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; ):gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	return v&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	PageForms : remplacement des #formlink (link) par Special:AddData&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkDbKey( page )&lt;br /&gt;
	local t = mw.title.new( page )&lt;br /&gt;
	if not t then&lt;br /&gt;
		return tostring( page or &amp;quot;&amp;quot; ):gsub( &amp;quot;%s&amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	return t.prefixedText:gsub( &amp;quot; &amp;quot;, &amp;quot;_&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkEncodeAddDataSegment( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;%%&amp;quot;, &amp;quot;%%25&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;%?&amp;quot;, &amp;quot;%%3F&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;#&amp;quot;, &amp;quot;%%23&amp;quot; )&lt;br /&gt;
	s = s:gsub( &amp;quot;/&amp;quot;, &amp;quot;%%2F&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkWikipediaUrl( page, lang )&lt;br /&gt;
	if not page or page == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local base = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wikipedia&amp;quot; )&lt;br /&gt;
	if not base or base == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return base .. uri_encode( page, &amp;quot;WIKI&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataPath( formName, pageTitle )&lt;br /&gt;
	local form = wkEncodeAddDataSegment( wkDbKey( formName ) )&lt;br /&gt;
	local page = wkEncodeAddDataSegment( wkDbKey( pageTitle ) )&lt;br /&gt;
	return &amp;quot;Special:AddData/&amp;quot; .. form .. &amp;quot;/&amp;quot; .. page&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addDataLink( formName, pageTitle, linktext, tooltip )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle = tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local target = wkAddDataPath( formName, pageTitle )&lt;br /&gt;
&lt;br /&gt;
	local lt = &amp;quot;&amp;amp;nbsp;&amp;quot;&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link bouton-modifier navigation-not-searchable noprint&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			target,&lt;br /&gt;
			lt&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format( &#039;[[%s|%s]]&#039;, target, lt )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryPath( formName )&lt;br /&gt;
	local form = wkEncodeAddDataSegment( wkDbKey( formName ) )&lt;br /&gt;
	return &amp;quot;Special:RunQuery/&amp;quot; .. form&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function normalizeTooltipText( s )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Apostrophes&lt;br /&gt;
	s = s:gsub( &amp;quot;&#039;&amp;quot;, &amp;quot;’&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	Guillemets droits → typographiques&lt;br /&gt;
	s = s:gsub( &#039;&amp;quot;&#039;, &#039;“&#039; )&lt;br /&gt;
&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRunQueryHtmlTagButton( formName, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	tooltip = normalizeTooltipText( tooltip )&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkRunQueryPath( formName )&lt;br /&gt;
	local href	= tostring( uri_localUrl( title, query ) )&lt;br /&gt;
&lt;br /&gt;
	local content = &amp;quot;＋ &amp;quot; .. label&lt;br /&gt;
&lt;br /&gt;
	return F:preprocess(&lt;br /&gt;
		&#039;&amp;lt;htmltag tagname=&amp;quot;a&amp;quot;&#039;&lt;br /&gt;
		.. &#039; href=&amp;quot;javascript:void(0)&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-href=&amp;quot;&#039; .. escapeAttr( href ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; class=&amp;quot;wk-btn__a wk-js-nav&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. content&lt;br /&gt;
		.. &#039;&amp;lt;/htmltag&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkAddDataGetButton( formName, pageTitle, label, tooltip, query )&lt;br /&gt;
	formName	= tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	pageTitle	= tostring( pageTitle or &amp;quot;&amp;quot; )&lt;br /&gt;
	label		= tostring( label or &amp;quot;&amp;quot; )&lt;br /&gt;
	tooltip		= tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
	query		= ( type( query ) == &amp;quot;table&amp;quot; ) and query or {}&lt;br /&gt;
&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or pageTitle == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title	= wkAddDataPath( formName, pageTitle )&lt;br /&gt;
	local url	= tostring( uri_fullUrl( title, query ) )	--	URL absolue obligatoire&lt;br /&gt;
&lt;br /&gt;
	local linkInner =&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;wk-btn__icon&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;➜&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;span class=&amp;quot;wk-btn__label&amp;quot;&amp;gt;&#039; .. label .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local link = &#039;[&#039; .. url .. &#039; &#039; .. linkInner .. &#039;]&#039;&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;wk-btn wk-auto-id mw-ui-button navigation-not-searchable&amp;quot;&#039;&lt;br /&gt;
		.. ( tooltip ~= &amp;quot;&amp;quot; and ( &#039; title=&amp;quot;&#039; .. escapeAttr( tooltip ) .. &#039;&amp;quot;&#039; ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;gt;&#039;&lt;br /&gt;
		.. link&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function runQueryLink( formName, fieldLabel, fieldName, value, linktext, tooltip, extraParams )&lt;br /&gt;
	formName = tostring( formName or &amp;quot;&amp;quot; )&lt;br /&gt;
	fieldLabel = tostring( fieldLabel or &amp;quot;&amp;quot; )&lt;br /&gt;
	fieldName = tostring( fieldName or &amp;quot;&amp;quot; )&lt;br /&gt;
	value = tostring( value or &amp;quot;&amp;quot; )&lt;br /&gt;
	if formName == &amp;quot;&amp;quot; or fieldLabel == &amp;quot;&amp;quot; or fieldName == &amp;quot;&amp;quot; or value == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = wkRunQueryPath( formName )&lt;br /&gt;
&lt;br /&gt;
	local q = {}&lt;br /&gt;
	q[ fieldLabel .. &amp;quot;[&amp;quot; .. fieldName .. &amp;quot;]&amp;quot; ] = value&lt;br /&gt;
&lt;br /&gt;
	if type( extraParams ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for k, v in pairs( extraParams ) do&lt;br /&gt;
			if k and k ~= &amp;quot;&amp;quot; and v ~= nil and tostring( v ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				q[ k ] = tostring( v )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	q[ &amp;quot;_run&amp;quot; ] = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local url = tostring( uri_fullUrl( title, q ) )&lt;br /&gt;
	local label = linktext or value&lt;br /&gt;
	local tt = tostring( tooltip or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local link = &amp;quot;[&amp;quot; .. url .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if tt ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return string_format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;wk-adddata-link masquer-externe&amp;quot; data-wk-tooltip=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			escapeAttr( tt ),&lt;br /&gt;
			link&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string_format( &#039;&amp;lt;span class=&amp;quot;wk-adddata-link&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;, link )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function joinArticles( items, lang )&lt;br /&gt;
	local n = #items&lt;br /&gt;
	if n == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
	if n == 1 then return items[ 1 ] end&lt;br /&gt;
&lt;br /&gt;
	local conj = WD_I18N.msg( &amp;quot;Common.text&amp;quot;, lang, &amp;quot;list_conjunction_text&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if n == 2 then&lt;br /&gt;
		return items[ 1 ] .. conj .. items[ 2 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local last = items[ n ]&lt;br /&gt;
	local first = {}&lt;br /&gt;
	for i = 1, n - 1 do first[ i ] = items[ i ] end&lt;br /&gt;
	return table_concat( first, &amp;quot;, &amp;quot; ) .. conj .. last&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function listBreaker()&lt;br /&gt;
	return &amp;quot;\n\n&amp;lt;!--__WD_LIST_BREAK__--&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function push( t, s )&lt;br /&gt;
	t[ #t + 1 ] = s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux de sous-section pour les titres affichés&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;displayed_title_too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;displayed_title_disadvantageous&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ARGUMENT_WARNING_LOOKUPS = {}&lt;br /&gt;
&lt;br /&gt;
local function buildSummaryLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgumentWarningLookup( lang )&lt;br /&gt;
	lang = tostring( lang or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if not ARGUMENT_WARNING_LOOKUPS[ lang ] then&lt;br /&gt;
		ARGUMENT_WARNING_LOOKUPS[ lang ] =&lt;br /&gt;
			buildSummaryLabelLookup( lang, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ARGUMENT_WARNING_LOOKUPS[ lang ]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveKeyFromLookup( raw, lookup, allowedKeys, aliases )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local k = ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
	if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		return k&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if aliases and aliases[ raw ] then&lt;br /&gt;
		return aliases[ raw ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if allowedKeys then&lt;br /&gt;
		for _, kk in ipairs( allowedKeys ) do&lt;br /&gt;
			if raw == kk then&lt;br /&gt;
				return kk&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsArg = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsArg == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = getArgumentWarningLookup( lang )&lt;br /&gt;
	local hasBanner = false&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsArg, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, ARGUMENT_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, nil ) )&lt;br /&gt;
			hasBanner = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if hasBanner and cats then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;displayed_titles_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Arguments : extraction depuis chaînes&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkSplit2( s, sep )&lt;br /&gt;
	s = tostring( s or &amp;quot;&amp;quot; )&lt;br /&gt;
	sep = tostring( sep or &amp;quot;&amp;quot; )&lt;br /&gt;
	if sep == &amp;quot;&amp;quot; then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local i = s:find( sep, 1, true )&lt;br /&gt;
	if not i then&lt;br /&gt;
		return s, &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return s:sub( 1, i - 1 ), s:sub( i + #sep )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkExtractArgumentItemsFromData( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( ITEM_SEP, 1, true ) and not raw:find( FIELD_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local page, rest = wkSplit2( block, FIELD_SEP )&lt;br /&gt;
			local title, warnings = wkSplit2( rest, FIELD_SEP )&lt;br /&gt;
&lt;br /&gt;
			page = t_trim( page )&lt;br /&gt;
			if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				title = t_trim( title )&lt;br /&gt;
				warnings = t_trim( warnings )&lt;br /&gt;
&lt;br /&gt;
				if title == &amp;quot;&amp;quot; then&lt;br /&gt;
					title = page&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				items[ #items + 1 ] = {&lt;br /&gt;
					page = page,&lt;br /&gt;
					title = title,&lt;br /&gt;
					warnings = warnings&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkComputeArgumentItems( raw )&lt;br /&gt;
	local items = wkExtractArgumentItemsFromData( raw )&lt;br /&gt;
	if #items &amp;gt; 0 then&lt;br /&gt;
		return items, &amp;quot;data&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return {}, &amp;quot;none&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildArgumentData( items, lang, kind )&lt;br /&gt;
	items = items or {}&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = ( kind == &amp;quot;pro&amp;quot; ) and &amp;quot;Pro_argument_&amp;quot; or &amp;quot;Con_argument_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local listLines = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		table_insert( listLines, &amp;quot;* &amp;quot; .. it.title )&lt;br /&gt;
	end&lt;br /&gt;
	local listText = table_concat( listLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local argsVarParts = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		if it.page == it.title then&lt;br /&gt;
			table_insert( argsVarParts, it.page )&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( argsVarParts, it.page .. &amp;quot;⟬&amp;quot; .. it.title )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local argsVar = table_concat( argsVarParts, &amp;quot; -;- &amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local mapLines = {}&lt;br /&gt;
	for i, it in ipairs( items ) do&lt;br /&gt;
		table_insert( mapLines,&lt;br /&gt;
			&#039;&amp;lt;div  id=&amp;quot;&#039; .. idPrefix .. i .. &#039;_map&amp;quot; class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. it.title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHtml = table_concat( mapLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hoverLines = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		table_insert( hoverLines,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;argument-title--map wk-icon-before wk-icon-argument&amp;quot;&amp;gt;&#039; .. &#039;[[&#039; .. it.page .. &#039;|&#039; .. it.title .. &#039;]]&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local mapHoverHtml = table_concat( hoverLines, &amp;quot;\n&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		items = items,&lt;br /&gt;
		list = listText,&lt;br /&gt;
		argsVar = argsVar,&lt;br /&gt;
		map = mapHtml,&lt;br /&gt;
		mapHover = mapHoverHtml&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function computeArgumentMapsFromArgs( args, lang )&lt;br /&gt;
	local rawPro = args[ &amp;quot;pro-arguments&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
	local rawCon = args[ &amp;quot;con-arguments&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if rawPro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		rawPro = F:preprocess( rawPro )&lt;br /&gt;
	end&lt;br /&gt;
	if rawCon ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		rawCon = F:preprocess( rawCon )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pro, proMode = wkComputeArgumentItems( rawPro )&lt;br /&gt;
	local con, conMode = wkComputeArgumentItems( rawCon )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		pro = wkBuildArgumentData( pro, lang, &amp;quot;pro&amp;quot; ),&lt;br /&gt;
		con = wkBuildArgumentData( con, lang, &amp;quot;con&amp;quot; ),&lt;br /&gt;
		_mode = { pro = proMode, con = conMode }&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderArgumentLi( pv, lang, it, kind, idx, cats )&lt;br /&gt;
	local isPro = ( kind == &amp;quot;pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local idPrefix = isPro and &amp;quot;Pro_argument_&amp;quot; or &amp;quot;Con_argument_&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local page = tostring( it.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local titleShown = tostring( it.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if titleShown == &amp;quot;&amp;quot; then&lt;br /&gt;
		titleShown = page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local aId = anchorId( titleShown )&lt;br /&gt;
	local warnings = tostring( it.warnings or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local banners = {}&lt;br /&gt;
	renderArgumentItemBanners( warnings, pv, lang, cats, banners )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;li id=&amp;quot;&#039;&lt;br /&gt;
		.. idPrefix .. tostring( idx )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument level-1&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div id=&amp;quot;&#039;&lt;br /&gt;
		.. escapeAttr( aId )&lt;br /&gt;
		.. &#039;&amp;quot; class=&amp;quot;argument-title wk-icon-before wk-icon-argument wk-icon-after wk-carret&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;[[&#039; .. page .. &#039;|&#039; .. titleShown .. &#039;]]&#039;&lt;br /&gt;
		.. ( #banners &amp;gt; 0 and table_concat( banners ) or &amp;quot;&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bloc d’en-tête / variables de page&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function computePageVars()&lt;br /&gt;
	local title = title_getCurrentTitle()&lt;br /&gt;
	local rawTitle = title.prefixedText&lt;br /&gt;
	local encoded = uri_encode( rawTitle, &amp;quot;WIKI&amp;quot; )&lt;br /&gt;
	local pageUrl = tostring( uri_fullUrl( title.prefixedText ) )&lt;br /&gt;
	local pageId = tostring( title.id or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		title = title,&lt;br /&gt;
		rawTitle = rawTitle,&lt;br /&gt;
		encoded = encoded,&lt;br /&gt;
		pageUrl = pageUrl,&lt;br /&gt;
		pageId = pageId&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeau principal&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderMetaWarningHtml( params )&lt;br /&gt;
	local color	= tostring( params.color or &amp;quot;&amp;quot; )&lt;br /&gt;
	local icon	= tostring( params.icon or &amp;quot;&amp;quot; )&lt;br /&gt;
	local title	= tostring( params.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	local text	= tostring( params.text or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bandeau bandeau-&#039; .. color .. &#039; wk-icon-before &#039; .. icon .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-titre&amp;quot;&amp;gt;&#039; .. title .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;bandeau-texte&amp;quot;&amp;gt;&#039; .. text .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderMainBanner( frame, pv, lang )&lt;br /&gt;
	local titre = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;main_banner_title&amp;quot; ), t_nowiki( pv.rawTitle ) )&lt;br /&gt;
&lt;br /&gt;
	return renderMetaWarningHtml{&lt;br /&gt;
		color	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;main_banner_color&amp;quot; ),&lt;br /&gt;
		title	= titre,&lt;br /&gt;
		icon	= &#039;wk-icon-wikidebates&#039;,&lt;br /&gt;
		text	= &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;learn_more_label&amp;quot; ) .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;founding_principles_link&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Bandeaux : rendu natif + résolution via label i18n (C optimisée)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local PROGRESS_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;progress_under_construction&amp;quot;,&lt;br /&gt;
	&amp;quot;progress_draft&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local TITLE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;title_non_standard&amp;quot;,&lt;br /&gt;
	&amp;quot;title_to_explain&amp;quot;,&lt;br /&gt;
	&amp;quot;title_to_simplify&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local DEBATE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;debate_unbalanced&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_redundant&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_fanciful&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_sensitive&amp;quot;,&lt;br /&gt;
	&amp;quot;outline_to_improve&amp;quot;,&lt;br /&gt;
	&amp;quot;debate_generated_by_chatgpt&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function bannerMsg( lang, key, ... )&lt;br /&gt;
	return WD_I18N.msg( &amp;quot;Debate.banners&amp;quot;, lang, key, ... ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderBannerByKey( pv, lang, key, cats )&lt;br /&gt;
	key = tostring( key or &amp;quot;&amp;quot; )&lt;br /&gt;
	if key == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local color	= bannerMsg( lang, key .. &amp;quot;_color&amp;quot; )&lt;br /&gt;
	local icon	= bannerMsg( lang, key .. &amp;quot;_icon&amp;quot; )&lt;br /&gt;
	local title	= bannerMsg( lang, key .. &amp;quot;_title&amp;quot;, pv.rawTitle )&lt;br /&gt;
	local text	= bannerMsg( lang, key .. &amp;quot;_text&amp;quot;, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	if color == &amp;quot;&amp;quot; and icon == &amp;quot;&amp;quot; and title == &amp;quot;&amp;quot; and text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local html = renderMetaWarningHtml{&lt;br /&gt;
		color	= color,&lt;br /&gt;
		icon	= icon,&lt;br /&gt;
		title	= title,&lt;br /&gt;
		text	= text&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local cat = bannerMsg( lang, key .. &amp;quot;_category&amp;quot; )&lt;br /&gt;
	if cats and cat and cat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. cat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return html&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function buildBannerLabelLookup( lang, keys )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, key in ipairs( keys or {} ) do&lt;br /&gt;
		local lab = t_trim( bannerMsg( lang, key .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = key&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveBannerKeyFromLookup( raw, lookup )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ( lookup and lookup[ raw ] ) or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderWarningBanners( args, pv, cats, lang )&lt;br /&gt;
	local av = args[ &amp;quot;progress&amp;quot; ]&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local titleLookup	= buildBannerLabelLookup( lang, TITLE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local debateLookup	= buildBannerLabelLookup( lang, DEBATE_WARNING_BANNER_KEYS )&lt;br /&gt;
	local progLookup	= buildBannerLabelLookup( lang, PROGRESS_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
	local function renderBannersFromList( list, lookup )&lt;br /&gt;
		local html = {}&lt;br /&gt;
		for _, x in ipairs( splitCSV( list, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			local key = resolveBannerKeyFromLookup( x, lookup )&lt;br /&gt;
			if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				table_insert( html, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return table_concat( html )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;title-warnings&amp;quot; ] then&lt;br /&gt;
		table_insert( out, renderBannersFromList( args[ &amp;quot;title-warnings&amp;quot; ], titleLookup ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if av and t_trim( av ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local key = resolveBannerKeyFromLookup( av, progLookup )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderBannerByKey( pv, lang, key, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isProgress( lang, av, &amp;quot;constructed&amp;quot; ) then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;constructed&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	elseif not isProgress( lang, av, &amp;quot;draft&amp;quot; ) and not isProgress( lang, av, &amp;quot;building&amp;quot; ) and not isProgress( lang, av, &amp;quot;constructed&amp;quot; ) then&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;progress_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;debate-warnings&amp;quot; ] then&lt;br /&gt;
		table_insert( out, renderBannersFromList( args[ &amp;quot;debate-warnings&amp;quot; ], debateLookup ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Carte des arguments (en-tête)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderArgumentMapTop( lang, maps )&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local pro = ( maps.pro and maps.pro.map ) or &amp;quot;&amp;quot;&lt;br /&gt;
	local con = ( maps.con and maps.con.map ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local labelPour		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_pro_label&amp;quot; )&lt;br /&gt;
	local labelContre	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_con_label&amp;quot; )&lt;br /&gt;
	local msgPour		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg_short&amp;quot; )&lt;br /&gt;
	local msgContre		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg_short&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local root = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:attr( &amp;quot;id&amp;quot;, &amp;quot;Argument_map&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map--top&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;navigation-not-searchable&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local colP = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map__col&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;is-pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local colC = html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;wk-arg-map__col&amp;quot; )&lt;br /&gt;
		:addClass( &amp;quot;is-con&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	colP:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__th&amp;quot; )&lt;br /&gt;
			:wikitext( labelPour )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colP:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__td&amp;quot; )&lt;br /&gt;
			:wikitext( pro ~= &amp;quot;&amp;quot; and pro or ( &#039;&amp;lt;div class=&amp;quot;carte-vide navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msgPour .. &#039;&amp;lt;/div&amp;gt;&#039; ) )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colC:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__th&amp;quot; )&lt;br /&gt;
			:wikitext( labelContre )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	colC:node(&lt;br /&gt;
		html_create( &amp;quot;div&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;wk-arg-map__td&amp;quot; )&lt;br /&gt;
			:wikitext( con ~= &amp;quot;&amp;quot; and con or ( &#039;&amp;lt;div class=&amp;quot;carte-vide navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msgContre .. &#039;&amp;lt;/div&amp;gt;&#039; ) )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	root:node( colP ):node( colC )&lt;br /&gt;
&lt;br /&gt;
	return tostring( root )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sous-parties d’introduction (format &amp;quot;Sous-partie&amp;quot; optimisé)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local INTRO_SUB_SEP		= &amp;quot;⟭⟭⟭&amp;quot;&lt;br /&gt;
local INTRO_FIELD_SEP	= &amp;quot;⟬⟬⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function wkParseIntroSubsections( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( INTRO_SUB_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, INTRO_SUB_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, INTRO_FIELD_SEP, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 3 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				title		= f[ 1 ],&lt;br /&gt;
				content		= f[ 2 ],&lt;br /&gt;
				warnings	= f[ 3 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local INTRO_SUB_WARNING_KEYS = {&lt;br /&gt;
	&amp;quot;too_long&amp;quot;,&lt;br /&gt;
	&amp;quot;to_develop&amp;quot;,&lt;br /&gt;
	&amp;quot;unclear&amp;quot;,&lt;br /&gt;
	&amp;quot;biased&amp;quot;,&lt;br /&gt;
	&amp;quot;refs_missing&amp;quot;,&lt;br /&gt;
	&amp;quot;style_to_review&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function buildIntroSubWarningLookup( lang )&lt;br /&gt;
	local lookup = {}&lt;br /&gt;
	for _, k in ipairs( INTRO_SUB_WARNING_KEYS ) do&lt;br /&gt;
		local lab = t_trim( subMsg( lang, &amp;quot;intro_subbanner_&amp;quot; .. k .. &amp;quot;_label&amp;quot; ) )&lt;br /&gt;
		if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lookup[ lab ] = &amp;quot;intro_subbanner_&amp;quot; .. k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return lookup&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderIntroSubsection( pv, lang, it, cats, lookup )&lt;br /&gt;
	local titre = t_trim( tostring( it.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	local contenu = t_trim( tostring( it.content or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	local avert = t_trim( tostring( it.warnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if titre == &amp;quot;&amp;quot; then&lt;br /&gt;
		titre = subMsg( lang, &amp;quot;default_title&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		&#039;&amp;lt;h3 class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-question&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. titre&lt;br /&gt;
		.. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;encadre-section-deroulante&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
	if avert ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local banners = {}&lt;br /&gt;
&lt;br /&gt;
		for lab in t_gsplit( avert, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			lab = t_trim( lab )&lt;br /&gt;
			if lab ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local k = lookup[ lab ] or &amp;quot;&amp;quot;&lt;br /&gt;
				if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					local h = renderSubsectionBanner( pv, lang, k, {}, cats )&lt;br /&gt;
					if h and h ~= &amp;quot;&amp;quot; then&lt;br /&gt;
						banners[ #banners + 1 ] = h&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #banners &amp;gt; 0 then&lt;br /&gt;
			table_insert( out, &#039;&amp;lt;div class=&amp;quot;minibandeaux&amp;quot;&amp;gt;&#039; .. table_concat( banners ) .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if contenu ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( out, contenu )&lt;br /&gt;
	else&lt;br /&gt;
		local editForm		= L( lang, &amp;quot;forms&amp;quot;, &amp;quot;intro_edit_title&amp;quot; )&lt;br /&gt;
		local editTT		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_edit_tt&amp;quot; )&lt;br /&gt;
		local linkLabel		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_link_label&amp;quot; )&lt;br /&gt;
		local msgBefore		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_msg_before&amp;quot; )&lt;br /&gt;
		local msgAfter		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_msg_after&amp;quot; )&lt;br /&gt;
		local emptyCat		= L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_empty_category&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local link = addDataLink(&lt;br /&gt;
			editForm,&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			linkLabel,&lt;br /&gt;
			editTT&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert(&lt;br /&gt;
			out,&lt;br /&gt;
			&amp;quot;&amp;lt;i&amp;gt;&amp;quot;&lt;br /&gt;
			.. msgBefore&lt;br /&gt;
			.. &amp;quot; &amp;quot;&lt;br /&gt;
			.. link&lt;br /&gt;
			.. &amp;quot; &amp;quot;&lt;br /&gt;
			.. msgAfter&lt;br /&gt;
			.. &amp;quot;&amp;lt;/i&amp;gt;&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		if emptyCat ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. emptyCat .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( out, &amp;quot;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderIntroSubsectionsBlock( pv, lang, raw, cats )&lt;br /&gt;
	local items = wkParseIntroSubsections( raw )&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildIntroSubWarningLookup( lang )&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for _, it in ipairs( items ) do&lt;br /&gt;
		out[ #out + 1 ] = wkRenderIntroSubsection( pv, lang, it, cats, lookup )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Section : Introduction (sans fallback)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderIntroduction( args, pv, lang, cats )&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-question&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;understand_debate_title&amp;quot; )&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;intro_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;intro_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local raw = args[ &amp;quot;introduction&amp;quot; ]&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local expanded = F:preprocess( raw )&lt;br /&gt;
		local subs = wkRenderIntroSubsectionsBlock( pv, lang, expanded, cats or {} )&lt;br /&gt;
&lt;br /&gt;
		if subs ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local s = ( h2 .. subs ):gsub( &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
			return s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cat = &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;intro_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	local body = &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot; style=&amp;quot;margin-bottom: 1em;&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_intro_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039; .. cat&lt;br /&gt;
&lt;br /&gt;
	local s = ( h2 .. body ):gsub( &amp;quot;%s*$&amp;quot;, &amp;quot;&amp;quot; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderWikipediaLinks( args, pv, lang )&lt;br /&gt;
	local raw = args[ &amp;quot;wikipedia-articles&amp;quot; ]&lt;br /&gt;
	raw = ( type( raw ) == &amp;quot;string&amp;quot; ) and t_trim( raw ) or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	local wrap = html_create( &amp;quot;div&amp;quot; ):addClass( &amp;quot;bandeau-section wk-icon-before wk-icon-wikipedia hover-top navigation-not-searchable&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hasPages = false&lt;br /&gt;
&lt;br /&gt;
	if raw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local expanded = F:preprocess( raw )&lt;br /&gt;
		local pages = wkParseWikipediaMarkers( expanded )&lt;br /&gt;
&lt;br /&gt;
		if #pages &amp;gt; 0 then&lt;br /&gt;
			hasPages = true&lt;br /&gt;
			local items = {}&lt;br /&gt;
&lt;br /&gt;
			for _, page in ipairs( pages ) do&lt;br /&gt;
				local url = wkWikipediaUrl( page, lang )&lt;br /&gt;
				items[ #items + 1 ] = &#039;&amp;lt;span class=&amp;quot;hover-wikipedia&amp;quot;&amp;gt;[&#039; .. url .. &#039; &#039; .. page .. &#039;]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			wrap:wikitext(&lt;br /&gt;
				string_format(&lt;br /&gt;
					L( lang, &amp;quot;text&amp;quot;, &amp;quot;wikipedia_seealso_msg&amp;quot; ),&lt;br /&gt;
					joinArticles( items, lang )&lt;br /&gt;
				)&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			wrap:addClass( &amp;quot;aucun-contenu&amp;quot; )&lt;br /&gt;
				:wikitext( L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_wikipedia_msg&amp;quot; ) )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		wrap:addClass( &amp;quot;aucun-contenu&amp;quot; )&lt;br /&gt;
			:wikitext( L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_wikipedia_msg&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	wrap:wikitext(&lt;br /&gt;
		addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;wiki_seealso_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;wikipedia_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; or not hasPages then&lt;br /&gt;
		return tostring( wrap ) .. &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;wikipedia_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring( wrap )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderQuestionsFAQ( sujetComplet, sens, lang )&lt;br /&gt;
	local topic = ( sujetComplet and sujetComplet ~= &amp;quot;&amp;quot; ) and sujetComplet or &amp;quot;&amp;quot;&lt;br /&gt;
	local isCon = ( sens == &amp;quot;con&amp;quot; )&lt;br /&gt;
	local q&lt;br /&gt;
	if isCon then&lt;br /&gt;
		q = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q_con&amp;quot; ), topic )&lt;br /&gt;
	else&lt;br /&gt;
		q = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;faq_q_pro&amp;quot; ), topic )&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;div class=&amp;quot;question-FAQ&amp;quot;&amp;gt;&#039; .. q .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderArgsList( args, pv, lang, sens, maps, cats )&lt;br /&gt;
	local isCon = ( sens == &amp;quot;con&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local hIconCon = &#039;is-con&#039;&lt;br /&gt;
	local hIconPro = &#039;is-pro&#039;&lt;br /&gt;
	local title = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_con_title&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_pro_title&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local btnForm = addDataLink(&lt;br /&gt;
		isCon and L( lang, &amp;quot;forms&amp;quot;, &amp;quot;args_con_edit_title&amp;quot; ) or L( lang, &amp;quot;forms&amp;quot;, &amp;quot;args_pro_edit_title&amp;quot; ),&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
		isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_con_edit_tt&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_pro_edit_tt&amp;quot; )&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
	push( out, listBreaker() )&lt;br /&gt;
	push( out,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-argument &#039; .. ( isCon and hIconCon or hIconPro ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. title&lt;br /&gt;
		.. btnForm&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	push( out, renderQuestionsFAQ( args[ &amp;quot;complete-topic&amp;quot; ], sens, lang ) )&lt;br /&gt;
&lt;br /&gt;
	local mode = maps and maps._mode and ( isCon and maps._mode.con or maps._mode.pro ) or &amp;quot;none&amp;quot;&lt;br /&gt;
	local data = maps and ( isCon and maps.con or maps.pro ) or nil&lt;br /&gt;
	local items = data and data.items or {}&lt;br /&gt;
&lt;br /&gt;
	if ( mode == &amp;quot;data&amp;quot; ) and #items &amp;gt; 0 then&lt;br /&gt;
		local ul = html_create( &amp;quot;ul&amp;quot; )&lt;br /&gt;
			:addClass( &amp;quot;argument-list&amp;quot; )&lt;br /&gt;
			:addClass( isCon and &amp;quot;is-con&amp;quot; or &amp;quot;is-pro&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local lis = {}&lt;br /&gt;
		local anyTitleWarnings = false&lt;br /&gt;
&lt;br /&gt;
		for i, it in ipairs( items ) do&lt;br /&gt;
			if it.warnings and t_trim( it.warnings ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				anyTitleWarnings = true&lt;br /&gt;
			end&lt;br /&gt;
			table_insert( lis, wkRenderArgumentLi( pv, lang, it, isCon and &amp;quot;con&amp;quot; or &amp;quot;pro&amp;quot;, i, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		ul:wikitext( table_concat( lis, &amp;quot;\n&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if anyTitleWarnings then&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;refs_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		push( out, tostring( ul ) )&lt;br /&gt;
	else&lt;br /&gt;
		local cat = isCon and ( &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;con_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; ) or ( &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;pro_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		local msg = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg&amp;quot; )&lt;br /&gt;
		table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucun-argument navigation-not-searchable&amp;quot;&amp;gt;&#039; .. msg .. &#039;&amp;lt;/div&amp;gt;&#039; .. cat )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local sideLabel = isCon and L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_word&amp;quot; ) or L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_word&amp;quot; )&lt;br /&gt;
	local label = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;args_add_label&amp;quot; ), sideLabel )&lt;br /&gt;
&lt;br /&gt;
	local tooltip = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_add_tt&amp;quot; ), sideLabel, pv.rawTitle )&lt;br /&gt;
&lt;br /&gt;
	local baseField = L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_title&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local rqTypeValue	= isCon and L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_con_type_label&amp;quot; ) or L( lang, &amp;quot;forms&amp;quot;, &amp;quot;new_arg_pro_type_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local rqQuery = {}&lt;br /&gt;
	rqQuery[ baseField .. &amp;quot;[type]&amp;quot; ]	= rqTypeValue&lt;br /&gt;
	rqQuery[ baseField .. &amp;quot;[ID]&amp;quot; ]		= pv.pageId&lt;br /&gt;
	rqQuery[ &amp;quot;_run&amp;quot; ]					= &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	push( out,&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;bouton-ajouter wk-btn mw-ui-button navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. wkRunQueryHtmlTagButton( baseField, label, tooltip, rqQuery )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Sections de références&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Helpers FACTORISÉS : warnings + rendu de listes &amp;lt;li&amp;gt;&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local REFERENCE_WARNING_BANNER_KEYS = {&lt;br /&gt;
	&amp;quot;reference_quality_insufficient&amp;quot;,&lt;br /&gt;
	&amp;quot;reference_incomplete&amp;quot;,&lt;br /&gt;
	&amp;quot;dead_link&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function renderReferenceItemBanners( itemWarnings, pv, lang, cats, out )&lt;br /&gt;
	local warnsRef = t_trim( tostring( itemWarnings or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if warnsRef == &amp;quot;&amp;quot; then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lookup = buildSummaryLabelLookup( lang, REFERENCE_WARNING_BANNER_KEYS )&lt;br /&gt;
&lt;br /&gt;
	for _, x in ipairs( splitCSV( warnsRef, &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
		local key = resolveKeyFromLookup( x, lookup, REFERENCE_WARNING_BANNER_KEYS )&lt;br /&gt;
		if key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( out, renderSubsectionBanner( pv, lang, key, nil, cats ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderLiListFromArg( raw, parseFn, renderOneFn )&lt;br /&gt;
	local items = parseFn( raw )&lt;br /&gt;
	if #items == 0 then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lis = {}&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local li = renderOneFn( item )&lt;br /&gt;
		if li and li ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			lis[ #lis + 1 ] = li&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( lis, &amp;quot;\n&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local REF_SEP		= &amp;quot;⟭&amp;quot;&lt;br /&gt;
local REF_FIELD_SEP	= &amp;quot;⟬&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function wkParseBiblioMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( REF_FIELD_SEP, 1, true ) and not raw:find( REF_SEP, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, REF_SEP, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, REF_FIELD_SEP, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 12 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				authors		= f[ 1 ],&lt;br /&gt;
				article		= f[ 2 ],&lt;br /&gt;
				work		= f[ 3 ],&lt;br /&gt;
				volume		= f[ 4 ],&lt;br /&gt;
				number		= f[ 5 ],&lt;br /&gt;
				location	= f[ 6 ],&lt;br /&gt;
				page		= f[ 7 ],&lt;br /&gt;
				publisher	= f[ 8 ],&lt;br /&gt;
				place		= f[ 9 ],&lt;br /&gt;
				date		= f[ 10 ],&lt;br /&gt;
				link		= f[ 11 ],&lt;br /&gt;
				warnings	= f[ 12 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneBiblioLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		authors = L( lang, &amp;quot;text&amp;quot;, &amp;quot;refs_to_review&amp;quot; )&lt;br /&gt;
		table_insert( categories, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;refs_to_review&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	out[ #out + 1 ] = authors&lt;br /&gt;
&lt;br /&gt;
	local article = t_trim( item.article or &amp;quot;&amp;quot; )&lt;br /&gt;
	local work = t_trim( item.work or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;article_name&amp;quot; ), article, true )&lt;br /&gt;
	end&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;work_name&amp;quot; ), work, true )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « [&amp;quot; .. link .. &amp;quot; &amp;quot; .. article .. &amp;quot;] »&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, « &amp;quot; .. article .. &amp;quot; »&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. work .. &amp;quot;]&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. work .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local volume = t_trim( item.volume or &amp;quot;&amp;quot; )&lt;br /&gt;
		if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, &amp;quot; .. volume&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local number = t_trim( item.number or &amp;quot;&amp;quot; )&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;, n°&amp;quot; .. number&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local location = t_trim( item.location or &amp;quot;&amp;quot; )&lt;br /&gt;
	if location ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. location&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local page = t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, p.&amp;quot; .. page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local publisher = t_trim( item.publisher or &amp;quot;&amp;quot; )&lt;br /&gt;
	if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;publishing_house&amp;quot; ), publisher, true )&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. publisher&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local place = t_trim( item.place or &amp;quot;&amp;quot; )&lt;br /&gt;
	if place ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;place_of_publication&amp;quot; ), place, true )&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. place&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local date = t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderBiblioListFromArg( raw, pv, lang, categories, smwPending )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseBiblioMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneBiblioLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseWeblioMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( &amp;quot;⟭&amp;quot;, 1, true ) and not raw:find( &amp;quot;⟬&amp;quot;, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, &amp;quot;⟭&amp;quot;, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, &amp;quot;⟬&amp;quot;, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 6 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				page		= f[ 1 ],&lt;br /&gt;
				site		= f[ 2 ],&lt;br /&gt;
				link		= f[ 3 ],&lt;br /&gt;
				authors		= f[ 4 ],&lt;br /&gt;
				date		= f[ 5 ],&lt;br /&gt;
				warnings	= f[ 6 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneWeblioLi( pv, item, lang, categories, smwPending, side )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	local page		= t_trim( item.page or &amp;quot;&amp;quot; )&lt;br /&gt;
	local site		= t_trim( item.site or &amp;quot;&amp;quot; )&lt;br /&gt;
	local link		= t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors	= t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
	local date		= t_trim( item.date or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;article_name&amp;quot; ), page, true )&lt;br /&gt;
	end&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;website_name&amp;quot; ), site, true )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local label = &amp;quot;&amp;quot;&lt;br /&gt;
		if page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = page&lt;br /&gt;
		elseif site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			label = site&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if label == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. label .. &amp;quot;]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out[ #out + 1 ] = label&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if site ~= &amp;quot;&amp;quot; and page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &#039;&#039;&amp;quot; .. site .. &amp;quot;&#039;&#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Bandeaux d’avertissement&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	--	SMW auteurs (par côté)&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local propKey = &amp;quot;author&amp;quot;&lt;br /&gt;
		if side == &amp;quot;pro&amp;quot; then&lt;br /&gt;
			propKey = &amp;quot;author_pro&amp;quot;&lt;br /&gt;
		elseif side == &amp;quot;con&amp;quot; then&lt;br /&gt;
			propKey = &amp;quot;author_con&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for a in t_gsplit( authors, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
			a = t_trim( a )&lt;br /&gt;
			if a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				smwQueueAdd( smwPending, smwProp( lang, propKey ), a, true )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderWeblioListFromArg( raw, pv, lang, categories, smwPending, side )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseWeblioMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneWeblioLi( pv, item, lang, categories, smwPending, side )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkParseVideoMarkers( raw )&lt;br /&gt;
	raw = tostring( raw or &amp;quot;&amp;quot; )&lt;br /&gt;
	raw = t_trim( raw )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not raw:find( &amp;quot;⟭&amp;quot;, 1, true ) and not raw:find( &amp;quot;⟬&amp;quot;, 1, true ) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = {}&lt;br /&gt;
&lt;br /&gt;
	for block in t_gsplit( raw, &amp;quot;⟭&amp;quot;, true ) do&lt;br /&gt;
		block = t_trim( block )&lt;br /&gt;
		if block ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local f = {}&lt;br /&gt;
			for part in t_gsplit( block, &amp;quot;⟬&amp;quot;, true ) do&lt;br /&gt;
				f[ #f + 1 ] = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i = #f + 1, 4 do&lt;br /&gt;
				f[ i ] = &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			items[ #items + 1 ] = {&lt;br /&gt;
				title		= f[ 1 ],&lt;br /&gt;
				link		= f[ 2 ],&lt;br /&gt;
				authors		= f[ 3 ],&lt;br /&gt;
				warnings	= f[ 4 ]&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderOneVideoLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
	local title = t_trim( item.title or &amp;quot;&amp;quot; )&lt;br /&gt;
	if title == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local link = t_trim( item.link or &amp;quot;&amp;quot; )&lt;br /&gt;
	local authors = t_trim( item.authors or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;[&amp;quot; .. link .. &amp;quot; &amp;quot; .. title .. &amp;quot;]&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		out[ #out + 1 ] = title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if authors ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out[ #out + 1 ] = &amp;quot;, &amp;quot; .. authors&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	renderReferenceItemBanners( item.warnings, pv, lang, categories, out )&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;li&amp;gt;&amp;quot; .. table_concat( out ) .. &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkRenderVideoListFromArg( raw, pv, lang, categories, smwPending )&lt;br /&gt;
	return wkRenderLiListFromArg(&lt;br /&gt;
		raw,&lt;br /&gt;
		wkParseVideoMarkers,&lt;br /&gt;
		function( item )&lt;br /&gt;
			return wkRenderOneVideoLi( pv, item, lang, categories, smwPending )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRefBlock( pageVars, lang, iconClass, titleText, formKey, value )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		&#039;&amp;lt;h4 class=&amp;quot;titre-references wk-icon-before &#039; .. iconClass .. &#039; navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. titleText&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, formKey ),&lt;br /&gt;
			pageVars.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;section_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h4&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
	if value and t_trim( value ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;ul&amp;gt;&amp;quot; .. value .. &amp;quot;&amp;lt;/ul&amp;gt;&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &#039;&amp;lt;div class=&amp;quot;aucune-reference navigation-not-searchable&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_references_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderReferences( args, pageVars, lang, categories, smwPending, refRaw )&lt;br /&gt;
	local wrap = {}&lt;br /&gt;
&lt;br /&gt;
	refRaw = refRaw or {}&lt;br /&gt;
	refRaw.bibliography = refRaw.bibliography or {}&lt;br /&gt;
	refRaw.webliography = refRaw.webliography or {}&lt;br /&gt;
	refRaw.videography = refRaw.videography or {}&lt;br /&gt;
&lt;br /&gt;
	table_insert( wrap, &#039;&amp;lt;h2 class=&amp;quot;wk-icon-before wk-icon-further&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;further_reading_title&amp;quot; ) .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
	--	Bibliography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Bibliography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-bibliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;bibliography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderBiblioListFromArg( refRaw.bibliography.pro, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderBiblioListFromArg( refRaw.bibliography.con, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;bibliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.bibliography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderBiblioListFromArg( refRaw.bibliography.neutral, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.bibliography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;biblio_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Webliography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Webliography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-webliography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;webliography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderWeblioListFromArg( refRaw.webliography.pro, pageVars, lang, categories, smwPending, &amp;quot;pro&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderWeblioListFromArg( refRaw.webliography.con, pageVars, lang, categories, smwPending, &amp;quot;con&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;webliography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.webliography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderWeblioListFromArg( refRaw.webliography.neutral, pageVars, lang, categories, smwPending, &amp;quot;neutral&amp;quot; )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.webliography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;webliography_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--	Videography&lt;br /&gt;
	do&lt;br /&gt;
		local h3 = &#039;&amp;lt;h3 id=&amp;quot;Videography&amp;quot; class=&amp;quot;fr-collapsible-toggle wk-icon-before wk-carret wk-icon-after wk-icon-videography&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;videography_title&amp;quot; ) .. &#039;&amp;lt;/h3&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
		local content = {}&lt;br /&gt;
&lt;br /&gt;
		local proRaw = args[ &amp;quot;pro-videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if proRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.pro = F:preprocess( proRaw )&lt;br /&gt;
			proRaw = wkRenderVideoListFromArg( refRaw.videography.pro, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.pro = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local conRaw = args[ &amp;quot;con-videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if conRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.con = F:preprocess( conRaw )&lt;br /&gt;
			conRaw = wkRenderVideoListFromArg( refRaw.videography.con, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.con = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local neuRaw = args[ &amp;quot;videography&amp;quot; ] or &amp;quot;&amp;quot;&lt;br /&gt;
		if neuRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			refRaw.videography.neutral = F:preprocess( neuRaw )&lt;br /&gt;
			neuRaw = wkRenderVideoListFromArg( refRaw.videography.neutral, pageVars, lang, categories, smwPending )&lt;br /&gt;
		else&lt;br /&gt;
			refRaw.videography.neutral = &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-pro&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_pro_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_pro_title&amp;quot;,&lt;br /&gt;
			proRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-argument is-con&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_con_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_con_title&amp;quot;,&lt;br /&gt;
			conRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( content, renderRefBlock( pageVars, lang,&lt;br /&gt;
			&amp;quot;wk-icon-neutral mw-no-invert&amp;quot;,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;side_neutral_title&amp;quot; ),&lt;br /&gt;
			&amp;quot;videography_neutral_title&amp;quot;,&lt;br /&gt;
			neuRaw&lt;br /&gt;
		) )&lt;br /&gt;
&lt;br /&gt;
		table_insert( wrap, &#039;&amp;lt;div class=&amp;quot;fr-collapsible fr-collapsed&amp;quot;&amp;gt;&#039; .. h3 .. &#039;&amp;lt;div class=&amp;quot;fr-collapsible-content contenu-references&amp;quot;&amp;gt;&#039; .. table_concat( content ) .. &#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table_concat( wrap )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	JSON-LD : helpers QAPage / Breadcrumb / WebSite&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrl( lang, prefixKey, labelKey )&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. L( lang, &amp;quot;urls&amp;quot;, labelKey ),&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWikiUrlFromText( lang, prefixKey, text )&lt;br /&gt;
	text = t_trim( tostring( text or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if text == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return L( lang, &amp;quot;urls&amp;quot;, &amp;quot;wiki_base&amp;quot; )&lt;br /&gt;
		.. uri_encode(&lt;br /&gt;
			L( lang, &amp;quot;urls&amp;quot;, prefixKey ) .. text,&lt;br /&gt;
			&amp;quot;WIKI&amp;quot;&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkFullUrl( titleText )&lt;br /&gt;
	titleText = t_trim( tostring( titleText or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if titleText == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return tostring( uri_fullUrl( titleText ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkTakeFirst( items, limit )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	limit = tonumber( limit ) or 0&lt;br /&gt;
&lt;br /&gt;
	if limit &amp;lt;= 0 then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #items do&lt;br /&gt;
		if i &amp;gt; limit then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		out[ #out + 1 ] = items[ i ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildWebsiteNode( lang )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local siteName = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = homeUrl .. &amp;quot;#website&amp;quot;,&lt;br /&gt;
		url = homeUrl,&lt;br /&gt;
		name = siteName&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local homeLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home_label&amp;quot; )&lt;br /&gt;
	local homeUrl = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; )&lt;br /&gt;
	local debatesLabel = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
	local debatesUrl = wkBuildWikiUrl( lang, &amp;quot;portal_prefix&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;BreadcrumbList&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;,&lt;br /&gt;
		itemListElement = {&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 1,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = homeUrl,&lt;br /&gt;
					name = homeLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 2,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = debatesUrl,&lt;br /&gt;
					name = debatesLabel&lt;br /&gt;
				}&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;ListItem&amp;quot;,&lt;br /&gt;
				position = 3,&lt;br /&gt;
				item = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = pv.pageUrl,&lt;br /&gt;
					name = pv.rawTitle&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkSchemaPageLabel( it )&lt;br /&gt;
	local label = t_trim( tostring( ( it and it.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if label == &amp;quot;&amp;quot; then&lt;br /&gt;
		label = t_trim( tostring( ( it and it.title ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return label&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAnswerNode( it, kind, lang )&lt;br /&gt;
&lt;br /&gt;
	local pageLabel = t_trim( tostring( ( it and it.page ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if pageLabel == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local answerName = t_trim( tostring( ( it and it.title ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if answerName == &amp;quot;&amp;quot; then&lt;br /&gt;
		answerName = pageLabel&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local url = wkFullUrl( pageLabel )&lt;br /&gt;
	if url == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local additionalType&lt;br /&gt;
	if kind == &amp;quot;pro&amp;quot; then&lt;br /&gt;
		additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;pro_label&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		additionalType = wkBuildWikiUrl( lang, &amp;quot;property_prefix&amp;quot;, &amp;quot;con_label&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;Answer&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#answer&amp;quot;,&lt;br /&gt;
		url = url,&lt;br /&gt;
&lt;br /&gt;
		name = answerName,&lt;br /&gt;
		text = pageLabel,&lt;br /&gt;
&lt;br /&gt;
		additionalType = additionalType,&lt;br /&gt;
&lt;br /&gt;
		about = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Claim&amp;quot;,&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#claim&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSuggestedAnswers( maps, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local position = 1&lt;br /&gt;
&lt;br /&gt;
	local proItems = ( maps and maps.pro and maps.pro.items ) or {}&lt;br /&gt;
	local conItems = ( maps and maps.con and maps.con.items ) or {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkTakeFirst( proItems, 3 ) ) do&lt;br /&gt;
		local node = wkBuildAnswerNode( it, &amp;quot;pro&amp;quot;, lang )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ #out + 1 ] = node&lt;br /&gt;
			position = position + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( wkTakeFirst( conItems, 3 ) ) do&lt;br /&gt;
		local node = wkBuildAnswerNode( it, &amp;quot;con&amp;quot;, lang )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ #out + 1 ] = node&lt;br /&gt;
			position = position + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildIsPartOf( lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;debates_label&amp;quot; )&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	out[ #out + 1 ] = {&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;home&amp;quot; ) .. &amp;quot;#website&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildIsRelatedTo( args )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local raw = t_trim( tostring( ( args and args[ &amp;quot;related-debates&amp;quot; ] ) or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return out&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
		part = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			count = count + 1&lt;br /&gt;
			if count &amp;gt; 5 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local url = wkFullUrl( part )&lt;br /&gt;
			if url ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				out[ #out + 1 ] = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = url .. &amp;quot;#qa&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildKeywords( args, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local sections = splitCSV( args and args[ &amp;quot;sections&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
	local termSetId = wkBuildWikiUrl( lang, &amp;quot;category_prefix&amp;quot;, &amp;quot;sections_label&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #sections do&lt;br /&gt;
		if i &amp;gt; 4 then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local section = t_trim( tostring( sections[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if section ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;DefinedTerm&amp;quot;,&lt;br /&gt;
				[ &amp;quot;@id&amp;quot; ] = wkBuildWikiUrlFromText( lang, &amp;quot;category_prefix&amp;quot;, section ),&lt;br /&gt;
				name = section,&lt;br /&gt;
				inDefinedTermSet = {&lt;br /&gt;
					[ &amp;quot;@id&amp;quot; ] = termSetId&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildAboutAndMentions( args )&lt;br /&gt;
	local about = {}&lt;br /&gt;
	local mentions = {}&lt;br /&gt;
&lt;br /&gt;
	local keywords = splitCSV( args and args[ &amp;quot;keywords&amp;quot; ] or &amp;quot;&amp;quot;, &amp;quot;,&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #keywords do&lt;br /&gt;
		local kw = t_trim( tostring( keywords[ i ] or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if kw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			local node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Thing&amp;quot;,&lt;br /&gt;
				name = kw&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if i &amp;lt;= 2 then&lt;br /&gt;
				about[ #about + 1 ] = node&lt;br /&gt;
			else&lt;br /&gt;
				mentions[ #mentions + 1 ] = node&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return about, mentions&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildDiscussionUrl( pv, lang )&lt;br /&gt;
	local prefix = L( lang, &amp;quot;urls&amp;quot;, &amp;quot;discussion_prefix&amp;quot; )&lt;br /&gt;
	return wkBuildWikiUrlFromText( lang, &amp;quot;discussion_prefix&amp;quot;, pv.rawTitle )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tagHtmlTag(tagName, content, attrs)&lt;br /&gt;
	local src = &amp;quot;{{#tag:htmltag|&amp;quot; .. (content or &amp;quot;&amp;quot;) .. &amp;quot;|tagname=&amp;quot; .. tostring(tagName)&lt;br /&gt;
&lt;br /&gt;
	if attrs then&lt;br /&gt;
		local keys = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
		for k in pairs(attrs) do&lt;br /&gt;
			n = n + 1&lt;br /&gt;
			keys[n] = k&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			table_sort(keys)&lt;br /&gt;
			for i = 1, n do&lt;br /&gt;
				local k = keys[i]&lt;br /&gt;
				src = src .. &amp;quot;|&amp;quot; .. tostring(k) .. &amp;quot;=&amp;quot; .. tostring(attrs[k])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	src = src .. &amp;quot;}}&amp;quot;&lt;br /&gt;
	return F:preprocess(src)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkProtectJsonLdForParser( json )&lt;br /&gt;
	if not json or json == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	json = tostring( json )&lt;br /&gt;
&lt;br /&gt;
	--	protéger les séparateurs de parser function&lt;br /&gt;
	json = json:gsub( &amp;quot;|&amp;quot;, &amp;quot;&amp;amp;#124;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;=&amp;quot;, &amp;quot;&amp;amp;#61;&amp;quot; )&lt;br /&gt;
	json = json:gsub( &amp;quot;/&amp;quot;, &amp;quot;\\/&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	--	éviter de fermer prématurément {{#tag:...}}&lt;br /&gt;
	json = json:gsub( &amp;quot;}}&amp;quot;, &amp;quot;} }&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	return json&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
	authors = t_trim( tostring( authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if authors == &amp;quot;&amp;quot; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for a in t_gsplit( authors, &amp;quot;,&amp;quot;, true ) do&lt;br /&gt;
		a = t_trim( tostring( a or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		if a ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			out[ #out + 1 ] = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Person&amp;quot;,&lt;br /&gt;
				name = a&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #out == 1 then&lt;br /&gt;
		return out[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildSingleNodeFromFirstItem( items, builder )&lt;br /&gt;
	local out = {}&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #( items or {} ) do&lt;br /&gt;
		local node = builder( items[ i ] )&lt;br /&gt;
		if node then&lt;br /&gt;
			out[ 1 ] = node&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromBibliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseBiblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local article = t_trim( tostring( item.article or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local work = t_trim( tostring( item.work or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local volume = t_trim( tostring( item.volume or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local number = t_trim( tostring( item.number or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local publisher = t_trim( tostring( item.publisher or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		local node = nil&lt;br /&gt;
&lt;br /&gt;
		if number ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Article&amp;quot;,&lt;br /&gt;
				name = article,&lt;br /&gt;
				isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;Periodical&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			node.issueNumber = number&lt;br /&gt;
&lt;br /&gt;
		elseif publisher ~= &amp;quot;&amp;quot; and work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Book&amp;quot;,&lt;br /&gt;
				name = work&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.description = article&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if volume ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.volumeNumber = volume&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if number ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.issueNumber = number&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif link ~= &amp;quot;&amp;quot; and article ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
				name = article&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if work ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				node.isPartOf = {&lt;br /&gt;
					[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
					name = work&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not node then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if publisher ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.publisher = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
				name = publisher&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if link ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.url = link&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromWebliography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseWeblioMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local page = t_trim( tostring( item.page or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local site = t_trim( tostring( item.site or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local date = t_trim( tostring( item.date or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if link == &amp;quot;&amp;quot; or page == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebPage&amp;quot;,&lt;br /&gt;
			name = page,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if site ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.isPartOf = {&lt;br /&gt;
				[ &amp;quot;@type&amp;quot; ] = &amp;quot;WebSite&amp;quot;,&lt;br /&gt;
				name = site&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			node.datePublished = date&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wkBuildClaimCitationsFromVideography( raw )&lt;br /&gt;
	raw = t_trim( tostring( raw or &amp;quot;&amp;quot; ) )&lt;br /&gt;
	if raw == &amp;quot;&amp;quot; then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local items = wkParseVideoMarkers( raw )&lt;br /&gt;
&lt;br /&gt;
	return wkBuildSingleNodeFromFirstItem( items, function( item )&lt;br /&gt;
		local title = t_trim( tostring( item.title or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local link = t_trim( tostring( item.link or &amp;quot;&amp;quot; ) )&lt;br /&gt;
		local authors = t_trim( tostring( item.authors or &amp;quot;&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
		if title == &amp;quot;&amp;quot; or link == &amp;quot;&amp;quot; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local node = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;VideoObject&amp;quot;,&lt;br /&gt;
			name = title,&lt;br /&gt;
			url = link&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		local authorValue = wkBuildQuoteAuthorValue( authors )&lt;br /&gt;
		if authorValue then&lt;br /&gt;
			node.author = authorValue&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return node&lt;br /&gt;
	end )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderDebateSchemaJSONLD( pv, lang, args, maps, refRaw )&lt;br /&gt;
	local websiteNode = wkBuildWebsiteNode( lang )&lt;br /&gt;
	local breadcrumbNode = wkBuildBreadcrumbNode( pv, lang )&lt;br /&gt;
	local about, mentions = wkBuildAboutAndMentions( args )&lt;br /&gt;
	local keywords = wkBuildKeywords( args, lang )&lt;br /&gt;
	local suggestedAnswer = wkBuildSuggestedAnswers( maps, lang )&lt;br /&gt;
	local isPartOf = wkBuildIsPartOf( lang )&lt;br /&gt;
	local isRelatedTo = wkBuildIsRelatedTo( args )&lt;br /&gt;
&lt;br /&gt;
	refRaw = refRaw or {}&lt;br /&gt;
	refRaw.bibliography = refRaw.bibliography or {}&lt;br /&gt;
	refRaw.webliography = refRaw.webliography or {}&lt;br /&gt;
	refRaw.videography = refRaw.videography or {}&lt;br /&gt;
&lt;br /&gt;
	local bibliographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.bibliography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		bibliographyRaw = refRaw.bibliography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.bibliography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if bibliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			bibliographyRaw = bibliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		bibliographyRaw = bibliographyRaw .. refRaw.bibliography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.bibliography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if bibliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			bibliographyRaw = bibliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		bibliographyRaw = bibliographyRaw .. refRaw.bibliography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local webliographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.webliography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		webliographyRaw = refRaw.webliography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.webliography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if webliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			webliographyRaw = webliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		webliographyRaw = webliographyRaw .. refRaw.webliography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.webliography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if webliographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			webliographyRaw = webliographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		webliographyRaw = webliographyRaw .. refRaw.webliography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local videographyRaw = &amp;quot;&amp;quot;&lt;br /&gt;
	if refRaw.videography.pro ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		videographyRaw = refRaw.videography.pro&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.videography.con ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if videographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			videographyRaw = videographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		videographyRaw = videographyRaw .. refRaw.videography.con&lt;br /&gt;
	end&lt;br /&gt;
	if refRaw.videography.neutral ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		if videographyRaw ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			videographyRaw = videographyRaw .. ITEM_SEP&lt;br /&gt;
		end&lt;br /&gt;
		videographyRaw = videographyRaw .. refRaw.videography.neutral&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local citations = {}&lt;br /&gt;
&lt;br /&gt;
	local b = wkBuildClaimCitationsFromBibliography( bibliographyRaw )&lt;br /&gt;
	if b[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = b[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local w = wkBuildClaimCitationsFromWebliography( webliographyRaw )&lt;br /&gt;
	if w[ 1 ] then&lt;br /&gt;
		citations[ #citations + 1 ] = w[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local subjectOf = wkBuildClaimCitationsFromVideography( videographyRaw )&lt;br /&gt;
&lt;br /&gt;
	local qaNode = {&lt;br /&gt;
		[ &amp;quot;@type&amp;quot; ] = &amp;quot;QAPage&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#qa&amp;quot;,&lt;br /&gt;
		url = pv.pageUrl,&lt;br /&gt;
		name = pv.rawTitle,&lt;br /&gt;
		inLanguage = lang,&lt;br /&gt;
		educationalUse = {&lt;br /&gt;
			&amp;quot;debate&amp;quot;,&lt;br /&gt;
			&amp;quot;critical thinking&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		learningResourceType = &amp;quot;debate&amp;quot;,&lt;br /&gt;
		audience = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;EducationalAudience&amp;quot;,&lt;br /&gt;
			educationalLevel = {&lt;br /&gt;
				&amp;quot;general public&amp;quot;,&lt;br /&gt;
				&amp;quot;secondary education&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		isPartOf = isPartOf,&lt;br /&gt;
		breadcrumb = {&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#breadcrumb&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		discussionUrl = wkBuildDiscussionUrl( pv, lang ),&lt;br /&gt;
		publisher = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Organization&amp;quot;,&lt;br /&gt;
			name = L( lang, &amp;quot;seo&amp;quot;, &amp;quot;site_name&amp;quot; )&lt;br /&gt;
		},&lt;br /&gt;
		mainEntity = {&lt;br /&gt;
			[ &amp;quot;@type&amp;quot; ] = &amp;quot;Question&amp;quot;,&lt;br /&gt;
			[ &amp;quot;@id&amp;quot; ] = pv.pageUrl .. &amp;quot;#question&amp;quot;,&lt;br /&gt;
			name = pv.rawTitle,&lt;br /&gt;
			suggestedAnswer = suggestedAnswer&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if #isRelatedTo &amp;gt; 0 then&lt;br /&gt;
		qaNode.isRelatedTo = isRelatedTo&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #keywords &amp;gt; 0 then&lt;br /&gt;
		qaNode.keywords = keywords&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #about &amp;gt; 0 then&lt;br /&gt;
		qaNode.about = about&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #mentions &amp;gt; 0 then&lt;br /&gt;
		qaNode.mentions = mentions&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #citations &amp;gt; 0 then&lt;br /&gt;
		qaNode.citation = citations&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if subjectOf[ 1 ] then&lt;br /&gt;
		qaNode.subjectOf = subjectOf[ 1 ]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {&lt;br /&gt;
		[ &amp;quot;@context&amp;quot; ] = &amp;quot;https://schema.org&amp;quot;,&lt;br /&gt;
		[ &amp;quot;@graph&amp;quot; ] = {&lt;br /&gt;
			websiteNode,&lt;br /&gt;
			breadcrumbNode,&lt;br /&gt;
			qaNode&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local json = t_jsonEncode( data )&lt;br /&gt;
&lt;br /&gt;
	return tagHtmlTag( &amp;quot;script&amp;quot;, wkProtectJsonLdForParser( json ), {&lt;br /&gt;
		type = &amp;quot;application/ld+json&amp;quot;,&lt;br /&gt;
		[&amp;quot;class&amp;quot;] = &amp;quot;navigation-not-searchable&amp;quot;&lt;br /&gt;
	} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Champs divers (mots-clés, rubriques, connexes, interlangue)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function renderKeywords( args, pv, cats, lang )&lt;br /&gt;
	local out = {}&lt;br /&gt;
	table_insert( out, &#039;&amp;lt;div style=&amp;quot;font-size: 95%; margin-top: 1em;&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_label_text&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;keywords&amp;quot; ] and t_trim( args[ &amp;quot;keywords&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local rendered = {}&lt;br /&gt;
&lt;br /&gt;
		local formName = L( lang, &amp;quot;forms&amp;quot;, &amp;quot;search_by_keywords_title&amp;quot; )&lt;br /&gt;
		local fieldLabel = formName&lt;br /&gt;
		local fieldName = L( lang, &amp;quot;params&amp;quot;, &amp;quot;keywords_field&amp;quot; )&lt;br /&gt;
		local tt = L( lang, &amp;quot;text&amp;quot;, &amp;quot;search_by_keyword_tt&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local typeField = L( lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_field&amp;quot; )&lt;br /&gt;
		local typeValue = L( lang, &amp;quot;params&amp;quot;, &amp;quot;search_type_value&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local extra = {&lt;br /&gt;
			[ fieldLabel .. &amp;quot;[&amp;quot; .. typeField .. &amp;quot;]&amp;quot; ] = typeValue&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		for _, k in ipairs( splitCSV( args[ &amp;quot;keywords&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			k = t_trim( tostring( k or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			if k ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				local chip = runQueryLink( formName, fieldLabel, fieldName, k, k, tt, extra )&lt;br /&gt;
				if not chip or chip == &amp;quot;&amp;quot; then&lt;br /&gt;
					chip = k&lt;br /&gt;
				end&lt;br /&gt;
				if chip ~= &amp;quot;&amp;quot; then&lt;br /&gt;
					table_insert( rendered, chip )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if #rendered &amp;gt; 0 then&lt;br /&gt;
			table_insert( out, table_concat( rendered, &amp;quot;, &amp;quot; ) )&lt;br /&gt;
		else&lt;br /&gt;
			table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot; ) .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
			table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( out, &amp;quot;&amp;lt;strong&amp;gt;&amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_label&amp;quot; ) .. &amp;quot;&amp;lt;/strong&amp;gt;&amp;quot; )&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;keywords_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( out,&lt;br /&gt;
		addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;keywords_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;keywords_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	return table_concat( out )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderConnexes( args, pv, cats, lang )&lt;br /&gt;
	local h2 =&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-parent&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;forms&amp;quot;, &amp;quot;related_edit_title&amp;quot; )&lt;br /&gt;
		.. addDataLink(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;related_edit_title&amp;quot; ),&lt;br /&gt;
			pv.rawTitle,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;related_edit_tt&amp;quot; )&lt;br /&gt;
		)&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	local raw = args[ &amp;quot;related-debates&amp;quot; ]&lt;br /&gt;
	if raw and t_trim( raw ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local items = {}&lt;br /&gt;
		local n = 0&lt;br /&gt;
&lt;br /&gt;
		for part in t_gsplit( raw, ITEM_SEP, true ) do&lt;br /&gt;
			part = t_trim( tostring( part or &amp;quot;&amp;quot; ) )&lt;br /&gt;
			if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
				n = n + 1&lt;br /&gt;
				items[ n ] = &#039;&amp;lt;li style=&amp;quot;position: relative;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;hover-map&amp;quot;&amp;gt;[[&#039; .. part .. &#039;]]&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if n &amp;gt; 0 then&lt;br /&gt;
			return h2 .. &#039;&amp;lt;ul class=&amp;quot;hover-top searchaux&amp;quot;&amp;gt;&#039; .. table_concat( items ) .. &#039;&amp;lt;/ul&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;related_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	return h2 .. &#039;&amp;lt;div class=&amp;quot;aucun-contenu navigation-not-searchable&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_related_msg&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRubriques( args, cats, lang )&lt;br /&gt;
	if args[ &amp;quot;sections&amp;quot; ] and t_trim( args[ &amp;quot;sections&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for _, r in ipairs( splitCSV( args[ &amp;quot;sections&amp;quot; ], &amp;quot;,&amp;quot; ) ) do&lt;br /&gt;
			table_insert( out, &amp;quot;[[Category:&amp;quot; .. r .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
		return table_concat( out )&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;sections_missing&amp;quot; ) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	SMW (sans legacy)&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function setSemanticData( args, pv, lang, maps, smwPending )&lt;br /&gt;
	maps = maps or {}&lt;br /&gt;
	local pro = maps.pro or {}&lt;br /&gt;
	local con = maps.con or {}&lt;br /&gt;
&lt;br /&gt;
	local pourPages = {}&lt;br /&gt;
	local contrePages = {}&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( pro.items or {} ) do&lt;br /&gt;
		if it.page and it.page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( pourPages, it.page )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, it in ipairs( con.items or {} ) do&lt;br /&gt;
		if it.page and it.page ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			table_insert( contrePages, it.page )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local props = {}&lt;br /&gt;
&lt;br /&gt;
	local pourSurvol = t_trim( pro.mapHover or &amp;quot;&amp;quot; )&lt;br /&gt;
	local contreSurvol = t_trim( con.mapHover or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if pourSurvol == &amp;quot;&amp;quot; then&lt;br /&gt;
		pourSurvol = &#039;&amp;lt;div class=&amp;quot;carte-vide&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_pro_args_msg_short&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if contreSurvol == &amp;quot;&amp;quot; then&lt;br /&gt;
		contreSurvol = &#039;&amp;lt;div class=&amp;quot;carte-vide&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;none_con_args_msg_short&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local listePour = t_trim( pro.argsVar or &amp;quot;&amp;quot; )&lt;br /&gt;
	local listeContre = t_trim( con.argsVar or &amp;quot;&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;debate_name&amp;quot; ) ]		= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;debate_number&amp;quot; ) ]	= pv.pageId&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;breadcrumb&amp;quot; ) ]		= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;parent_debate&amp;quot; ) ]	= pv.rawTitle&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;pro_list&amp;quot; ) ]		= listePour&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;con_list&amp;quot; ) ]		= listeContre&lt;br /&gt;
&lt;br /&gt;
	props[ smwProp( lang, &amp;quot;arg_map&amp;quot; ) ] =&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;wk-arg-map navigation-not-searchable&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-pro&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_pro_label&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. pourSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__col is-con&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__th&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;arg_map_con_label&amp;quot; ) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
				.. &#039;&amp;lt;div class=&amp;quot;wk-arg-map__td&amp;quot;&amp;gt;&#039; .. contreSurvol .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
	if #pourPages &amp;gt; 0 then&lt;br /&gt;
		props[ smwProp( lang, &amp;quot;arg_pro&amp;quot; ) ] = pourPages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #contrePages &amp;gt; 0 then&lt;br /&gt;
		props[ smwProp( lang, &amp;quot;arg_con&amp;quot; ) ] = contrePages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if smwPending then&lt;br /&gt;
		smwQueueMerge( props, smwPending )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	smwSetSafe( props )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
--	Rendu principal&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.render( frame )&lt;br /&gt;
	for k in pairs( SEO_CACHE ) do&lt;br /&gt;
		SEO_CACHE[ k ] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local args	= getArgs( frame )&lt;br /&gt;
	local lang	= detectLang( args )&lt;br /&gt;
	local pv	= computePageVars()&lt;br /&gt;
	local pieces, cats = {}, {}&lt;br /&gt;
	local smwPending = {}&lt;br /&gt;
	local refRaw = {&lt;br /&gt;
		bibliography = {},&lt;br /&gt;
		webliography = {},&lt;br /&gt;
		videography = {}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	smwQueueAddFromCSV(&lt;br /&gt;
		smwPending,&lt;br /&gt;
		smwProp( lang, &amp;quot;keyword&amp;quot; ),&lt;br /&gt;
		args[ &amp;quot;keywords&amp;quot; ]&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	local maps = computeArgumentMapsFromArgs( args, lang )&lt;br /&gt;
&lt;br /&gt;
	table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;debates&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;topic&amp;quot; ] and t_trim( args[ &amp;quot;topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		smwQueueAdd( smwPending, smwProp( lang, &amp;quot;debate_topic&amp;quot; ), args[ &amp;quot;topic&amp;quot; ], false )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;topic_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[ &amp;quot;complete-topic&amp;quot; ] and t_trim( args[ &amp;quot;complete-topic&amp;quot; ] ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces, F:preprocess( &amp;quot;{{SHORTDESC: &amp;quot; .. string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_topic&amp;quot; ), args[ &amp;quot;complete-topic&amp;quot; ] ) .. &amp;quot;}}&amp;quot; ) )&lt;br /&gt;
	else&lt;br /&gt;
		table_insert( cats, &amp;quot;[[Category:&amp;quot; .. L( lang, &amp;quot;categories&amp;quot;, &amp;quot;topic_complete_missing&amp;quot; ) .. &amp;quot;]]&amp;quot; )&lt;br /&gt;
		table_insert( pieces, F:preprocess( &amp;quot;{{SHORTDESC: &amp;quot; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;shortdesc_plain&amp;quot; ) .. &amp;quot;}}&amp;quot; ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderArgumentMapTop( lang, maps ) )&lt;br /&gt;
	table_insert( pieces, renderKeywords( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	local btnForm = addDataLink(&lt;br /&gt;
		L( lang, &amp;quot;forms&amp;quot;, &amp;quot;banners_edit_title&amp;quot; ),&lt;br /&gt;
		pv.rawTitle,&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ),&lt;br /&gt;
		L( lang, &amp;quot;text&amp;quot;, &amp;quot;debate_banners_edit_tt&amp;quot; )&lt;br /&gt;
	)&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;h2 class=&amp;quot;section-modifiable wk-icon-before wk-icon-flag&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;warnings_title&amp;quot; ) ..  btnForm .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
	table_insert( pieces, renderMainBanner( F, pv, lang ) )&lt;br /&gt;
	table_insert( pieces, renderWarningBanners( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderIntroduction( args, pv, lang, cats ) )&lt;br /&gt;
	table_insert( pieces, renderWikipediaLinks( args, pv, lang ) )&lt;br /&gt;
	table_insert( pieces, renderArgsList( args, pv, lang, &amp;quot;pro&amp;quot;, maps, cats ) )&lt;br /&gt;
	table_insert( pieces, renderArgsList( args, pv, lang, &amp;quot;con&amp;quot;, maps, cats ) )&lt;br /&gt;
&lt;br /&gt;
	if not isProgress( lang, args[ &amp;quot;progress&amp;quot; ], &amp;quot;draft&amp;quot; ) then&lt;br /&gt;
		local target = L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_ns_label&amp;quot; ) .. &amp;quot;:&amp;quot; .. pv.rawTitle .. &amp;quot; (ID)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		local ns			= L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_ns_label&amp;quot; )&lt;br /&gt;
		local f_debat	= L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_debate_field&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local box = {}&lt;br /&gt;
		table_insert( box, &#039;&amp;lt;h2 class=&amp;quot;navigation-not-searchable noprint wk-icon-before wk-icon-selfeval&amp;quot;&amp;gt;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_title&amp;quot; ) .. &#039;&amp;lt;/h2&amp;gt;&#039; )&lt;br /&gt;
&lt;br /&gt;
		local startBtn = wkAddDataGetButton(&lt;br /&gt;
			L( lang, &amp;quot;forms&amp;quot;, &amp;quot;self_eval_home_title&amp;quot; ),&lt;br /&gt;
			target,&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_start_label&amp;quot; ),&lt;br /&gt;
			L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_start_tt&amp;quot; ),&lt;br /&gt;
			{&lt;br /&gt;
				[ ns .. &amp;quot;[&amp;quot; .. f_debat .. &amp;quot;]&amp;quot; ]	= pv.rawTitle&lt;br /&gt;
			}&lt;br /&gt;
		)&lt;br /&gt;
		table_insert(&lt;br /&gt;
			box,&lt;br /&gt;
			&#039;&amp;lt;div class=&amp;quot;boite-info navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;self_eval_blurb&amp;quot; )&lt;br /&gt;
			.. startBtn&lt;br /&gt;
			.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		table_insert( pieces, table_concat( box ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderReferences( args, pv, lang, cats, smwPending, refRaw ) )&lt;br /&gt;
	table_insert( pieces, renderConnexes( args, pv, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces,&lt;br /&gt;
		&#039;&amp;lt;h2 class=&amp;quot;latest-changes-button navigation-not-searchable noprint wk-icon-before wk-icon-refresh&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_title&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/h2&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes navigation-not-searchable noprint&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes-button wk-btn mw-ui-button&amp;quot;&#039;&lt;br /&gt;
		.. &#039; title=&amp;quot;&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_show_tt&amp;quot; ) .. &#039;&amp;quot;&#039;&lt;br /&gt;
		.. &#039; data-page=&amp;quot;&#039; .. t_nowiki( pv.rawTitle ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. L( lang, &amp;quot;text&amp;quot;, &amp;quot;latest_changes_show_label&amp;quot; )&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;div class=&amp;quot;latest-changes-wrapper&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
		.. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderRubriques( args, cats, lang ) )&lt;br /&gt;
&lt;br /&gt;
	setSemanticData( args, pv, lang, maps, smwPending )&lt;br /&gt;
&lt;br /&gt;
	renderFullSEO( args, pv, lang )&lt;br /&gt;
	table_insert( pieces, table_concat( cats ) )&lt;br /&gt;
&lt;br /&gt;
	local renameLink = string_format( L( lang, &amp;quot;text&amp;quot;, &amp;quot;rename_special_page_text&amp;quot; ), pv.encoded )&lt;br /&gt;
	table_insert( pieces,&lt;br /&gt;
		&#039;&amp;lt;span id=&amp;quot;bouton-renommer&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;[[&#039;&lt;br /&gt;
		.. renameLink .. &#039;|&#039; .. L( lang, &amp;quot;text&amp;quot;, &amp;quot;rename_link_label&amp;quot; ) .. &#039;]]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-sujet&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataLink( L( lang, &amp;quot;forms&amp;quot;, &amp;quot;topic_edit_title&amp;quot; ), pv.rawTitle, L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ), L( lang, &amp;quot;text&amp;quot;, &amp;quot;topic_edit_tt&amp;quot; ) )&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	table_insert( pieces, &#039;&amp;lt;span id=&amp;quot;bouton-modifier-categories&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		.. addDataLink( L( lang, &amp;quot;forms&amp;quot;, &amp;quot;sections_edit_title&amp;quot; ), pv.rawTitle, L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; ), L( lang, &amp;quot;text&amp;quot;, &amp;quot;sections_edit_tt&amp;quot; ) )&lt;br /&gt;
		.. &#039;&amp;lt;/span&amp;gt;&#039; )&lt;br /&gt;
	if args[&amp;quot;interlanguage&amp;quot;] and t_trim( tostring( args[&amp;quot;interlanguage&amp;quot;] or &amp;quot;&amp;quot; ) ) ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		table_insert( pieces, args[ &amp;quot;interlanguage&amp;quot; ] )&lt;br /&gt;
		table_insert( pieces,&lt;br /&gt;
			&#039;&amp;lt;span id=&amp;quot;bouton-modifier-interlangue&amp;quot; class=&amp;quot;bouton-modifier navigation-not-searchable noprint&amp;quot; style=&amp;quot;display: none;&amp;quot;&#039;&lt;br /&gt;
			.. &#039; data-wk-tooltip=&amp;quot;&#039; .. escapeAttr( L( lang, &amp;quot;text&amp;quot;, &amp;quot;interlanguage_edit_tt&amp;quot; ) ) .. &#039;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
			.. addDataLink(&lt;br /&gt;
				L( lang, &amp;quot;forms&amp;quot;, &amp;quot;interlanguage_edit_title&amp;quot; ),&lt;br /&gt;
				pv.rawTitle,&lt;br /&gt;
				L( lang, &amp;quot;text&amp;quot;, &amp;quot;edit_label&amp;quot; )&lt;br /&gt;
			)&lt;br /&gt;
			.. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, renderDebateSchemaJSONLD( pv, lang, args, maps, refRaw ) )&lt;br /&gt;
&lt;br /&gt;
	table_insert( pieces, F:preprocess( &amp;quot;__NOCACHE__&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
	return table_concat( pieces, &amp;quot;&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:WD/I18N/Data&amp;diff=10212</id>
		<title>Module:WD/I18N/Data</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:WD/I18N/Data&amp;diff=10212"/>
		<updated>2026-03-19T08:25:33Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	Common = {&lt;br /&gt;
		labels = {&lt;br /&gt;
			edit_label = { fr = &amp;quot;Modifier&amp;quot;, en = &amp;quot;Edit&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			site_title_text = {&lt;br /&gt;
				fr = &amp;quot;Wikidébats, l’encyclopédie des arguments « pour » et « contre »&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Wikidebates, the encyclopedia of “pro” and “con” arguments&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			arg_pro_label = { fr = &amp;quot;Argument pour&amp;quot;, en = &amp;quot;Pro argument&amp;quot; },&lt;br /&gt;
			arg_con_label = { fr = &amp;quot;Argument contre&amp;quot;, en = &amp;quot;Con argument&amp;quot; },&lt;br /&gt;
			justification_label = { fr = &amp;quot;Justification&amp;quot;, en = &amp;quot;Justification&amp;quot; },&lt;br /&gt;
			objection_label = { fr = &amp;quot;Objection&amp;quot;, en = &amp;quot;Objection&amp;quot; },&lt;br /&gt;
			arguments_label = { fr = &amp;quot;Arguments&amp;quot;, en = &amp;quot;Arguments&amp;quot; },&lt;br /&gt;
			justifications_label = { fr = &amp;quot;Justifications&amp;quot;, en = &amp;quot;Justifications&amp;quot; },&lt;br /&gt;
			objections_label = { fr = &amp;quot;Objections&amp;quot;, en = &amp;quot;Objections&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			none_label = { fr = &amp;quot;aucun&amp;quot;, en = &amp;quot;none&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debates_label = { fr = &amp;quot;Débats&amp;quot;, en = &amp;quot;Debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			argument_map_label = { fr = &amp;quot;Carte des arguments&amp;quot;, en = &amp;quot;Argument map&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			rename_page_label = { fr = &amp;quot;Renommer la page&amp;quot;, en = &amp;quot;Rename page&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		props = {&lt;br /&gt;
			keyword = { fr = &amp;quot;Mot-clé&amp;quot;, en = &amp;quot;Keyword&amp;quot; },&lt;br /&gt;
			work_name = { fr = &amp;quot;Nom d&#039;ouvrage&amp;quot;, en = &amp;quot;Work name&amp;quot; },&lt;br /&gt;
			publishing_house = { fr = &amp;quot;Maison d&#039;édition&amp;quot;, en = &amp;quot;Publishing house&amp;quot; },&lt;br /&gt;
			place_of_publication = { fr = &amp;quot;Lieu d&#039;édition&amp;quot;, en = &amp;quot;Place of publication&amp;quot; },&lt;br /&gt;
			author = { fr = &amp;quot;Auteur&amp;quot;, en = &amp;quot;Author&amp;quot; },&lt;br /&gt;
			article_name = { fr = &amp;quot;Nom d&#039;article&amp;quot;, en = &amp;quot;Article name&amp;quot; },&lt;br /&gt;
			website_name = { fr = &amp;quot;Nom de site Internet&amp;quot;, en = &amp;quot;Website name&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		forms = {&lt;br /&gt;
			search_by_keywords_title = { fr = &amp;quot;Recherche par mots-clés&amp;quot;, en = &amp;quot;Search by keywords&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		params = {&lt;br /&gt;
			keywords_field = { fr = &amp;quot;mots-clés&amp;quot;, en = &amp;quot;keywords&amp;quot; },&lt;br /&gt;
			type_field = { fr = &amp;quot;type&amp;quot;, en = &amp;quot;type&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		values = {&lt;br /&gt;
			type_arguments_value = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		text = {&lt;br /&gt;
			keywords_label_text = { fr = &amp;quot;&#039;&#039;&#039;Mots-clés&#039;&#039;&#039; : &amp;quot;, en = &amp;quot;&#039;&#039;&#039;Keywords&#039;&#039;&#039;: &amp;quot; },&lt;br /&gt;
			rename_link_label = { fr = &amp;quot;renommer&amp;quot;, en = &amp;quot;rename&amp;quot; },&lt;br /&gt;
			list_conjunction_text = { fr = &amp;quot; et &amp;quot;, en = &amp;quot; and &amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Debate = {&lt;br /&gt;
		forms = {&lt;br /&gt;
			intro_edit_title = { fr = &amp;quot;Pour comprendre le débat&amp;quot;, en = &amp;quot;To understand the debate&amp;quot; },&lt;br /&gt;
			wiki_seealso_edit_title = { fr = &amp;quot;Voir aussi sur Wikipédia&amp;quot;, en = &amp;quot;See also on Wikipedia&amp;quot; },&lt;br /&gt;
			args_pro_edit_title = { fr = &amp;quot;Arguments pour&amp;quot;, en = &amp;quot;Pro arguments&amp;quot; },&lt;br /&gt;
			args_con_edit_title = { fr = &amp;quot;Arguments contre&amp;quot;, en = &amp;quot;Con arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			new_arg_title = { fr = &amp;quot;Nouveau titre d&#039;argument&amp;quot;, en = &amp;quot;New argument title&amp;quot; },&lt;br /&gt;
			new_arg_pro_type_label = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			new_arg_con_type_label = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			self_eval_home_title = { fr = &amp;quot;Autoévaluation (accueil)&amp;quot;, en = &amp;quot;Self-evaluation (home)&amp;quot; },&lt;br /&gt;
			keywords_edit_title = { fr = &amp;quot;Mots-clés de débat&amp;quot;, en = &amp;quot;Debate keywords&amp;quot; },&lt;br /&gt;
			related_edit_title = { fr = &amp;quot;Débats connexes&amp;quot;, en = &amp;quot;Related debates&amp;quot; },&lt;br /&gt;
			topic_edit_title = &amp;quot;@Debate.props.debate_topic&amp;quot;,&lt;br /&gt;
			sections_edit_title = { fr = &amp;quot;Rubriques de débat&amp;quot;, en = &amp;quot;Debate sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_title = { fr = &amp;quot;Interlangue de débat&amp;quot;, en = &amp;quot;Debate interlanguage&amp;quot; },&lt;br /&gt;
			banners_edit_title = { fr = &amp;quot;Bandeaux de débat&amp;quot;, en = &amp;quot;Debate banners&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			biblio_pro_title = { fr = &amp;quot;Bibliographie pour&amp;quot;, en = &amp;quot;Bibliography (pro)&amp;quot; },&lt;br /&gt;
			biblio_con_title = { fr = &amp;quot;Bibliographie contre&amp;quot;, en = &amp;quot;Bibliography (con)&amp;quot; },&lt;br /&gt;
			biblio_neutral_title = { fr = &amp;quot;Bibliographie ni pour ni contre&amp;quot;, en = &amp;quot;Bibliography (neutral)&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			webliography_pro_title = { fr = &amp;quot;Sitographie pour&amp;quot;, en = &amp;quot;Webliography (pro)&amp;quot; },&lt;br /&gt;
			webliography_con_title = { fr = &amp;quot;Sitographie contre&amp;quot;, en = &amp;quot;Webliography (con)&amp;quot; },&lt;br /&gt;
			webliography_neutral_title = { fr = &amp;quot;Sitographie ni pour ni contre&amp;quot;, en = &amp;quot;Webliography (neutral)&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			videography_pro_title = { fr = &amp;quot;Vidéographie pour&amp;quot;, en = &amp;quot;Videography (pro)&amp;quot; },&lt;br /&gt;
			videography_con_title = { fr = &amp;quot;Vidéographie contre&amp;quot;, en = &amp;quot;Videography (con)&amp;quot; },&lt;br /&gt;
			videography_neutral_title = { fr = &amp;quot;Vidéographie ni pour ni contre&amp;quot;, en = &amp;quot;Videography (neutral)&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			search_by_keywords_title = &amp;quot;@Common.forms.search_by_keywords_title&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		params = {&lt;br /&gt;
			keywords_field = &amp;quot;@Common.params.keywords_field&amp;quot;,&lt;br /&gt;
			search_type_field = &amp;quot;@Common.params.type_field&amp;quot;,&lt;br /&gt;
			search_type_value = &amp;quot;@Debate.categories.debates&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			color_field = { fr = &amp;quot;couleur&amp;quot;, en = &amp;quot;color&amp;quot; },&lt;br /&gt;
			icon_field = { fr = &amp;quot;icône&amp;quot;, en = &amp;quot;icon&amp;quot; },&lt;br /&gt;
			title_field = { fr = &amp;quot;titre&amp;quot;, en = &amp;quot;title&amp;quot; },&lt;br /&gt;
			text_field = { fr = &amp;quot;texte&amp;quot;, en = &amp;quot;text&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			content_field = { fr = &amp;quot;contenu&amp;quot;, en = &amp;quot;content&amp;quot; },&lt;br /&gt;
			page_field = { fr = &amp;quot;page&amp;quot;, en = &amp;quot;page&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			--	Paramètres des modèles de références&lt;br /&gt;
			authors_field = { fr = &amp;quot;auteurs&amp;quot;, en = &amp;quot;authors&amp;quot; },&lt;br /&gt;
			article_field = { fr = &amp;quot;article&amp;quot;, en = &amp;quot;article&amp;quot; },&lt;br /&gt;
			work_field = { fr = &amp;quot;ouvrage&amp;quot;, en = &amp;quot;work&amp;quot; },&lt;br /&gt;
			volume_field = { fr = &amp;quot;volume&amp;quot;, en = &amp;quot;volume&amp;quot; },&lt;br /&gt;
			number_field = { fr = &amp;quot;numero&amp;quot;, en = &amp;quot;number&amp;quot; },&lt;br /&gt;
			location_field = { fr = &amp;quot;localisation&amp;quot;, en = &amp;quot;location&amp;quot; },&lt;br /&gt;
			publisher_field = { fr = &amp;quot;edition&amp;quot;, en = &amp;quot;publisher&amp;quot; },&lt;br /&gt;
			place_field = { fr = &amp;quot;lieu&amp;quot;, en = &amp;quot;place&amp;quot; },&lt;br /&gt;
			date_field = { fr = &amp;quot;date&amp;quot;, en = &amp;quot;date&amp;quot; },&lt;br /&gt;
			link_field = { fr = &amp;quot;lien&amp;quot;, en = &amp;quot;link&amp;quot; },&lt;br /&gt;
			warnings_field = { fr = &amp;quot;avertissements&amp;quot;, en = &amp;quot;warnings&amp;quot; },&lt;br /&gt;
			site_field = { fr = &amp;quot;site&amp;quot;, en = &amp;quot;site&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		progress = {&lt;br /&gt;
			draft = { fr = &amp;quot;Ébauche&amp;quot;, en = &amp;quot;Draft&amp;quot; },&lt;br /&gt;
			building = { fr = &amp;quot;Débat en construction&amp;quot;, en = &amp;quot;Debate under construction&amp;quot; },&lt;br /&gt;
			constructed = { fr = &amp;quot;Débat construit&amp;quot;, en = &amp;quot;Constructed debate&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		categories = {&lt;br /&gt;
			debates = &amp;quot;@Common.labels.debates_label&amp;quot;,&lt;br /&gt;
			progress_missing = { fr = &amp;quot;Débats sans niveau d&#039;avancement&amp;quot;, en = &amp;quot;Debates without progress level&amp;quot; },&lt;br /&gt;
			constructed = { fr = &amp;quot;Débats construits&amp;quot;, en = &amp;quot;Constructed debates&amp;quot; },&lt;br /&gt;
			intro_missing = { fr = &amp;quot;Débats sans introduction&amp;quot;, en = &amp;quot;Debates without introduction&amp;quot; },&lt;br /&gt;
			wikipedia_missing = { fr = &amp;quot;Débats sans article Wikipédia&amp;quot;, en = &amp;quot;Debates without Wikipedia link&amp;quot; },&lt;br /&gt;
			pro_missing = { fr = &amp;quot;Débats sans argument pour&amp;quot;, en = &amp;quot;Debates without pro argument&amp;quot; },&lt;br /&gt;
			con_missing = { fr = &amp;quot;Débats sans argument contre&amp;quot;, en = &amp;quot;Debates without con argument&amp;quot; },&lt;br /&gt;
			keywords_missing = { fr = &amp;quot;Débats sans mot-clé&amp;quot;, en = &amp;quot;Debates without keywords&amp;quot; },&lt;br /&gt;
			related_missing = { fr = &amp;quot;Débats sans débat connexe&amp;quot;, en = &amp;quot;Debates without related debate&amp;quot; },&lt;br /&gt;
			sections_missing = { fr = &amp;quot;Débats sans rubrique&amp;quot;, en = &amp;quot;Debates without section&amp;quot; },&lt;br /&gt;
			topic_missing = { fr = &amp;quot;Débats sans sujet&amp;quot;, en = &amp;quot;Debates without topic&amp;quot; },&lt;br /&gt;
			topic_complete_missing = { fr = &amp;quot;Débats sans sujet complet&amp;quot;, en = &amp;quot;Debates without complete topic&amp;quot; },&lt;br /&gt;
			refs_to_review = { fr = &amp;quot;Références à revoir&amp;quot;, en = &amp;quot;References to review&amp;quot; },&lt;br /&gt;
			displayed_titles_to_review = { fr = &amp;quot;Titres d&#039;arguments affichés à revoir&amp;quot;, en = &amp;quot;Argument displayed titles to review&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		text = {&lt;br /&gt;
			warnings_title = { fr = &amp;quot;Avertissements&amp;quot;, en = &amp;quot;Warnings&amp;quot; },&lt;br /&gt;
			debate_banners_edit_tt = { fr = &amp;quot;Modifier les bandeaux d&#039;avertissement du débat&amp;quot;, en = &amp;quot;Edit the debate warning banners&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			main_banner_color = &amp;quot;vert&amp;quot;,&lt;br /&gt;
			main_banner_title = {&lt;br /&gt;
				fr = &#039;Cet article vise à exposer tous les arguments « pour » et « contre » du débat &amp;lt;span style=&amp;quot;font-weight: normal;&amp;quot;&amp;gt;« %s »&amp;lt;/span&amp;gt;, pour permettre à chacun de se forger une opinion critique et éclairée.&#039;,&lt;br /&gt;
				en = &#039;This article aims to present all the pros and cons of the debate &amp;lt;span style=&amp;quot;font-weight: normal;&amp;quot;&amp;gt;“%s”&amp;lt;/span&amp;gt;, to help everyone form a critical, informed opinion.&#039;,&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			learn_more_label = { fr = &amp;quot;En savoir plus : &amp;quot;, en = &amp;quot;Learn more: &amp;quot; },&lt;br /&gt;
			founding_principles_link = { fr = &amp;quot;[[Wikidébats:Principes fondateurs|Principes fondateurs]]&amp;quot;, en = &amp;quot;[[Wikidebates:Founding Principles|Founding Principles]]&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			understand_debate_title = &amp;quot;@Debate.forms.intro_edit_title&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			edit_label = &amp;quot;@Common.labels.edit_label&amp;quot;,&lt;br /&gt;
			site_title_text = &amp;quot;@Common.labels.site_title_text&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			intro_edit_tt = { fr = &amp;quot;Modifier l&#039;introduction du débat&amp;quot;, en = &amp;quot;Edit the debate introduction&amp;quot; },&lt;br /&gt;
			none_intro_msg = { fr = &amp;quot;Aucune introduction n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No introduction has been entered yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			wikipedia_seealso_msg = { fr = &amp;quot;Voir aussi : %s sur Wikipédia&amp;quot;, en = &amp;quot;See also: %s on Wikipedia&amp;quot; },&lt;br /&gt;
			none_wikipedia_msg = { fr = &amp;quot;Aucun lien vers une page Wikipédia n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No links to a Wikipedia page have been provided yet.&amp;quot; },&lt;br /&gt;
			wikipedia_edit_tt = { fr = &amp;quot;Modifier les articles Wikipédia du bandeau&amp;quot;, en = &amp;quot;Edit the Wikipedia articles in the banner&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			args_pro_title = { fr = &amp;quot;Arguments « pour »&amp;quot;, en = &amp;quot;Pros&amp;quot; },&lt;br /&gt;
			args_con_title = { fr = &amp;quot;Arguments « contre »&amp;quot;, en = &amp;quot;Cons&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			args_pro_edit_tt = { fr = &amp;quot;Modifier la liste des arguments « pour » ci-dessous&amp;quot;, en = &amp;quot;Edit the list of pros below&amp;quot; },&lt;br /&gt;
			args_con_edit_tt = { fr = &amp;quot;Modifier la liste des arguments « contre » ci-dessous&amp;quot;, en = &amp;quot;Edit the list of cons below&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			faq_q_pro = { fr = &amp;quot;Quels sont les arguments pour %s ?&amp;quot;, en = &amp;quot;What are the pros of %s?&amp;quot; },&lt;br /&gt;
			faq_q_con = { fr = &amp;quot;Quels sont les arguments contre %s ?&amp;quot;, en = &amp;quot;What are the cons of %s?&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			faq_anchor_pro = { fr = &amp;quot;#Arguments_«_pour_»&amp;quot;, en = &amp;quot;#Pros&amp;quot; },&lt;br /&gt;
			faq_anchor_con = { fr = &amp;quot;#Arguments_«_contre_»&amp;quot;, en = &amp;quot;#Cons&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			none_pro_args_msg = { fr = &amp;quot;Aucun argument « pour » n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No pros have been added yet.&amp;quot; },&lt;br /&gt;
			none_con_args_msg = { fr = &amp;quot;Aucun argument « contre » n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No cons have been added yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			args_add_label = { fr = &amp;quot;Ajouter un argument « %s »&amp;quot;, en = &amp;quot;Add a “%s” argument&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			arg_add_tt = { fr = &amp;quot;Ajouter un nouvel argument « %s » au débat : %s&amp;quot;, en = &amp;quot;Add a new “%s” argument to the debate: %s&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			side_pro_word = { fr = &amp;quot;pour&amp;quot;, en = &amp;quot;pro&amp;quot; },&lt;br /&gt;
			side_con_word = { fr = &amp;quot;contre&amp;quot;, en = &amp;quot;con&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			further_reading_title = { fr = &amp;quot;Pour aller plus loin&amp;quot;, en = &amp;quot;Further reading&amp;quot; },&lt;br /&gt;
			bibliography_title = { fr = &amp;quot;Bibliographie&amp;quot;, en = &amp;quot;Bibliography&amp;quot; },&lt;br /&gt;
			webliography_title = { fr = &amp;quot;Sitographie&amp;quot;, en = &amp;quot;Webliography&amp;quot; },&lt;br /&gt;
			videography_title = { fr = &amp;quot;Vidéographie&amp;quot;, en = &amp;quot;Videography&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			side_pro_title = { fr = &amp;quot;Côté « pour »&amp;quot;, en = &amp;quot;“Pro” side&amp;quot; },&lt;br /&gt;
			side_con_title = { fr = &amp;quot;Côté « contre »&amp;quot;, en = &amp;quot;“Con” side&amp;quot; },&lt;br /&gt;
			side_neutral_title = { fr = &amp;quot;Ni « pour » ni « contre »&amp;quot;, en = &amp;quot;Neither “pro” nor “con”&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			section_edit_tt = { fr = &amp;quot;Modifier cette rubrique&amp;quot;, en = &amp;quot;Edit this section&amp;quot; },&lt;br /&gt;
			none_references_msg = { fr = &amp;quot;Aucune référence n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No references have been entered yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			keywords_label_text = &amp;quot;@Common.text.keywords_label_text&amp;quot;,&lt;br /&gt;
			none_label = &amp;quot;@Common.labels.none_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			search_by_keyword_tt = { fr = &amp;quot;Rechercher les pages sur ce thème&amp;quot;, en = &amp;quot;Search pages about this topic&amp;quot; },&lt;br /&gt;
			keywords_edit_tt = { fr = &amp;quot;Modifier les mots-clés thématiques décrivant ce débat&amp;quot;, en = &amp;quot;Edit the thematic keywords describing this debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			related_edit_tt = { fr = &amp;quot;Modifier la liste des débats connexes&amp;quot;, en = &amp;quot;Edit the list of related debates&amp;quot; },&lt;br /&gt;
			none_related_msg = { fr = &amp;quot;Aucun débat connexe n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No related debates have been entered yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			self_eval_title = { fr = &amp;quot;Testez-vous&amp;quot;, en = &amp;quot;Self-assessment&amp;quot; },&lt;br /&gt;
			self_eval_blurb = {&lt;br /&gt;
				fr = &amp;quot;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Êtes-vous plutôt « pour » ou « contre » ? Autoévaluez-vous !&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Vous pouvez parcourir le contenu de ce débat en répondant, pour chaque argument, à deux questions :&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; Cet argument est-il bien fondé ?&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Cet argument est-il important pour vous ?&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Vous obtiendrez votre pourcentage de « pour » ou de « contre » et une analyse de votre opinion.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Are you more “pro” or “con”? Assess yourself!&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;You can browse this debate by answering, for each argument, two questions:&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; Is this argument well-founded?&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Is this argument important to you?&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;You’ll get your “pro/con” percentage and an analysis of your stance.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			self_eval_start_label = { fr = &amp;quot;Commencer&amp;quot;, en = &amp;quot;Start&amp;quot; },&lt;br /&gt;
			self_eval_start_tt = { fr = &amp;quot;Commencer l&#039;autoévaluation&amp;quot;, en = &amp;quot;Start the self-assessment&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			latest_changes_title = { fr = &amp;quot;Dernières contributions&amp;quot;, en = &amp;quot;Recent contributions&amp;quot; },&lt;br /&gt;
			latest_changes_show_label = { fr = &amp;quot;Afficher les dernières contributions&amp;quot;, en = &amp;quot;Show recent contributions&amp;quot; },&lt;br /&gt;
			latest_changes_show_tt = { fr = &amp;quot;Afficher les dernières contributions apportées à ce débat&amp;quot;, en = &amp;quot;Show recent contributions to this debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			feedback_title = { fr = &amp;quot;Vos retours&amp;quot;, en = &amp;quot;Your feedback&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			shortdesc_plain = { fr = &amp;quot;Arguments pour et contre&amp;quot;, en = &amp;quot;Pros and cons&amp;quot; },&lt;br /&gt;
			shortdesc_topic = { fr = &amp;quot;Arguments pour et contre %s&amp;quot;, en = &amp;quot;Pros and cons of %s&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			topic_edit_tt = { fr = &amp;quot;Modifier le sujet du débat&amp;quot;, en = &amp;quot;Edit the debate topic&amp;quot; },&lt;br /&gt;
			sections_edit_tt = { fr = &amp;quot;Modifier les rubriques du débat&amp;quot;, en = &amp;quot;Edit the debate sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_tt = { fr = &amp;quot;Modifier les liens interlangues du débat&amp;quot;, en = &amp;quot;Edit the interlanguage links for the debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			arg_map_pro_label = { fr = &amp;quot;POUR&amp;quot;, en = &amp;quot;PROS&amp;quot; },&lt;br /&gt;
			arg_map_con_label = { fr = &amp;quot;CONTRE&amp;quot;, en = &amp;quot;CONS&amp;quot; },&lt;br /&gt;
			none_pro_args_msg_short = { fr = &amp;quot;Aucun argument « pour » n&#039;a été entré.&amp;quot;, en = &amp;quot;No pros have been added yet.&amp;quot; },&lt;br /&gt;
			none_con_args_msg_short = { fr = &amp;quot;Aucun argument « contre » n&#039;a été entré.&amp;quot;, en = &amp;quot;No cons have been added yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			rename_link_label = &amp;quot;@Common.text.rename_link_label&amp;quot;,&lt;br /&gt;
			rename_special_page_text = { fr = &amp;quot;Spécial:Renommage/%s&amp;quot;, en = &amp;quot;Special:MovePage/%s&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			self_eval_ns_label = { fr = &amp;quot;Autoévaluation&amp;quot;, en = &amp;quot;Self-evaluation&amp;quot; },&lt;br /&gt;
			self_eval_debate_field = { fr = &amp;quot;débat&amp;quot;, en = &amp;quot;debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			unknown_author = { fr = &amp;quot;Auteur non renseigné&amp;quot;, en = &amp;quot;Author not provided&amp;quot;, },&lt;br /&gt;
&lt;br /&gt;
			default_subsection_title = {&lt;br /&gt;
				fr = &amp;quot;À savoir&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Good to know&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_msg_before = {&lt;br /&gt;
				fr = &amp;quot;Aucun contenu n’a été entré. Cliquez&amp;quot;,&lt;br /&gt;
				en = &amp;quot;No content has been entered. Click&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_link_label = {&lt;br /&gt;
				fr = &amp;quot;ici&amp;quot;,&lt;br /&gt;
				en = &amp;quot;here&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_msg_after = {&lt;br /&gt;
				fr = &amp;quot;pour compléter cette rubrique.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;to complete this section.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_category = {&lt;br /&gt;
				fr = &amp;quot;Introductions de débats vides&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Empty debate introductions&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		urls = {&lt;br /&gt;
			wikipedia = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikipedia.org/wiki/&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikipedia.org/wiki/&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			home = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikidebates.org/&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikidebates.org/&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			home_label = { fr = &amp;quot;Accueil&amp;quot;, en = &amp;quot;Main Page&amp;quot; },&lt;br /&gt;
			wiki_base = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikidebates.org/wiki/&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikidebates.org/wiki/&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			discussion_prefix = {&lt;br /&gt;
				fr = &amp;quot;Discussion:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Talk:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			category_prefix = {&lt;br /&gt;
				fr = &amp;quot;Catégorie:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Category:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			portal_prefix = {&lt;br /&gt;
				fr = &amp;quot;Portail:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Portal:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			property_prefix = {&lt;br /&gt;
				fr = &amp;quot;Attribut:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Property:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			debates_label = { fr = &amp;quot;Débats&amp;quot;, en = &amp;quot;Debates&amp;quot; },&lt;br /&gt;
			sections_label = { fr = &amp;quot;Rubriques&amp;quot;, en = &amp;quot;Sections&amp;quot; },&lt;br /&gt;
			pro_label = { fr = &amp;quot;Argument_pour&amp;quot;, en = &amp;quot;Pro_argument&amp;quot; },&lt;br /&gt;
			con_label = { fr = &amp;quot;Argument_contre&amp;quot;, en = &amp;quot;Con_argument&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		seo = {&lt;br /&gt;
			title_separator = {&lt;br /&gt;
				fr = &amp;quot;–&amp;quot;,&lt;br /&gt;
				en = &amp;quot;–&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			description = {&lt;br /&gt;
				fr = &amp;quot;Arguments pour et contre %s : argumentaire pro et anti, défense et critiques, justifications et objections, preuves et réfutations.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Arguments for and against %s: pros and cons, justifications and objections, proofs and refutations, defence and criticism.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			image = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikidebates.org/w/resources/assets/logo-Wikidebats-Twitter.png&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikidebates.org/w/resources/assets/logo-Wikidebates-Twitter.png&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			image_alt = {&lt;br /&gt;
				fr = &amp;quot;Balance de la raison qui pèse les arguments pour et contre&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Scales of reason weighing arguments for and against&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			section = {&lt;br /&gt;
				fr = &amp;quot;Débat&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Debate&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			site_name = {&lt;br /&gt;
				fr = &amp;quot;Wikidébats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Wikidebates&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			twitter_site = {&lt;br /&gt;
				fr = &amp;quot;@Wikidebats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;@Wikidebats&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			locale = {&lt;br /&gt;
				fr = &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
				en = &amp;quot;en_US&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			author = {&lt;br /&gt;
				fr = &amp;quot;Contributeurs de Wikidébats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Wikidebates contributors&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		props = {&lt;br /&gt;
			debate_name = { fr = &amp;quot;Nom de débat&amp;quot;, en = &amp;quot;Debate name&amp;quot; },&lt;br /&gt;
			debate_number = { fr = &amp;quot;Numéro de débat&amp;quot;, en = &amp;quot;Debate number&amp;quot; },&lt;br /&gt;
			parent_debate = { fr = &amp;quot;Débat parent&amp;quot;, en = &amp;quot;Parent debate&amp;quot; },&lt;br /&gt;
			breadcrumb = { fr = &amp;quot;Fil d&#039;Ariane&amp;quot;, en = &amp;quot;Breadcrumb&amp;quot; },&lt;br /&gt;
			keyword = &amp;quot;@Common.props.keyword&amp;quot;,&lt;br /&gt;
			arg_map = &amp;quot;@Common.labels.argument_map_label&amp;quot;,&lt;br /&gt;
			debate_topic = { fr = &amp;quot;Sujet de débat&amp;quot;, en = &amp;quot;Debate topic&amp;quot; },&lt;br /&gt;
			pro_list = { fr = &amp;quot;Liste des arguments pour&amp;quot;, en = &amp;quot;Pro list&amp;quot; },&lt;br /&gt;
			con_list = { fr = &amp;quot;Liste des arguments contre&amp;quot;, en = &amp;quot;Con list&amp;quot; },&lt;br /&gt;
			arg_pro = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			arg_con = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			article_name = &amp;quot;@Common.props.article_name&amp;quot;,&lt;br /&gt;
			work_name = &amp;quot;@Common.props.work_name&amp;quot;,&lt;br /&gt;
			publishing_house = &amp;quot;@Common.props.publishing_house&amp;quot;,&lt;br /&gt;
			place_of_publication = &amp;quot;@Common.props.place_of_publication&amp;quot;,&lt;br /&gt;
			author = &amp;quot;@Common.props.author&amp;quot;,&lt;br /&gt;
			author_pro = { fr = &amp;quot;Auteur pour&amp;quot;, en = &amp;quot;Pro author&amp;quot; },&lt;br /&gt;
			author_con = { fr = &amp;quot;Auteur contre&amp;quot;, en = &amp;quot;Con author&amp;quot; },&lt;br /&gt;
			website_name = &amp;quot;@Common.props.website_name&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		----------------------------------------------------------------------&lt;br /&gt;
		--	BANNERS&lt;br /&gt;
		----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
		banners = {&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
			--	PROGRESS (2)&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
			progress_under_construction_label = &amp;quot;@Debate.progress.building&amp;quot;,&lt;br /&gt;
			progress_under_construction_color = &amp;quot;bleu&amp;quot;,&lt;br /&gt;
			progress_under_construction_icon = &amp;quot;wk-icon-construction&amp;quot;,&lt;br /&gt;
			progress_under_construction_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats en construction|en construction]]. Des arguments manquent ou ne sont pas rédigés. L’introduction et la bibliographie demandent à être améliorées.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Debates under construction|under construction]]. Arguments are missing or not written. The introduction and bibliography need improvement.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			progress_under_construction_text = { fr = &amp;quot;N&#039;hésitez pas à les compléter.&amp;quot;, en = &amp;quot;Feel free to complete them.&amp;quot; },&lt;br /&gt;
			progress_under_construction_category = { fr = &amp;quot;Débats en construction&amp;quot;, en = &amp;quot;Debates under construction&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			progress_draft_label = { fr = &amp;quot;Ébauche&amp;quot;, en = &amp;quot;Draft&amp;quot; },&lt;br /&gt;
			progress_draft_color = &amp;quot;bleu&amp;quot;,&lt;br /&gt;
			progress_draft_icon = &amp;quot;wk-icon-draft&amp;quot;,&lt;br /&gt;
			progress_draft_title = {&lt;br /&gt;
				fr = &amp;quot;Cette page est une [[:Category:Ébauches de débats|ébauche de débat]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This page is a [[:Category:Debate drafts|debate draft]]. This is a more or less organized list of arguments.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			progress_draft_text = {&lt;br /&gt;
				fr = &amp;quot;N&#039;hésitez pas à l&#039;[[Aide:Sommaire|améliorer]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Please feel free to contribute to this draft.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			progress_draft_category = { fr = &amp;quot;Ébauches de débats&amp;quot;, en = &amp;quot;Debate drafts&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
			--	TITLE WARNINGS (3)&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
			title_non_standard_label = { fr = &amp;quot;Titre non standard&amp;quot;, en = &amp;quot;Non-standard title&amp;quot; },&lt;br /&gt;
			title_non_standard_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			title_non_standard_icon = &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_non_standard_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de ce débat est [[:Category:Titres de débats non standard|non standard]]. Il n&#039;est pas possible de répondre par « oui » ou par « non » à la question posée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this debate is [[:Category:Non-standard debate titles|non-standard]]. The question posed does not have the possible answer “yes” or “no”.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_non_standard_text = {&lt;br /&gt;
				fr = &amp;quot;[[Special:MovePage/%s|Reformulez la question]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Reframe the question]] as a pro/con debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_non_standard_category = { fr = &amp;quot;Titres de débats non standard&amp;quot;, en = &amp;quot;Non-standard debate titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_to_explain_label = { fr = &amp;quot;Titre à expliciter&amp;quot;, en = &amp;quot;Title to be explained&amp;quot; },&lt;br /&gt;
			title_to_explain_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			title_to_explain_icon = &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_to_explain_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de ce débat est [[:Category:Titres de débats à expliciter|à expliciter]]. La question posée n’est pas claire ou est ambiguë.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this debate is [[:Category:Debate titles to be explained|to be explained]]. The question asked is unclear or ambiguous.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_explain_text = {&lt;br /&gt;
				fr = &amp;quot;[[Special:MovePage/%s|Trouvez un intitulé]] qui fasse ressortir clairement la problématique.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a title]] that clearly highlights the problem.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_explain_category = { fr = &amp;quot;Titres de débats à expliciter&amp;quot;, en = &amp;quot;Debate titles to be explained&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_to_simplify_label = { fr = &amp;quot;Titre à simplifier&amp;quot;, en = &amp;quot;Title to simplify&amp;quot; },&lt;br /&gt;
			title_to_simplify_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			title_to_simplify_icon = &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_to_simplify_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de ce débat est [[:Category:Titres de débats à simplifier|à simplifier]]. Il est formulé de manière inutilement complexe.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this debate should be [[:Category:Debate titles to simplify|simplified]]. It is formulated in an unnecessarily complex way.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_simplify_text = {&lt;br /&gt;
				fr = &amp;quot;[[Special:MovePage/%s|Trouvez un intitulé]] clair et compact.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a clear and compact title]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_simplify_category = { fr = &amp;quot;Titres de débats à simplifier&amp;quot;, en = &amp;quot;Debate titles to simplify&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
			--	DEBATE WARNINGS (6)&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
			debate_unbalanced_label = { fr = &amp;quot;Débat déséquilibré&amp;quot;, en = &amp;quot;Unbalanced debate&amp;quot; },&lt;br /&gt;
			debate_unbalanced_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_unbalanced_icon = &amp;quot;wk-icon-unbalanced&amp;quot;,&lt;br /&gt;
			debate_unbalanced_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats déséquilibrés|déséquilibré]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Unbalanced debates|unbalanced]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_unbalanced_text = {&lt;br /&gt;
				fr = &amp;quot;L&#039;un des camps « pour » ou « contre » est moins bien traité que l&#039;autre. Il doit être complété ou amélioré.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;One of the “pro” or “con” sides is treated less well than the other. It needs to be supplemented or improved.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_unbalanced_category = { fr = &amp;quot;Débats déséquilibrés&amp;quot;, en = &amp;quot;Unbalanced debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_redundant_label = { fr = &amp;quot;Débat redondant&amp;quot;, en = &amp;quot;Redundant debate&amp;quot; },&lt;br /&gt;
			debate_redundant_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_redundant_icon = &amp;quot;wk-icon-redundant&amp;quot;,&lt;br /&gt;
			debate_redundant_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats redondants|redondant]]. Il fait doublon avec un autre débat du site.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Redundant debates|redundant]]. It duplicates another debate on the site.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_redundant_text = {&lt;br /&gt;
				fr =&lt;br /&gt;
					&amp;quot;Choisissez le plus complet des deux et ajoutez-y le contenu intéressant de l&#039;autre.&amp;quot;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &amp;quot;Article détaillé : [[Aide:Fusionner des doublons]]&amp;quot;&lt;br /&gt;
					.. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Choose the more comprehensive of the two and add interesting content from the other.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_redundant_category = { fr = &amp;quot;Débats redondants&amp;quot;, en = &amp;quot;Redundant debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_fanciful_label = { fr = &amp;quot;Débat saugrenu&amp;quot;, en = &amp;quot;Fanciful debate&amp;quot; },&lt;br /&gt;
			debate_fanciful_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_fanciful_icon = &amp;quot;wk-icon-saugrenu&amp;quot;,&lt;br /&gt;
			debate_fanciful_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat paraît [[:Category:Débats saugrenus|saugrenu]]. Sa présence dans l&#039;espace public n&#039;est pas évidente.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is considered [[:Category:Fanciful debates|fanciful]]. Its presence in the public space is not obvious.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_fanciful_text = {&lt;br /&gt;
				fr =&lt;br /&gt;
					&amp;quot;Veuillez apporter dans la [[Discussion:%s|page de discussion]] des citations montrant que des opinions contradictoires sont professées sur la question.&amp;lt;br&amp;gt;\n\n&amp;quot;&lt;br /&gt;
					.. &amp;quot;&#039;&#039;&#039;Rappel&#039;&#039;&#039; : suivant les [[Wikidébats:Principes fondateurs|principes fondateurs]], un argument n&#039;a sa place sur Wikidébats que dans la mesure où sa présence peut être attestée dans l&#039;espace public.&amp;quot;,&lt;br /&gt;
				en =&lt;br /&gt;
					&amp;quot;Please provide quotes to the [[Talk:%s|talk page]] showing that conflicting opinions are held on the matter.&amp;lt;br&amp;gt;\n\n&amp;quot;&lt;br /&gt;
					.. &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: according to the [[Wikidebates:Founding Principles|founding principles]], an argument has its place on Wikidebates only insofar as its presence can be attested in the public space.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_fanciful_category = { fr = &amp;quot;Débats saugrenus&amp;quot;, en = &amp;quot;Fanciful debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_sensitive_label = { fr = &amp;quot;Débat sensible&amp;quot;, en = &amp;quot;Sensitive debate&amp;quot; },&lt;br /&gt;
			debate_sensitive_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_sensitive_icon = &amp;quot;wk-icon-sensible&amp;quot;,&lt;br /&gt;
			debate_sensitive_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats sensibles|sensible]]. Des arguments relayés sur cette page peuvent choquer.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Sensitive debates|sensitive]]. Arguments relayed on this page may shock.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_sensitive_text = {&lt;br /&gt;
				fr = &amp;quot;Ils n’ont pas été écartés dans la mesure où leur présence est attestée dans l&#039;espace public et qu’ils ne contreviennent pas à la législation.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: these arguments are only relayed insofar as their presence can be attested in the public space. They are endorsed neither by the editors of the site, nor by the [[Wikidebates:Laboratory of Methodical Debate|association]] which administers Wikidebates.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_sensitive_category = { fr = &amp;quot;Débats sensibles&amp;quot;, en = &amp;quot;Sensitive debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			outline_to_improve_label = { fr = &amp;quot;Plan à améliorer&amp;quot;, en = &amp;quot;Plan to improve&amp;quot; },&lt;br /&gt;
			outline_to_improve_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			outline_to_improve_icon = &amp;quot;wk-icon-confusion&amp;quot;,&lt;br /&gt;
			outline_to_improve_title = {&lt;br /&gt;
				fr = &amp;quot;Le plan de ce débat est [[:Category:Plans de débats à améliorer|à améliorer]]. Des arguments sont redondants, sont à démêler, ou la structure peut être clarifiée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The plan of this debate needs to be [[:Category:Debate plans to improve|improved]]. Arguments are redundant, need to be unraveled, or its structure can be clarified.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			outline_to_improve_text = { fr = &amp;quot;N&#039;hésitez pas à le revoir.&amp;quot;, en = &amp;quot;Do not hesitate to review it.&amp;quot; },&lt;br /&gt;
			outline_to_improve_category = { fr = &amp;quot;Plans de débats à améliorer&amp;quot;, en = &amp;quot;Debate plans to improve&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_generated_by_chatgpt_label = { fr = &amp;quot;ChatGPT&amp;quot;, en = &amp;quot;ChatGPT&amp;quot; },&lt;br /&gt;
			debate_generated_by_chatgpt_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_generated_by_chatgpt_icon = { fr = &amp;quot;ChatGPT.svg&amp;quot;, en = &amp;quot;ChatGPT.svg&amp;quot; },&lt;br /&gt;
			debate_generated_by_chatgpt_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat a été [[:Category:Débats générés par ChatGPT|généré par ChatGPT]]. Pensez-vous qu&#039;un être humain ferait mieux ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate was [[:Category:Debates generated by ChatGPT|generated by ChatGPT]]. Do you think a human would do better?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_generated_by_chatgpt_text = {&lt;br /&gt;
				fr = &amp;quot;Vous pouvez le prouver en améliorant le contenu ou la structure du débat.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;You can prove it by improving the content or structure of this debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_generated_by_chatgpt_category = { fr = &amp;quot;Débats générés par ChatGPT&amp;quot;, en = &amp;quot;Debates generated by ChatGPT&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		subsections = {&lt;br /&gt;
			intro_subbanner_too_long_label = { fr = &amp;quot;Sous-partie trop longue&amp;quot;, en = &amp;quot;Subsection too long&amp;quot; },&lt;br /&gt;
			intro_subbanner_to_develop_label = { fr = &amp;quot;À développer&amp;quot;, en = &amp;quot;To expand&amp;quot; },&lt;br /&gt;
			intro_subbanner_unclear_label = { fr = &amp;quot;Peu claire&amp;quot;, en = &amp;quot;Unclear&amp;quot; },&lt;br /&gt;
			intro_subbanner_biased_label = { fr = &amp;quot;Partisane&amp;quot;, en = &amp;quot;Biased&amp;quot; },&lt;br /&gt;
			intro_subbanner_refs_missing_label = { fr = &amp;quot;Référence(s) manquante(s)&amp;quot;, en = &amp;quot;Missing reference(s)&amp;quot; },&lt;br /&gt;
			intro_subbanner_style_to_review_label = { fr = &amp;quot;Style à revoir&amp;quot;, en = &amp;quot;Style to review&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_unclear_title = { fr = &amp;quot;Cette partie est peu claire&amp;quot;, en = &amp;quot;This part is unclear&amp;quot; },&lt;br /&gt;
			intro_subbanner_unclear_text = { fr = &amp;quot;Cette partie est trop obscure ou jargonnante. Et si vous la rendiez plus compréhensible ?&amp;quot;, en = &amp;quot;This part is too obscure or too jargony. Could you make it easier to understand?&amp;quot; },&lt;br /&gt;
			intro_subbanner_unclear_category = { fr = &amp;quot;Introductions de débats peu claires&amp;quot;, en = &amp;quot;Unclear debate introductions&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_biased_title = { fr = &amp;quot;Cette partie n&#039;est pas neutre&amp;quot;, en = &amp;quot;This part is not neutral&amp;quot; },&lt;br /&gt;
			intro_subbanner_biased_text = { fr = &amp;quot;Elle favorise l&#039;un des deux camps (« pour » ou « contre ») au détriment de l&#039;autre. L&#039;introduction ne doit pas prendre parti, mais simplement donner les éléments utiles à la compréhension du débat.&amp;quot;, en = &amp;quot;It favors one side (“pro” or “con”) at the expense of the other. The introduction should not take sides; it should only provide what is needed to understand the debate.&amp;quot; },&lt;br /&gt;
			intro_subbanner_biased_category = { fr = &amp;quot;Introductions de débats partisanes&amp;quot;, en = &amp;quot;Biased debate introductions&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_to_develop_title = { fr = &amp;quot;Cette partie est à développer&amp;quot;, en = &amp;quot;This part needs to be expanded&amp;quot; },&lt;br /&gt;
			intro_subbanner_to_develop_text = { fr = &amp;quot;Cette partie est incomplète ou trop télégraphique. Et si vous la repreniez ?&amp;quot;, en = &amp;quot;This part is incomplete or too sketchy. Could you expand and improve it?&amp;quot; },&lt;br /&gt;
			intro_subbanner_to_develop_category = { fr = &amp;quot;Introductions de débats à développer&amp;quot;, en = &amp;quot;Debate introductions to expand&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_too_long_title = { fr = &amp;quot;Cette partie est trop longue&amp;quot;, en = &amp;quot;This part is too long&amp;quot; },&lt;br /&gt;
			intro_subbanner_too_long_text = { fr = &amp;quot;Elle peut être rédigée de façon plus synthétique ou être divisée en différentes sous-parties.&amp;quot;, en = &amp;quot;It could be written more concisely or split into several subsections.&amp;quot; },&lt;br /&gt;
			intro_subbanner_too_long_category = { fr = &amp;quot;Introductions de débats trop longues&amp;quot;, en = &amp;quot;Overlong debate introductions&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_refs_missing_title = { fr = &amp;quot;Cette partie manque de référence(s)&amp;quot;, en = &amp;quot;This part lacks reference(s)&amp;quot; },&lt;br /&gt;
			intro_subbanner_refs_missing_text = { fr = &amp;quot;Certains faits ou citations peu connus ne sont pas sourcés. Des références doivent être ajoutées en notes.&amp;quot;, en = &amp;quot;Some facts or quotations are not sourced. References should be added as footnotes.&amp;quot; },&lt;br /&gt;
			intro_subbanner_refs_missing_category = { fr = &amp;quot;Introductions de débats manquant de références&amp;quot;, en = &amp;quot;Debate introductions lacking references&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_style_to_review_title = { fr = &amp;quot;Le style de cette partie est à revoir&amp;quot;, en = &amp;quot;The style of this part needs work&amp;quot; },&lt;br /&gt;
			intro_subbanner_style_to_review_text = { fr = &amp;quot;Cette partie est rédigée de façon personnelle (« Je pense que… ») ou trop familière. Elle doit être réécrite.&amp;quot;, en = &amp;quot;This part is written in a personal tone (“I think…”) or is too casual. It should be rewritten.&amp;quot; },&lt;br /&gt;
			intro_subbanner_style_to_review_category = { fr = &amp;quot;Introductions de débats dont le style est à revoir&amp;quot;, en = &amp;quot;Debate introductions needing style work&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			dead_link_label = { fr = &amp;quot;Lien mort&amp;quot;, en = &amp;quot;Dead link&amp;quot; },&lt;br /&gt;
			dead_link_title = &amp;quot;@Debate.subsections.dead_link_label&amp;quot;,&lt;br /&gt;
			dead_link_text = {&lt;br /&gt;
				fr = &amp;quot;La page n&#039;existe plus à cette adresse. Et si vous mettiez à jour le lien ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The page no longer exists at this address. How about updating the link?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			dead_link_category = { fr = &amp;quot;Liens morts&amp;quot;, en = &amp;quot;Dead links&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			reference_quality_insufficient_label = {&lt;br /&gt;
				fr = &amp;quot;Référence de qualité insuffisante&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Insufficient-quality reference&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			reference_quality_insufficient_title = &amp;quot;@Debate.subsections.reference_quality_insufficient_label&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_text = {&lt;br /&gt;
				fr = &amp;quot;Des contenus plus rigoureux ou mieux argumentés peuvent être trouvés pour cet argument.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;More rigorous or better-argued sources can be found for this argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			reference_quality_insufficient_category = {&lt;br /&gt;
				fr = &amp;quot;Références de qualité insuffisante&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Insufficient-quality references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			reference_incomplete_label = { fr = &amp;quot;Référence incomplète&amp;quot;, en = &amp;quot;Incomplete reference&amp;quot; },&lt;br /&gt;
			reference_incomplete_title = &amp;quot;@Debate.subsections.reference_incomplete_label&amp;quot;,&lt;br /&gt;
			reference_incomplete_text = {&lt;br /&gt;
				fr = &amp;quot;Certains champs importants n&#039;ont pas été remplis. Et si vous les complétiez ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some important fields have not been filled in. How about completing them?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			reference_incomplete_category = { fr = &amp;quot;Références incomplètes&amp;quot;, en = &amp;quot;Incomplete references&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_title_too_long_label = { fr = &amp;quot;Titre affiché trop long&amp;quot;, en = &amp;quot;Too long displayed title&amp;quot; },&lt;br /&gt;
			displayed_title_too_long_title = { fr = &amp;quot;Titre trop long&amp;quot;, en = &amp;quot;Too long title&amp;quot; },&lt;br /&gt;
			displayed_title_too_long_text = { fr = &amp;quot;Le titre affiché de cet argument contient plusieurs phrases ou est globalement trop développé. Réécrivez le titre sous forme d&#039;une phrase compacte qui résume de manière claire et précise l&#039;argument.&amp;quot;, en = &amp;quot;This title contains several sentences or is generally too long. Rewrite the title as a compact sentence that clearly and precisely summarizes the argument.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_title_unclear_label = { fr = &amp;quot;Titre affiché peu clair&amp;quot;, en = &amp;quot;Unclear displayed title&amp;quot; },&lt;br /&gt;
			displayed_title_unclear_title = { fr = &amp;quot;Titre peu clair&amp;quot;, en = &amp;quot;Unclear title&amp;quot; },&lt;br /&gt;
			displayed_title_unclear_text = { fr = &amp;quot;Le titre affiché de cet argument est confus, jargonnant, trop allusif ou télégraphique.&amp;quot;, en = &amp;quot;This title is confusing, jargon, too allusive or telegraphic.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_title_disadvantageous_label = { fr = &amp;quot;Titre affiché désavantageux&amp;quot;, en = &amp;quot;Disadvantageous displayed title&amp;quot; },&lt;br /&gt;
			displayed_title_disadvantageous_title = { fr = &amp;quot;Titre désavantageux&amp;quot;, en = &amp;quot;Disadvantageous title&amp;quot; },&lt;br /&gt;
			displayed_title_disadvantageous_text = { fr = &amp;quot;Le titre affiché de cet argument présente l&#039;argument de façon lacunaire ou caricaturée. Trouvez une formulation plus persuasive.&amp;quot;, en = &amp;quot;This title presents the argument in a lacunary or caricatured way. Find a more persuasive wording.&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Argument = {&lt;br /&gt;
		files = {&lt;br /&gt;
			reorganize_banner_icon	= &amp;quot;wk-icon-confusion&amp;quot;,&lt;br /&gt;
			title_review_icon		= &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_review_color		= &amp;quot;orange&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		forms = {&lt;br /&gt;
			arg_pro = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			arg_con = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
			justifications = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objections = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			edit_args_pro = &amp;quot;@Debate.forms.args_pro_edit_title&amp;quot;,&lt;br /&gt;
			edit_args_con = &amp;quot;@Debate.forms.args_con_edit_title&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			keywords_edit_title = { fr = &amp;quot;Mots-clés d&#039;argument&amp;quot;, en = &amp;quot;Argument keywords&amp;quot; },&lt;br /&gt;
			summary_edit_title = { fr = &amp;quot;Résumé&amp;quot;, en = &amp;quot;Summary&amp;quot; },&lt;br /&gt;
			quotes_edit_title = { fr = &amp;quot;Citations&amp;quot;, en = &amp;quot;Quotes&amp;quot; },&lt;br /&gt;
			references_edit_title = { fr = &amp;quot;Références&amp;quot;, en = &amp;quot;References&amp;quot; },&lt;br /&gt;
			sections_edit_title = { fr = &amp;quot;Rubriques d&#039;argument&amp;quot;, en = &amp;quot;Argument sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_title = { fr = &amp;quot;Interlangue d&#039;argument&amp;quot;, en = &amp;quot;Argument interlanguage&amp;quot; },&lt;br /&gt;
			detailed_debate_edit_title = { fr = &amp;quot;Débat détaillé&amp;quot;, en = &amp;quot;Detailed debate&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			search_by_keywords_title = &amp;quot;@Common.forms.search_by_keywords_title&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			justifications_form = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objections_form = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			new_arg_title = &amp;quot;@Debate.forms.new_arg_title&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		categories = {&lt;br /&gt;
			arguments = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			keywords_missing = { fr = &amp;quot;Arguments sans mot-clé&amp;quot;, en = &amp;quot;Arguments without keyword&amp;quot; },&lt;br /&gt;
			summary_missing = { fr = &amp;quot;Arguments sans résumé&amp;quot;, en = &amp;quot;Arguments without summary&amp;quot; },&lt;br /&gt;
			quotes_missing = { fr = &amp;quot;Arguments sans citation&amp;quot;, en = &amp;quot;Arguments without quote&amp;quot; },&lt;br /&gt;
			references_missing = { fr = &amp;quot;Arguments sans référence&amp;quot;, en = &amp;quot;Arguments without references&amp;quot; },&lt;br /&gt;
			justifications_missing = { fr = &amp;quot;Arguments sans justification&amp;quot;, en = &amp;quot;Arguments without justification&amp;quot; },&lt;br /&gt;
			objections_missing = { fr = &amp;quot;Arguments sans objection&amp;quot;, en = &amp;quot;Arguments without objection&amp;quot; },&lt;br /&gt;
			content_missing = { fr = &amp;quot;Arguments sans contenu&amp;quot;, en = &amp;quot;Arguments without content&amp;quot; },&lt;br /&gt;
			sections_missing = { fr = &amp;quot;Arguments sans rubrique&amp;quot;, en = &amp;quot;Arguments without section&amp;quot; },&lt;br /&gt;
			authors_missing = { fr = &amp;quot;Citations sans auteur&amp;quot;, en = &amp;quot;Quotes without author&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			title_very_short = { fr = &amp;quot;Titres d&#039;arguments très courts&amp;quot;, en = &amp;quot;Very short argument titles&amp;quot; },&lt;br /&gt;
			title_ends_with_dot = { fr = &amp;quot;Titres d&#039;arguments terminant par un point&amp;quot;, en = &amp;quot;Argument titles ending with a dot&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			has_detailed_debate = { fr = &amp;quot;Arguments faisant l&#039;objet d&#039;un débat détaillé&amp;quot;, en = &amp;quot;Arguments with a detailed debate&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			initialized = { fr = &amp;quot;Arguments initialisés&amp;quot;, en = &amp;quot;Initialized arguments&amp;quot; },&lt;br /&gt;
			uninitialized = { fr = &amp;quot;Arguments non initialisés&amp;quot;, en = &amp;quot;Uninitialized arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_titles_to_review = &amp;quot;@Debate.categories.displayed_titles_to_review&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		params = {&lt;br /&gt;
			keywords_field = &amp;quot;@Common.params.keywords_field&amp;quot;,&lt;br /&gt;
			search_type_field = &amp;quot;@Common.params.type_field&amp;quot;,&lt;br /&gt;
			search_type_value = &amp;quot;@Common.values.type_arguments_value&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			page = { fr = &amp;quot;page&amp;quot;, en = &amp;quot;page&amp;quot; },&lt;br /&gt;
			displayed_title = { fr = &amp;quot;titre-affiché&amp;quot;, en = &amp;quot;displayed-title&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justification_type_label = &amp;quot;@Common.labels.justification_label&amp;quot;,&lt;br /&gt;
			objection_type_label = &amp;quot;@Common.labels.objection_label&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		text = {&lt;br /&gt;
			edit_label = &amp;quot;@Common.labels.edit_label&amp;quot;,&lt;br /&gt;
			none_label = &amp;quot;@Common.labels.none_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			shortdesc_plain = &amp;quot;@Common.labels.site_title_text&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			keywords_label_text = &amp;quot;@Common.text.keywords_label_text&amp;quot;,&lt;br /&gt;
			keywords_edit_tt = { fr = &amp;quot;Modifier les mots-clés thématiques décrivant cet argument&amp;quot;, en = &amp;quot;Edit the thematic keywords describing this argument&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_title = { fr = &amp;quot;Résumé&amp;quot;, en = &amp;quot;Summary&amp;quot; },&lt;br /&gt;
			summary_edit_tt = { fr = &amp;quot;Modifier le résumé de l&#039;argument&amp;quot;, en = &amp;quot;Edit the argument summary&amp;quot; },&lt;br /&gt;
			none_summary_msg = { fr = &amp;quot;Aucun résumé n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No summary has been entered yet.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			quotes_title = { fr = &amp;quot;Citations&amp;quot;, en = &amp;quot;Quotes&amp;quot; },&lt;br /&gt;
			quotes_edit_tt = { fr = &amp;quot;Modifier les citations de l&#039;argument&amp;quot;, en = &amp;quot;Edit the argument quotes&amp;quot; },&lt;br /&gt;
			none_quotes_msg = { fr = &amp;quot;Aucune citation n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No quotes have been entered yet.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			references_title = { fr = &amp;quot;Références&amp;quot;, en = &amp;quot;References&amp;quot; },&lt;br /&gt;
			references_edit_tt = { fr = &amp;quot;Modifier les références bibliographiques, sitographiques ou vidéographiques étayant l&#039;argument&amp;quot;, en = &amp;quot;Edit the references supporting this argument&amp;quot; },&lt;br /&gt;
			none_references_msg = &amp;quot;@Debate.text.none_references_msg&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			justifications_title = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objections_title = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			justifications_edit_tt = {&lt;br /&gt;
				fr = &amp;quot;Modifier la liste des arguments ci-dessous&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Edit the list of justifications below&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_edit_tt = {&lt;br /&gt;
				fr = &amp;quot;Modifier la liste des objections ci-dessous&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Edit the list of objections below&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			justification_add_label = { fr = &amp;quot;Ajouter un argument&amp;quot;, en = &amp;quot;Add an argument&amp;quot; },&lt;br /&gt;
			objection_add_label = { fr = &amp;quot;Ajouter une objection&amp;quot;, en = &amp;quot;Add an objection&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justification_add_tt = {&lt;br /&gt;
				fr = &amp;quot;Ajouter une justification à l’argument : %s&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Add a justification to: %s&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objection_add_tt = {&lt;br /&gt;
				fr = &amp;quot;Ajouter une objection à l’argument : %s&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Add an objection to: %s&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			none_justifications_msg = { fr = &amp;quot;Aucun argument n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No arguments have been entered yet.&amp;quot; },&lt;br /&gt;
			none_objections_msg = { fr = &amp;quot;Aucune objection n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No objections have been entered yet.&amp;quot; },&lt;br /&gt;
			none_content_msg = { fr = &amp;quot;Aucun contenu n&#039;a été entré.&amp;quot;, en = &amp;quot;No content has been entered.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			none_justifications_short_msg = { fr = &amp;quot;Aucun argument n&#039;a été entré.&amp;quot;, en = &amp;quot;No arguments have been entered yet.&amp;quot; },&lt;br /&gt;
			none_objections_short_msg = { fr = &amp;quot;Aucune objection n&#039;a été entrée.&amp;quot;, en = &amp;quot;No objections have been entered yet.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			reorganize_link_label = { fr = &amp;quot;réorganiser&amp;quot;, en = &amp;quot;reorganize&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			detailed_debate_title = { fr = &amp;quot;Débat détaillé&amp;quot;, en = &amp;quot;Detailed debate&amp;quot; },&lt;br /&gt;
			detailed_debate_edit_tt = { fr = &amp;quot;Modifier le débat sous-jacent à l&#039;argument : %s&amp;quot;, en = &amp;quot;Edit the underlying debate for: %s&amp;quot; },&lt;br /&gt;
			detailed_debate_label_text = { fr = &amp;quot;Débat détaillé : &amp;quot;, en = &amp;quot;Detailed debate: &amp;quot; },&lt;br /&gt;
			arg_is_debate_msg = { fr = &amp;quot;L&#039;argument « %s » fait l&#039;objet d&#039;un débat à part entière.&amp;quot;, en = &amp;quot;The argument “%s” has its own dedicated debate.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			title_too_short_msg = { fr = &amp;quot;Ce titre de page donne-t-il une idée claire et précise de l&#039;argument ?&amp;quot;, en = &amp;quot;Does this page title clearly describe the argument?&amp;quot; },&lt;br /&gt;
			title_ends_with_dot_msg = { fr = &amp;quot;Attention : ce titre de page se termine par un point.&amp;quot;, en = &amp;quot;Warning: this page title ends with a dot.&amp;quot; },&lt;br /&gt;
			rename_page_label = &amp;quot;@Common.labels.rename_page_label&amp;quot;,&lt;br /&gt;
			if_needed_msg = { fr = &amp;quot;si ce n&#039;est pas le cas.&amp;quot;, en = &amp;quot;if not.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			breadcrumb_root_label = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
			rename_link_label = &amp;quot;@Common.text.rename_link_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			sections_edit_tt = { fr = &amp;quot;Modifier les rubriques de l&#039;argument&amp;quot;, en = &amp;quot;Edit the argument sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_tt = { fr = &amp;quot;Modifier les liens interlangues de l&#039;argument&amp;quot;, en = &amp;quot;Edit the interlanguage links&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			seo_description = {&lt;br /&gt;
				fr = &amp;quot;Arguments pour et contre : critiques et justifications, défenseurs et opposants.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Arguments for and against: critiques and justifications, defenders and opponents.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			arg_new_title_field_base = &amp;quot;@Debate.forms.new_arg_title&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			parent_used_in_debate_1 = { fr = &amp;quot;Cet argument est utilisé dans le débat %s&amp;quot;, en = &amp;quot;This argument is used in the debate %s&amp;quot; },&lt;br /&gt;
			parent_used_in_debate_n = { fr = &amp;quot;Cet argument est utilisé dans les débats %s&amp;quot;, en = &amp;quot;This argument is used in the debates %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_is_pro_in_1 = { fr = &amp;quot;Cet argument est un argument « pour » dans le débat %s&amp;quot;, en = &amp;quot;This argument is a “pro” argument in the debate %s&amp;quot; },&lt;br /&gt;
			parent_is_pro_in_n = { fr = &amp;quot;Cet argument est un argument « pour » dans les débats %s&amp;quot;, en = &amp;quot;This argument is a “pro” argument in the debates %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_is_con_in_1 = { fr = &amp;quot;Cet argument est un argument « contre » dans le débat %s&amp;quot;, en = &amp;quot;This argument is a “con” argument in the debate %s&amp;quot; },&lt;br /&gt;
			parent_is_con_in_n = { fr = &amp;quot;Cet argument est un argument « contre » dans les débats %s&amp;quot;, en = &amp;quot;This argument is a “con” argument in the debates %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_is_justification_of = { fr = &amp;quot;Cet argument est une justification de %s&amp;quot;, en = &amp;quot;This argument is a justification of %s&amp;quot; },&lt;br /&gt;
			parent_is_objection_to = { fr = &amp;quot;Cet argument est une objection à %s&amp;quot;, en = &amp;quot;This argument is an objection to %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			search_by_keyword_tt = &amp;quot;@Debate.text.search_by_keyword_tt&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			parent_debates_title_1 = { fr = &amp;quot;Débat parent&amp;quot;, en = &amp;quot;Parent debate&amp;quot; },&lt;br /&gt;
			parent_debates_title_n = { fr = &amp;quot;Débats parents&amp;quot;, en = &amp;quot;Parent debates&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			list_conjunction_text = &amp;quot;@Common.text.list_conjunction_text&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			init_warning_title = {&lt;br /&gt;
				fr = &amp;quot;Attention : le titre ci-dessus est-il suffisamment complet ? Renommez la page si besoin, puis cliquez sur « Oui, terminer ».&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Warning: is the title above complete enough? Rename the page if needed, then click “Yes, finish”.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			init_warning_intro = {&lt;br /&gt;
				fr = &amp;quot;Vous avez entré le titre « %s ». C&#039;est ce titre qui s&#039;affichera dans le débat.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;You entered the title “%s”. This is the title that will be shown in the debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			init_yes_finish_label = { fr = &amp;quot;Oui, terminer&amp;quot;, en = &amp;quot;Yes, finish&amp;quot; },&lt;br /&gt;
			init_yes_tt = { fr = &amp;quot;Terminer l&#039;ajout de l&#039;argument&amp;quot;, en = &amp;quot;Finish adding the argument&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			init_ok_text = {&lt;br /&gt;
				fr = &amp;quot;Argument ajouté à la page [[%s]]&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Argument added to the page [[%s]]&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			init_no_rename_label = { fr = &amp;quot;Non, renommer la page&amp;quot;, en = &amp;quot;No, rename the page&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			init_summary_pro = { fr = &amp;quot;/* Arguments « pour » */ Ajout de l’argument : &amp;quot;, en = &amp;quot;/* Pros */ Added argument: &amp;quot; },&lt;br /&gt;
			init_summary_con = { fr = &amp;quot;/* Arguments « contre » */ Ajout de l’argument : &amp;quot;, en = &amp;quot;/* Cons */ Added argument: &amp;quot; },&lt;br /&gt;
			init_summary_justif = { fr = &amp;quot;/* Justifications */ Ajout de l’argument : &amp;quot;, en = &amp;quot;/* Justifications */ Added argument: &amp;quot; },&lt;br /&gt;
			init_summary_obj = { fr = &amp;quot;/* Objections */ Ajout de l’objection : &amp;quot;, en = &amp;quot;/* Objections */ Added objection: &amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			unknown_author = &amp;quot;@Debate.text.unknown_author&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		urls = {&lt;br /&gt;
			home = &amp;quot;@Debate.urls.home&amp;quot;,&lt;br /&gt;
			home_label = &amp;quot;@Debate.urls.home_label&amp;quot;,&lt;br /&gt;
			wiki_base = &amp;quot;@Debate.urls.wiki_base&amp;quot;,&lt;br /&gt;
			discussion_prefix = &amp;quot;@Debate.urls.discussion_prefix&amp;quot;,&lt;br /&gt;
			category_prefix = &amp;quot;@Debate.urls.category_prefix&amp;quot;,&lt;br /&gt;
			portal_prefix = &amp;quot;@Debate.urls.portal_prefix&amp;quot;,&lt;br /&gt;
			property_prefix = &amp;quot;@Debate.urls.property_prefix&amp;quot;,&lt;br /&gt;
			sections_label = &amp;quot;@Debate.urls.sections_label&amp;quot;,&lt;br /&gt;
			arguments_label = { fr = &amp;quot;Arguments&amp;quot;, en = &amp;quot;Arguments&amp;quot; },&lt;br /&gt;
			justification_label = { fr = &amp;quot;Justification&amp;quot;, en = &amp;quot;Justification&amp;quot; },&lt;br /&gt;
			objection_label = { fr = &amp;quot;Objection&amp;quot;, en = &amp;quot;Objection&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		props = {&lt;br /&gt;
			arg_number = { fr = &amp;quot;Numéro d&#039;argument&amp;quot;, en = &amp;quot;Argument number&amp;quot; },&lt;br /&gt;
			justif_list = { fr = &amp;quot;Liste des justifications&amp;quot;, en = &amp;quot;Justification list&amp;quot; },&lt;br /&gt;
			obj_list = { fr = &amp;quot;Liste des objections&amp;quot;, en = &amp;quot;Objection list&amp;quot; },&lt;br /&gt;
			detailed_debate = { fr = &amp;quot;Débat détaillé&amp;quot;, en = &amp;quot;Detailed debate&amp;quot; },&lt;br /&gt;
			argument_map = &amp;quot;@Common.labels.argument_map_label&amp;quot;,&lt;br /&gt;
			keyword = &amp;quot;@Common.props.keyword&amp;quot;,&lt;br /&gt;
			arg_page_name = { fr = &amp;quot;Nom de page d&#039;argument&amp;quot;, en = &amp;quot;Argument page name&amp;quot; },&lt;br /&gt;
			section = { fr = &amp;quot;Rubrique&amp;quot;, en = &amp;quot;Section&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			arg_pro = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			arg_con = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
			justif = &amp;quot;@Common.labels.justification_label&amp;quot;,&lt;br /&gt;
			obj = &amp;quot;@Common.labels.objection_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			breadcrumb = { fr = &amp;quot;Fil d&#039;Ariane&amp;quot;, en = &amp;quot;Breadcrumb&amp;quot; },&lt;br /&gt;
			debate_name = { fr = &amp;quot;Nom de débat&amp;quot;, en = &amp;quot;Debate name&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_debate = &amp;quot;@Debate.props.parent_debate&amp;quot;,&lt;br /&gt;
			parent_argument = { fr = &amp;quot;Argument parent&amp;quot;, en = &amp;quot;Parent argument&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			article_name = &amp;quot;@Common.props.article_name&amp;quot;,&lt;br /&gt;
			work_name = &amp;quot;@Common.props.work_name&amp;quot;,&lt;br /&gt;
			publishing_house = &amp;quot;@Common.props.publishing_house&amp;quot;,&lt;br /&gt;
			place_of_publication = &amp;quot;@Common.props.place_of_publication&amp;quot;,&lt;br /&gt;
			author = &amp;quot;@Common.props.author&amp;quot;,&lt;br /&gt;
			website_name = &amp;quot;@Common.props.website_name&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		seo = {&lt;br /&gt;
			title_separator		= &amp;quot;@Debate.seo.title_separator&amp;quot;,&lt;br /&gt;
			image				= &amp;quot;@Debate.seo.image&amp;quot;,&lt;br /&gt;
			image_alt			= &amp;quot;@Debate.seo.image_alt&amp;quot;,&lt;br /&gt;
			site_name			= &amp;quot;@Debate.seo.site_name&amp;quot;,&lt;br /&gt;
			twitter_site		= &amp;quot;@Debate.seo.twitter_site&amp;quot;,&lt;br /&gt;
			locale				= &amp;quot;@Debate.seo.locale&amp;quot;,&lt;br /&gt;
			author				= &amp;quot;@Debate.seo.author&amp;quot;,&lt;br /&gt;
			section 			= &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
			space				= { fr = &amp;quot; &amp;quot;, en = &amp;quot;&amp;quot; },&lt;br /&gt;
			shortdesc_plain		= &amp;quot;@Debate.text.shortdesc_plain&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			--	Spécifique Argument&lt;br /&gt;
			description = {&lt;br /&gt;
				fr = &amp;quot;Arguments pour et contre : %s. Critiques et justifications, défenseurs et opposants.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Arguments for and against %s: defence and criticism, justifications and objections, proofs and refutations, supporters and opponents.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			breadcrumb_home_label = &amp;quot;@Debate.seo.breadcrumb_home_label&amp;quot;,&lt;br /&gt;
			breadcrumb_arguments_label = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		banners = {&lt;br /&gt;
			argument_orphan_label = { fr = &amp;quot;Argument orphelin&amp;quot;, en = &amp;quot;Orphan argument&amp;quot; },&lt;br /&gt;
			argument_orphan_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			argument_orphan_icon = &amp;quot;wk-icon-orphan&amp;quot;,&lt;br /&gt;
			argument_orphan_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est [[:Catégorie:Arguments orphelins|orphelin]]. Il n&#039;a aucun argument ou débat parent.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is an [[:Category:Orphan arguments|orphan]]. It has no parent argument or debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_orphan_text = {&lt;br /&gt;
				fr = &amp;quot;Ne voyez-vous pas d&#039;argument auquel il pourrait servir de justification ou d&#039;objection ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Can you think of an argument for which it could serve as a justification or an objection?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_orphan_category = { fr = &amp;quot;Arguments orphelins&amp;quot;, en = &amp;quot;Orphan arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_incomplete_label = { fr = &amp;quot;Titre incomplet&amp;quot;, en = &amp;quot;Incomplete title&amp;quot; },&lt;br /&gt;
			title_incomplete_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_incomplete_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_incomplete_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments incomplets|incomplet]]. Il est ambigu ou incompréhensible à lui seul.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Incomplete argument titles|incomplete]]. It is ambiguous or not understandable on its own.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_incomplete_text = {&lt;br /&gt;
				fr =&lt;br /&gt;
					&amp;quot;[[Spécial:Renommage/%s|Réécrivez le titre]] sous forme d&#039;une phrase complète qui donne une idée claire et précise de l&#039;argument.&amp;quot;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &amp;quot;Article détaillé : [[Aide:Corriger un titre d&#039;argument incomplet]]&amp;quot;&lt;br /&gt;
					.. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Rewrite the title]] as a complete sentence that clearly and precisely conveys the argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_incomplete_category = { fr = &amp;quot;Titres d&#039;arguments incomplets&amp;quot;, en = &amp;quot;Incomplete argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_disadvantageous_label = { fr = &amp;quot;Titre désavantageux&amp;quot;, en = &amp;quot;Disadvantageous title&amp;quot; },&lt;br /&gt;
			title_disadvantageous_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_disadvantageous_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_disadvantageous_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments désavantageux|désavantageux]]. Il présente l&#039;argument de façon lacunaire ou caricaturée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Disadvantageous argument titles|disadvantageous]]. It presents the argument in a partial or caricatured way.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_disadvantageous_text = {&lt;br /&gt;
				fr = &amp;quot;[[Spécial:Renommage/%s|Trouvez une formulation]] plus convaincante.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a more convincing phrasing]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_disadvantageous_category = { fr = &amp;quot;Titres d&#039;arguments désavantageux&amp;quot;, en = &amp;quot;Disadvantageous argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_unclear_label = { fr = &amp;quot;Titre peu clair&amp;quot;, en = &amp;quot;Unclear title&amp;quot; },&lt;br /&gt;
			title_unclear_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_unclear_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_unclear_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments peu clairs|peu clair]]. Il est confus, jargonnant, trop allusif ou télégraphique.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Unclear argument titles|unclear]]. It is confusing, jargon-heavy, too allusive, or too telegraphic.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_unclear_text = {&lt;br /&gt;
				fr = &amp;quot;[[Spécial:Renommage/%s|Trouvez une formulation]] plus claire.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a clearer phrasing]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_unclear_category = { fr = &amp;quot;Titres d&#039;arguments peu clairs&amp;quot;, en = &amp;quot;Unclear argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_too_long_label = { fr = &amp;quot;Titre trop long&amp;quot;, en = &amp;quot;Title too long&amp;quot; },&lt;br /&gt;
			title_too_long_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_too_long_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_too_long_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments trop longs|trop long]]. Il contient plusieurs phrases ou est globalement trop développé.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Overly long argument titles|too long]]. It contains multiple sentences or is overall too verbose.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_too_long_text = {&lt;br /&gt;
				fr = &amp;quot;[[Spécial:Renommage/%s|Réécrivez le titre]] sous forme d&#039;une phrase compacte qui résume de manière claire et précise l&#039;argument.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Rewrite the title]] as a compact sentence that clearly and precisely summarizes the argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_too_long_category = { fr = &amp;quot;Titres d&#039;arguments trop longs&amp;quot;, en = &amp;quot;Overly long argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			--	ARGUMENT WARNINGS (inchangé)&lt;br /&gt;
			argument_sensitive_label = { fr = &amp;quot;Argument sensible&amp;quot;, en = &amp;quot;Sensitive argument&amp;quot; },&lt;br /&gt;
			argument_sensitive_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			argument_sensitive_icon = &amp;quot;@Debate.banners.debate_sensitive_icon&amp;quot;,&lt;br /&gt;
			argument_sensitive_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est considéré [[:Catégorie:Arguments sensibles|sensible]]. Son contenu peut choquer.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is considered [[:Category:Sensitive arguments|sensitive]]. Its content may be shocking.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_sensitive_text = {&lt;br /&gt;
				fr = &amp;quot;Il n’a pas été écarté dans la mesure où sa présence est attestée dans l&#039;espace public et qu’il ne contrevient pas à la législation.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;It has not been removed insofar as its presence can be attested in the public space and it does not violate the law.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_sensitive_category = { fr = &amp;quot;Arguments sensibles&amp;quot;, en = &amp;quot;Sensitive arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			argument_fanciful_label = { fr = &amp;quot;Argument saugrenu&amp;quot;, en = &amp;quot;Fanciful argument&amp;quot; },&lt;br /&gt;
			argument_fanciful_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			argument_fanciful_icon = &amp;quot;wk-icon-saugrenu&amp;quot;,&lt;br /&gt;
			argument_fanciful_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est considéré [[:Catégorie:Arguments saugrenus|saugrenu]]. Une citation est nécessaire afin d&#039;apporter la preuve de son existence dans l&#039;espace public.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is considered [[:Category:Fanciful arguments|fanciful]]. A citation is needed to prove that it exists in the public space.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_fanciful_text = {&lt;br /&gt;
				fr = &amp;quot;&#039;&#039;&#039;Rappel&#039;&#039;&#039; : suivant les [[Wikidébats:Principes fondateurs|principes fondateurs]], les arguments ne sont relayés sur Wikidébats que dans la mesure où leur présence peut être attestée dans l&#039;espace public.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: according to the [[Wikidebates:Founding Principles|founding principles]], arguments are only relayed insofar as their presence can be attested in the public space.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_fanciful_category = { fr = &amp;quot;Arguments saugrenus&amp;quot;, en = &amp;quot;Fanciful arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			argument_potentially_illegal_label = { fr = &amp;quot;Argument potentiellement illégal&amp;quot;, en = &amp;quot;Potentially illegal argument&amp;quot; },&lt;br /&gt;
			argument_potentially_illegal_color = &amp;quot;rouge&amp;quot;,&lt;br /&gt;
			argument_potentially_illegal_icon = &amp;quot;wk-icon-illegal&amp;quot;,&lt;br /&gt;
			argument_potentially_illegal_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est [[:Catégorie:Arguments potentiellement illégaux|potentiellement illégal]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is [[:Category:Potentially illegal arguments|potentially illegal]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_potentially_illegal_text = {&lt;br /&gt;
				fr = &amp;quot;&#039;&#039;&#039;Rappel&#039;&#039;&#039; : suivant les [[Wikidébats:Principes fondateurs|principes fondateurs]], tous les arguments ont leur place sur Wikidébats à condition qu&#039;ils ne contreviennent pas à la loi.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: according to the [[Wikidebates:Founding Principles|founding principles]], all arguments may be included as long as they do not break the law.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_potentially_illegal_category = { fr = &amp;quot;Arguments potentiellement illégaux&amp;quot;, en = &amp;quot;Potentially illegal arguments&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		subsection_banners = {&lt;br /&gt;
			summary_disadvantageous_label = { fr = &amp;quot;Le résumé de cet argument est désavantageux&amp;quot;, en = &amp;quot;This argument&#039;s summary is disadvantageous&amp;quot; },&lt;br /&gt;
			summary_disadvantageous_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de cet argument est désavantageux&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary is disadvantageous&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_disadvantageous_text = {&lt;br /&gt;
				fr = &amp;quot;L&#039;argument est présenté de façon lacunaire ou caricaturée. Une version plus convaincante doit être rédigée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The argument is presented in a partial or caricatured way. A more convincing version should be written.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_disadvantageous_category = { fr = &amp;quot;Résumés d&#039;arguments désavantageux&amp;quot;, en = &amp;quot;Disadvantageous argument summaries&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_to_be_written_label = { fr = &amp;quot;Le résumé de l&#039;argument est encore à rédiger&amp;quot;, en = &amp;quot;This argument&#039;s summary still needs to be written&amp;quot; },&lt;br /&gt;
			summary_to_be_written_image = &amp;quot;@Debate.banners.debate_sensitive_icon&amp;quot;,&lt;br /&gt;
			summary_to_be_written_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de l&#039;argument est encore à rédiger&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary still needs to be written&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_be_written_text = {&lt;br /&gt;
				fr = &amp;quot;Aucun contenu n&#039;a été apporté ou le texte entré correspond à une prise de notes. Et si vous le rédigiez ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;No content has been added, or the text is just notes. How about writing it properly?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_be_written_category = { fr = &amp;quot;Résumés d&#039;arguments à rédiger&amp;quot;, en = &amp;quot;Argument summaries to be written&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_unclear_label = { fr = &amp;quot;Le résumé de cet argument n&#039;est pas assez clair&amp;quot;, en = &amp;quot;This argument&#039;s summary is not clear enough&amp;quot; },&lt;br /&gt;
			summary_unclear_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de cet argument n&#039;est pas assez clair&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary is not clear enough&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_unclear_text = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé est confus, jargonnant, trop complexe ou trop télégraphique. Il doit être rendu plus compréhensible.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary is confusing, jargon-heavy, too complex, or too telegraphic. It should be made easier to understand.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_unclear_category = { fr = &amp;quot;Résumés d&#039;arguments peu clairs&amp;quot;, en = &amp;quot;Unclear argument summaries&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_too_long_label = { fr = &amp;quot;Le résumé de cet argument est trop long&amp;quot;, en = &amp;quot;This argument&#039;s summary is too long&amp;quot; },&lt;br /&gt;
			summary_too_long_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de cet argument est trop long&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary is too long&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_too_long_text = {&lt;br /&gt;
				fr = &amp;quot;Il comporte des redondances, des phrases lourdes, ou est globalement trop développé. Le texte doit être allégé.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;It contains redundancies, heavy phrasing, or is overall too verbose. The text should be shortened.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_too_long_category = { fr = &amp;quot;Résumés d&#039;arguments trop longs&amp;quot;, en = &amp;quot;Overlong argument summaries&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_to_separate_label = { fr = &amp;quot;Ce résumé mélange plusieurs arguments&amp;quot;, en = &amp;quot;This summary mixes several arguments&amp;quot; },&lt;br /&gt;
			summary_to_separate_title = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé mélange plusieurs arguments&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary mixes several arguments&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_separate_text = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé mêle des arguments qu&#039;il s&#039;agit de dissocier. Créez une page spécifique pour chacun d&#039;eux.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary mixes arguments that should be separated. Create a dedicated page for each of them.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_separate_category = { fr = &amp;quot;Résumés d&#039;arguments à séparer&amp;quot;, en = &amp;quot;Argument summaries to separate&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_style_to_review_label = { fr = &amp;quot;Le style de ce résumé est à revoir&amp;quot;, en = &amp;quot;This summary&#039;s style should be reviewed&amp;quot; },&lt;br /&gt;
			summary_style_to_review_title = {&lt;br /&gt;
				fr = &amp;quot;Le style de ce résumé est à revoir&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary&#039;s style should be reviewed&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_style_to_review_text = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé est rédigé de façon personnelle (« Je pense que… ») ou trop familière. Il doit être réécrit.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary is written in a personal (“I think…”) or overly casual way. It should be rewritten.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_style_to_review_category = { fr = &amp;quot;Résumés d&#039;arguments dont le style est à revoir&amp;quot;, en = &amp;quot;Argument summaries with style to review&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_to_separate_alias = { fr = &amp;quot;Arguments à séparer&amp;quot;, en = &amp;quot;Arguments to separate banner&amp;quot; },&lt;br /&gt;
			summary_disadvantageous_alias = { fr = &amp;quot;Résumé désavantageux&amp;quot;, en = &amp;quot;Disadvantageous summary banner&amp;quot; },&lt;br /&gt;
			summary_style_to_review_alias = { fr = &amp;quot;Style à revoir&amp;quot;, en = &amp;quot;Style to review banner&amp;quot; },&lt;br /&gt;
			summary_to_be_written_alias = { fr = &amp;quot;Résumé à rédiger&amp;quot;, en = &amp;quot;Summary to be written banner&amp;quot; },&lt;br /&gt;
			summary_too_long_alias = { fr = &amp;quot;Résumé trop long&amp;quot;, en = &amp;quot;Too long summary banner&amp;quot; },&lt;br /&gt;
			summary_unclear_alias = { fr = &amp;quot;Résumé peu clair&amp;quot;, en = &amp;quot;Unclear summary banner&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justifications_to_reorganize_alias		= { fr = &amp;quot;Justifications à réorganiser&amp;quot;, en = &amp;quot;Justifications to reorganize&amp;quot; },&lt;br /&gt;
			objections_to_reorganize_alias			= { fr = &amp;quot;Objections à réorganiser&amp;quot;, en = &amp;quot;Objections to reorganize&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justifications_to_reorganize_label		= {&lt;br /&gt;
				fr = &amp;quot;Justifications à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Justifications to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			justifications_to_reorganize_title		= {&lt;br /&gt;
				fr = &amp;quot;Cette sous-partie est à&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This subsection needs to be&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			justifications_to_reorganize_text		= {&lt;br /&gt;
				fr = &amp;quot;Des arguments sont redondants, sont à démêler, ou la structure peut être clarifiée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some arguments are redundant, intertwined, or the structure needs clarification.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			justifications_to_reorganize_category	= {&lt;br /&gt;
				fr = &amp;quot;Justifications à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Justifications to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			objections_to_reorganize_label			= {&lt;br /&gt;
				fr = &amp;quot;Objections à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Objections to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_to_reorganize_title			= {&lt;br /&gt;
				fr = &amp;quot;Cette sous-partie est à&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This subsection needs to be&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_to_reorganize_text			= {&lt;br /&gt;
				fr = &amp;quot;Des objections sont redondantes, sont à démêler, ou la structure peut être clarifiée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some objections are redundant, intertwined, or the structure needs clarification.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_to_reorganize_category		= {&lt;br /&gt;
				fr = &amp;quot;Objections à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Objections to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_too_short_label		= { fr = &amp;quot;Citation trop courte&amp;quot;, en = &amp;quot;Too short quote&amp;quot; },&lt;br /&gt;
			quote_too_short_title		= { fr = &amp;quot;Cette citation est trop courte&amp;quot;, en = &amp;quot;This quote is too short&amp;quot; },&lt;br /&gt;
			quote_too_short_text		= {&lt;br /&gt;
				fr = &amp;quot;L&#039;extrait retenu ne contient pas de raisonnement ni d&#039;exemple. Sélectionnez un extrait plus long ou supprimez la citation.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The selected excerpt contains no reasoning or example. Choose a longer excerpt or remove the quote.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_too_short_category	= { fr = &amp;quot;Citations trop courtes&amp;quot;, en = &amp;quot;Too short quotes&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			quote_too_long_label		= { fr = &amp;quot;Citation trop longue&amp;quot;, en = &amp;quot;Too long quote&amp;quot; },&lt;br /&gt;
			quote_too_long_title		= { fr = &amp;quot;Cette citation est trop longue&amp;quot;, en = &amp;quot;This quote is too long&amp;quot; },&lt;br /&gt;
			quote_too_long_text			= {&lt;br /&gt;
				fr = &amp;quot;L&#039;extrait retenu est trop long ou mêle des arguments distincts. Supprimez les passages superflus, si besoin en utilisant les crochets [...], ou découpez cet extrait en plusieurs citations centrées chacune sur un argument.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The selected excerpt is too long or mixes distinct arguments. Remove unnecessary passages (use brackets [...] if needed), or split it into several quotes, each focused on one argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_too_long_category		= { fr = &amp;quot;Citations trop longues&amp;quot;, en = &amp;quot;Too long quotes&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			quote_ref_incomplete_label		= { fr = &amp;quot;Référence de la citation incomplète&amp;quot;, en = &amp;quot;Incomplete quote reference&amp;quot; },&lt;br /&gt;
			quote_ref_incomplete_title		= { fr = &amp;quot;La référence de la citation est incomplète&amp;quot;, en = &amp;quot;The quote reference is incomplete&amp;quot; },&lt;br /&gt;
			quote_ref_incomplete_text		= {&lt;br /&gt;
				fr = &amp;quot;Certains champs importants (auteur, titre, date, ...) n&#039;ont pas été remplis. Et si vous les complétiez ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some important fields (author, title, date, ...) have not been filled in. How about completing them?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_ref_incomplete_category	= { fr = &amp;quot;Références de citations incomplètes&amp;quot;, en = &amp;quot;Incomplete quote references&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			dead_link_label = &amp;quot;@Debate.subsections.dead_link_label&amp;quot;,&lt;br /&gt;
			dead_link_title = &amp;quot;@Debate.subsections.dead_link_label&amp;quot;,&lt;br /&gt;
			dead_link_text = &amp;quot;@Debate.subsections.dead_link_text&amp;quot;,&lt;br /&gt;
			dead_link_category = &amp;quot;@Debate.subsections.dead_link_category&amp;quot;,&lt;br /&gt;
			&lt;br /&gt;
			reference_quality_insufficient_label = &amp;quot;@Debate.subsections.reference_quality_insufficient_label&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_title = &amp;quot;@Debate.subsections.reference_quality_insufficient_label&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_text = &amp;quot;@Debate.subsections.reference_quality_insufficient_text&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_category = &amp;quot;@Debate.subsections.reference_quality_insufficient_category&amp;quot;,&lt;br /&gt;
			&lt;br /&gt;
			reference_incomplete_label = &amp;quot;@Debate.subsections.reference_incomplete_label&amp;quot;,&lt;br /&gt;
			reference_incomplete_title = &amp;quot;@Debate.subsections.reference_incomplete_label&amp;quot;,&lt;br /&gt;
			reference_incomplete_text = &amp;quot;@Debate.subsections.reference_incomplete_text&amp;quot;,&lt;br /&gt;
			reference_incomplete_category = &amp;quot;@Debate.subsections.reference_incomplete_category&amp;quot;,&lt;br /&gt;
			&lt;br /&gt;
			references_too_many_label = {&lt;br /&gt;
				fr = &amp;quot;Il y a trop de références&amp;quot;,&lt;br /&gt;
				en = &amp;quot;There are too many references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_too_many_title = &amp;quot;@Argument.subsection_banners.references_too_many_label&amp;quot;,&lt;br /&gt;
			references_too_many_text = {&lt;br /&gt;
				fr = &amp;quot;Cette rubrique ne devrait pas dépasser une dizaine de références. Sélectionnez avant tout les références incontournables.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This section should not exceed about ten references. Prioritize the most essential sources.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_too_many_category = {&lt;br /&gt;
				fr = &amp;quot;Trop de références&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Too many references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_many_incomplete_label = {&lt;br /&gt;
				fr = &amp;quot;De nombreuses références sont incomplètes&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Many references are incomplete&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_many_incomplete_title = &amp;quot;@Argument.subsection_banners.references_many_incomplete_label&amp;quot;,&lt;br /&gt;
			references_many_incomplete_text = {&lt;br /&gt;
				fr = &amp;quot;Il manque des informations importantes à trop de références. Celles-ci doivent être complétées.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Too many references lack important information. They need to be completed.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_many_incomplete_category = {&lt;br /&gt;
				fr = &amp;quot;Nombreuses références incomplètes&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Many incomplete references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			displayed_title_too_long_label = &amp;quot;@Debate.subsections.displayed_title_too_long_label&amp;quot;,&lt;br /&gt;
			displayed_title_too_long_title = &amp;quot;@Debate.subsections.displayed_title_too_long_title&amp;quot;,&lt;br /&gt;
			displayed_title_too_long_text = &amp;quot;@Debate.subsections.displayed_title_too_long_text&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			displayed_title_unclear_label = &amp;quot;@Debate.subsections.displayed_title_unclear_label&amp;quot;,&lt;br /&gt;
			displayed_title_unclear_title = &amp;quot;@Debate.subsections.displayed_title_unclear_title&amp;quot;,&lt;br /&gt;
			displayed_title_unclear_text = &amp;quot;@Debate.subsections.displayed_title_unclear_text&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			displayed_title_disadvantageous_label = &amp;quot;@Debate.subsections.displayed_title_disadvantageous_label&amp;quot;,&lt;br /&gt;
			displayed_title_disadvantageous_title = &amp;quot;@Debate.subsections.displayed_title_disadvantageous_title&amp;quot;,&lt;br /&gt;
			displayed_title_disadvantageous_text = &amp;quot;@Debate.subsections.displayed_title_disadvantageous_text&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ArgumentMap = {&lt;br /&gt;
		props = {&lt;br /&gt;
			arg_map = &amp;quot;@Common.labels.argument_map_label&amp;quot;,&lt;br /&gt;
			pro_list = &amp;quot;@Debate.props.pro_list&amp;quot;,&lt;br /&gt;
			con_list = &amp;quot;@Debate.props.con_list&amp;quot;,&lt;br /&gt;
			justifs_list = &amp;quot;@Argument.props.justif_list&amp;quot;,&lt;br /&gt;
			objs_list = &amp;quot;@Argument.props.obj_list&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		text = {&lt;br /&gt;
			arg_map_pro_label = &amp;quot;@Debate.text.arg_map_pro_label&amp;quot;,&lt;br /&gt;
			arg_map_con_label = &amp;quot;@Debate.text.arg_map_con_label&amp;quot;,&lt;br /&gt;
			justifs_label = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objs_label = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
			none_pro_args_msg_short = &amp;quot;@Debate.text.none_pro_args_msg_short&amp;quot;,&lt;br /&gt;
			none_con_args_msg_short = &amp;quot;@Debate.text.none_con_args_msg_short&amp;quot;,&lt;br /&gt;
			none_justifications_msg = &amp;quot;@Argument.text.none_justifications_msg&amp;quot;,&lt;br /&gt;
			none_objections_msg = &amp;quot;@Argument.text.none_objections_msg&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Property:Debate_name&amp;diff=10211</id>
		<title>Property:Debate name</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Property:Debate_name&amp;diff=10211"/>
		<updated>2026-03-19T08:14:16Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created a property of type Text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Text]].&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Property:Argument_page_name&amp;diff=10210</id>
		<title>Property:Argument page name</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Property:Argument_page_name&amp;diff=10210"/>
		<updated>2026-03-19T08:13:56Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created a property of type Text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Text]].&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Property:Debate_number&amp;diff=10209</id>
		<title>Property:Debate number</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Property:Debate_number&amp;diff=10209"/>
		<updated>2026-03-19T08:09:49Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created a property of type Number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Number]].&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Property:Argument_number&amp;diff=10208</id>
		<title>Property:Argument number</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Property:Argument_number&amp;diff=10208"/>
		<updated>2026-03-19T08:09:13Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Created a property of type Number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a property of type [[Has type::Number]].&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Wikipedia_link_hover&amp;diff=10207</id>
		<title>Template:Wikipedia link hover</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Wikipedia_link_hover&amp;diff=10207"/>
		<updated>2026-03-16T22:20:57Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates]]&lt;br /&gt;
{{#template_params:}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;interwikiextract&amp;quot;&amp;gt;{{#InterwikiExtract: {{{1|}}}&lt;br /&gt;
| wiki = wikipedia&lt;br /&gt;
| format = text&lt;br /&gt;
| intro = true&lt;br /&gt;
| sentences = 3&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Source: [{{fullurl:enwikipedia: {{{1|}}}}} Wikipedia]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Wikipedia_link_hover&amp;diff=10206</id>
		<title>Template:Wikipedia link hover</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Wikipedia_link_hover&amp;diff=10206"/>
		<updated>2026-03-16T22:20:35Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates]]&lt;br /&gt;
{{#template_params:}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;interwikiextract&amp;quot;&amp;gt;{{#InterwikiExtract: {{{1|}}}&lt;br /&gt;
| wiki = wikipedia&lt;br /&gt;
| format = text&lt;br /&gt;
| intro = true&lt;br /&gt;
| sentences = 3&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Source: [{{fullurl:enwikipedia: {{{1|}}}}} Wikipédia]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Latest_changes&amp;diff=10204</id>
		<title>Template:Latest changes</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Latest_changes&amp;diff=10204"/>
		<updated>2026-03-16T22:11:08Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Wikinuma moved page Template:Latest changes to Template:Recent contributions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Recent contributions]]&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Recent_contributions&amp;diff=10203</id>
		<title>Template:Recent contributions</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Recent_contributions&amp;diff=10203"/>
		<updated>2026-03-16T22:11:08Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: Wikinuma moved page Template:Latest changes to Template:Recent contributions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{#template_params:&lt;br /&gt;
|page&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&#039;&#039;From newest to oldest, the latest changes put forward in the discussion relate to the following pages:&#039;&#039;&lt;br /&gt;
{{#recentdebatechanges: page={{{page|}}}&lt;br /&gt;
	|limit=100&lt;br /&gt;
	|skipuser=Wikirobot&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Module:WD/I18N/Data&amp;diff=10202</id>
		<title>Module:WD/I18N/Data</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Module:WD/I18N/Data&amp;diff=10202"/>
		<updated>2026-03-16T19:42:20Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	Common = {&lt;br /&gt;
		labels = {&lt;br /&gt;
			edit_label = { fr = &amp;quot;Modifier&amp;quot;, en = &amp;quot;Edit&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			site_title_text = {&lt;br /&gt;
				fr = &amp;quot;Wikidébats, l’encyclopédie des arguments « pour » et « contre »&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Wikidebates, the encyclopedia of “pro” and “con” arguments&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			arg_pro_label = { fr = &amp;quot;Argument pour&amp;quot;, en = &amp;quot;Pro argument&amp;quot; },&lt;br /&gt;
			arg_con_label = { fr = &amp;quot;Argument contre&amp;quot;, en = &amp;quot;Con argument&amp;quot; },&lt;br /&gt;
			justification_label = { fr = &amp;quot;Justification&amp;quot;, en = &amp;quot;Justification&amp;quot; },&lt;br /&gt;
			objection_label = { fr = &amp;quot;Objection&amp;quot;, en = &amp;quot;Objection&amp;quot; },&lt;br /&gt;
			arguments_label = { fr = &amp;quot;Arguments&amp;quot;, en = &amp;quot;Arguments&amp;quot; },&lt;br /&gt;
			justifications_label = { fr = &amp;quot;Justifications&amp;quot;, en = &amp;quot;Justifications&amp;quot; },&lt;br /&gt;
			objections_label = { fr = &amp;quot;Objections&amp;quot;, en = &amp;quot;Objections&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			none_label = { fr = &amp;quot;aucun&amp;quot;, en = &amp;quot;none&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debates_label = { fr = &amp;quot;Débats&amp;quot;, en = &amp;quot;Debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			argument_map_label = { fr = &amp;quot;Carte des arguments&amp;quot;, en = &amp;quot;Argument map&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			rename_page_label = { fr = &amp;quot;Renommer la page&amp;quot;, en = &amp;quot;Rename page&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		props = {&lt;br /&gt;
			keyword = { fr = &amp;quot;Mot-clé&amp;quot;, en = &amp;quot;Keyword&amp;quot; },&lt;br /&gt;
			work_name = { fr = &amp;quot;Nom d&#039;ouvrage&amp;quot;, en = &amp;quot;Work name&amp;quot; },&lt;br /&gt;
			publishing_house = { fr = &amp;quot;Maison d&#039;édition&amp;quot;, en = &amp;quot;Publishing house&amp;quot; },&lt;br /&gt;
			place_of_publication = { fr = &amp;quot;Lieu d&#039;édition&amp;quot;, en = &amp;quot;Place of publication&amp;quot; },&lt;br /&gt;
			author = { fr = &amp;quot;Auteur&amp;quot;, en = &amp;quot;Author&amp;quot; },&lt;br /&gt;
			article_name = { fr = &amp;quot;Nom d&#039;article&amp;quot;, en = &amp;quot;Article name&amp;quot; },&lt;br /&gt;
			website_name = { fr = &amp;quot;Nom de site Internet&amp;quot;, en = &amp;quot;Website name&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		forms = {&lt;br /&gt;
			search_by_keywords_title = { fr = &amp;quot;Recherche par mots-clés&amp;quot;, en = &amp;quot;Search by keywords&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		params = {&lt;br /&gt;
			keywords_field = { fr = &amp;quot;mots-clés&amp;quot;, en = &amp;quot;keywords&amp;quot; },&lt;br /&gt;
			type_field = { fr = &amp;quot;type&amp;quot;, en = &amp;quot;type&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		values = {&lt;br /&gt;
			type_arguments_value = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		text = {&lt;br /&gt;
			keywords_label_text = { fr = &amp;quot;&#039;&#039;&#039;Mots-clés&#039;&#039;&#039; : &amp;quot;, en = &amp;quot;&#039;&#039;&#039;Keywords&#039;&#039;&#039;: &amp;quot; },&lt;br /&gt;
			rename_link_label = { fr = &amp;quot;renommer&amp;quot;, en = &amp;quot;rename&amp;quot; },&lt;br /&gt;
			list_conjunction_text = { fr = &amp;quot; et &amp;quot;, en = &amp;quot; and &amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Debate = {&lt;br /&gt;
		forms = {&lt;br /&gt;
			intro_edit_title = { fr = &amp;quot;Pour comprendre le débat&amp;quot;, en = &amp;quot;To understand the debate&amp;quot; },&lt;br /&gt;
			wiki_seealso_edit_title = { fr = &amp;quot;Voir aussi sur Wikipédia&amp;quot;, en = &amp;quot;See also on Wikipedia&amp;quot; },&lt;br /&gt;
			args_pro_edit_title = { fr = &amp;quot;Arguments pour&amp;quot;, en = &amp;quot;Pro arguments&amp;quot; },&lt;br /&gt;
			args_con_edit_title = { fr = &amp;quot;Arguments contre&amp;quot;, en = &amp;quot;Con arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			new_arg_title = { fr = &amp;quot;Nouveau titre d&#039;argument&amp;quot;, en = &amp;quot;New argument title&amp;quot; },&lt;br /&gt;
			new_arg_pro_type_label = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			new_arg_con_type_label = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			self_eval_home_title = { fr = &amp;quot;Autoévaluation (accueil)&amp;quot;, en = &amp;quot;Self-evaluation (home)&amp;quot; },&lt;br /&gt;
			keywords_edit_title = { fr = &amp;quot;Mots-clés de débat&amp;quot;, en = &amp;quot;Debate keywords&amp;quot; },&lt;br /&gt;
			related_edit_title = { fr = &amp;quot;Débats connexes&amp;quot;, en = &amp;quot;Related debates&amp;quot; },&lt;br /&gt;
			subject_edit_title = { fr = &amp;quot;Sujet de débat&amp;quot;, en = &amp;quot;Debate subject&amp;quot; },&lt;br /&gt;
			sections_edit_title = { fr = &amp;quot;Rubriques de débat&amp;quot;, en = &amp;quot;Debate sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_title = { fr = &amp;quot;Interlangue de débat&amp;quot;, en = &amp;quot;Debate interlanguage&amp;quot; },&lt;br /&gt;
			banners_edit_title = { fr = &amp;quot;Bandeaux de débat&amp;quot;, en = &amp;quot;Debate banners&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			biblio_pro_title = { fr = &amp;quot;Bibliographie pour&amp;quot;, en = &amp;quot;Bibliography (pro)&amp;quot; },&lt;br /&gt;
			biblio_con_title = { fr = &amp;quot;Bibliographie contre&amp;quot;, en = &amp;quot;Bibliography (con)&amp;quot; },&lt;br /&gt;
			biblio_neutral_title = { fr = &amp;quot;Bibliographie ni pour ni contre&amp;quot;, en = &amp;quot;Bibliography (neutral)&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			webliography_pro_title = { fr = &amp;quot;Sitographie pour&amp;quot;, en = &amp;quot;Webliography (pro)&amp;quot; },&lt;br /&gt;
			webliography_con_title = { fr = &amp;quot;Sitographie contre&amp;quot;, en = &amp;quot;Webliography (con)&amp;quot; },&lt;br /&gt;
			webliography_neutral_title = { fr = &amp;quot;Sitographie ni pour ni contre&amp;quot;, en = &amp;quot;Webliography (neutral)&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			videography_pro_title = { fr = &amp;quot;Vidéographie pour&amp;quot;, en = &amp;quot;Videography (pro)&amp;quot; },&lt;br /&gt;
			videography_con_title = { fr = &amp;quot;Vidéographie contre&amp;quot;, en = &amp;quot;Videography (con)&amp;quot; },&lt;br /&gt;
			videography_neutral_title = { fr = &amp;quot;Vidéographie ni pour ni contre&amp;quot;, en = &amp;quot;Videography (neutral)&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			search_by_keywords_title = &amp;quot;@Common.forms.search_by_keywords_title&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		params = {&lt;br /&gt;
			keywords_field = &amp;quot;@Common.params.keywords_field&amp;quot;,&lt;br /&gt;
			search_type_field = &amp;quot;@Common.params.type_field&amp;quot;,&lt;br /&gt;
			search_type_value = &amp;quot;@Debate.categories.debates&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			color_field = { fr = &amp;quot;couleur&amp;quot;, en = &amp;quot;color&amp;quot; },&lt;br /&gt;
			icon_field = { fr = &amp;quot;icône&amp;quot;, en = &amp;quot;icon&amp;quot; },&lt;br /&gt;
			title_field = { fr = &amp;quot;titre&amp;quot;, en = &amp;quot;title&amp;quot; },&lt;br /&gt;
			text_field = { fr = &amp;quot;texte&amp;quot;, en = &amp;quot;text&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			content_field = { fr = &amp;quot;contenu&amp;quot;, en = &amp;quot;content&amp;quot; },&lt;br /&gt;
			page_field = { fr = &amp;quot;page&amp;quot;, en = &amp;quot;page&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			--	Paramètres des modèles de références&lt;br /&gt;
			authors_field = { fr = &amp;quot;auteurs&amp;quot;, en = &amp;quot;authors&amp;quot; },&lt;br /&gt;
			article_field = { fr = &amp;quot;article&amp;quot;, en = &amp;quot;article&amp;quot; },&lt;br /&gt;
			work_field = { fr = &amp;quot;ouvrage&amp;quot;, en = &amp;quot;work&amp;quot; },&lt;br /&gt;
			volume_field = { fr = &amp;quot;volume&amp;quot;, en = &amp;quot;volume&amp;quot; },&lt;br /&gt;
			number_field = { fr = &amp;quot;numero&amp;quot;, en = &amp;quot;number&amp;quot; },&lt;br /&gt;
			location_field = { fr = &amp;quot;localisation&amp;quot;, en = &amp;quot;location&amp;quot; },&lt;br /&gt;
			publisher_field = { fr = &amp;quot;edition&amp;quot;, en = &amp;quot;publisher&amp;quot; },&lt;br /&gt;
			place_field = { fr = &amp;quot;lieu&amp;quot;, en = &amp;quot;place&amp;quot; },&lt;br /&gt;
			date_field = { fr = &amp;quot;date&amp;quot;, en = &amp;quot;date&amp;quot; },&lt;br /&gt;
			link_field = { fr = &amp;quot;lien&amp;quot;, en = &amp;quot;link&amp;quot; },&lt;br /&gt;
			warnings_field = { fr = &amp;quot;avertissements&amp;quot;, en = &amp;quot;warnings&amp;quot; },&lt;br /&gt;
			site_field = { fr = &amp;quot;site&amp;quot;, en = &amp;quot;site&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		progress = {&lt;br /&gt;
			draft = { fr = &amp;quot;Ébauche&amp;quot;, en = &amp;quot;Draft&amp;quot; },&lt;br /&gt;
			building = { fr = &amp;quot;Débat en construction&amp;quot;, en = &amp;quot;Debate under construction&amp;quot; },&lt;br /&gt;
			constructed = { fr = &amp;quot;Débat construit&amp;quot;, en = &amp;quot;Constructed debate&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		categories = {&lt;br /&gt;
			debates = &amp;quot;@Common.labels.debates_label&amp;quot;,&lt;br /&gt;
			progress_missing = { fr = &amp;quot;Débats sans niveau d&#039;avancement&amp;quot;, en = &amp;quot;Debates without progress level&amp;quot; },&lt;br /&gt;
			constructed = { fr = &amp;quot;Débats construits&amp;quot;, en = &amp;quot;Constructed debates&amp;quot; },&lt;br /&gt;
			intro_missing = { fr = &amp;quot;Débats sans introduction&amp;quot;, en = &amp;quot;Debates without introduction&amp;quot; },&lt;br /&gt;
			wikipedia_missing = { fr = &amp;quot;Débats sans article Wikipédia&amp;quot;, en = &amp;quot;Debates without Wikipedia link&amp;quot; },&lt;br /&gt;
			pro_missing = { fr = &amp;quot;Débats sans argument pour&amp;quot;, en = &amp;quot;Debates without pro argument&amp;quot; },&lt;br /&gt;
			con_missing = { fr = &amp;quot;Débats sans argument contre&amp;quot;, en = &amp;quot;Debates without con argument&amp;quot; },&lt;br /&gt;
			keywords_missing = { fr = &amp;quot;Débats sans mot-clé&amp;quot;, en = &amp;quot;Debates without keywords&amp;quot; },&lt;br /&gt;
			related_missing = { fr = &amp;quot;Débats sans débat connexe&amp;quot;, en = &amp;quot;Debates without related debate&amp;quot; },&lt;br /&gt;
			sections_missing = { fr = &amp;quot;Débats sans rubrique&amp;quot;, en = &amp;quot;Debates without section&amp;quot; },&lt;br /&gt;
			topic_missing = { fr = &amp;quot;Débats sans sujet&amp;quot;, en = &amp;quot;Debates without topic&amp;quot; },&lt;br /&gt;
			topic_complete_missing = { fr = &amp;quot;Débats sans sujet complet&amp;quot;, en = &amp;quot;Debates without complete topic&amp;quot; },&lt;br /&gt;
			refs_to_review = { fr = &amp;quot;Références à revoir&amp;quot;, en = &amp;quot;References to review&amp;quot; },&lt;br /&gt;
			displayed_titles_to_review = { fr = &amp;quot;Titres d&#039;arguments affichés à revoir&amp;quot;, en = &amp;quot;Argument displayed titles to review&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		text = {&lt;br /&gt;
			warnings_title = { fr = &amp;quot;Avertissements&amp;quot;, en = &amp;quot;Warnings&amp;quot; },&lt;br /&gt;
			debate_banners_edit_tt = { fr = &amp;quot;Modifier les bandeaux d&#039;avertissement du débat&amp;quot;, en = &amp;quot;Edit the debate warning banners&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			main_banner_color = &amp;quot;vert&amp;quot;,&lt;br /&gt;
			main_banner_title = {&lt;br /&gt;
				fr = &#039;Cet article vise à exposer tous les arguments « pour » et « contre » du débat &amp;lt;span style=&amp;quot;font-weight: normal;&amp;quot;&amp;gt;« %s »&amp;lt;/span&amp;gt;, pour permettre à chacun de se forger une opinion critique et éclairée.&#039;,&lt;br /&gt;
				en = &#039;This article aims to present all the pros and cons of the debate &amp;lt;span style=&amp;quot;font-weight: normal;&amp;quot;&amp;gt;“%s”&amp;lt;/span&amp;gt;, to help everyone form a critical, informed opinion.&#039;,&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			learn_more_label = { fr = &amp;quot;En savoir plus : &amp;quot;, en = &amp;quot;Learn more: &amp;quot; },&lt;br /&gt;
			founding_principles_link = { fr = &amp;quot;[[Wikidébats:Principes fondateurs|Principes fondateurs]]&amp;quot;, en = &amp;quot;[[Wikidebates:Founding Principles|Founding Principles]]&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			understand_debate_title = &amp;quot;@Debate.forms.intro_edit_title&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			edit_label = &amp;quot;@Common.labels.edit_label&amp;quot;,&lt;br /&gt;
			site_title_text = &amp;quot;@Common.labels.site_title_text&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			intro_edit_tt = { fr = &amp;quot;Modifier l&#039;introduction du débat&amp;quot;, en = &amp;quot;Edit the debate introduction&amp;quot; },&lt;br /&gt;
			none_intro_msg = { fr = &amp;quot;Aucune introduction n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No introduction has been entered yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			wikipedia_seealso_msg = { fr = &amp;quot;Voir aussi : %s sur Wikipédia&amp;quot;, en = &amp;quot;See also: %s on Wikipedia&amp;quot; },&lt;br /&gt;
			none_wikipedia_msg = { fr = &amp;quot;Aucun lien vers une page Wikipédia n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No links to a Wikipedia page have been provided yet.&amp;quot; },&lt;br /&gt;
			wikipedia_edit_tt = { fr = &amp;quot;Modifier les articles Wikipédia du bandeau&amp;quot;, en = &amp;quot;Edit the Wikipedia articles in the banner&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			args_pro_title = { fr = &amp;quot;Arguments « pour »&amp;quot;, en = &amp;quot;Pros&amp;quot; },&lt;br /&gt;
			args_con_title = { fr = &amp;quot;Arguments « contre »&amp;quot;, en = &amp;quot;Cons&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			args_pro_edit_tt = { fr = &amp;quot;Modifier la liste des arguments « pour » ci-dessous&amp;quot;, en = &amp;quot;Edit the list of pros below&amp;quot; },&lt;br /&gt;
			args_con_edit_tt = { fr = &amp;quot;Modifier la liste des arguments « contre » ci-dessous&amp;quot;, en = &amp;quot;Edit the list of cons below&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			faq_q_pro = { fr = &amp;quot;Quels sont les arguments pour %s ?&amp;quot;, en = &amp;quot;What are the pros of %s?&amp;quot; },&lt;br /&gt;
			faq_q_con = { fr = &amp;quot;Quels sont les arguments contre %s ?&amp;quot;, en = &amp;quot;What are the cons of %s?&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			faq_anchor_pro = { fr = &amp;quot;#Arguments_«_pour_»&amp;quot;, en = &amp;quot;#Pros&amp;quot; },&lt;br /&gt;
			faq_anchor_con = { fr = &amp;quot;#Arguments_«_contre_»&amp;quot;, en = &amp;quot;#Cons&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			none_pro_args_msg = { fr = &amp;quot;Aucun argument « pour » n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No pros have been added yet.&amp;quot; },&lt;br /&gt;
			none_con_args_msg = { fr = &amp;quot;Aucun argument « contre » n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No cons have been added yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			args_add_label = { fr = &amp;quot;Ajouter un argument « %s »&amp;quot;, en = &amp;quot;Add a “%s” argument&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			arg_add_tt = { fr = &amp;quot;Ajouter un nouvel argument « %s » au débat : %s&amp;quot;, en = &amp;quot;Add a new “%s” argument to the debate: %s&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			side_pro_word = { fr = &amp;quot;pour&amp;quot;, en = &amp;quot;pro&amp;quot; },&lt;br /&gt;
			side_con_word = { fr = &amp;quot;contre&amp;quot;, en = &amp;quot;con&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			further_reading_title = { fr = &amp;quot;Pour aller plus loin&amp;quot;, en = &amp;quot;Further reading&amp;quot; },&lt;br /&gt;
			bibliography_title = { fr = &amp;quot;Bibliographie&amp;quot;, en = &amp;quot;Bibliography&amp;quot; },&lt;br /&gt;
			webliography_title = { fr = &amp;quot;Sitographie&amp;quot;, en = &amp;quot;Webliography&amp;quot; },&lt;br /&gt;
			videography_title = { fr = &amp;quot;Vidéographie&amp;quot;, en = &amp;quot;Videography&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			side_pro_title = { fr = &amp;quot;Côté « pour »&amp;quot;, en = &amp;quot;“Pro” side&amp;quot; },&lt;br /&gt;
			side_con_title = { fr = &amp;quot;Côté « contre »&amp;quot;, en = &amp;quot;“Con” side&amp;quot; },&lt;br /&gt;
			side_neutral_title = { fr = &amp;quot;Ni « pour » ni « contre »&amp;quot;, en = &amp;quot;Neither “pro” nor “con”&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			section_edit_tt = { fr = &amp;quot;Modifier cette rubrique&amp;quot;, en = &amp;quot;Edit this section&amp;quot; },&lt;br /&gt;
			none_references_msg = { fr = &amp;quot;Aucune référence n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No references have been entered yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			keywords_label_text = &amp;quot;@Common.text.keywords_label_text&amp;quot;,&lt;br /&gt;
			none_label = &amp;quot;@Common.labels.none_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			search_by_keyword_tt = { fr = &amp;quot;Rechercher les pages sur ce thème&amp;quot;, en = &amp;quot;Search pages about this topic&amp;quot; },&lt;br /&gt;
			keywords_edit_tt = { fr = &amp;quot;Modifier les mots-clés thématiques décrivant ce débat&amp;quot;, en = &amp;quot;Edit the thematic keywords describing this debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			related_edit_tt = { fr = &amp;quot;Modifier la liste des débats connexes&amp;quot;, en = &amp;quot;Edit the list of related debates&amp;quot; },&lt;br /&gt;
			none_related_msg = { fr = &amp;quot;Aucun débat connexe n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No related debates have been entered yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			self_eval_title = { fr = &amp;quot;Testez-vous&amp;quot;, en = &amp;quot;Self-assessment&amp;quot; },&lt;br /&gt;
			self_eval_blurb = {&lt;br /&gt;
				fr = &amp;quot;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Êtes-vous plutôt « pour » ou « contre » ? Autoévaluez-vous !&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Vous pouvez parcourir le contenu de ce débat en répondant, pour chaque argument, à deux questions :&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; Cet argument est-il bien fondé ?&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Cet argument est-il important pour vous ?&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Vous obtiendrez votre pourcentage de « pour » ou de « contre » et une analyse de votre opinion.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Are you more “pro” or “con”? Assess yourself!&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;You can browse this debate by answering, for each argument, two questions:&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; Is this argument well-founded?&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt; Is this argument important to you?&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;You’ll get your “pro/con” percentage and an analysis of your stance.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			self_eval_start_label = { fr = &amp;quot;Commencer&amp;quot;, en = &amp;quot;Start&amp;quot; },&lt;br /&gt;
			self_eval_start_tt = { fr = &amp;quot;Commencer l&#039;autoévaluation&amp;quot;, en = &amp;quot;Start the self-assessment&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			latest_changes_title = { fr = &amp;quot;Dernières contributions&amp;quot;, en = &amp;quot;Recent contributions&amp;quot; },&lt;br /&gt;
			latest_changes_show_label = { fr = &amp;quot;Afficher les dernières contributions&amp;quot;, en = &amp;quot;Show recent contributions&amp;quot; },&lt;br /&gt;
			latest_changes_show_tt = { fr = &amp;quot;Afficher les dernières contributions apportées à ce débat&amp;quot;, en = &amp;quot;Show recent contributions to this debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			feedback_title = { fr = &amp;quot;Vos retours&amp;quot;, en = &amp;quot;Your feedback&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			shortdesc_plain = { fr = &amp;quot;Arguments pour et contre&amp;quot;, en = &amp;quot;Pros and cons&amp;quot; },&lt;br /&gt;
			shortdesc_topic = { fr = &amp;quot;Arguments pour et contre %s&amp;quot;, en = &amp;quot;Pros and cons of %s&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			subject_edit_tt = { fr = &amp;quot;Modifier le sujet du débat&amp;quot;, en = &amp;quot;Edit the debate subject&amp;quot; },&lt;br /&gt;
			sections_edit_tt = { fr = &amp;quot;Modifier les rubriques du débat&amp;quot;, en = &amp;quot;Edit the debate sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_tt = { fr = &amp;quot;Modifier les liens interlangues du débat&amp;quot;, en = &amp;quot;Edit the interlanguage links for the debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			arg_map_pro_label = { fr = &amp;quot;POUR&amp;quot;, en = &amp;quot;PROS&amp;quot; },&lt;br /&gt;
			arg_map_con_label = { fr = &amp;quot;CONTRE&amp;quot;, en = &amp;quot;CONS&amp;quot; },&lt;br /&gt;
			none_pro_args_msg_short = { fr = &amp;quot;Aucun argument « pour » n&#039;a été entré.&amp;quot;, en = &amp;quot;No pros have been added yet.&amp;quot; },&lt;br /&gt;
			none_con_args_msg_short = { fr = &amp;quot;Aucun argument « contre » n&#039;a été entré.&amp;quot;, en = &amp;quot;No cons have been added yet.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			rename_link_label = &amp;quot;@Common.text.rename_link_label&amp;quot;,&lt;br /&gt;
			rename_special_page_text = { fr = &amp;quot;Spécial:Renommage/%s&amp;quot;, en = &amp;quot;Special:MovePage/%s&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			self_eval_ns_label = { fr = &amp;quot;Autoévaluation&amp;quot;, en = &amp;quot;Self-evaluation&amp;quot; },&lt;br /&gt;
			self_eval_debate_field = { fr = &amp;quot;débat&amp;quot;, en = &amp;quot;debate&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			unknown_author = { fr = &amp;quot;Auteur non renseigné&amp;quot;, en = &amp;quot;Author not provided&amp;quot;, },&lt;br /&gt;
&lt;br /&gt;
			default_subsection_title = {&lt;br /&gt;
				fr = &amp;quot;À savoir&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Good to know&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_msg_before = {&lt;br /&gt;
				fr = &amp;quot;Aucun contenu n’a été entré. Cliquez&amp;quot;,&lt;br /&gt;
				en = &amp;quot;No content has been entered. Click&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_link_label = {&lt;br /&gt;
				fr = &amp;quot;ici&amp;quot;,&lt;br /&gt;
				en = &amp;quot;here&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_msg_after = {&lt;br /&gt;
				fr = &amp;quot;pour compléter cette rubrique.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;to complete this section.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			intro_empty_category = {&lt;br /&gt;
				fr = &amp;quot;Introductions de débats vides&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Empty debate introductions&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		urls = {&lt;br /&gt;
			wikipedia = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikipedia.org/wiki/&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikipedia.org/wiki/&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			home = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikidebates.org/&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikidebates.org/&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			home_label = { fr = &amp;quot;Accueil&amp;quot;, en = &amp;quot;Main Page&amp;quot; },&lt;br /&gt;
			wiki_base = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikidebates.org/wiki/&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikidebates.org/wiki/&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			discussion_prefix = {&lt;br /&gt;
				fr = &amp;quot;Discussion:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Talk:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			category_prefix = {&lt;br /&gt;
				fr = &amp;quot;Catégorie:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Category:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			portal_prefix = {&lt;br /&gt;
				fr = &amp;quot;Portail:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Portal:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			property_prefix = {&lt;br /&gt;
				fr = &amp;quot;Attribut:&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Property:&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			debates_label = { fr = &amp;quot;Débats&amp;quot;, en = &amp;quot;Debates&amp;quot; },&lt;br /&gt;
			sections_label = { fr = &amp;quot;Rubriques&amp;quot;, en = &amp;quot;Sections&amp;quot; },&lt;br /&gt;
			pro_label = { fr = &amp;quot;Argument_pour&amp;quot;, en = &amp;quot;Pro_argument&amp;quot; },&lt;br /&gt;
			con_label = { fr = &amp;quot;Argument_contre&amp;quot;, en = &amp;quot;Con_argument&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		seo = {&lt;br /&gt;
			title = {&lt;br /&gt;
				fr = &amp;quot;Débat : %s – Wikidébats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Debate: %s – Wikidebates&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_mode = {&lt;br /&gt;
				fr = &amp;quot;Débat : %s&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Debate: %s&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			title_separator = {&lt;br /&gt;
				fr = &amp;quot;–&amp;quot;,&lt;br /&gt;
				en = &amp;quot;–&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			description = {&lt;br /&gt;
				fr = &amp;quot;Arguments pour et contre %s : argumentaire pro et anti, défense et critiques, justifications et objections, preuves et réfutations.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Arguments for and against %s: pros and cons, justifications and objections, proofs and refutations, defence and criticism.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			image = {&lt;br /&gt;
				fr = &amp;quot;https://fr.wikidebates.org/w/resources/assets/logo-Wikidebats-Twitter.png&amp;quot;,&lt;br /&gt;
				en = &amp;quot;https://en.wikidebates.org/w/resources/assets/logo-Wikidebates-Twitter.png&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			image_alt = {&lt;br /&gt;
				fr = &amp;quot;Balance de la raison qui pèse les arguments pour et contre&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Scales of reason weighing arguments for and against&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			section = {&lt;br /&gt;
				fr = &amp;quot;Débat&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Debate&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			site_name = {&lt;br /&gt;
				fr = &amp;quot;Wikidébats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Wikidebates&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			twitter_site = {&lt;br /&gt;
				fr = &amp;quot;@Wikidebats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;@Wikidebats&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			locale = {&lt;br /&gt;
				fr = &amp;quot;fr_FR&amp;quot;,&lt;br /&gt;
				en = &amp;quot;en_US&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
			author = {&lt;br /&gt;
				fr = &amp;quot;Contributeurs de Wikidébats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Wikidebates contributors&amp;quot;&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		props = {&lt;br /&gt;
			debate_name = { fr = &amp;quot;Nom de débat&amp;quot;, en = &amp;quot;Debate name&amp;quot; },&lt;br /&gt;
			debate_number = { fr = &amp;quot;Numéro de débat&amp;quot;, en = &amp;quot;Debate number&amp;quot; },&lt;br /&gt;
			parent_debate = { fr = &amp;quot;Débat parent&amp;quot;, en = &amp;quot;Parent debate&amp;quot; },&lt;br /&gt;
			breadcrumb = { fr = &amp;quot;Fil d&#039;Ariane&amp;quot;, en = &amp;quot;Breadcrumb&amp;quot; },&lt;br /&gt;
			keyword = &amp;quot;@Common.props.keyword&amp;quot;,&lt;br /&gt;
			arg_map = &amp;quot;@Common.labels.argument_map_label&amp;quot;,&lt;br /&gt;
			debate_subject = { fr = &amp;quot;Sujet de débat&amp;quot;, en = &amp;quot;Debate subject&amp;quot; },&lt;br /&gt;
			pro_list = { fr = &amp;quot;Liste des arguments pour&amp;quot;, en = &amp;quot;Pro list&amp;quot; },&lt;br /&gt;
			con_list = { fr = &amp;quot;Liste des arguments contre&amp;quot;, en = &amp;quot;Con list&amp;quot; },&lt;br /&gt;
			arg_pro = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			arg_con = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			article_name = &amp;quot;@Common.props.article_name&amp;quot;,&lt;br /&gt;
			work_name = &amp;quot;@Common.props.work_name&amp;quot;,&lt;br /&gt;
			publishing_house = &amp;quot;@Common.props.publishing_house&amp;quot;,&lt;br /&gt;
			place_of_publication = &amp;quot;@Common.props.place_of_publication&amp;quot;,&lt;br /&gt;
			author = &amp;quot;@Common.props.author&amp;quot;,&lt;br /&gt;
			author_pro = { fr = &amp;quot;Auteur pour&amp;quot;, en = &amp;quot;Pro author&amp;quot; },&lt;br /&gt;
			author_con = { fr = &amp;quot;Auteur contre&amp;quot;, en = &amp;quot;Con author&amp;quot; },&lt;br /&gt;
			website_name = &amp;quot;@Common.props.website_name&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		----------------------------------------------------------------------&lt;br /&gt;
		--	BANNERS&lt;br /&gt;
		----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
		banners = {&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
			--	PROGRESS (2)&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
			progress_under_construction_label = &amp;quot;@Debate.progress.building&amp;quot;,&lt;br /&gt;
			progress_under_construction_color = &amp;quot;bleu&amp;quot;,&lt;br /&gt;
			progress_under_construction_icon = &amp;quot;wk-icon-construction&amp;quot;,&lt;br /&gt;
			progress_under_construction_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats en construction|en construction]]. Des arguments manquent ou ne sont pas rédigés. L’introduction et la bibliographie demandent à être améliorées.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Debates under construction|under construction]]. Arguments are missing or not written. The introduction and bibliography need improvement.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			progress_under_construction_text = { fr = &amp;quot;N&#039;hésitez pas à les compléter.&amp;quot;, en = &amp;quot;Feel free to complete them.&amp;quot; },&lt;br /&gt;
			progress_under_construction_category = { fr = &amp;quot;Débats en construction&amp;quot;, en = &amp;quot;Debates under construction&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			progress_draft_label = { fr = &amp;quot;Ébauche&amp;quot;, en = &amp;quot;Draft&amp;quot; },&lt;br /&gt;
			progress_draft_color = &amp;quot;bleu&amp;quot;,&lt;br /&gt;
			progress_draft_icon = &amp;quot;wk-icon-draft&amp;quot;,&lt;br /&gt;
			progress_draft_title = {&lt;br /&gt;
				fr = &amp;quot;Cette page est une [[:Category:Ébauches de débats|ébauche de débat]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This page is a [[:Category:Debate drafts|debate draft]]. This is a more or less organized list of arguments.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			progress_draft_text = {&lt;br /&gt;
				fr = &amp;quot;N&#039;hésitez pas à l&#039;[[Aide:Sommaire|améliorer]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Please feel free to contribute to this draft.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			progress_draft_category = { fr = &amp;quot;Ébauches de débats&amp;quot;, en = &amp;quot;Debate drafts&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
			--	TITLE WARNINGS (3)&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
			title_non_standard_label = { fr = &amp;quot;Titre non standard&amp;quot;, en = &amp;quot;Non-standard title&amp;quot; },&lt;br /&gt;
			title_non_standard_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			title_non_standard_icon = &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_non_standard_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de ce débat est [[:Category:Titres de débats non standard|non standard]]. Il n&#039;est pas possible de répondre par « oui » ou par « non » à la question posée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this debate is [[:Category:Non-standard debate titles|non-standard]]. The question posed does not have the possible answer “yes” or “no”.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_non_standard_text = {&lt;br /&gt;
				fr = &amp;quot;[[Special:MovePage/%s|Reformulez la question]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Reframe the question]] as a pro/con debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_non_standard_category = { fr = &amp;quot;Titres de débats non standard&amp;quot;, en = &amp;quot;Non-standard debate titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_to_explain_label = { fr = &amp;quot;Titre à expliciter&amp;quot;, en = &amp;quot;Title to be explained&amp;quot; },&lt;br /&gt;
			title_to_explain_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			title_to_explain_icon = &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_to_explain_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de ce débat est [[:Category:Titres de débats à expliciter|à expliciter]]. La question posée n’est pas claire ou est ambiguë.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this debate is [[:Category:Debate titles to be explained|to be explained]]. The question asked is unclear or ambiguous.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_explain_text = {&lt;br /&gt;
				fr = &amp;quot;[[Special:MovePage/%s|Trouvez un intitulé]] qui fasse ressortir clairement la problématique.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a title]] that clearly highlights the problem.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_explain_category = { fr = &amp;quot;Titres de débats à expliciter&amp;quot;, en = &amp;quot;Debate titles to be explained&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_to_simplify_label = { fr = &amp;quot;Titre à simplifier&amp;quot;, en = &amp;quot;Title to simplify&amp;quot; },&lt;br /&gt;
			title_to_simplify_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			title_to_simplify_icon = &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_to_simplify_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de ce débat est [[:Category:Titres de débats à simplifier|à simplifier]]. Il est formulé de manière inutilement complexe.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this debate should be [[:Category:Debate titles to simplify|simplified]]. It is formulated in an unnecessarily complex way.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_simplify_text = {&lt;br /&gt;
				fr = &amp;quot;[[Special:MovePage/%s|Trouvez un intitulé]] clair et compact.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a clear and compact title]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_to_simplify_category = { fr = &amp;quot;Titres de débats à simplifier&amp;quot;, en = &amp;quot;Debate titles to simplify&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
			--	DEBATE WARNINGS (6)&lt;br /&gt;
			----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
			debate_unbalanced_label = { fr = &amp;quot;Débat déséquilibré&amp;quot;, en = &amp;quot;Unbalanced debate&amp;quot; },&lt;br /&gt;
			debate_unbalanced_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_unbalanced_icon = &amp;quot;wk-icon-unbalanced&amp;quot;,&lt;br /&gt;
			debate_unbalanced_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats déséquilibrés|déséquilibré]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Unbalanced debates|unbalanced]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_unbalanced_text = {&lt;br /&gt;
				fr = &amp;quot;L&#039;un des camps « pour » ou « contre » est moins bien traité que l&#039;autre. Il doit être complété ou amélioré.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;One of the “pro” or “con” sides is treated less well than the other. It needs to be supplemented or improved.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_unbalanced_category = { fr = &amp;quot;Débats déséquilibrés&amp;quot;, en = &amp;quot;Unbalanced debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_redundant_label = { fr = &amp;quot;Débat redondant&amp;quot;, en = &amp;quot;Redundant debate&amp;quot; },&lt;br /&gt;
			debate_redundant_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_redundant_icon = &amp;quot;wk-icon-redundant&amp;quot;,&lt;br /&gt;
			debate_redundant_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats redondants|redondant]]. Il fait doublon avec un autre débat du site.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Redundant debates|redundant]]. It duplicates another debate on the site.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_redundant_text = {&lt;br /&gt;
				fr =&lt;br /&gt;
					&amp;quot;Choisissez le plus complet des deux et ajoutez-y le contenu intéressant de l&#039;autre.&amp;quot;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &amp;quot;Article détaillé : [[Aide:Fusionner des doublons]]&amp;quot;&lt;br /&gt;
					.. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Choose the more comprehensive of the two and add interesting content from the other.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_redundant_category = { fr = &amp;quot;Débats redondants&amp;quot;, en = &amp;quot;Redundant debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_fanciful_label = { fr = &amp;quot;Débat saugrenu&amp;quot;, en = &amp;quot;Fanciful debate&amp;quot; },&lt;br /&gt;
			debate_fanciful_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_fanciful_icon = &amp;quot;wk-icon-saugrenu&amp;quot;,&lt;br /&gt;
			debate_fanciful_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat paraît [[:Category:Débats saugrenus|saugrenu]]. Sa présence dans l&#039;espace public n&#039;est pas évidente.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is considered [[:Category:Fanciful debates|fanciful]]. Its presence in the public space is not obvious.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_fanciful_text = {&lt;br /&gt;
				fr =&lt;br /&gt;
					&amp;quot;Veuillez apporter dans la [[Discussion:%s|page de discussion]] des citations montrant que des opinions contradictoires sont professées sur la question.&amp;lt;br&amp;gt;\n\n&amp;quot;&lt;br /&gt;
					.. &amp;quot;&#039;&#039;&#039;Rappel&#039;&#039;&#039; : suivant les [[Wikidébats:Principes fondateurs|principes fondateurs]], un argument n&#039;a sa place sur Wikidébats que dans la mesure où sa présence peut être attestée dans l&#039;espace public.&amp;quot;,&lt;br /&gt;
				en =&lt;br /&gt;
					&amp;quot;Please provide quotes to the [[Talk:%s|talk page]] showing that conflicting opinions are held on the matter.&amp;lt;br&amp;gt;\n\n&amp;quot;&lt;br /&gt;
					.. &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: according to the [[Wikidebates:Founding Principles|founding principles]], an argument has its place on Wikidebates only insofar as its presence can be attested in the public space.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_fanciful_category = { fr = &amp;quot;Débats saugrenus&amp;quot;, en = &amp;quot;Fanciful debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_sensitive_label = { fr = &amp;quot;Débat sensible&amp;quot;, en = &amp;quot;Sensitive debate&amp;quot; },&lt;br /&gt;
			debate_sensitive_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_sensitive_icon = &amp;quot;wk-icon-sensible&amp;quot;,&lt;br /&gt;
			debate_sensitive_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat est [[:Category:Débats sensibles|sensible]]. Des arguments relayés sur cette page peuvent choquer.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate is [[:Category:Sensitive debates|sensitive]]. Arguments relayed on this page may shock.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_sensitive_text = {&lt;br /&gt;
				fr = &amp;quot;Ils n’ont pas été écartés dans la mesure où leur présence est attestée dans l&#039;espace public et qu’ils ne contreviennent pas à la législation.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: these arguments are only relayed insofar as their presence can be attested in the public space. They are endorsed neither by the editors of the site, nor by the [[Wikidebates:Laboratory of Methodical Debate|association]] which administers Wikidebates.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_sensitive_category = { fr = &amp;quot;Débats sensibles&amp;quot;, en = &amp;quot;Sensitive debates&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			outline_to_improve_label = { fr = &amp;quot;Plan à améliorer&amp;quot;, en = &amp;quot;Plan to improve&amp;quot; },&lt;br /&gt;
			outline_to_improve_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			outline_to_improve_icon = &amp;quot;wk-icon-confusion&amp;quot;,&lt;br /&gt;
			outline_to_improve_title = {&lt;br /&gt;
				fr = &amp;quot;Le plan de ce débat est [[:Category:Plans de débats à améliorer|à améliorer]]. Des arguments sont redondants, sont à démêler, ou la structure peut être clarifiée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The plan of this debate needs to be [[:Category:Debate plans to improve|improved]]. Arguments are redundant, need to be unraveled, or its structure can be clarified.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			outline_to_improve_text = { fr = &amp;quot;N&#039;hésitez pas à le revoir.&amp;quot;, en = &amp;quot;Do not hesitate to review it.&amp;quot; },&lt;br /&gt;
			outline_to_improve_category = { fr = &amp;quot;Plans de débats à améliorer&amp;quot;, en = &amp;quot;Debate plans to improve&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			debate_generated_by_chatgpt_label = { fr = &amp;quot;ChatGPT&amp;quot;, en = &amp;quot;ChatGPT&amp;quot; },&lt;br /&gt;
			debate_generated_by_chatgpt_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			debate_generated_by_chatgpt_icon = { fr = &amp;quot;ChatGPT.svg&amp;quot;, en = &amp;quot;ChatGPT.svg&amp;quot; },&lt;br /&gt;
			debate_generated_by_chatgpt_title = {&lt;br /&gt;
				fr = &amp;quot;Ce débat a été [[:Category:Débats générés par ChatGPT|généré par ChatGPT]]. Pensez-vous qu&#039;un être humain ferait mieux ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This debate was [[:Category:Debates generated by ChatGPT|generated by ChatGPT]]. Do you think a human would do better?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_generated_by_chatgpt_text = {&lt;br /&gt;
				fr = &amp;quot;Vous pouvez le prouver en améliorant le contenu ou la structure du débat.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;You can prove it by improving the content or structure of this debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			debate_generated_by_chatgpt_category = { fr = &amp;quot;Débats générés par ChatGPT&amp;quot;, en = &amp;quot;Debates generated by ChatGPT&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		subsections = {&lt;br /&gt;
			intro_subbanner_too_long_label = { fr = &amp;quot;Sous-partie trop longue&amp;quot;, en = &amp;quot;Subsection too long&amp;quot; },&lt;br /&gt;
			intro_subbanner_to_develop_label = { fr = &amp;quot;À développer&amp;quot;, en = &amp;quot;To expand&amp;quot; },&lt;br /&gt;
			intro_subbanner_unclear_label = { fr = &amp;quot;Peu claire&amp;quot;, en = &amp;quot;Unclear&amp;quot; },&lt;br /&gt;
			intro_subbanner_biased_label = { fr = &amp;quot;Partisane&amp;quot;, en = &amp;quot;Biased&amp;quot; },&lt;br /&gt;
			intro_subbanner_refs_missing_label = { fr = &amp;quot;Référence(s) manquante(s)&amp;quot;, en = &amp;quot;Missing reference(s)&amp;quot; },&lt;br /&gt;
			intro_subbanner_style_to_review_label = { fr = &amp;quot;Style à revoir&amp;quot;, en = &amp;quot;Style to review&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_unclear_title = { fr = &amp;quot;Cette partie est peu claire&amp;quot;, en = &amp;quot;This part is unclear&amp;quot; },&lt;br /&gt;
			intro_subbanner_unclear_text = { fr = &amp;quot;Cette partie est trop obscure ou jargonnante. Et si vous la rendiez plus compréhensible ?&amp;quot;, en = &amp;quot;This part is too obscure or too jargony. Could you make it easier to understand?&amp;quot; },&lt;br /&gt;
			intro_subbanner_unclear_category = { fr = &amp;quot;Introductions de débats peu claires&amp;quot;, en = &amp;quot;Unclear debate introductions&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_biased_title = { fr = &amp;quot;Cette partie n&#039;est pas neutre&amp;quot;, en = &amp;quot;This part is not neutral&amp;quot; },&lt;br /&gt;
			intro_subbanner_biased_text = { fr = &amp;quot;Elle favorise l&#039;un des deux camps (« pour » ou « contre ») au détriment de l&#039;autre. L&#039;introduction ne doit pas prendre parti, mais simplement donner les éléments utiles à la compréhension du débat.&amp;quot;, en = &amp;quot;It favors one side (“pro” or “con”) at the expense of the other. The introduction should not take sides; it should only provide what is needed to understand the debate.&amp;quot; },&lt;br /&gt;
			intro_subbanner_biased_category = { fr = &amp;quot;Introductions de débats partisanes&amp;quot;, en = &amp;quot;Biased debate introductions&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_to_develop_title = { fr = &amp;quot;Cette partie est à développer&amp;quot;, en = &amp;quot;This part needs to be expanded&amp;quot; },&lt;br /&gt;
			intro_subbanner_to_develop_text = { fr = &amp;quot;Cette partie est incomplète ou trop télégraphique. Et si vous la repreniez ?&amp;quot;, en = &amp;quot;This part is incomplete or too sketchy. Could you expand and improve it?&amp;quot; },&lt;br /&gt;
			intro_subbanner_to_develop_category = { fr = &amp;quot;Introductions de débats à développer&amp;quot;, en = &amp;quot;Debate introductions to expand&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_too_long_title = { fr = &amp;quot;Cette partie est trop longue&amp;quot;, en = &amp;quot;This part is too long&amp;quot; },&lt;br /&gt;
			intro_subbanner_too_long_text = { fr = &amp;quot;Elle peut être rédigée de façon plus synthétique ou être divisée en différentes sous-parties.&amp;quot;, en = &amp;quot;It could be written more concisely or split into several subsections.&amp;quot; },&lt;br /&gt;
			intro_subbanner_too_long_category = { fr = &amp;quot;Introductions de débats trop longues&amp;quot;, en = &amp;quot;Overlong debate introductions&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_refs_missing_title = { fr = &amp;quot;Cette partie manque de référence(s)&amp;quot;, en = &amp;quot;This part lacks reference(s)&amp;quot; },&lt;br /&gt;
			intro_subbanner_refs_missing_text = { fr = &amp;quot;Certains faits ou citations peu connus ne sont pas sourcés. Des références doivent être ajoutées en notes.&amp;quot;, en = &amp;quot;Some facts or quotations are not sourced. References should be added as footnotes.&amp;quot; },&lt;br /&gt;
			intro_subbanner_refs_missing_category = { fr = &amp;quot;Introductions de débats manquant de références&amp;quot;, en = &amp;quot;Debate introductions lacking references&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			intro_subbanner_style_to_review_title = { fr = &amp;quot;Le style de cette partie est à revoir&amp;quot;, en = &amp;quot;The style of this part needs work&amp;quot; },&lt;br /&gt;
			intro_subbanner_style_to_review_text = { fr = &amp;quot;Cette partie est rédigée de façon personnelle (« Je pense que… ») ou trop familière. Elle doit être réécrite.&amp;quot;, en = &amp;quot;This part is written in a personal tone (“I think…”) or is too casual. It should be rewritten.&amp;quot; },&lt;br /&gt;
			intro_subbanner_style_to_review_category = { fr = &amp;quot;Introductions de débats dont le style est à revoir&amp;quot;, en = &amp;quot;Debate introductions needing style work&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			dead_link_label = { fr = &amp;quot;Lien mort&amp;quot;, en = &amp;quot;Dead link&amp;quot; },&lt;br /&gt;
			dead_link_title = &amp;quot;@Debate.subsections.dead_link_label&amp;quot;,&lt;br /&gt;
			dead_link_text = {&lt;br /&gt;
				fr = &amp;quot;La page n&#039;existe plus à cette adresse. Et si vous mettiez à jour le lien ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The page no longer exists at this address. How about updating the link?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			dead_link_category = { fr = &amp;quot;Liens morts&amp;quot;, en = &amp;quot;Dead links&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			reference_quality_insufficient_label = {&lt;br /&gt;
				fr = &amp;quot;Référence de qualité insuffisante&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Insufficient-quality reference&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			reference_quality_insufficient_title = &amp;quot;@Debate.subsections.reference_quality_insufficient_label&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_text = {&lt;br /&gt;
				fr = &amp;quot;Des contenus plus rigoureux ou mieux argumentés peuvent être trouvés pour cet argument.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;More rigorous or better-argued sources can be found for this argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			reference_quality_insufficient_category = {&lt;br /&gt;
				fr = &amp;quot;Références de qualité insuffisante&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Insufficient-quality references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			reference_incomplete_label = { fr = &amp;quot;Référence incomplète&amp;quot;, en = &amp;quot;Incomplete reference&amp;quot; },&lt;br /&gt;
			reference_incomplete_title = &amp;quot;@Debate.subsections.reference_incomplete_label&amp;quot;,&lt;br /&gt;
			reference_incomplete_text = {&lt;br /&gt;
				fr = &amp;quot;Certains champs importants n&#039;ont pas été remplis. Et si vous les complétiez ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some important fields have not been filled in. How about completing them?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			reference_incomplete_category = { fr = &amp;quot;Références incomplètes&amp;quot;, en = &amp;quot;Incomplete references&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_title_too_long_label = { fr = &amp;quot;Titre affiché trop long&amp;quot;, en = &amp;quot;Too long displayed title&amp;quot; },&lt;br /&gt;
			displayed_title_too_long_title = { fr = &amp;quot;Titre trop long&amp;quot;, en = &amp;quot;Too long title&amp;quot; },&lt;br /&gt;
			displayed_title_too_long_text = { fr = &amp;quot;Le titre affiché de cet argument contient plusieurs phrases ou est globalement trop développé. Réécrivez le titre sous forme d&#039;une phrase compacte qui résume de manière claire et précise l&#039;argument.&amp;quot;, en = &amp;quot;This title contains several sentences or is generally too long. Rewrite the title as a compact sentence that clearly and precisely summarizes the argument.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_title_unclear_label = { fr = &amp;quot;Titre affiché peu clair&amp;quot;, en = &amp;quot;Unclear displayed title&amp;quot; },&lt;br /&gt;
			displayed_title_unclear_title = { fr = &amp;quot;Titre peu clair&amp;quot;, en = &amp;quot;Unclear title&amp;quot; },&lt;br /&gt;
			displayed_title_unclear_text = { fr = &amp;quot;Le titre affiché de cet argument est confus, jargonnant, trop allusif ou télégraphique.&amp;quot;, en = &amp;quot;This title is confusing, jargon, too allusive or telegraphic.&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_title_disadvantageous_label = { fr = &amp;quot;Titre affiché désavantageux&amp;quot;, en = &amp;quot;Disadvantageous displayed title&amp;quot; },&lt;br /&gt;
			displayed_title_disadvantageous_title = { fr = &amp;quot;Titre désavantageux&amp;quot;, en = &amp;quot;Disadvantageous title&amp;quot; },&lt;br /&gt;
			displayed_title_disadvantageous_text = { fr = &amp;quot;Le titre affiché de cet argument présente l&#039;argument de façon lacunaire ou caricaturée. Trouvez une formulation plus persuasive.&amp;quot;, en = &amp;quot;This title presents the argument in a lacunary or caricatured way. Find a more persuasive wording.&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	Argument = {&lt;br /&gt;
		files = {&lt;br /&gt;
			reorganize_banner_icon	= &amp;quot;wk-icon-confusion&amp;quot;,&lt;br /&gt;
			title_review_icon		= &amp;quot;wk-icon-title&amp;quot;,&lt;br /&gt;
			title_review_color		= &amp;quot;orange&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		forms = {&lt;br /&gt;
			arg_pro = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			arg_con = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
			justifications = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objections = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			edit_args_pro = &amp;quot;@Debate.forms.args_pro_edit_title&amp;quot;,&lt;br /&gt;
			edit_args_con = &amp;quot;@Debate.forms.args_con_edit_title&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			keywords_edit_title = { fr = &amp;quot;Mots-clés d&#039;argument&amp;quot;, en = &amp;quot;Argument keywords&amp;quot; },&lt;br /&gt;
			summary_edit_title = { fr = &amp;quot;Résumé&amp;quot;, en = &amp;quot;Summary&amp;quot; },&lt;br /&gt;
			quotes_edit_title = { fr = &amp;quot;Citations&amp;quot;, en = &amp;quot;Quotes&amp;quot; },&lt;br /&gt;
			references_edit_title = { fr = &amp;quot;Références&amp;quot;, en = &amp;quot;References&amp;quot; },&lt;br /&gt;
			sections_edit_title = { fr = &amp;quot;Rubriques d&#039;argument&amp;quot;, en = &amp;quot;Argument sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_title = { fr = &amp;quot;Interlangue d&#039;argument&amp;quot;, en = &amp;quot;Argument interlanguage&amp;quot; },&lt;br /&gt;
			detailed_debate_edit_title = { fr = &amp;quot;Débat détaillé&amp;quot;, en = &amp;quot;Detailed debate&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			search_by_keywords_title = &amp;quot;@Common.forms.search_by_keywords_title&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			justifications_form = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objections_form = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			new_arg_title = &amp;quot;@Debate.forms.new_arg_title&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		categories = {&lt;br /&gt;
			arguments = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			keywords_missing = { fr = &amp;quot;Arguments sans mot-clé&amp;quot;, en = &amp;quot;Arguments without keyword&amp;quot; },&lt;br /&gt;
			summary_missing = { fr = &amp;quot;Arguments sans résumé&amp;quot;, en = &amp;quot;Arguments without summary&amp;quot; },&lt;br /&gt;
			quotes_missing = { fr = &amp;quot;Arguments sans citation&amp;quot;, en = &amp;quot;Arguments without quote&amp;quot; },&lt;br /&gt;
			references_missing = { fr = &amp;quot;Arguments sans référence&amp;quot;, en = &amp;quot;Arguments without references&amp;quot; },&lt;br /&gt;
			justifications_missing = { fr = &amp;quot;Arguments sans justification&amp;quot;, en = &amp;quot;Arguments without justification&amp;quot; },&lt;br /&gt;
			objections_missing = { fr = &amp;quot;Arguments sans objection&amp;quot;, en = &amp;quot;Arguments without objection&amp;quot; },&lt;br /&gt;
			content_missing = { fr = &amp;quot;Arguments sans contenu&amp;quot;, en = &amp;quot;Arguments without content&amp;quot; },&lt;br /&gt;
			sections_missing = { fr = &amp;quot;Arguments sans rubrique&amp;quot;, en = &amp;quot;Arguments without section&amp;quot; },&lt;br /&gt;
			authors_missing = { fr = &amp;quot;Citations sans auteur&amp;quot;, en = &amp;quot;Quotes without author&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			title_very_short = { fr = &amp;quot;Titres d&#039;arguments très courts&amp;quot;, en = &amp;quot;Very short argument titles&amp;quot; },&lt;br /&gt;
			title_ends_with_dot = { fr = &amp;quot;Titres d&#039;arguments terminant par un point&amp;quot;, en = &amp;quot;Argument titles ending with a dot&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			has_detailed_debate = { fr = &amp;quot;Arguments faisant l&#039;objet d&#039;un débat détaillé&amp;quot;, en = &amp;quot;Arguments with a detailed debate&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			initialized = { fr = &amp;quot;Arguments initialisés&amp;quot;, en = &amp;quot;Initialized arguments&amp;quot; },&lt;br /&gt;
			uninitialized = { fr = &amp;quot;Arguments non initialisés&amp;quot;, en = &amp;quot;Uninitialized arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			displayed_titles_to_review = &amp;quot;@Debate.categories.displayed_titles_to_review&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		params = {&lt;br /&gt;
			keywords_field = &amp;quot;@Common.params.keywords_field&amp;quot;,&lt;br /&gt;
			search_type_field = &amp;quot;@Common.params.type_field&amp;quot;,&lt;br /&gt;
			search_type_value = &amp;quot;@Common.values.type_arguments_value&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			page = { fr = &amp;quot;page&amp;quot;, en = &amp;quot;page&amp;quot; },&lt;br /&gt;
			displayed_title = { fr = &amp;quot;titre-affiché&amp;quot;, en = &amp;quot;displayed-title&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justification_type_label = &amp;quot;@Common.labels.justification_label&amp;quot;,&lt;br /&gt;
			objection_type_label = &amp;quot;@Common.labels.objection_label&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		text = {&lt;br /&gt;
			edit_label = &amp;quot;@Common.labels.edit_label&amp;quot;,&lt;br /&gt;
			none_label = &amp;quot;@Common.labels.none_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			shortdesc_plain = &amp;quot;@Common.labels.site_title_text&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			keywords_label_text = &amp;quot;@Common.text.keywords_label_text&amp;quot;,&lt;br /&gt;
			keywords_edit_tt = { fr = &amp;quot;Modifier les mots-clés thématiques décrivant cet argument&amp;quot;, en = &amp;quot;Edit the thematic keywords describing this argument&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_title = { fr = &amp;quot;Résumé&amp;quot;, en = &amp;quot;Summary&amp;quot; },&lt;br /&gt;
			summary_edit_tt = { fr = &amp;quot;Modifier le résumé de l&#039;argument&amp;quot;, en = &amp;quot;Edit the argument summary&amp;quot; },&lt;br /&gt;
			none_summary_msg = { fr = &amp;quot;Aucun résumé n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No summary has been entered yet.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			quotes_title = { fr = &amp;quot;Citations&amp;quot;, en = &amp;quot;Quotes&amp;quot; },&lt;br /&gt;
			quotes_edit_tt = { fr = &amp;quot;Modifier les citations de l&#039;argument&amp;quot;, en = &amp;quot;Edit the argument quotes&amp;quot; },&lt;br /&gt;
			none_quotes_msg = { fr = &amp;quot;Aucune citation n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No quotes have been entered yet.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			references_title = { fr = &amp;quot;Références&amp;quot;, en = &amp;quot;References&amp;quot; },&lt;br /&gt;
			references_edit_tt = { fr = &amp;quot;Modifier les références bibliographiques, sitographiques ou vidéographiques étayant l&#039;argument&amp;quot;, en = &amp;quot;Edit the references supporting this argument&amp;quot; },&lt;br /&gt;
			none_references_msg = &amp;quot;@Debate.text.none_references_msg&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			justifications_title = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objections_title = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			justifications_edit_tt = {&lt;br /&gt;
				fr = &amp;quot;Modifier la liste des arguments ci-dessous&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Edit the list of justifications below&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_edit_tt = {&lt;br /&gt;
				fr = &amp;quot;Modifier la liste des objections ci-dessous&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Edit the list of objections below&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			justification_add_label = { fr = &amp;quot;Ajouter un argument&amp;quot;, en = &amp;quot;Add an argument&amp;quot; },&lt;br /&gt;
			objection_add_label = { fr = &amp;quot;Ajouter une objection&amp;quot;, en = &amp;quot;Add an objection&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justification_add_tt = {&lt;br /&gt;
				fr = &amp;quot;Ajouter une justification à l’argument : %s&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Add a justification to: %s&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objection_add_tt = {&lt;br /&gt;
				fr = &amp;quot;Ajouter une objection à l’argument : %s&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Add an objection to: %s&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			none_justifications_msg = { fr = &amp;quot;Aucun argument n&#039;a été entré pour le moment.&amp;quot;, en = &amp;quot;No arguments have been entered yet.&amp;quot; },&lt;br /&gt;
			none_objections_msg = { fr = &amp;quot;Aucune objection n&#039;a été entrée pour le moment.&amp;quot;, en = &amp;quot;No objections have been entered yet.&amp;quot; },&lt;br /&gt;
			none_content_msg = { fr = &amp;quot;Aucun contenu n&#039;a été entré.&amp;quot;, en = &amp;quot;No content has been entered.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			none_justifications_short_msg = { fr = &amp;quot;Aucun argument n&#039;a été entré.&amp;quot;, en = &amp;quot;No arguments have been entered yet.&amp;quot; },&lt;br /&gt;
			none_objections_short_msg = { fr = &amp;quot;Aucune objection n&#039;a été entrée.&amp;quot;, en = &amp;quot;No objections have been entered yet.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			reorganize_link_label = { fr = &amp;quot;réorganiser&amp;quot;, en = &amp;quot;reorganize&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			detailed_debate_title = { fr = &amp;quot;Débat détaillé&amp;quot;, en = &amp;quot;Detailed debate&amp;quot; },&lt;br /&gt;
			detailed_debate_edit_tt = { fr = &amp;quot;Modifier le débat sous-jacent à l&#039;argument : %s&amp;quot;, en = &amp;quot;Edit the underlying debate for: %s&amp;quot; },&lt;br /&gt;
			detailed_debate_label_text = { fr = &amp;quot;Débat détaillé : &amp;quot;, en = &amp;quot;Detailed debate: &amp;quot; },&lt;br /&gt;
			arg_is_debate_msg = { fr = &amp;quot;L&#039;argument « %s » fait l&#039;objet d&#039;un débat à part entière.&amp;quot;, en = &amp;quot;The argument “%s” has its own dedicated debate.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			title_too_short_msg = { fr = &amp;quot;Ce titre de page donne-t-il une idée claire et précise de l&#039;argument ?&amp;quot;, en = &amp;quot;Does this page title clearly describe the argument?&amp;quot; },&lt;br /&gt;
			title_ends_with_dot_msg = { fr = &amp;quot;Attention : ce titre de page se termine par un point.&amp;quot;, en = &amp;quot;Warning: this page title ends with a dot.&amp;quot; },&lt;br /&gt;
			rename_page_label = &amp;quot;@Common.labels.rename_page_label&amp;quot;,&lt;br /&gt;
			if_needed_msg = { fr = &amp;quot;si ce n&#039;est pas le cas.&amp;quot;, en = &amp;quot;if not.&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			breadcrumb_root_label = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
			rename_link_label = &amp;quot;@Common.text.rename_link_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			sections_edit_tt = { fr = &amp;quot;Modifier les rubriques de l&#039;argument&amp;quot;, en = &amp;quot;Edit the argument sections&amp;quot; },&lt;br /&gt;
			interlanguage_edit_tt = { fr = &amp;quot;Modifier les liens interlangues de l&#039;argument&amp;quot;, en = &amp;quot;Edit the interlanguage links&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			seo_description = {&lt;br /&gt;
				fr = &amp;quot;Arguments pour et contre : critiques et justifications, défenseurs et opposants.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Arguments for and against: critiques and justifications, defenders and opponents.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			arg_new_title_field_base = &amp;quot;@Debate.forms.new_arg_title&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			parent_used_in_debate_1 = { fr = &amp;quot;Cet argument est utilisé dans le débat %s&amp;quot;, en = &amp;quot;This argument is used in the debate %s&amp;quot; },&lt;br /&gt;
			parent_used_in_debate_n = { fr = &amp;quot;Cet argument est utilisé dans les débats %s&amp;quot;, en = &amp;quot;This argument is used in the debates %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_is_pro_in_1 = { fr = &amp;quot;Cet argument est un argument « pour » dans le débat %s&amp;quot;, en = &amp;quot;This argument is a “pro” argument in the debate %s&amp;quot; },&lt;br /&gt;
			parent_is_pro_in_n = { fr = &amp;quot;Cet argument est un argument « pour » dans les débats %s&amp;quot;, en = &amp;quot;This argument is a “pro” argument in the debates %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_is_con_in_1 = { fr = &amp;quot;Cet argument est un argument « contre » dans le débat %s&amp;quot;, en = &amp;quot;This argument is a “con” argument in the debate %s&amp;quot; },&lt;br /&gt;
			parent_is_con_in_n = { fr = &amp;quot;Cet argument est un argument « contre » dans les débats %s&amp;quot;, en = &amp;quot;This argument is a “con” argument in the debates %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_is_justification_of = { fr = &amp;quot;Cet argument est une justification de %s&amp;quot;, en = &amp;quot;This argument is a justification of %s&amp;quot; },&lt;br /&gt;
			parent_is_objection_to = { fr = &amp;quot;Cet argument est une objection à %s&amp;quot;, en = &amp;quot;This argument is an objection to %s&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			search_by_keyword_tt = &amp;quot;@Debate.text.search_by_keyword_tt&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			parent_debates_title_1 = { fr = &amp;quot;Débat parent&amp;quot;, en = &amp;quot;Parent debate&amp;quot; },&lt;br /&gt;
			parent_debates_title_n = { fr = &amp;quot;Débats parents&amp;quot;, en = &amp;quot;Parent debates&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			list_conjunction_text = &amp;quot;@Common.text.list_conjunction_text&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			init_warning_title = {&lt;br /&gt;
				fr = &amp;quot;Attention : le titre ci-dessus est-il suffisamment complet ? Renommez la page si besoin, puis cliquez sur « Oui, terminer ».&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Warning: is the title above complete enough? Rename the page if needed, then click “Yes, finish”.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			init_warning_intro = {&lt;br /&gt;
				fr = &amp;quot;Vous avez entré le titre « %s ». C&#039;est ce titre qui s&#039;affichera dans le débat.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;You entered the title “%s”. This is the title that will be shown in the debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			init_yes_finish_label = { fr = &amp;quot;Oui, terminer&amp;quot;, en = &amp;quot;Yes, finish&amp;quot; },&lt;br /&gt;
			init_yes_tt = { fr = &amp;quot;Terminer l&#039;ajout de l&#039;argument&amp;quot;, en = &amp;quot;Finish adding the argument&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			init_ok_text = {&lt;br /&gt;
				fr = &amp;quot;Argument ajouté à la page [[%s]]&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Argument added to the page [[%s]]&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			init_no_rename_label = { fr = &amp;quot;Non, renommer la page&amp;quot;, en = &amp;quot;No, rename the page&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			init_summary_pro = { fr = &amp;quot;/* Arguments « pour » */ Ajout de l’argument : &amp;quot;, en = &amp;quot;/* Pros */ Added argument: &amp;quot; },&lt;br /&gt;
			init_summary_con = { fr = &amp;quot;/* Arguments « contre » */ Ajout de l’argument : &amp;quot;, en = &amp;quot;/* Cons */ Added argument: &amp;quot; },&lt;br /&gt;
			init_summary_justif = { fr = &amp;quot;/* Justifications */ Ajout de l’argument : &amp;quot;, en = &amp;quot;/* Justifications */ Added argument: &amp;quot; },&lt;br /&gt;
			init_summary_obj = { fr = &amp;quot;/* Objections */ Ajout de l’objection : &amp;quot;, en = &amp;quot;/* Objections */ Added objection: &amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			unknown_author = &amp;quot;@Debate.text.unknown_author&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		urls = {&lt;br /&gt;
			home = &amp;quot;@Debate.urls.home&amp;quot;,&lt;br /&gt;
			home_label = &amp;quot;@Debate.urls.home_label&amp;quot;,&lt;br /&gt;
			wiki_base = &amp;quot;@Debate.urls.wiki_base&amp;quot;,&lt;br /&gt;
			discussion_prefix = &amp;quot;@Debate.urls.discussion_prefix&amp;quot;,&lt;br /&gt;
			category_prefix = &amp;quot;@Debate.urls.category_prefix&amp;quot;,&lt;br /&gt;
			portal_prefix = &amp;quot;@Debate.urls.portal_prefix&amp;quot;,&lt;br /&gt;
			property_prefix = &amp;quot;@Debate.urls.property_prefix&amp;quot;,&lt;br /&gt;
			sections_label = &amp;quot;@Debate.urls.sections_label&amp;quot;,&lt;br /&gt;
			arguments_label = { fr = &amp;quot;Arguments&amp;quot;, en = &amp;quot;Arguments&amp;quot; },&lt;br /&gt;
			justification_label = { fr = &amp;quot;Justification&amp;quot;, en = &amp;quot;Justification&amp;quot; },&lt;br /&gt;
			objection_label = { fr = &amp;quot;Objection&amp;quot;, en = &amp;quot;Objection&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
		props = {&lt;br /&gt;
			arg_number = { fr = &amp;quot;Numéro d&#039;argument&amp;quot;, en = &amp;quot;Argument number&amp;quot; },&lt;br /&gt;
			justif_list = { fr = &amp;quot;Liste des justifications&amp;quot;, en = &amp;quot;Justification list&amp;quot; },&lt;br /&gt;
			obj_list = { fr = &amp;quot;Liste des objections&amp;quot;, en = &amp;quot;Objection list&amp;quot; },&lt;br /&gt;
			detailed_debate = { fr = &amp;quot;Débat détaillé&amp;quot;, en = &amp;quot;Detailed debate&amp;quot; },&lt;br /&gt;
			argument_map = &amp;quot;@Common.labels.argument_map_label&amp;quot;,&lt;br /&gt;
			keyword = &amp;quot;@Common.props.keyword&amp;quot;,&lt;br /&gt;
			arg_page_name = { fr = &amp;quot;Nom de page d&#039;argument&amp;quot;, en = &amp;quot;Argument page name&amp;quot; },&lt;br /&gt;
			section = { fr = &amp;quot;Rubrique&amp;quot;, en = &amp;quot;Section&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			arg_pro = &amp;quot;@Common.labels.arg_pro_label&amp;quot;,&lt;br /&gt;
			arg_con = &amp;quot;@Common.labels.arg_con_label&amp;quot;,&lt;br /&gt;
			justif = &amp;quot;@Common.labels.justification_label&amp;quot;,&lt;br /&gt;
			obj = &amp;quot;@Common.labels.objection_label&amp;quot;,&lt;br /&gt;
	&lt;br /&gt;
			breadcrumb = { fr = &amp;quot;Fil d&#039;Ariane&amp;quot;, en = &amp;quot;Breadcrumb&amp;quot; },&lt;br /&gt;
			debate_name = { fr = &amp;quot;Nom de débat&amp;quot;, en = &amp;quot;Debate name&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			parent_debate = &amp;quot;@Debate.props.parent_debate&amp;quot;,&lt;br /&gt;
			parent_argument = { fr = &amp;quot;Argument parent&amp;quot;, en = &amp;quot;Parent argument&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			article_name = &amp;quot;@Common.props.article_name&amp;quot;,&lt;br /&gt;
			work_name = &amp;quot;@Common.props.work_name&amp;quot;,&lt;br /&gt;
			publishing_house = &amp;quot;@Common.props.publishing_house&amp;quot;,&lt;br /&gt;
			place_of_publication = &amp;quot;@Common.props.place_of_publication&amp;quot;,&lt;br /&gt;
			author = &amp;quot;@Common.props.author&amp;quot;,&lt;br /&gt;
			website_name = &amp;quot;@Common.props.website_name&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		seo = {&lt;br /&gt;
			title_separator		= &amp;quot;@Debate.seo.title_separator&amp;quot;,&lt;br /&gt;
			image				= &amp;quot;@Debate.seo.image&amp;quot;,&lt;br /&gt;
			image_alt			= &amp;quot;@Debate.seo.image_alt&amp;quot;,&lt;br /&gt;
			site_name			= &amp;quot;@Debate.seo.site_name&amp;quot;,&lt;br /&gt;
			twitter_site		= &amp;quot;@Debate.seo.twitter_site&amp;quot;,&lt;br /&gt;
			locale				= &amp;quot;@Debate.seo.locale&amp;quot;,&lt;br /&gt;
			author				= &amp;quot;@Debate.seo.author&amp;quot;,&lt;br /&gt;
			section 			= &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			--	Spécifique Argument&lt;br /&gt;
			title = {&lt;br /&gt;
				fr = &amp;quot;Argument : %s – Wikidébats&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Argument: %s – Wikidebates&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_mode = {&lt;br /&gt;
				fr = &amp;quot;Argument : %s&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Argument: %s&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			description = {&lt;br /&gt;
				fr = &amp;quot;Arguments pour et contre : %s. Critiques et justifications, défenseurs et opposants.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Arguments for and against %s: defence and criticism, justifications and objections, proofs and refutations, supporters and opponents.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			breadcrumb_home_label = &amp;quot;@Debate.seo.breadcrumb_home_label&amp;quot;,&lt;br /&gt;
			breadcrumb_arguments_label = &amp;quot;@Common.labels.arguments_label&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		banners = {&lt;br /&gt;
			argument_orphan_label = { fr = &amp;quot;Argument orphelin&amp;quot;, en = &amp;quot;Orphan argument&amp;quot; },&lt;br /&gt;
			argument_orphan_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			argument_orphan_icon = &amp;quot;wk-icon-orphan&amp;quot;,&lt;br /&gt;
			argument_orphan_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est [[:Catégorie:Arguments orphelins|orphelin]]. Il n&#039;a aucun argument ou débat parent.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is an [[:Category:Orphan arguments|orphan]]. It has no parent argument or debate.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_orphan_text = {&lt;br /&gt;
				fr = &amp;quot;Ne voyez-vous pas d&#039;argument auquel il pourrait servir de justification ou d&#039;objection ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Can you think of an argument for which it could serve as a justification or an objection?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_orphan_category = { fr = &amp;quot;Arguments orphelins&amp;quot;, en = &amp;quot;Orphan arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_incomplete_label = { fr = &amp;quot;Titre incomplet&amp;quot;, en = &amp;quot;Incomplete title&amp;quot; },&lt;br /&gt;
			title_incomplete_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_incomplete_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_incomplete_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments incomplets|incomplet]]. Il est ambigu ou incompréhensible à lui seul.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Incomplete argument titles|incomplete]]. It is ambiguous or not understandable on its own.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_incomplete_text = {&lt;br /&gt;
				fr =&lt;br /&gt;
					&amp;quot;[[Spécial:Renommage/%s|Réécrivez le titre]] sous forme d&#039;une phrase complète qui donne une idée claire et précise de l&#039;argument.&amp;quot;&lt;br /&gt;
					.. &#039;&amp;lt;div class=&amp;quot;bandeau-section wk-icon-before wk-icon-loupe mw-no-invert&amp;quot;&amp;gt;&#039;&lt;br /&gt;
					.. &amp;quot;Article détaillé : [[Aide:Corriger un titre d&#039;argument incomplet]]&amp;quot;&lt;br /&gt;
					.. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Rewrite the title]] as a complete sentence that clearly and precisely conveys the argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_incomplete_category = { fr = &amp;quot;Titres d&#039;arguments incomplets&amp;quot;, en = &amp;quot;Incomplete argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_disadvantageous_label = { fr = &amp;quot;Titre désavantageux&amp;quot;, en = &amp;quot;Disadvantageous title&amp;quot; },&lt;br /&gt;
			title_disadvantageous_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_disadvantageous_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_disadvantageous_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments désavantageux|désavantageux]]. Il présente l&#039;argument de façon lacunaire ou caricaturée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Disadvantageous argument titles|disadvantageous]]. It presents the argument in a partial or caricatured way.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_disadvantageous_text = {&lt;br /&gt;
				fr = &amp;quot;[[Spécial:Renommage/%s|Trouvez une formulation]] plus convaincante.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a more convincing phrasing]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_disadvantageous_category = { fr = &amp;quot;Titres d&#039;arguments désavantageux&amp;quot;, en = &amp;quot;Disadvantageous argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_unclear_label = { fr = &amp;quot;Titre peu clair&amp;quot;, en = &amp;quot;Unclear title&amp;quot; },&lt;br /&gt;
			title_unclear_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_unclear_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_unclear_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments peu clairs|peu clair]]. Il est confus, jargonnant, trop allusif ou télégraphique.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Unclear argument titles|unclear]]. It is confusing, jargon-heavy, too allusive, or too telegraphic.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_unclear_text = {&lt;br /&gt;
				fr = &amp;quot;[[Spécial:Renommage/%s|Trouvez une formulation]] plus claire.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Find a clearer phrasing]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_unclear_category = { fr = &amp;quot;Titres d&#039;arguments peu clairs&amp;quot;, en = &amp;quot;Unclear argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			title_too_long_label = { fr = &amp;quot;Titre trop long&amp;quot;, en = &amp;quot;Title too long&amp;quot; },&lt;br /&gt;
			title_too_long_color = &amp;quot;@Argument.files.title_review_color&amp;quot;,&lt;br /&gt;
			title_too_long_icon = &amp;quot;@Argument.files.title_review_icon&amp;quot;,&lt;br /&gt;
			title_too_long_title = {&lt;br /&gt;
				fr = &amp;quot;Le titre de cet argument est [[:Catégorie:Titres d&#039;arguments trop longs|trop long]]. Il contient plusieurs phrases ou est globalement trop développé.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The title of this argument is [[:Category:Overly long argument titles|too long]]. It contains multiple sentences or is overall too verbose.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_too_long_text = {&lt;br /&gt;
				fr = &amp;quot;[[Spécial:Renommage/%s|Réécrivez le titre]] sous forme d&#039;une phrase compacte qui résume de manière claire et précise l&#039;argument.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;[[Special:MovePage/%s|Rewrite the title]] as a compact sentence that clearly and precisely summarizes the argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			title_too_long_category = { fr = &amp;quot;Titres d&#039;arguments trop longs&amp;quot;, en = &amp;quot;Overly long argument titles&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			--	ARGUMENT WARNINGS (inchangé)&lt;br /&gt;
			argument_sensitive_label = { fr = &amp;quot;Argument sensible&amp;quot;, en = &amp;quot;Sensitive argument&amp;quot; },&lt;br /&gt;
			argument_sensitive_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			argument_sensitive_icon = &amp;quot;@Debate.banners.debate_sensitive_icon&amp;quot;,&lt;br /&gt;
			argument_sensitive_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est considéré [[:Catégorie:Arguments sensibles|sensible]]. Son contenu peut choquer.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is considered [[:Category:Sensitive arguments|sensitive]]. Its content may be shocking.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_sensitive_text = {&lt;br /&gt;
				fr = &amp;quot;Il n’a pas été écarté dans la mesure où sa présence est attestée dans l&#039;espace public et qu’il ne contrevient pas à la législation.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;It has not been removed insofar as its presence can be attested in the public space and it does not violate the law.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_sensitive_category = { fr = &amp;quot;Arguments sensibles&amp;quot;, en = &amp;quot;Sensitive arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			argument_fanciful_label = { fr = &amp;quot;Argument saugrenu&amp;quot;, en = &amp;quot;Fanciful argument&amp;quot; },&lt;br /&gt;
			argument_fanciful_color = &amp;quot;orange&amp;quot;,&lt;br /&gt;
			argument_fanciful_icon = &amp;quot;wk-icon-saugrenu&amp;quot;,&lt;br /&gt;
			argument_fanciful_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est considéré [[:Catégorie:Arguments saugrenus|saugrenu]]. Une citation est nécessaire afin d&#039;apporter la preuve de son existence dans l&#039;espace public.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is considered [[:Category:Fanciful arguments|fanciful]]. A citation is needed to prove that it exists in the public space.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_fanciful_text = {&lt;br /&gt;
				fr = &amp;quot;&#039;&#039;&#039;Rappel&#039;&#039;&#039; : suivant les [[Wikidébats:Principes fondateurs|principes fondateurs]], les arguments ne sont relayés sur Wikidébats que dans la mesure où leur présence peut être attestée dans l&#039;espace public.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: according to the [[Wikidebates:Founding Principles|founding principles]], arguments are only relayed insofar as their presence can be attested in the public space.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_fanciful_category = { fr = &amp;quot;Arguments saugrenus&amp;quot;, en = &amp;quot;Fanciful arguments&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
			argument_potentially_illegal_label = { fr = &amp;quot;Argument potentiellement illégal&amp;quot;, en = &amp;quot;Potentially illegal argument&amp;quot; },&lt;br /&gt;
			argument_potentially_illegal_color = &amp;quot;rouge&amp;quot;,&lt;br /&gt;
			argument_potentially_illegal_icon = &amp;quot;wk-icon-illegal&amp;quot;,&lt;br /&gt;
			argument_potentially_illegal_title = {&lt;br /&gt;
				fr = &amp;quot;Cet argument est [[:Catégorie:Arguments potentiellement illégaux|potentiellement illégal]].&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument is [[:Category:Potentially illegal arguments|potentially illegal]].&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_potentially_illegal_text = {&lt;br /&gt;
				fr = &amp;quot;&#039;&#039;&#039;Rappel&#039;&#039;&#039; : suivant les [[Wikidébats:Principes fondateurs|principes fondateurs]], tous les arguments ont leur place sur Wikidébats à condition qu&#039;ils ne contreviennent pas à la loi.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;&#039;&#039;&#039;Reminder&#039;&#039;&#039;: according to the [[Wikidebates:Founding Principles|founding principles]], all arguments may be included as long as they do not break the law.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			argument_potentially_illegal_category = { fr = &amp;quot;Arguments potentiellement illégaux&amp;quot;, en = &amp;quot;Potentially illegal arguments&amp;quot; },&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		subsection_banners = {&lt;br /&gt;
			summary_disadvantageous_label = { fr = &amp;quot;Le résumé de cet argument est désavantageux&amp;quot;, en = &amp;quot;This argument&#039;s summary is disadvantageous&amp;quot; },&lt;br /&gt;
			summary_disadvantageous_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de cet argument est désavantageux&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary is disadvantageous&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_disadvantageous_text = {&lt;br /&gt;
				fr = &amp;quot;L&#039;argument est présenté de façon lacunaire ou caricaturée. Une version plus convaincante doit être rédigée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The argument is presented in a partial or caricatured way. A more convincing version should be written.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_disadvantageous_category = { fr = &amp;quot;Résumés d&#039;arguments désavantageux&amp;quot;, en = &amp;quot;Disadvantageous argument summaries&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_to_be_written_label = { fr = &amp;quot;Le résumé de l&#039;argument est encore à rédiger&amp;quot;, en = &amp;quot;This argument&#039;s summary still needs to be written&amp;quot; },&lt;br /&gt;
			summary_to_be_written_image = &amp;quot;@Debate.banners.debate_sensitive_icon&amp;quot;,&lt;br /&gt;
			summary_to_be_written_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de l&#039;argument est encore à rédiger&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary still needs to be written&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_be_written_text = {&lt;br /&gt;
				fr = &amp;quot;Aucun contenu n&#039;a été apporté ou le texte entré correspond à une prise de notes. Et si vous le rédigiez ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;No content has been added, or the text is just notes. How about writing it properly?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_be_written_category = { fr = &amp;quot;Résumés d&#039;arguments à rédiger&amp;quot;, en = &amp;quot;Argument summaries to be written&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_unclear_label = { fr = &amp;quot;Le résumé de cet argument n&#039;est pas assez clair&amp;quot;, en = &amp;quot;This argument&#039;s summary is not clear enough&amp;quot; },&lt;br /&gt;
			summary_unclear_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de cet argument n&#039;est pas assez clair&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary is not clear enough&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_unclear_text = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé est confus, jargonnant, trop complexe ou trop télégraphique. Il doit être rendu plus compréhensible.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary is confusing, jargon-heavy, too complex, or too telegraphic. It should be made easier to understand.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_unclear_category = { fr = &amp;quot;Résumés d&#039;arguments peu clairs&amp;quot;, en = &amp;quot;Unclear argument summaries&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_too_long_label = { fr = &amp;quot;Le résumé de cet argument est trop long&amp;quot;, en = &amp;quot;This argument&#039;s summary is too long&amp;quot; },&lt;br /&gt;
			summary_too_long_title = {&lt;br /&gt;
				fr = &amp;quot;Le résumé de cet argument est trop long&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This argument&#039;s summary is too long&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_too_long_text = {&lt;br /&gt;
				fr = &amp;quot;Il comporte des redondances, des phrases lourdes, ou est globalement trop développé. Le texte doit être allégé.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;It contains redundancies, heavy phrasing, or is overall too verbose. The text should be shortened.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_too_long_category = { fr = &amp;quot;Résumés d&#039;arguments trop longs&amp;quot;, en = &amp;quot;Overlong argument summaries&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_to_separate_label = { fr = &amp;quot;Ce résumé mélange plusieurs arguments&amp;quot;, en = &amp;quot;This summary mixes several arguments&amp;quot; },&lt;br /&gt;
			summary_to_separate_title = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé mélange plusieurs arguments&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary mixes several arguments&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_separate_text = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé mêle des arguments qu&#039;il s&#039;agit de dissocier. Créez une page spécifique pour chacun d&#039;eux.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary mixes arguments that should be separated. Create a dedicated page for each of them.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_to_separate_category = { fr = &amp;quot;Résumés d&#039;arguments à séparer&amp;quot;, en = &amp;quot;Argument summaries to separate&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_style_to_review_label = { fr = &amp;quot;Le style de ce résumé est à revoir&amp;quot;, en = &amp;quot;This summary&#039;s style should be reviewed&amp;quot; },&lt;br /&gt;
			summary_style_to_review_title = {&lt;br /&gt;
				fr = &amp;quot;Le style de ce résumé est à revoir&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary&#039;s style should be reviewed&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_style_to_review_text = {&lt;br /&gt;
				fr = &amp;quot;Ce résumé est rédigé de façon personnelle (« Je pense que… ») ou trop familière. Il doit être réécrit.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This summary is written in a personal (“I think…”) or overly casual way. It should be rewritten.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			summary_style_to_review_category = { fr = &amp;quot;Résumés d&#039;arguments dont le style est à revoir&amp;quot;, en = &amp;quot;Argument summaries with style to review&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			summary_to_separate_alias = { fr = &amp;quot;Arguments à séparer&amp;quot;, en = &amp;quot;Arguments to separate banner&amp;quot; },&lt;br /&gt;
			summary_disadvantageous_alias = { fr = &amp;quot;Résumé désavantageux&amp;quot;, en = &amp;quot;Disadvantageous summary banner&amp;quot; },&lt;br /&gt;
			summary_style_to_review_alias = { fr = &amp;quot;Style à revoir&amp;quot;, en = &amp;quot;Style to review banner&amp;quot; },&lt;br /&gt;
			summary_to_be_written_alias = { fr = &amp;quot;Résumé à rédiger&amp;quot;, en = &amp;quot;Summary to be written banner&amp;quot; },&lt;br /&gt;
			summary_too_long_alias = { fr = &amp;quot;Résumé trop long&amp;quot;, en = &amp;quot;Too long summary banner&amp;quot; },&lt;br /&gt;
			summary_unclear_alias = { fr = &amp;quot;Résumé peu clair&amp;quot;, en = &amp;quot;Unclear summary banner&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justifications_to_reorganize_alias		= { fr = &amp;quot;Justifications à réorganiser&amp;quot;, en = &amp;quot;Justifications to reorganize&amp;quot; },&lt;br /&gt;
			objections_to_reorganize_alias			= { fr = &amp;quot;Objections à réorganiser&amp;quot;, en = &amp;quot;Objections to reorganize&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			justifications_to_reorganize_label		= {&lt;br /&gt;
				fr = &amp;quot;Justifications à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Justifications to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			justifications_to_reorganize_title		= {&lt;br /&gt;
				fr = &amp;quot;Cette sous-partie est à&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This subsection needs to be&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			justifications_to_reorganize_text		= {&lt;br /&gt;
				fr = &amp;quot;Des arguments sont redondants, sont à démêler, ou la structure peut être clarifiée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some arguments are redundant, intertwined, or the structure needs clarification.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			justifications_to_reorganize_category	= {&lt;br /&gt;
				fr = &amp;quot;Justifications à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Justifications to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
	&lt;br /&gt;
			objections_to_reorganize_label			= {&lt;br /&gt;
				fr = &amp;quot;Objections à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Objections to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_to_reorganize_title			= {&lt;br /&gt;
				fr = &amp;quot;Cette sous-partie est à&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This subsection needs to be&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_to_reorganize_text			= {&lt;br /&gt;
				fr = &amp;quot;Des objections sont redondantes, sont à démêler, ou la structure peut être clarifiée.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some objections are redundant, intertwined, or the structure needs clarification.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			objections_to_reorganize_category		= {&lt;br /&gt;
				fr = &amp;quot;Objections à réorganiser&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Objections to reorganize&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_too_short_label		= { fr = &amp;quot;Citation trop courte&amp;quot;, en = &amp;quot;Too short quote&amp;quot; },&lt;br /&gt;
			quote_too_short_title		= { fr = &amp;quot;Cette citation est trop courte&amp;quot;, en = &amp;quot;This quote is too short&amp;quot; },&lt;br /&gt;
			quote_too_short_text		= {&lt;br /&gt;
				fr = &amp;quot;L&#039;extrait retenu ne contient pas de raisonnement ni d&#039;exemple. Sélectionnez un extrait plus long ou supprimez la citation.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The selected excerpt contains no reasoning or example. Choose a longer excerpt or remove the quote.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_too_short_category	= { fr = &amp;quot;Citations trop courtes&amp;quot;, en = &amp;quot;Too short quotes&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			quote_too_long_label		= { fr = &amp;quot;Citation trop longue&amp;quot;, en = &amp;quot;Too long quote&amp;quot; },&lt;br /&gt;
			quote_too_long_title		= { fr = &amp;quot;Cette citation est trop longue&amp;quot;, en = &amp;quot;This quote is too long&amp;quot; },&lt;br /&gt;
			quote_too_long_text			= {&lt;br /&gt;
				fr = &amp;quot;L&#039;extrait retenu est trop long ou mêle des arguments distincts. Supprimez les passages superflus, si besoin en utilisant les crochets [...], ou découpez cet extrait en plusieurs citations centrées chacune sur un argument.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;The selected excerpt is too long or mixes distinct arguments. Remove unnecessary passages (use brackets [...] if needed), or split it into several quotes, each focused on one argument.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_too_long_category		= { fr = &amp;quot;Citations trop longues&amp;quot;, en = &amp;quot;Too long quotes&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			quote_ref_incomplete_label		= { fr = &amp;quot;Référence de la citation incomplète&amp;quot;, en = &amp;quot;Incomplete quote reference&amp;quot; },&lt;br /&gt;
			quote_ref_incomplete_title		= { fr = &amp;quot;La référence de la citation est incomplète&amp;quot;, en = &amp;quot;The quote reference is incomplete&amp;quot; },&lt;br /&gt;
			quote_ref_incomplete_text		= {&lt;br /&gt;
				fr = &amp;quot;Certains champs importants (auteur, titre, date, ...) n&#039;ont pas été remplis. Et si vous les complétiez ?&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Some important fields (author, title, date, ...) have not been filled in. How about completing them?&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			quote_ref_incomplete_category	= { fr = &amp;quot;Références de citations incomplètes&amp;quot;, en = &amp;quot;Incomplete quote references&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
			dead_link_label = &amp;quot;@Debate.subsections.dead_link_label&amp;quot;,&lt;br /&gt;
			dead_link_title = &amp;quot;@Debate.subsections.dead_link_label&amp;quot;,&lt;br /&gt;
			dead_link_text = &amp;quot;@Debate.subsections.dead_link_text&amp;quot;,&lt;br /&gt;
			dead_link_category = &amp;quot;@Debate.subsections.dead_link_category&amp;quot;,&lt;br /&gt;
			&lt;br /&gt;
			reference_quality_insufficient_label = &amp;quot;@Debate.subsections.reference_quality_insufficient_label&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_title = &amp;quot;@Debate.subsections.reference_quality_insufficient_label&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_text = &amp;quot;@Debate.subsections.reference_quality_insufficient_text&amp;quot;,&lt;br /&gt;
			reference_quality_insufficient_category = &amp;quot;@Debate.subsections.reference_quality_insufficient_category&amp;quot;,&lt;br /&gt;
			&lt;br /&gt;
			reference_incomplete_label = &amp;quot;@Debate.subsections.reference_incomplete_label&amp;quot;,&lt;br /&gt;
			reference_incomplete_title = &amp;quot;@Debate.subsections.reference_incomplete_label&amp;quot;,&lt;br /&gt;
			reference_incomplete_text = &amp;quot;@Debate.subsections.reference_incomplete_text&amp;quot;,&lt;br /&gt;
			reference_incomplete_category = &amp;quot;@Debate.subsections.reference_incomplete_category&amp;quot;,&lt;br /&gt;
			&lt;br /&gt;
			references_too_many_label = {&lt;br /&gt;
				fr = &amp;quot;Il y a trop de références&amp;quot;,&lt;br /&gt;
				en = &amp;quot;There are too many references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_too_many_title = &amp;quot;@Argument.subsection_banners.references_too_many_label&amp;quot;,&lt;br /&gt;
			references_too_many_text = {&lt;br /&gt;
				fr = &amp;quot;Cette rubrique ne devrait pas dépasser une dizaine de références. Sélectionnez avant tout les références incontournables.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;This section should not exceed about ten references. Prioritize the most essential sources.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_too_many_category = {&lt;br /&gt;
				fr = &amp;quot;Trop de références&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Too many references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_many_incomplete_label = {&lt;br /&gt;
				fr = &amp;quot;De nombreuses références sont incomplètes&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Many references are incomplete&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_many_incomplete_title = &amp;quot;@Argument.subsection_banners.references_many_incomplete_label&amp;quot;,&lt;br /&gt;
			references_many_incomplete_text = {&lt;br /&gt;
				fr = &amp;quot;Il manque des informations importantes à trop de références. Celles-ci doivent être complétées.&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Too many references lack important information. They need to be completed.&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
			references_many_incomplete_category = {&lt;br /&gt;
				fr = &amp;quot;Nombreuses références incomplètes&amp;quot;,&lt;br /&gt;
				en = &amp;quot;Many incomplete references&amp;quot;,&lt;br /&gt;
			},&lt;br /&gt;
&lt;br /&gt;
			displayed_title_too_long_label = &amp;quot;@Debate.subsections.displayed_title_too_long_label&amp;quot;,&lt;br /&gt;
			displayed_title_too_long_title = &amp;quot;@Debate.subsections.displayed_title_too_long_title&amp;quot;,&lt;br /&gt;
			displayed_title_too_long_text = &amp;quot;@Debate.subsections.displayed_title_too_long_text&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			displayed_title_unclear_label = &amp;quot;@Debate.subsections.displayed_title_unclear_label&amp;quot;,&lt;br /&gt;
			displayed_title_unclear_title = &amp;quot;@Debate.subsections.displayed_title_unclear_title&amp;quot;,&lt;br /&gt;
			displayed_title_unclear_text = &amp;quot;@Debate.subsections.displayed_title_unclear_text&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
			displayed_title_disadvantageous_label = &amp;quot;@Debate.subsections.displayed_title_disadvantageous_label&amp;quot;,&lt;br /&gt;
			displayed_title_disadvantageous_title = &amp;quot;@Debate.subsections.displayed_title_disadvantageous_title&amp;quot;,&lt;br /&gt;
			displayed_title_disadvantageous_text = &amp;quot;@Debate.subsections.displayed_title_disadvantageous_text&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	ArgumentMap = {&lt;br /&gt;
		props = {&lt;br /&gt;
			arg_map = &amp;quot;@Common.labels.argument_map_label&amp;quot;,&lt;br /&gt;
			pro_list = &amp;quot;@Debate.props.pro_list&amp;quot;,&lt;br /&gt;
			con_list = &amp;quot;@Debate.props.con_list&amp;quot;,&lt;br /&gt;
			justifs_list = &amp;quot;@Argument.props.justif_list&amp;quot;,&lt;br /&gt;
			objs_list = &amp;quot;@Argument.props.obj_list&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
		text = {&lt;br /&gt;
			arg_map_pro_label = &amp;quot;@Debate.text.arg_map_pro_label&amp;quot;,&lt;br /&gt;
			arg_map_con_label = &amp;quot;@Debate.text.arg_map_con_label&amp;quot;,&lt;br /&gt;
			justifs_label = &amp;quot;@Common.labels.justifications_label&amp;quot;,&lt;br /&gt;
			objs_label = &amp;quot;@Common.labels.objections_label&amp;quot;,&lt;br /&gt;
			none_pro_args_msg_short = &amp;quot;@Debate.text.none_pro_args_msg_short&amp;quot;,&lt;br /&gt;
			none_con_args_msg_short = &amp;quot;@Debate.text.none_con_args_msg_short&amp;quot;,&lt;br /&gt;
			none_justifications_msg = &amp;quot;@Argument.text.none_justifications_msg&amp;quot;,&lt;br /&gt;
			none_objections_msg = &amp;quot;@Argument.text.none_objections_msg&amp;quot;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Form:References&amp;diff=10201</id>
		<title>Form:References</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Form:References&amp;diff=10201"/>
		<updated>2026-03-16T16:45:19Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Ceci est le formulaire “Références”.&lt;br /&gt;
Pour créer une page avec ce formulaire, entrez le nom de la page ci-dessous ;&lt;br /&gt;
si une page avec ce nom existe déjà, vous serez dirigé vers un formulaire pour l’éditer.&lt;br /&gt;
&lt;br /&gt;
{{#forminput: form = References&lt;br /&gt;
| button text = Add or edit references&lt;br /&gt;
| autocomplete on category = Arguments&lt;br /&gt;
| size = 100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Argument forms]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{{info&lt;br /&gt;
| create title = Edit the references of the argument&lt;br /&gt;
| edit title = Edit the references of the argument&lt;br /&gt;
}}}&lt;br /&gt;
{{{for template|Argument}}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|initialisation|hidden}}}&lt;br /&gt;
{{{field|title-warnings|hidden}}}&lt;br /&gt;
{{{field|argument-warnings|hidden}}}&lt;br /&gt;
{{{field|summary-warnings|hidden}}}&lt;br /&gt;
{{{field|summary|hidden}}}&lt;br /&gt;
{{{field|quotes|hidden|holds template}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-style: italic; font-size: 105%;&amp;quot;&amp;gt;Mention in the headings below the references that support and elaborate on this argument. Add them in the section [[#Bibliography|Bibliography]] when it is a paper text, [[#Webliography|Webliography]] when it is an article published on a site, [[#Videography|Videography]] when it is a video available online.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Help banner&lt;br /&gt;
|text=&#039;&#039;&#039;To add a reference&#039;&#039;&#039;: click on the “Add a reference” button and fill in the proposed fields.&lt;br /&gt;
|icon=Bibliography&lt;br /&gt;
}}{{Help banner&lt;br /&gt;
|text=&#039;&#039;&#039;To delete a reference&#039;&#039;&#039;: click on the cross in the black circle that appears at the top right of the reference.&lt;br /&gt;
|icon=Remove&lt;br /&gt;
}}{{Help banner&lt;br /&gt;
|text=&#039;&#039;&#039;To change the order of the references&#039;&#039;&#039;: click on the dotted bar to the left of the reference you want to move, hold down the click, place your cursor at the desired location and release the click .&lt;br /&gt;
|icon=Move&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-bottom: 1em; font-style: italic;&amp;quot; class=&amp;quot;nomobile&amp;quot;&amp;gt;Briefly describe the changes you made in the “Edit summary” field at the bottom of this page, and click the “Save” button.&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;zone-references&amp;quot;&amp;gt;&lt;br /&gt;
{{Form banner&lt;br /&gt;
|text={{{field|reference-warnings|input type=checkboxes|values=Too many references, Many incomplete references}}}&lt;br /&gt;
|help=Depending on the box you check here, you will add a warning message indicating the gaps in the references:&lt;br /&gt;
* &#039;&#039;&#039;Too many references&#039;&#039;&#039;: the bibliography lists more than ten publications;&lt;br /&gt;
* &#039;&#039;&#039;Many incomplete references&#039;&#039;&#039;: important information (publisher, year, etc.) is missing from the publications.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.4em;&amp;quot;&amp;gt;[[File: Bibliography.svg | 17px | text-bottom | link= | alt=Bibliography]]&amp;lt;/span&amp;gt;Bibliography&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{field|bibliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.4em;&amp;quot;&amp;quot;&amp;gt;[[File: Webliography.svg | 19px | link= | alt=Webliography]]&amp;lt;/span&amp;gt;Webliography&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{field|webliography|hidden|holds template}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;&amp;lt;span style=&amp;quot;margin-right: 0.4em;&amp;quot;&amp;gt;[[File: Videography.svg | 23px | link= | alt=Videography]]&amp;lt;/span&amp;gt;Videography&amp;lt;/h2&amp;gt;&lt;br /&gt;
{{{field|videography|hidden|holds template}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;{{{field|justification-warnings|hidden}}}&lt;br /&gt;
{{{field|justifications|hidden|holds template}}}&lt;br /&gt;
{{{field|objection-warnings|hidden}}}&lt;br /&gt;
{{{field|objections|hidden|holds template}}}&lt;br /&gt;
{{{field|detailed-debate|hidden}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{{field|sections|hidden}}}&lt;br /&gt;
{{{field|keywords|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Quote|add button text=Add a quote|multiple|embed in field=Argument[quotes]}}}&lt;br /&gt;
{{{field|quote|hidden}}}&lt;br /&gt;
{{{field|authors|hidden}}}&lt;br /&gt;
{{{field|article|hidden}}}&lt;br /&gt;
{{{field|work|hidden}}}&lt;br /&gt;
{{{field|volume|hidden}}}&lt;br /&gt;
{{{field|number|hidden}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|location|hidden}}}&lt;br /&gt;
{{{field|publisher|hidden}}}&lt;br /&gt;
{{{field|place|hidden}}}&lt;br /&gt;
{{{field|date|hidden}}}&lt;br /&gt;
{{{field|link|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Bibliographical reference|multiple|add button text=Add a bibliographical reference|embed in field=Argument[bibliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Enter here the full name(s) of the author(s) of the reference in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|mandatory|placeholder=ex: Virginia Woolf, Ernest Hemingway, J.K. Rowling}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Article title&lt;br /&gt;
|help = Enter the full title of the article or webpage here.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this article has already been cited, all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|article|input type=tokens|max values=1|property=Article name|delimiter=@@@|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Book, journal or site title&lt;br /&gt;
|help = Enter here the title of the book, newspaper, magazine or the name of the site in which this reference is published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this work, this journal or this site has already been registered in Wikidebates, then all you have to do is enter part of its title. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|work|input type=tokens|max values=1|delimiter=@@@|property=Work name|placeholder=ex: New York Times}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal volume&lt;br /&gt;
|help = If this reference is published in a scientific or academic journal in different volumes, indicate the number of the volume concerned here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|volume|input type=text|placeholder=ex: 34}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Journal number&lt;br /&gt;
|help = If this reference is published in a numbered periodical (review, magazine), enter the number of this periodical here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|number|input type=text|placeholder=ex: 113}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Location in the book&lt;br /&gt;
|help = If only part of the book deals with the argument, you can specify it here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|location|placeholder=ex: chapter 6}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Publishing house&lt;br /&gt;
|help = In the case of a book, enter here the name of its publishing house (not to be confused with the collection).&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this publishing house has already been registered in Wikidebates, then all you have to do is enter part of its name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|publisher|input type=tokens|max values=1|property=Publishing house|placeholder=ex: HarperCollins}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Place of publication&lt;br /&gt;
|help = In the case of a book, enter here the name of the city in which it was published.&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If this city has already been registered in Wikidebates, then all you have to do is enter the first letters of its surname or first name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|place|input type=tokens|max values=1|property=Place of publication|placeholder=ex: Paris}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Enter here the date on which this text appeared (month/day/year).&lt;br /&gt;
|additional=&#039;&#039;&#039;Note&#039;&#039;&#039;: For a book that has been published multiple times, note the publication date of the book you are using for this citation.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = If this publication is available online, copy and paste its web address here.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|placeholder=ex: https//en.wikisource.org/wiki/An_Essay_Concerning_Humane_Understanding}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If the reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Unreliable source&#039;&#039;&#039;: …&lt;br /&gt;
* &#039;&#039;&#039;Off topic&#039;&#039;&#039; : …&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Web reference|multiple|add button text=Add a web reference|embed in field=Argument[webliography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Paste here the web address of the page you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|mandatory|placeholder=ex: https//en.wikipedia.org/wiki/Existence_of_God}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Page name&lt;br /&gt;
|help = Enter here the title of the web article you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|page|input type=text|placeholder=ex: Shakespeare&#039;s Influence on Other Writers}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author(s)&lt;br /&gt;
|help = Here you can enter the full name(s) of the author(s) of the article in the form “First name Last name”. For each author, click on it to validate it.&lt;br /&gt;
&lt;br /&gt;
|additional=&#039;&#039;&#039;Tip&#039;&#039;&#039;: If an author has already been quoted, just enter the first letters of his name. You will then only have to select it from the drop-down list.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=tokens|property=Author|placeholder=ex: Virginia Woolf, Ernest Hemingway}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Website name&lt;br /&gt;
|help = Here you can specify the name of the site (Wikipedia, The Huffington Post, etc.) on which this article is found.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|site|input type=tokens|max values=1|property=Website name|placeholder=ex: The Huffington Post}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Release date&lt;br /&gt;
|help = Here you can enter the date the article was posted (month/day/year).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|date|input type=text|placeholder=ex: 06/24/1998}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Broken link&#039;&#039;&#039;: The page no longer exists at this address. By checking this box, you indicate that the link needs to be updated (if this page is no longer referenced in search engines, an archive may be available at [https://archive.org Archive.org] by example).&lt;br /&gt;
* &#039;&#039;&#039;Reference of insufficient quality&#039;&#039;&#039;: More rigorous or better argued articles can be referenced for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the link has been entered. Checking this box indicates that at least the page name is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Video reference|multiple|add button text=Add a video reference|embed in field=Argument[videography]}}}&lt;br /&gt;
{| class=&amp;quot;formtable&amp;quot;&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Video title&lt;br /&gt;
| required-field=yes&lt;br /&gt;
|help = Enter here the title of the video (documentary, movie, TV show, music video, etc.) that you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|title|input type=text|mandatory|placeholder=ex: Can this video get 1 million dislikes?}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Author&lt;br /&gt;
|help = Enter the name of the video&#039;s author here (director, youtuber, etc.).&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|authors|input type=text|placeholder=ex: PewDiePie}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Link&lt;br /&gt;
|help = Paste here the web address of the video you want to reference for this argument.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|link|input type=text|placeholder=ex: https//www.youtube.com/watch?v=IGh663zSdgw}}}&lt;br /&gt;
|-&lt;br /&gt;
! {{Parameter help&lt;br /&gt;
| parameter = Warning(s)&lt;br /&gt;
|help = If this reference poses a problem, report it by checking the corresponding box(es):&lt;br /&gt;
* &#039;&#039;&#039;Dead link&#039;&#039;&#039;: The video is no longer available at this address. By checking this box, you are signaling that the link should be updated or removed.&lt;br /&gt;
* &#039;&#039;&#039;Insufficient quality reference&#039;&#039;&#039;: More impactful or better argued video content can be found for this argument.&lt;br /&gt;
* &#039;&#039;&#039;Incomplete reference&#039;&#039;&#039;: Only the title has been entered. Checking this box indicates that the video link is missing.&lt;br /&gt;
}}&lt;br /&gt;
| {{{field|warnings|input type=checkboxes|values=Broken link, Insufficient quality reference, Incomplete reference}}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Justification|multiple|embed in field=Argument[justifications]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
{{{for template|Objection|multiple|embed in field=Argument[objections]}}}&lt;br /&gt;
{{{field|page|hidden}}}&lt;br /&gt;
{{{field|displayed-title|hidden}}}&lt;br /&gt;
{{{field|warnings|hidden}}}&lt;br /&gt;
{{{end template}}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;editOptions&amp;quot; style=&amp;quot;margin-top: 1.5em&amp;quot;&amp;gt;{{{standard input|summary|label=Edit summary:}}}&lt;br /&gt;
{{Edit summary&lt;br /&gt;
|tags=Added reference, Reorganization, Completed reference, Correction, Deletion&lt;br /&gt;
}}&lt;br /&gt;
{{{standard input|minor edit}}}{{{standard input|watch}}}&lt;br /&gt;
{{{standard input|save}}}{{{standard input|cancel}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Template:Wikipedia_link_hover&amp;diff=10200</id>
		<title>Template:Wikipedia link hover</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Template:Wikipedia_link_hover&amp;diff=10200"/>
		<updated>2026-03-16T16:05:41Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category: Templates]]&lt;br /&gt;
{{#template_params:}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;interwikiextract&amp;quot;&amp;gt;{{#InterwikiExtract: {{{1|}}}&lt;br /&gt;
| wiki = wikipedia&lt;br /&gt;
| format = text&lt;br /&gt;
| intro = true&lt;br /&gt;
| sentences = 3&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Source : [{{fullurl:frwikipedia: {{{1|}}}}} Wikipédia]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
	<entry>
		<id>https://en.wikidebates.org/w/index.php?title=Category:Pages_with_short_description&amp;diff=10199</id>
		<title>Category:Pages with short description</title>
		<link rel="alternate" type="text/html" href="https://en.wikidebates.org/w/index.php?title=Category:Pages_with_short_description&amp;diff=10199"/>
		<updated>2026-03-16T12:31:22Z</updated>

		<summary type="html">&lt;p&gt;Wikinuma: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Maintenance]]&lt;br /&gt;
__HIDDENCAT__&lt;/div&gt;</summary>
		<author><name>Wikinuma</name></author>
	</entry>
</feed>