<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="mni">
	<id>https://mni.bharatpedia.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EA%AF%91%EA%AF%8B%EA%AF%A5%EA%AF%A1%EA%AF%95+%EA%AF%83%EA%AF%89%EA%AF%A5%EA%AF%A1</id>
	<title>ꯚꯥꯔꯠꯄꯤꯗꯤꯌꯥ - ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯅ ꯇꯧꯈꯤꯕꯁꯤꯡ [mni]</title>
	<link rel="self" type="application/atom+xml" href="https://mni.bharatpedia.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%EA%AF%91%EA%AF%8B%EA%AF%A5%EA%AF%A1%EA%AF%95+%EA%AF%83%EA%AF%89%EA%AF%A5%EA%AF%A1"/>
	<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/wiki/%EA%AF%91%EA%AF%88%EA%AF%9F%EA%AF%85%EA%AF%95:Contributions/%EA%AF%91%EA%AF%8B%EA%AF%A5%EA%AF%A1%EA%AF%95_%EA%AF%83%EA%AF%89%EA%AF%A5%EA%AF%A1"/>
	<updated>2026-08-23T21:24:33Z</updated>
	<subtitle>ꯁꯤꯖꯤꯟꯅꯔꯤꯕꯅ ꯇꯧꯈꯤꯕꯁꯤꯡ</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=%EA%AF%81%EA%AF%A4%EA%AF%96%EA%AF%A4%EA%AF%9F%EA%AF%85%EA%AF%94%EA%AF%A4%EA%AF%95:WikiDwarf&amp;diff=10663</id>
		<title>ꯁꯤꯖꯤꯟꯅꯔꯤꯕ:WikiDwarf</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=%EA%AF%81%EA%AF%A4%EA%AF%96%EA%AF%A4%EA%AF%9F%EA%AF%85%EA%AF%94%EA%AF%A4%EA%AF%95:WikiDwarf&amp;diff=10663"/>
		<updated>2021-12-30T16:39:18Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;{{Userpage}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Userpage}}&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=Module:Documentation/config&amp;diff=10664</id>
		<title>Module:Documentation/config</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=Module:Documentation/config&amp;diff=10664"/>
		<updated>2021-12-30T12:56:22Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;---------------------------------------------------------------------------------------------------- -- --                               Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----------------------------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                               Configuration for Module:Documentation&lt;br /&gt;
--&lt;br /&gt;
-- Here you can set the values of the parameters and messages used in Module:Documentation to&lt;br /&gt;
-- localise it to your wiki and your language. Unless specified otherwise, values given here&lt;br /&gt;
-- should be string values.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Do not edit this line.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Protection template configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;protection-reason-edit&#039;]&lt;br /&gt;
-- The protection reason for edit-protected templates to pass to&lt;br /&gt;
-- [[Module:Protection banner]].&lt;br /&gt;
cfg[&#039;protection-reason-edit&#039;] = &#039;template&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox notice configuration&lt;br /&gt;
--&lt;br /&gt;
-- On sandbox pages the module can display a template notifying users that the current page is a&lt;br /&gt;
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a&lt;br /&gt;
-- sandbox or not based on the value of cfg[&#039;sandbox-subpage&#039;]. The following settings configure the&lt;br /&gt;
-- messages that the notices contains.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-notice-image&#039;]&lt;br /&gt;
-- The image displayed in the sandbox notice.&lt;br /&gt;
cfg[&#039;sandbox-notice-image&#039;] = &#039;[[File:Sandbox.svg|50px|alt=|link=]]&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-template&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-module&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-other&#039;]&lt;br /&gt;
-- The page type of the sandbox page. The message that is displayed depends on the current subject&lt;br /&gt;
-- namespace. This message is used in either cfg[&#039;sandbox-notice-blurb&#039;] or&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-blurb&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-template&#039;] = &#039;[[ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ:Template test cases|template sandbox]] page&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-module&#039;] = &#039;[[ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ:Template test cases|module sandbox]] page&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-other&#039;] = &#039;sandbox page&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-display&#039;]&lt;br /&gt;
-- Either cfg[&#039;sandbox-notice-blurb&#039;] or cfg[&#039;sandbox-notice-diff-blurb&#039;] is the opening sentence&lt;br /&gt;
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page&lt;br /&gt;
-- type, which is either cfg[&#039;sandbox-notice-pagetype-template&#039;],&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-module&#039;] or cfg[&#039;sandbox-notice-pagetype-other&#039;] depending what&lt;br /&gt;
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between&lt;br /&gt;
-- the sandbox and the main template. The display value of the diff link is set by &lt;br /&gt;
-- cfg[&#039;sandbox-notice-compare-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-blurb&#039;] = &#039;This is the $1 for $2.&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-diff-blurb&#039;] = &#039;This is the $1 for $2 ($3).&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-compare-link-display&#039;] = &#039;diff&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-link-display&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-link-display&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-blurb&#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-link-display&#039;] is the display value for that link.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-blurb&#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test&lt;br /&gt;
-- cases page, and $2 is a link to the page to run it.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-link-display&#039;] is the display value for the link to run the test&lt;br /&gt;
-- cases.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-blurb&#039;] = &#039;See also the companion subpage for $1.&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-link-display&#039;] = &#039;test cases&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-run-blurb&#039;] = &#039;See also the companion subpage for $1 ($2).&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-run-link-display&#039;] = &#039;run&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-category&#039;]&lt;br /&gt;
-- A category to add to all template sandboxes.&lt;br /&gt;
cfg[&#039;sandbox-category&#039;] = &#039;Template sandboxes&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Start box configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;documentation-icon-wikitext&#039;]&lt;br /&gt;
-- The wikitext for the icon shown at the top of the template.&lt;br /&gt;
cfg[&#039;documentation-icon-wikitext&#039;] = &#039;[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the template namespace.&lt;br /&gt;
cfg[&#039;template-namespace-heading&#039;] = &#039;Template documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the module namespace.&lt;br /&gt;
cfg[&#039;module-namespace-heading&#039;] = &#039;Module documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;file-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the file namespace.&lt;br /&gt;
cfg[&#039;file-namespace-heading&#039;] = &#039;Summary&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;other-namespaces-heading&#039;]&lt;br /&gt;
-- The heading shown in other namespaces.&lt;br /&gt;
cfg[&#039;other-namespaces-heading&#039;] = &#039;Documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;view-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;view&amp;quot; links.&lt;br /&gt;
cfg[&#039;view-link-display&#039;] = &#039;view&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;edit-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;edit-link-display&#039;] = &#039;edit&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;history-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;history&amp;quot; links.&lt;br /&gt;
cfg[&#039;history-link-display&#039;] = &#039;history&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;purge-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;purge&amp;quot; links.&lt;br /&gt;
cfg[&#039;purge-link-display&#039;] = &#039;purge&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;create-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;create-link-display&#039;] = &#039;create&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Link box (end box) configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;transcluded-from-blurb&#039;]&lt;br /&gt;
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.&lt;br /&gt;
cfg[&#039;transcluded-from-blurb&#039;] = &#039;The above [[ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ:Template documentation|documentation]] is [[ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ:Transclusion|transcluded]] from $1.&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;create-module-doc-blurb&#039;]&lt;br /&gt;
-- Notice displayed in the module namespace when the documentation subpage does not exist.&lt;br /&gt;
-- $1 is a link to create the documentation page with the preload cfg[&#039;module-preload&#039;] and the&lt;br /&gt;
-- display cfg[&#039;create-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;create-module-doc-blurb&#039;] = &#039;You might want to $1 a documentation page for this [[ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ:Lua|Scribunto module]].&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Experiment blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;experiment-blurb-template&#039;]&lt;br /&gt;
-- cfg[&#039;experiment-blurb-module&#039;]&lt;br /&gt;
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.&lt;br /&gt;
-- It is only shown in the template and module namespaces. With the default English settings, it&lt;br /&gt;
-- might look like this:&lt;br /&gt;
--&lt;br /&gt;
-- Editors can experiment in this template&#039;s sandbox (edit | diff) and testcases (edit) pages.&lt;br /&gt;
--&lt;br /&gt;
-- In this example, &amp;quot;sandbox&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;diff&amp;quot;, &amp;quot;testcases&amp;quot;, and &amp;quot;edit&amp;quot; would all be links.&lt;br /&gt;
--&lt;br /&gt;
-- There are two versions, cfg[&#039;experiment-blurb-template&#039;] and cfg[&#039;experiment-blurb-module&#039;], depending&lt;br /&gt;
-- on what namespace we are in.&lt;br /&gt;
-- &lt;br /&gt;
-- Parameters:&lt;br /&gt;
--&lt;br /&gt;
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;sandbox-link-display&#039;] (cfg[&#039;sandbox-edit-link-display&#039;] | cfg[&#039;compare-link-display&#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- If the sandbox doesn&#039;t exist, it is in the format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;sandbox-link-display&#039;] (cfg[&#039;sandbox-create-link-display&#039;] | cfg[&#039;mirror-link-display&#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- The link for cfg[&#039;sandbox-create-link-display&#039;] link preloads the page with cfg[&#039;template-sandbox-preload&#039;]&lt;br /&gt;
-- or cfg[&#039;module-sandbox-preload&#039;], depending on the current namespace. The link for cfg[&#039;mirror-link-display&#039;]&lt;br /&gt;
-- loads a default edit summary of cfg[&#039;mirror-edit-summary&#039;].&lt;br /&gt;
--&lt;br /&gt;
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;testcases-link-display&#039;] (cfg[&#039;testcases-edit-link-display&#039;] | cfg[&#039;testcases-run-link-display&#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&#039;t exist, it is in the format:&lt;br /&gt;
-- &lt;br /&gt;
--     cfg[&#039;testcases-link-display&#039;] (cfg[&#039;testcases-create-link-display&#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&#039;t exist, the link for cfg[&#039;testcases-create-link-display&#039;] preloads the&lt;br /&gt;
-- page with cfg[&#039;template-testcases-preload&#039;] or cfg[&#039;module-testcases-preload&#039;], depending on the current&lt;br /&gt;
-- namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;experiment-blurb-template&#039;] = &amp;quot;Editors can experiment in this template&#039;s $1 and $2 pages.&amp;quot;&lt;br /&gt;
cfg[&#039;experiment-blurb-module&#039;] = &amp;quot;Editors can experiment in this module&#039;s $1 and $2 pages.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage typically used for sandboxes.&lt;br /&gt;
cfg[&#039;sandbox-subpage&#039;] = &#039;sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-sandbox-preload&#039;]&lt;br /&gt;
-- Preload file for template sandbox pages.&lt;br /&gt;
cfg[&#039;template-sandbox-preload&#039;] = &#039;Template:Documentation/preload-sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-sandbox-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module sandbox pages.&lt;br /&gt;
cfg[&#039;module-sandbox-preload&#039;] = &#039;Template:Documentation/preload-module-sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;sandbox&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-link-display&#039;] = &#039;sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-edit-link-display&#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-edit-link-display&#039;] = &#039;edit&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-create-link-display&#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-create-link-display&#039;] = &#039;create&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;compare-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;compare&amp;quot; links.&lt;br /&gt;
cfg[&#039;compare-link-display&#039;] = &#039;diff&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-edit-summary&#039;]&lt;br /&gt;
-- The default edit summary to use when a user clicks the &amp;quot;mirror&amp;quot; link. $1 is a wikilink to the&lt;br /&gt;
-- template page.&lt;br /&gt;
cfg[&#039;mirror-edit-summary&#039;] = &#039;Create sandbox version of $1&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;mirror&amp;quot; links.&lt;br /&gt;
cfg[&#039;mirror-link-display&#039;] = &#039;mirror&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-link-preload&#039;]&lt;br /&gt;
-- The page to preload when a user clicks the &amp;quot;mirror&amp;quot; link.&lt;br /&gt;
cfg[&#039;mirror-link-preload&#039;] = &#039;Template:Documentation/mirror&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Test cases link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage typically used for test cases.&lt;br /&gt;
cfg[&#039;testcases-subpage&#039;] = &#039;testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-testcases-preload&#039;]&lt;br /&gt;
-- Preload file for template test cases pages.&lt;br /&gt;
cfg[&#039;template-testcases-preload&#039;] = &#039;Template:Documentation/preload-testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-testcases-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module test cases pages.&lt;br /&gt;
cfg[&#039;module-testcases-preload&#039;] = &#039;Template:Documentation/preload-module-testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;testcases&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-link-display&#039;] = &#039;testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-edit-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-edit-link-display&#039;] = &#039;edit&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-run-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;run&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-run-link-display&#039;] = &#039;run&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-create-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-create-link-display&#039;] = &#039;create&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Add categories blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;add-categories-blurb&#039;]&lt;br /&gt;
-- Text to direct users to add categories to the /doc subpage. Not used if the &amp;quot;content&amp;quot; or&lt;br /&gt;
-- &amp;quot;docname fed&amp;quot; arguments are set, as then it is not clear where to add the categories. $1 is a&lt;br /&gt;
-- link to the /doc subpage with a display value of cfg[&#039;doc-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;add-categories-blurb&#039;] = &#039;Please add categories to the $1 subpage.&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;doc-link-display&#039;]&lt;br /&gt;
-- The text to display when linking to the /doc subpage.&lt;br /&gt;
cfg[&#039;doc-link-display&#039;] = &#039;/doc&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Subpages link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;subpages-blurb&#039;]&lt;br /&gt;
-- The &amp;quot;Subpages of this template&amp;quot; blurb. $1 is a link to the main template&#039;s subpages with a&lt;br /&gt;
-- display value of cfg[&#039;subpages-link-display&#039;]. In the English version this blurb is simply&lt;br /&gt;
-- the link followed by a period, and the link display provides the actual text.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;subpages-blurb&#039;] = &#039;$1.&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;subpages-link-display&#039;]&lt;br /&gt;
-- The text to display for the &amp;quot;subpages of this page&amp;quot; link. $1 is cfg[&#039;template-pagetype&#039;],&lt;br /&gt;
-- cfg[&#039;module-pagetype&#039;] or cfg[&#039;default-pagetype&#039;], depending on whether the current page is in&lt;br /&gt;
-- the template namespace, the module namespace, or another namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;subpages-link-display&#039;] = &#039;Subpages of this $1&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for template pages.&lt;br /&gt;
cfg[&#039;template-pagetype&#039;] = &#039;template&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for Lua module pages.&lt;br /&gt;
cfg[&#039;module-pagetype&#039;] = &#039;module&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;default-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for pages other than templates or Lua modules.&lt;br /&gt;
cfg[&#039;default-pagetype&#039;] = &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Doc link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;doc-subpage&#039;]&lt;br /&gt;
-- The name of the subpage typically used for documentation pages.&lt;br /&gt;
cfg[&#039;doc-subpage&#039;] = &#039;doc&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;file-docpage-preload&#039;]&lt;br /&gt;
-- Preload file for documentation page in the file namespace.&lt;br /&gt;
cfg[&#039;file-docpage-preload&#039;] = &#039;Template:Documentation/preload-filespace&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;docpage-preload&#039;]&lt;br /&gt;
-- Preload file for template documentation pages in all namespaces.&lt;br /&gt;
cfg[&#039;docpage-preload&#039;] = &#039;Template:Documentation/preload&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module documentation pages.&lt;br /&gt;
cfg[&#039;module-preload&#039;] = &#039;Template:Documentation/preload-module-doc&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Print version configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage used for print versions.&lt;br /&gt;
cfg[&#039;print-subpage&#039;] = &#039;Print&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-link-display&#039;]&lt;br /&gt;
-- The text to display when linking to the /Print subpage.&lt;br /&gt;
cfg[&#039;print-link-display&#039;] = &#039;/Print&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-blurb&#039;]&lt;br /&gt;
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with&lt;br /&gt;
-- a display value of cfg[&#039;print-link-display&#039;].&lt;br /&gt;
cfg[&#039;print-blurb&#039;] = &#039;A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at $1.&#039;&lt;br /&gt;
	.. &#039; If you make a change to this template, please update the print version as well.&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;display-print-category&#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&#039;print-category&#039;] if a /Print subpage exists.&lt;br /&gt;
-- This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&#039;display-print-category&#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-category&#039;]&lt;br /&gt;
-- Category to output if cfg[&#039;display-print-category&#039;] is set to true, and a /Print subpage exists.&lt;br /&gt;
cfg[&#039;print-category&#039;] = &#039;Templates with print versions&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- HTML and CSS configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;templatestyles&#039;]&lt;br /&gt;
-- The name of the TemplateStyles page where CSS is kept.&lt;br /&gt;
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.&lt;br /&gt;
cfg[&#039;templatestyles&#039;] = &#039;Module:Documentation/styles.css&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;container&#039;]&lt;br /&gt;
-- Class which can be used to set flex or grid CSS on the&lt;br /&gt;
-- two child divs documentation and documentation-metadata&lt;br /&gt;
cfg[&#039;container&#039;] = &#039;documentation-container&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;main-div-classes&#039;]&lt;br /&gt;
-- Classes added to the main HTML &amp;quot;div&amp;quot; tag.&lt;br /&gt;
cfg[&#039;main-div-classes&#039;] = &#039;documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;main-div-heading-class&#039;]&lt;br /&gt;
-- Class for the main heading for templates and modules and assoc. talk spaces&lt;br /&gt;
cfg[&#039;main-div-heading-class&#039;] = &#039;documentation-heading&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;start-box-class&#039;]&lt;br /&gt;
-- Class for the start box&lt;br /&gt;
cfg[&#039;start-box-class&#039;] = &#039;documentation-startbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;start-box-link-classes&#039;]&lt;br /&gt;
-- Classes used for the [view][edit][history] or [create] links in the start box.&lt;br /&gt;
-- mw-editsection-like is per [[ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ:Village pump (technical)/Archive 117]]&lt;br /&gt;
cfg[&#039;start-box-link-classes&#039;] = &#039;mw-editsection-like plainlinks&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;end-box-class&#039;]&lt;br /&gt;
-- Class for the end box.&lt;br /&gt;
cfg[&#039;end-box-class&#039;] = &#039;documentation-metadata&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;end-box-plainlinks&#039;]&lt;br /&gt;
-- Plainlinks&lt;br /&gt;
cfg[&#039;end-box-plainlinks&#039;] = &#039;plainlinks&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;toolbar-class&#039;]&lt;br /&gt;
-- Class added for toolbar links.&lt;br /&gt;
cfg[&#039;toolbar-class&#039;] = &#039;documentation-toolbar&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;clear&#039;]&lt;br /&gt;
-- Just used to clear things.&lt;br /&gt;
cfg[&#039;clear&#039;] = &#039;documentation-clear&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking category configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;display-strange-usage-category&#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&#039;strange-usage-category&#039;] if the module is used on a /doc subpage&lt;br /&gt;
-- or a /testcases subpage. This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&#039;display-strange-usage-category&#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;strange-usage-category&#039;]&lt;br /&gt;
-- Category to output if cfg[&#039;display-strange-usage-category&#039;] is set to true and the module is used on a&lt;br /&gt;
-- /doc subpage or a /testcases subpage.&lt;br /&gt;
cfg[&#039;strange-usage-category&#039;] = &#039;Wikipedia pages with strange ((documentation)) usage&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--&lt;br /&gt;
-- Don&#039;t edit anything below this line.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
return cfg&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Infobox&amp;diff=10665</id>
		<title>ꯇꯦꯝꯄ꯭ꯂꯦꯠ:Infobox</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Infobox&amp;diff=10665"/>
		<updated>2021-12-30T12:53:02Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;{{#invoke:Infobox|infobox}}&amp;lt;includeonly&amp;gt;{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|{{SUBPAGENAME}}}}}}}}|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- Categories go in the /doc subpage, and interwikis go in Wikidata. - &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Infobox|infobox}}&amp;lt;includeonly&amp;gt;{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[ꯃꯆꯥꯈꯥꯏꯕ:ꯏꯟꯐꯣꯕꯣꯛꯁ ꯇꯦꯝꯄ꯭ꯂꯦꯠꯁꯤꯡ|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Main_other&amp;diff=10666</id>
		<title>ꯇꯦꯝꯄ꯭ꯂꯦꯠ:Main other</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Main_other&amp;diff=10666"/>
		<updated>2021-12-30T12:51:27Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;{{#switch:   &amp;lt;!--If no or empty &amp;quot;demospace&amp;quot; parameter then detect namespace-   {{#if:{{{demospace|}}}    | {{lc: {{{demospace}}} }}    &amp;lt;!--Use lower case &amp;quot;demospace&amp;quot;-   | {{#ifeq:{{NAMESPACE}}|{{ns:0}}     | main     | other     }}    }} | main     = {{{1|}}} | other | #default = {{{2|}}} }}&amp;lt;noinclude&amp;gt;  {{documentation}} &amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! - &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:&lt;br /&gt;
  &amp;lt;!--If no or empty &amp;quot;demospace&amp;quot; parameter then detect namespace-&lt;br /&gt;
  {{#if:{{{demospace|}}} &lt;br /&gt;
  | {{lc: {{{demospace}}} }}    &amp;lt;!--Use lower case &amp;quot;demospace&amp;quot;-&lt;br /&gt;
  | {{#ifeq:{{NAMESPACE}}|{{ns:0}}&lt;br /&gt;
    | main&lt;br /&gt;
    | other&lt;br /&gt;
    }} &lt;br /&gt;
  }}&lt;br /&gt;
| main     = {{{1|}}}&lt;br /&gt;
| other&lt;br /&gt;
| #default = {{{2|}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! -&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Infobox_medical_condition&amp;diff=10667</id>
		<title>ꯇꯦꯝꯄ꯭ꯂꯦꯠ:Infobox medical condition</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Infobox_medical_condition&amp;diff=10667"/>
		<updated>2021-12-30T12:50:33Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;{{Infobox | abovestyle = background:#ccc | above      = &amp;lt;includeonly&amp;gt;{{#if:{{{name|}}}|{{{name|}}}|{{PAGENAME}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{{name}}} or &amp;lt;nowiki&amp;gt;{{PAGENAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/noinclude&amp;gt; | headerstyle = background:#eee;&amp;lt;!-- not used in this template, set same as sister template just in case -  | label1 = ꯑꯇꯩ ꯃꯃꯤꯡꯁꯤꯡ |  data1 = {{{synonym|}}}{{{synonyms|}}}  |  data5 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|{...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
| abovestyle = background:#ccc&lt;br /&gt;
| above      = &amp;lt;includeonly&amp;gt;{{#if:{{{name|}}}|{{{name|}}}|{{PAGENAME}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{{name}}} or &amp;lt;nowiki&amp;gt;{{PAGENAME}}&amp;lt;/nowiki&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| headerstyle = background:#eee;&amp;lt;!-- not used in this template, set same as sister template just in case -&lt;br /&gt;
&lt;br /&gt;
| label1 = ꯑꯇꯩ ꯃꯃꯤꯡꯁꯤꯡ&lt;br /&gt;
|  data1 = {{{synonym|}}}{{{synonyms|}}}&lt;br /&gt;
&lt;br /&gt;
|  data5 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|{{{width|}}}}}}|sizedefault=frameless|upright=1.36|alt={{{alt|}}}}}&lt;br /&gt;
|  data6 = {{#if:{{{image|}}}|{{{caption|}}} }}&lt;br /&gt;
&lt;br /&gt;
| label7 = ꯈꯣꯟꯊꯣꯛ&lt;br /&gt;
|  data7 = {{#if:{{{pronounce|}}}{{{pronunciation|}}}{{{pronounce comment|}}} |&amp;lt;!--&lt;br /&gt;
-{{ubl|1={{{pronounce|}}}{{{pronunciation|}}}{{{pronounce ref|}}}&amp;amp;#x20;{{{pronounce comment|}}}&amp;lt;!--&lt;br /&gt;
     -|2={{{pronounce 2|}}} }}}}&lt;br /&gt;
&lt;br /&gt;
| label10 = [[Specialty (medicine)|Specialty]]&lt;br /&gt;
| data10 = {{#invoke:String2 |ucfirst | {{#invoke:WikidataIB |getValue |P1995 |fetchwikidata={{{fetchwikidata|ALL}}} |onlysourced={{{onlysourced|no}}} |{{{field|}}}{{{specialty|}}}{{{speciality|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| label12  = ꯑꯅꯥ-ꯂꯥꯏꯑꯣꯡ&lt;br /&gt;
|  data12  = {{{symptoms|}}}&lt;br /&gt;
&lt;br /&gt;
| label13  = [[Complication (medicine)|Complications]]&lt;br /&gt;
|  data13  = {{{complications|}}}&lt;br /&gt;
&lt;br /&gt;
| label14  = ꯍꯧꯔꯛꯄꯒꯤ ꯃꯇꯝ&lt;br /&gt;
|  data14  = {{{onset|}}}&lt;br /&gt;
&lt;br /&gt;
| label15  = ꯃꯇꯝ&lt;br /&gt;
|  data15  = {{{duration|}}}&lt;br /&gt;
&lt;br /&gt;
| label16  = ꯃꯈꯜ&lt;br /&gt;
|  data16  = {{{types|}}}&lt;br /&gt;
&lt;br /&gt;
| label17  = ꯅꯥꯍꯟꯂꯤꯕꯁꯤꯡ&lt;br /&gt;
|  data17  = {{{causes|{{{cause|}}}}}}&lt;br /&gt;
&lt;br /&gt;
| label18  = [[Risk factor]]s&lt;br /&gt;
|  data18  = {{{risks|{{{risk|}}}}}}&lt;br /&gt;
&lt;br /&gt;
| label19  = [[Diagnostic method]]&lt;br /&gt;
|  data19  = {{{diagnosis|}}}&lt;br /&gt;
&lt;br /&gt;
| label20  = [[Differential diagnosis]]&lt;br /&gt;
|  data20  = {{{differential|{{{differential diagnosis|{{{diff|}}}}}}}}}&lt;br /&gt;
&lt;br /&gt;
| label21  = ꯉꯥꯛꯊꯣꯛꯄ&lt;br /&gt;
|  data21  = {{{prevention|}}}&lt;br /&gt;
&lt;br /&gt;
| label22  = {{#if:{{{treatment|}}}|Treatment|Management}}&lt;br /&gt;
|  data22  = {{{treatment|{{{management|}}}}}}&lt;br /&gt;
&lt;br /&gt;
| label23  = Medication&lt;br /&gt;
|  data23  = {{{medication|}}}&lt;br /&gt;
&lt;br /&gt;
| label24  = Prognosis&lt;br /&gt;
|  data24  = {{{prognosis|}}}&lt;br /&gt;
&lt;br /&gt;
| label25  = Frequency&lt;br /&gt;
|  data25  = {{{frequency|{{#invoke:PrevalenceData|main}}}}}&lt;br /&gt;
&lt;br /&gt;
| label26 = ꯑꯁꯤꯕ&lt;br /&gt;
|  data26 = {{{deaths|}}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;!-- end of infobox&lt;br /&gt;
&lt;br /&gt;
-{{main other|1={{#if:{{#ifeq:{{#invoke:WikidataIB |pageId}}||_do_categorise}}{{#if:{{{QID|}}}|_do_categorise}}|[[Category:Medical condition not in Wikidata|=]]}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
-{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox medical condition with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox medical condition]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y| alt | caption | cause | causes | complications | deaths | diagnosis | diff | differential | differential diagnosis | duration | fetchwikidata | field | frequency | image | image_size | management | medication | name | onlysourced | onset | prevention | prognosis | pronounce | pronounce 2 | pronounce comment | pronounce ref | pronunciation | QID | risk | risks | speciality | specialty | symptoms | synonym | synonyms | treatment | types | width }}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
-&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=Module:Age&amp;diff=10668</id>
		<title>Module:Age</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=Module:Age&amp;diff=10668"/>
		<updated>2021-12-30T02:11:11Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;-- Implement various &amp;quot;age of&amp;quot; and other date-related templates.  local mtext = { 	-- Message and other text that should be localized. 	[&amp;#039;mt-bad-param1&amp;#039;] =             &amp;#039;Invalid parameter $1&amp;#039;, 	[&amp;#039;mt-bad-param2&amp;#039;] =             &amp;#039;Parameter $1=$2 is invalid&amp;#039;, 	[&amp;#039;mt-bad-show&amp;#039;] =               &amp;#039;Parameter show=$1 is not supported here&amp;#039;, 	[&amp;#039;mt-cannot-add&amp;#039;] =             &amp;#039;Cannot add &amp;quot;$1&amp;quot;&amp;#039;, 	[&amp;#039;mt-conflicting-show&amp;#039;] =       &amp;#039;Parameter show=$1 conflicts with round=$2&amp;#039;, 	[&amp;#039;mt-date-wron...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Implement various &amp;quot;age of&amp;quot; and other date-related templates.&lt;br /&gt;
&lt;br /&gt;
local mtext = {&lt;br /&gt;
	-- Message and other text that should be localized.&lt;br /&gt;
	[&#039;mt-bad-param1&#039;] =             &#039;Invalid parameter $1&#039;,&lt;br /&gt;
	[&#039;mt-bad-param2&#039;] =             &#039;Parameter $1=$2 is invalid&#039;,&lt;br /&gt;
	[&#039;mt-bad-show&#039;] =               &#039;Parameter show=$1 is not supported here&#039;,&lt;br /&gt;
	[&#039;mt-cannot-add&#039;] =             &#039;Cannot add &amp;quot;$1&amp;quot;&#039;,&lt;br /&gt;
	[&#039;mt-conflicting-show&#039;] =       &#039;Parameter show=$1 conflicts with round=$2&#039;,&lt;br /&gt;
	[&#039;mt-date-wrong-order&#039;] =       &#039;The second date must be later in time than the first date&#039;,&lt;br /&gt;
	[&#039;mt-dd-future&#039;] =              &#039;Death date (first date) must not be in the future&#039;,&lt;br /&gt;
	[&#039;mt-dd-wrong-order&#039;] =         &#039;Death date (first date) must be later in time than the birth date (second date)&#039;,&lt;br /&gt;
	[&#039;mt-invalid-bd-age&#039;] =         &#039;Invalid birth date for calculating age&#039;,&lt;br /&gt;
	[&#039;mt-invalid-dates-age&#039;] =      &#039;Invalid dates for calculating age&#039;,&lt;br /&gt;
	[&#039;mt-invalid-end&#039;] =            &#039;Invalid end date in second parameter&#039;,&lt;br /&gt;
	[&#039;mt-invalid-start&#039;] =          &#039;Invalid start date in first parameter&#039;,&lt;br /&gt;
	[&#039;mt-need-jdn&#039;] =               &#039;Need valid Julian date number&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-bd&#039;] =          &#039;Need valid birth date: year, month, day&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-bd2&#039;] =         &#039;Need valid birth date (second date): year, month, day&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-date&#039;] =        &#039;Need valid date&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-dd&#039;] =          &#039;Need valid death date (first date): year, month, day&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-ymd&#039;] =         &#039;Need valid year, month, day&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-ymd-current&#039;] = &#039;Need valid year|month|day or &amp;quot;currentdate&amp;quot;&#039;,&lt;br /&gt;
	[&#039;mt-need-valid-ymd2&#039;] =        &#039;Second date should be year, month, day&#039;,&lt;br /&gt;
	[&#039;mt-template-bad-name&#039;] =      &#039;The specified template name is not valid&#039;,&lt;br /&gt;
	[&#039;mt-template-x&#039;] =             &#039;The template invoking this must have &amp;quot;|template=x&amp;quot; where x is the wanted operation&#039;,&lt;br /&gt;
	[&#039;txt-age&#039;] =                   &#039;(age&amp;amp;nbsp;&#039;,&lt;br /&gt;
	[&#039;txt-aged&#039;] =                  &#039; (aged&amp;amp;nbsp;&#039;,&lt;br /&gt;
	[&#039;txt-and&#039;] =                   &#039; and &#039;,&lt;br /&gt;
	[&#039;txt-comma-and&#039;] =             &#039;, and &#039;,&lt;br /&gt;
	[&#039;txt-error&#039;] =                 &#039;Error: &#039;,&lt;br /&gt;
	[&#039;txt-or&#039;] =                    &#039;&amp;amp;nbsp;or &#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local translate = {&lt;br /&gt;
	digits = {&lt;br /&gt;
		from_en = {&lt;br /&gt;
			[&#039;0&#039;] = &#039;꯰&#039;,&lt;br /&gt;
			[&#039;1&#039;] = &#039;꯱&#039;,&lt;br /&gt;
			[&#039;2&#039;] = &#039;꯲&#039;,&lt;br /&gt;
			[&#039;3&#039;] = &#039;꯳&#039;,&lt;br /&gt;
			[&#039;4&#039;] = &#039;꯴&#039;,&lt;br /&gt;
			[&#039;5&#039;] = &#039;꯵&#039;,&lt;br /&gt;
			[&#039;6&#039;] = &#039;꯶&#039;,&lt;br /&gt;
			[&#039;7&#039;] = &#039;꯷&#039;,&lt;br /&gt;
			[&#039;8&#039;] = &#039;꯸&#039;,&lt;br /&gt;
			[&#039;9&#039;] = &#039;꯹&#039;,&lt;br /&gt;
		},&lt;br /&gt;
to_en = {&lt;br /&gt;
			[&#039;꯰&#039;] = &#039;0&#039;,&lt;br /&gt;
			[&#039;꯱&#039;] = &#039;1&#039;,&lt;br /&gt;
			[&#039;꯲&#039;] = &#039;2&#039;,&lt;br /&gt;
			[&#039;꯳&#039;] = &#039;3&#039;,&lt;br /&gt;
			[&#039;꯴&#039;] = &#039;4&#039;,&lt;br /&gt;
			[&#039;꯵&#039;] = &#039;5&#039;,&lt;br /&gt;
			[&#039;꯶&#039;] = &#039;6&#039;,&lt;br /&gt;
			[&#039;꯷&#039;] = &#039;7&#039;,&lt;br /&gt;
			[&#039;꯸&#039;] = &#039;8&#039;,&lt;br /&gt;
			[&#039;꯹&#039;] = &#039;9&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
words = {&lt;br /&gt;
		from_en = {&lt;br /&gt;
			January   = &#039;ꯋꯥꯛꯆꯤꯡ&#039;,&lt;br /&gt;
			February  = &#039;ꯐꯥꯏꯔꯦꯜ&#039;,&lt;br /&gt;
			March     = &#039;ꯂꯝꯇꯥ&#039;,&lt;br /&gt;
			April     = &#039;ꯁꯖꯤꯕꯨ&#039;,&lt;br /&gt;
			May       = &#039;ꯀꯥꯂꯦꯟ&#039;,&lt;br /&gt;
			June      = &#039;ꯏꯉꯥ&#039;,&lt;br /&gt;
			July      = &#039;ꯏꯉꯦꯟ&#039;,&lt;br /&gt;
			August    = &#039;ꯊꯧꯋꯥꯟ&#039;,&lt;br /&gt;
			September = &#039;ꯂꯥꯡꯕꯟ&#039;,&lt;br /&gt;
			October   = &#039;ꯃꯦꯔꯥ&#039;,&lt;br /&gt;
			November  = &#039;ꯍꯤꯌꯥꯡꯒꯩ&#039;,&lt;br /&gt;
			December  = &#039;ꯄꯣꯏꯅꯨ&#039;,&lt;br /&gt;
			Jan = &#039;ꯋꯥꯛ&#039;,&lt;br /&gt;
			Feb = &#039;ꯐꯥꯏ&#039;,&lt;br /&gt;
			Sep = &#039;ꯂꯥꯡ&#039;,&lt;br /&gt;
			Oct = &#039;ꯃꯦꯔ&#039;,&lt;br /&gt;
			Nov = &#039;ꯍꯤꯌ&#039;,&lt;br /&gt;
			Dec = &#039;ꯄꯣꯏ&#039;,&lt;br /&gt;
		},&lt;br /&gt;
to_en = {&lt;br /&gt;
			[&#039;ꯋꯥꯛꯆꯤꯡ&#039;] = &#039;January&#039;,&lt;br /&gt;
			[&#039;ꯐꯥꯏꯔꯦꯜ&#039;] = &#039;February&#039;,&lt;br /&gt;
			[&#039;ꯂꯝꯇꯥ&#039;] = &#039;March&#039;,&lt;br /&gt;
			[&#039;ꯁꯖꯤꯕꯨ&#039;] = &#039;April&#039;,&lt;br /&gt;
			[&#039;ꯀꯥꯂꯦꯟ&#039;] = &#039;May&#039;,&lt;br /&gt;
			[&#039;ꯏꯉꯥ&#039;] = &#039;June&#039;,&lt;br /&gt;
			[&#039;ꯏꯉꯦꯟ&#039;] = &#039;July&#039;,&lt;br /&gt;
			[&#039;ꯊꯧꯋꯥꯟ&#039;] = &#039;August&#039;,&lt;br /&gt;
			[&#039;ꯂꯥꯡꯕꯟ&#039;] = &#039;September&#039;,&lt;br /&gt;
			[&#039;ꯃꯦꯔꯥ&#039;] = &#039;October&#039;,&lt;br /&gt;
			[&#039;ꯍꯤꯌꯥꯡꯒꯩ&#039;] = &#039;November&#039;,&lt;br /&gt;
			[&#039;ꯄꯣꯏꯅꯨ&#039;] = &#039;December&#039;,&lt;br /&gt;
			[&#039;ꯋꯥꯛ&#039;] = &#039;Jan&#039;,&lt;br /&gt;
			[&#039;ꯐꯥꯏ&#039;] = &#039;Feb&#039;,&lt;br /&gt;
			[&#039;ꯂꯥꯡ&#039;] = &#039;Sep&#039;,&lt;br /&gt;
			[&#039;ꯃꯦꯔ&#039;] = &#039;Oct&#039;,&lt;br /&gt;
			[&#039;ꯍꯤꯌ&#039;] = &#039;Nov&#039;,&lt;br /&gt;
			[&#039;ꯄꯣꯏꯅꯨ&#039;] = &#039;Dec&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
local translate, from_en, to_en, isZero&lt;br /&gt;
if translate then&lt;br /&gt;
	-- Functions to translate from en to local language and reverse go here.&lt;br /&gt;
	-- See example at [[:mni:Module:Age]].&lt;br /&gt;
else&lt;br /&gt;
	from_en = function (text)&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
	isZero = function (text)&lt;br /&gt;
		return tonumber(text) == 0&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local _Date, _currentDate&lt;br /&gt;
local function getExports(frame)&lt;br /&gt;
	-- Return objects exported from the date module or its sandbox.&lt;br /&gt;
	if not _Date then&lt;br /&gt;
		local sandbox = frame:getTitle():find(&#039;sandbox&#039;, 1, true) and &#039;/sandbox&#039; or &#039;&#039;&lt;br /&gt;
		local datemod = require(&#039;Module:Date&#039; .. sandbox)&lt;br /&gt;
		local realDate = datemod._Date&lt;br /&gt;
		_currentDate = datemod._current&lt;br /&gt;
		if to_en then&lt;br /&gt;
			_Date = function (...)&lt;br /&gt;
				local args = {}&lt;br /&gt;
				for i, v in ipairs({...}) do&lt;br /&gt;
					args[i] = to_en(v)&lt;br /&gt;
				end&lt;br /&gt;
				return realDate(unpack(args))&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			_Date = realDate&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return _Date, _currentDate&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local Collection  -- a table to hold items&lt;br /&gt;
Collection = {&lt;br /&gt;
	add = function (self, item)&lt;br /&gt;
		if item ~= nil then&lt;br /&gt;
			self.n = self.n + 1&lt;br /&gt;
			self[self.n] = item&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	join = function (self, sep)&lt;br /&gt;
		return table.concat(self, sep)&lt;br /&gt;
	end,&lt;br /&gt;
	remove = function (self, pos)&lt;br /&gt;
		if self.n &amp;gt; 0 and (pos == nil or (0 &amp;lt; pos and pos &amp;lt;= self.n)) then&lt;br /&gt;
			self.n = self.n - 1&lt;br /&gt;
			return table.remove(self, pos)&lt;br /&gt;
		end&lt;br /&gt;
	end,&lt;br /&gt;
	sort = function (self, comp)&lt;br /&gt;
		table.sort(self, comp)&lt;br /&gt;
	end,&lt;br /&gt;
	new = function ()&lt;br /&gt;
		return setmetatable({n = 0}, Collection)&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
Collection.__index = Collection&lt;br /&gt;
&lt;br /&gt;
local function stripToNil(text)&lt;br /&gt;
	-- If text is a string, return its trimmed content, or nil if empty.&lt;br /&gt;
	-- Otherwise return text (which may, for example, be nil).&lt;br /&gt;
	if type(text) == &#039;string&#039; then&lt;br /&gt;
		text = text:match(&#039;(%S.-)%s*$&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function yes(parameter)&lt;br /&gt;
	-- Return true if parameter should be interpreted as &amp;quot;yes&amp;quot;.&lt;br /&gt;
	-- Do not want to accept mixed upper/lowercase unless done by current templates.&lt;br /&gt;
	-- Need to accept &amp;quot;on&amp;quot; because &amp;quot;round=on&amp;quot; is wanted.&lt;br /&gt;
	return ({ y = true, yes = true, on = true })[parameter]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function message(msg, id)&lt;br /&gt;
	-- Return formatted message text for an error or warning.&lt;br /&gt;
	local function getText(msg)&lt;br /&gt;
		return mtext[msg] or error(&#039;Bug: message &amp;quot;&#039; .. tostring(msg) .. &#039;&amp;quot; not defined&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local text&lt;br /&gt;
	if type(msg) == &#039;table&#039; then&lt;br /&gt;
		text = getText(msg[1])&lt;br /&gt;
		local rep = {}&lt;br /&gt;
		for i, v in ipairs(msg) do&lt;br /&gt;
			if i &amp;gt; 1 then&lt;br /&gt;
				rep[&#039;$&#039; .. (i - 1)] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		text = text:gsub(&#039;$%d+&#039;, rep)&lt;br /&gt;
	else&lt;br /&gt;
		text = getText(msg)&lt;br /&gt;
	end&lt;br /&gt;
	local categories = {&lt;br /&gt;
		error = &#039;[[ꯃꯆꯥꯈꯥꯏꯕ:ꯃꯤꯒꯤ ꯆꯩꯍꯤ ꯑꯔꯥꯟꯕ]]&#039;,&lt;br /&gt;
		warning = &#039;[[ꯃꯆꯥꯈꯥꯏꯕ:ꯃꯤꯒꯤ ꯆꯩꯍꯤ ꯑꯔꯥꯟꯕ]]&#039;,  -- same as error until determine whether &#039;Age warning&#039; would be worthwhile&lt;br /&gt;
	}&lt;br /&gt;
	local a, b, category&lt;br /&gt;
	if id == &#039;warning&#039; then&lt;br /&gt;
		a = &#039;&amp;lt;sup&amp;gt;[&amp;lt;i&amp;gt;&#039;&lt;br /&gt;
		b = &#039;&amp;lt;/i&amp;gt;]&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		a = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. getText(&#039;txt-error&#039;)&lt;br /&gt;
		b = &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.title.getCurrentTitle():inNamespaces(0) then&lt;br /&gt;
		-- Category only in namespaces: 0=article.&lt;br /&gt;
		category = categories[id or &#039;error&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	return&lt;br /&gt;
		a ..&lt;br /&gt;
		mw.text.nowiki(text) ..&lt;br /&gt;
		b ..&lt;br /&gt;
		(category or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatNumber(number)&lt;br /&gt;
	-- Return the given number formatted with commas as group separators,&lt;br /&gt;
	-- given that the number is an integer.&lt;br /&gt;
	local numstr = tostring(number)&lt;br /&gt;
	local length = #numstr&lt;br /&gt;
	local places = Collection.new()&lt;br /&gt;
	local pos = 0&lt;br /&gt;
	repeat&lt;br /&gt;
		places:add(pos)&lt;br /&gt;
		pos = pos + 3&lt;br /&gt;
	until pos &amp;gt;= length&lt;br /&gt;
	places:add(length)&lt;br /&gt;
	local groups = Collection.new()&lt;br /&gt;
	for i = places.n, 2, -1 do&lt;br /&gt;
		local p1 = length - places[i] + 1&lt;br /&gt;
		local p2 = length - places[i - 1]&lt;br /&gt;
		groups:add(numstr:sub(p1, p2))&lt;br /&gt;
	end&lt;br /&gt;
	return groups:join(&#039;,&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function spellNumber(number, options, i)&lt;br /&gt;
	-- Return result of spelling number, or&lt;br /&gt;
	-- return number (as a string) if cannot spell it.&lt;br /&gt;
	-- i == 1 for the first number which can optionally start with an uppercase letter.&lt;br /&gt;
	number = tostring(number)&lt;br /&gt;
	return require(&#039;Module:ConvertNumeric&#039;).spell_number(&lt;br /&gt;
		number,&lt;br /&gt;
		nil,                       -- fraction numerator&lt;br /&gt;
		nil,                       -- fraction denominator&lt;br /&gt;
		i == 1 and options.upper,  -- true: &#039;One&#039; instead of &#039;one&#039;&lt;br /&gt;
		not options.us,            -- true: use &#039;and&#039; between tens/ones etc&lt;br /&gt;
		options.adj,               -- true: hyphenated&lt;br /&gt;
		options.ordinal            -- true: &#039;first&#039; instead of &#039;one&#039;&lt;br /&gt;
	) or number&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeExtra(args, flagCurrent)&lt;br /&gt;
	-- Return extra text that will be inserted before the visible result&lt;br /&gt;
	-- but after any sort key.&lt;br /&gt;
	local extra = args.prefix or &#039;&#039;&lt;br /&gt;
	if mw.ustring.len(extra) &amp;gt; 1 then&lt;br /&gt;
		-- Parameter &amp;quot;~&amp;quot; gives &amp;quot;~3&amp;quot; whereas &amp;quot;over&amp;quot; gives &amp;quot;over 3&amp;quot;.&lt;br /&gt;
		if extra:sub(-6, -1) ~= &#039;&amp;amp;nbsp;&#039; then&lt;br /&gt;
			extra = extra .. &#039; &#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if flagCurrent then&lt;br /&gt;
		extra = &#039;&amp;lt;span class=&amp;quot;currentage&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039; .. extra&lt;br /&gt;
	end&lt;br /&gt;
	return extra&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeSort(value, sortable)&lt;br /&gt;
	-- Return a sort key if requested.&lt;br /&gt;
	-- Assume value is a valid number which has not overflowed.&lt;br /&gt;
	if sortable == &#039;sortable_table&#039; or sortable == &#039;sortable_on&#039; or sortable == &#039;sortable_debug&#039; then&lt;br /&gt;
		local sortKey&lt;br /&gt;
		if value == 0 then&lt;br /&gt;
			sortKey = &#039;5000000000000000000&#039;&lt;br /&gt;
		else&lt;br /&gt;
			local mag = math.floor(math.log10(math.abs(value)) + 1e-14)&lt;br /&gt;
			if value &amp;gt; 0 then&lt;br /&gt;
				sortKey = 7000 + mag&lt;br /&gt;
			else&lt;br /&gt;
				sortKey = 2999 - mag&lt;br /&gt;
				value = value + 10^(mag+1)&lt;br /&gt;
			end&lt;br /&gt;
			sortKey = string.format(&#039;%d&#039;, sortKey) .. string.format(&#039;%015.0f&#039;, math.floor(value * 10^(14-mag)))&lt;br /&gt;
		end&lt;br /&gt;
		local result&lt;br /&gt;
		if sortable == &#039;sortable_table&#039; then&lt;br /&gt;
			result = &#039;data-sort-value=&amp;quot;_SORTKEY_&amp;quot;|&#039;&lt;br /&gt;
		elseif sortable == &#039;sortable_debug&#039; then&lt;br /&gt;
			result = &#039;&amp;lt;span data-sort-value=&amp;quot;_SORTKEY_♠&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;border:1px solid&amp;quot;&amp;gt;_SORTKEY_♠&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			result = &#039;&amp;lt;span data-sort-value=&amp;quot;_SORTKEY_♠&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return result:gsub(&#039;_SORTKEY_&#039;, sortKey)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translateParameters = {&lt;br /&gt;
	abbr = {&lt;br /&gt;
		off = &#039;abbr_off&#039;,&lt;br /&gt;
		on = &#039;abbr_on&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	disp = {&lt;br /&gt;
		age = &#039;disp_age&#039;,&lt;br /&gt;
		raw = &#039;disp_raw&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	format = {&lt;br /&gt;
		raw = &#039;format_raw&#039;,&lt;br /&gt;
		commas = &#039;format_commas&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	round = {&lt;br /&gt;
		on = &#039;on&#039;,&lt;br /&gt;
		yes = &#039;on&#039;,&lt;br /&gt;
		months = &#039;ym&#039;,&lt;br /&gt;
		weeks = &#039;ymw&#039;,&lt;br /&gt;
		days = &#039;ymd&#039;,&lt;br /&gt;
		hours = &#039;ymdh&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	sep = {&lt;br /&gt;
		comma = &#039;sep_comma&#039;,&lt;br /&gt;
		[&#039;,&#039;] = &#039;sep_comma&#039;,&lt;br /&gt;
		serialcomma = &#039;sep_serialcomma&#039;,&lt;br /&gt;
		space = &#039;sep_space&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	show = {&lt;br /&gt;
		hide = { id = &#039;hide&#039; },&lt;br /&gt;
		y = { &#039;y&#039;, id = &#039;y&#039; },&lt;br /&gt;
		ym = { &#039;y&#039;, &#039;m&#039;, id = &#039;ym&#039; },&lt;br /&gt;
		ymd = { &#039;y&#039;, &#039;m&#039;, &#039;d&#039;, id = &#039;ymd&#039; },&lt;br /&gt;
		ymw = { &#039;y&#039;, &#039;m&#039;, &#039;w&#039;, id = &#039;ymw&#039; },&lt;br /&gt;
		ymwd = { &#039;y&#039;, &#039;m&#039;, &#039;w&#039;, &#039;d&#039;, id = &#039;ymwd&#039; },&lt;br /&gt;
		yd = { &#039;y&#039;, &#039;d&#039;, id = &#039;yd&#039;, keepZero = true },&lt;br /&gt;
		m = { &#039;m&#039;, id = &#039;m&#039; },&lt;br /&gt;
		md = { &#039;m&#039;, &#039;d&#039;, id = &#039;md&#039; },&lt;br /&gt;
		w = { &#039;w&#039;, id = &#039;w&#039; },&lt;br /&gt;
		wd = { &#039;w&#039;, &#039;d&#039;, id = &#039;wd&#039; },&lt;br /&gt;
		h = { &#039;H&#039;, id = &#039;h&#039; },&lt;br /&gt;
		hm = { &#039;H&#039;, &#039;M&#039;, id = &#039;hm&#039; },&lt;br /&gt;
		hms = { &#039;H&#039;, &#039;M&#039;, &#039;S&#039;, id = &#039;hms&#039; },&lt;br /&gt;
		d = { &#039;d&#039;, id = &#039;d&#039; },&lt;br /&gt;
		dh = { &#039;d&#039;, &#039;H&#039;, id = &#039;dh&#039; },&lt;br /&gt;
		dhm = { &#039;d&#039;, &#039;H&#039;, &#039;M&#039;, id = &#039;dhm&#039; },&lt;br /&gt;
		dhms = { &#039;d&#039;, &#039;H&#039;, &#039;M&#039;, &#039;S&#039;, id = &#039;dhms&#039; },&lt;br /&gt;
		ymdh = { &#039;y&#039;, &#039;m&#039;, &#039;d&#039;, &#039;H&#039;, id = &#039;ymdh&#039; },&lt;br /&gt;
		ymdhm = { &#039;y&#039;, &#039;m&#039;, &#039;d&#039;, &#039;H&#039;, &#039;M&#039;, id = &#039;ymdhm&#039; },&lt;br /&gt;
		ymwdh = { &#039;y&#039;, &#039;m&#039;, &#039;w&#039;, &#039;d&#039;, &#039;H&#039;, id = &#039;ymwdh&#039; },&lt;br /&gt;
		ymwdhm = { &#039;y&#039;, &#039;m&#039;, &#039;w&#039;, &#039;d&#039;, &#039;H&#039;, &#039;M&#039;, id = &#039;ymwdhm&#039; },&lt;br /&gt;
	},&lt;br /&gt;
	sortable = {&lt;br /&gt;
		off = false,&lt;br /&gt;
		on = &#039;sortable_on&#039;,&lt;br /&gt;
		table = &#039;sortable_table&#039;,&lt;br /&gt;
		debug = &#039;sortable_debug&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local spellOptions = {&lt;br /&gt;
	cardinal = {},&lt;br /&gt;
	Cardinal = { upper = true },&lt;br /&gt;
	cardinal_us = { us = true },&lt;br /&gt;
	Cardinal_us = { us = true, upper = true },&lt;br /&gt;
	ordinal = { ordinal = true },&lt;br /&gt;
	Ordinal = { ordinal = true, upper = true },&lt;br /&gt;
	ordinal_us = { ordinal = true, us = true },&lt;br /&gt;
	Ordinal_us = { ordinal = true, us = true, upper = true },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function dateExtract(frame)&lt;br /&gt;
	-- Return part of a date after performing an optional operation.&lt;br /&gt;
	local Date = getExports(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local parms = {}&lt;br /&gt;
	for i, v in ipairs(args) do&lt;br /&gt;
		parms[i] = v&lt;br /&gt;
	end&lt;br /&gt;
	if yes(args.fix) then&lt;br /&gt;
		table.insert(parms, &#039;fix&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if yes(args.partial) then&lt;br /&gt;
		table.insert(parms, &#039;partial&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local show = stripToNil(args.show) or &#039;dmy&#039;&lt;br /&gt;
	local date = Date(unpack(parms))&lt;br /&gt;
	if not date then&lt;br /&gt;
		if show == &#039;format&#039; then&lt;br /&gt;
			return &#039;error&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return message(&#039;mt-need-valid-date&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local add = stripToNil(args.add)&lt;br /&gt;
	if add then&lt;br /&gt;
		for item in add:gmatch(&#039;%S+&#039;) do&lt;br /&gt;
			date = date + item&lt;br /&gt;
			if not date then&lt;br /&gt;
				return message({ &#039;mt-cannot-add&#039;, item })&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local sortKey, result&lt;br /&gt;
	local sortable = translateParameters.sortable[args.sortable]&lt;br /&gt;
	if sortable then&lt;br /&gt;
		local value = (date.partial and date.partial.first or date).jdz&lt;br /&gt;
		sortKey = makeSort(value, sortable)&lt;br /&gt;
	end&lt;br /&gt;
	if show ~= &#039;hide&#039; then&lt;br /&gt;
		result = date[show]&lt;br /&gt;
		if result == nil then&lt;br /&gt;
			result = from_en(date:text(show))&lt;br /&gt;
		elseif type(result) == &#039;boolean&#039; then&lt;br /&gt;
			result = result and &#039;1&#039; or &#039;0&#039;&lt;br /&gt;
		else&lt;br /&gt;
			result = from_en(tostring(result))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return (sortKey or &#039;&#039;) .. makeExtra(args) .. (result or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function rangeJoin(range)&lt;br /&gt;
	-- Return text to be used between a range of ages.&lt;br /&gt;
	return range == &#039;dash&#039; and &#039;–&#039; or mtext[&#039;txt-or&#039;]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeText(values, components, names, options, noUpper)&lt;br /&gt;
	-- Return wikitext representing an age or duration.&lt;br /&gt;
	local text = Collection.new()&lt;br /&gt;
	local count = #values&lt;br /&gt;
	local sep = names.sep or &#039;&#039;&lt;br /&gt;
	for i, v in ipairs(values) do&lt;br /&gt;
		-- v is a number (say 4 for 4 years), or a table ({4,5} for 4 or 5 years).&lt;br /&gt;
		local islist = type(v) == &#039;table&#039;&lt;br /&gt;
		if (islist or v &amp;gt; 0) or (text.n == 0 and i == count) or (text.n &amp;gt; 0 and components.keepZero) then&lt;br /&gt;
			local fmt, vstr&lt;br /&gt;
			if options.spell then&lt;br /&gt;
				fmt = function(number)&lt;br /&gt;
					return spellNumber(number, options.spell, noUpper or i)&lt;br /&gt;
				end&lt;br /&gt;
			elseif i == 1 and options.format == &#039;format_commas&#039; then&lt;br /&gt;
				-- Numbers after the first should be small and not need formatting.&lt;br /&gt;
				fmt = formatNumber&lt;br /&gt;
			else&lt;br /&gt;
				fmt = tostring&lt;br /&gt;
			end&lt;br /&gt;
			if islist then&lt;br /&gt;
				vstr = fmt(v[1]) .. rangeJoin(options.range)&lt;br /&gt;
				noUpper = true&lt;br /&gt;
				vstr = vstr .. fmt(v[2])&lt;br /&gt;
			else&lt;br /&gt;
				vstr = fmt(v)&lt;br /&gt;
			end&lt;br /&gt;
			local name = names[components[i]]&lt;br /&gt;
			if name then&lt;br /&gt;
				local plural = names.plural&lt;br /&gt;
				if not plural or (islist and v[2] or v) == 1 then&lt;br /&gt;
					plural = &#039;&#039;&lt;br /&gt;
				end&lt;br /&gt;
				text:add(vstr .. sep .. name .. plural)&lt;br /&gt;
			else&lt;br /&gt;
				text:add(vstr)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local first, last&lt;br /&gt;
	if options.join == &#039;sep_space&#039; then&lt;br /&gt;
		first = &#039; &#039;&lt;br /&gt;
		last = &#039; &#039;&lt;br /&gt;
	elseif options.join == &#039;sep_comma&#039; then&lt;br /&gt;
		first = &#039;, &#039;&lt;br /&gt;
		last = &#039;, &#039;&lt;br /&gt;
	elseif options.join == &#039;sep_serialcomma&#039; and text.n &amp;gt; 2 then&lt;br /&gt;
		first = &#039;, &#039;&lt;br /&gt;
		last = mtext[&#039;txt-comma-and&#039;]&lt;br /&gt;
	else&lt;br /&gt;
		first = &#039;, &#039;&lt;br /&gt;
		last = mtext[&#039;txt-and&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(text) do&lt;br /&gt;
		if i &amp;lt; text.n then&lt;br /&gt;
			text[i] = v .. (i + 1 &amp;lt; text.n and first or last)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local sign = &#039;&#039;&lt;br /&gt;
	if options.isnegative then&lt;br /&gt;
		-- Do not display negative zero.&lt;br /&gt;
		if text.n &amp;gt; 1 or (text.n == 1 and text[1]:sub(1, 1) ~= &#039;0&#039; ) then&lt;br /&gt;
			if options.format == &#039;format_raw&#039; then&lt;br /&gt;
				sign = &#039;-&#039;  -- plain hyphen so result can be used in a calculation&lt;br /&gt;
			else&lt;br /&gt;
				sign = &#039;−&#039;  -- Unicode U+2212 MINUS SIGN&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return&lt;br /&gt;
		(options.sortKey or &#039;&#039;) ..&lt;br /&gt;
		(options.extra or &#039;&#039;) ..&lt;br /&gt;
		sign ..&lt;br /&gt;
		text:join() ..&lt;br /&gt;
		(options.suffix or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dateDifference(parms)&lt;br /&gt;
	-- Return a formatted date difference using the given parameters&lt;br /&gt;
	-- which have been validated.&lt;br /&gt;
	local names = {&lt;br /&gt;
		abbr_off = {&lt;br /&gt;
			plural = &#039;s&#039;,&lt;br /&gt;
			sep = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
			y = &#039;ꯆꯍꯤ&#039;,&lt;br /&gt;
			m = &#039;ꯊꯥ&#039;,&lt;br /&gt;
			w = &#039;ꯆꯌꯣꯜ&#039;,&lt;br /&gt;
			d = &#039;ꯅꯨꯃꯤꯠ&#039;,&lt;br /&gt;
			H = &#039;ꯄꯨꯡ&#039;,&lt;br /&gt;
			M = &#039;ꯃꯤꯅꯨꯠ&#039;,&lt;br /&gt;
			S = &#039;ꯁꯦꯀꯦꯟ&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		abbr_on = {&lt;br /&gt;
			y = &#039;y&#039;,&lt;br /&gt;
			m = &#039;m&#039;,&lt;br /&gt;
			w = &#039;w&#039;,&lt;br /&gt;
			d = &#039;d&#039;,&lt;br /&gt;
			H = &#039;h&#039;,&lt;br /&gt;
			M = &#039;m&#039;,&lt;br /&gt;
			S = &#039;s&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		abbr_infant = {      -- for {{age for infant}}&lt;br /&gt;
			plural = &#039;s&#039;,&lt;br /&gt;
			sep = &#039;&amp;amp;nbsp;&#039;,&lt;br /&gt;
			y = &#039;yr&#039;,&lt;br /&gt;
			m = &#039;mo&#039;,&lt;br /&gt;
			w = &#039;wk&#039;,&lt;br /&gt;
			d = &#039;day&#039;,&lt;br /&gt;
			H = &#039;hr&#039;,&lt;br /&gt;
			M = &#039;min&#039;,&lt;br /&gt;
			S = &#039;sec&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		abbr_raw = {},&lt;br /&gt;
	}&lt;br /&gt;
	local diff = parms.diff  -- must be a valid date difference&lt;br /&gt;
	local show = parms.show  -- may be nil; default is set below&lt;br /&gt;
	local abbr = parms.abbr or &#039;abbr_off&#039;&lt;br /&gt;
	local defaultJoin&lt;br /&gt;
	if abbr ~= &#039;abbr_off&#039; then&lt;br /&gt;
		defaultJoin = &#039;sep_space&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if not show then&lt;br /&gt;
		show = &#039;ymd&#039;&lt;br /&gt;
		if parms.disp == &#039;disp_age&#039; then&lt;br /&gt;
			if diff.years &amp;lt; 3 then&lt;br /&gt;
				defaultJoin = &#039;sep_space&#039;&lt;br /&gt;
				if diff.years &amp;gt;= 1 then&lt;br /&gt;
					show = &#039;ym&#039;&lt;br /&gt;
				else&lt;br /&gt;
					show = &#039;md&#039;&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				show = &#039;y&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if type(show) ~= &#039;table&#039; then&lt;br /&gt;
		show = translateParameters.show[show]&lt;br /&gt;
	end&lt;br /&gt;
	if parms.disp == &#039;disp_raw&#039; then&lt;br /&gt;
		defaultJoin = &#039;sep_space&#039;&lt;br /&gt;
		abbr = &#039;abbr_raw&#039;&lt;br /&gt;
	elseif parms.wantSc then&lt;br /&gt;
		defaultJoin = &#039;sep_serialcomma&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local diffOptions = {&lt;br /&gt;
		round = parms.round,&lt;br /&gt;
		duration = parms.wantDuration,&lt;br /&gt;
		range = parms.range and true or nil,&lt;br /&gt;
	}&lt;br /&gt;
	local sortKey&lt;br /&gt;
	if parms.sortable then&lt;br /&gt;
		local value = diff.age_days + (parms.wantDuration and 1 or 0)  -- days and fraction of a day&lt;br /&gt;
		if diff.isnegative then&lt;br /&gt;
			value = -value&lt;br /&gt;
		end&lt;br /&gt;
		sortKey = makeSort(value, parms.sortable)&lt;br /&gt;
	end&lt;br /&gt;
	local textOptions = {&lt;br /&gt;
		extra = parms.extra,&lt;br /&gt;
		format = parms.format,&lt;br /&gt;
		join = parms.sep or defaultJoin,&lt;br /&gt;
		isnegative = diff.isnegative,&lt;br /&gt;
		range = parms.range,&lt;br /&gt;
		sortKey = sortKey,&lt;br /&gt;
		spell = parms.spell,&lt;br /&gt;
		suffix = parms.suffix,  -- not currently used&lt;br /&gt;
	}&lt;br /&gt;
	if show.id == &#039;hide&#039; then&lt;br /&gt;
		return sortKey or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local values = { diff:age(show.id, diffOptions) }&lt;br /&gt;
	if values[1] then&lt;br /&gt;
		return makeText(values, show, names[abbr], textOptions)&lt;br /&gt;
	end&lt;br /&gt;
	if diff.partial then&lt;br /&gt;
		-- Handle a more complex range such as&lt;br /&gt;
		-- {{age_yd|20 Dec 2001|2003|range=yes}} → 1 year, 12 days or 2 years, 11 days&lt;br /&gt;
		local opt = {&lt;br /&gt;
			format = textOptions.format,&lt;br /&gt;
			join = textOptions.join,&lt;br /&gt;
			isnegative = textOptions.isnegative,&lt;br /&gt;
			spell = textOptions.spell,&lt;br /&gt;
		}&lt;br /&gt;
		return&lt;br /&gt;
			(textOptions.sortKey or &#039;&#039;) ..&lt;br /&gt;
			makeText({ diff.partial.mindiff:age(show.id, diffOptions) }, show, names[abbr], opt) ..&lt;br /&gt;
			rangeJoin(textOptions.range) ..&lt;br /&gt;
			makeText({ diff.partial.maxdiff:age(show.id, diffOptions) }, show, names[abbr], opt, true) ..&lt;br /&gt;
			(textOptions.suffix or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return message({ &#039;mt-bad-show&#039;, show.id })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDates(frame, getopt)&lt;br /&gt;
	-- Parse template parameters and return one of:&lt;br /&gt;
	-- * date         (a date table, if single)&lt;br /&gt;
	-- * date1, date2 (two date tables, if not single)&lt;br /&gt;
	-- * text         (a string error message)&lt;br /&gt;
	-- A missing date is optionally replaced with the current date.&lt;br /&gt;
	-- If wantMixture is true, a missing date component is replaced&lt;br /&gt;
	-- from the current date, so can get a bizarre mixture of&lt;br /&gt;
	-- specified/current y/m/d as has been done by some &amp;quot;age&amp;quot; templates.&lt;br /&gt;
	-- Some results may be placed in table getopt.&lt;br /&gt;
	local Date, currentDate = getExports(frame)&lt;br /&gt;
	getopt = getopt or {}&lt;br /&gt;
	local function flagCurrent(text)&lt;br /&gt;
		-- This allows the calling template to detect if the current date has been used,&lt;br /&gt;
		-- that is, whether both dates have been entered in a template expecting two.&lt;br /&gt;
		-- For example, an infobox may want the age when an event occurred, not the current age.&lt;br /&gt;
		-- Don&#039;t bother detecting if wantMixture is used because not needed and it is a poor option.&lt;br /&gt;
		if not text then&lt;br /&gt;
			if getopt.noMissing then&lt;br /&gt;
				return nil  -- this gives a nil date which gives an error&lt;br /&gt;
			end&lt;br /&gt;
			text = &#039;currentdate&#039;&lt;br /&gt;
			if getopt.flag == &#039;usesCurrent&#039; then&lt;br /&gt;
				getopt.usesCurrent = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local fields = {}&lt;br /&gt;
	local isNamed = args.year or args.year1 or args.year2 or&lt;br /&gt;
		args.month or args.month1 or args.month2 or&lt;br /&gt;
		args.day or args.day1 or args.day2&lt;br /&gt;
	if isNamed then&lt;br /&gt;
		fields[1] = args.year1 or args.year&lt;br /&gt;
		fields[2] = args.month1 or args.month&lt;br /&gt;
		fields[3] = args.day1 or args.day&lt;br /&gt;
		fields[4] = args.year2&lt;br /&gt;
		fields[5] = args.month2&lt;br /&gt;
		fields[6] = args.day2&lt;br /&gt;
	else&lt;br /&gt;
		for i = 1, 6 do&lt;br /&gt;
			fields[i] = args[i]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local imax = 0&lt;br /&gt;
	for i = 1, 6 do&lt;br /&gt;
		fields[i] = stripToNil(fields[i])&lt;br /&gt;
		if fields[i] then&lt;br /&gt;
			imax = i&lt;br /&gt;
		end&lt;br /&gt;
		if getopt.omitZero and i % 3 ~= 1 then  -- omit zero months and days as unknown values but keep year 0 which is 1 BCE&lt;br /&gt;
			if isZero(fields[i]) then&lt;br /&gt;
				fields[i] = nil&lt;br /&gt;
				getopt.partial = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local fix = getopt.fix and &#039;fix&#039; or &#039;&#039;&lt;br /&gt;
	local partialText = getopt.partial and &#039;partial&#039; or &#039;&#039;&lt;br /&gt;
	local dates = {}&lt;br /&gt;
	if isNamed or imax &amp;gt;= 3 then&lt;br /&gt;
		local nrDates = getopt.single and 1 or 2&lt;br /&gt;
		if getopt.wantMixture then&lt;br /&gt;
			-- Cannot be partial since empty fields are set from current.&lt;br /&gt;
			local components = { &#039;year&#039;, &#039;month&#039;, &#039;day&#039; }&lt;br /&gt;
			for i = 1, nrDates * 3 do&lt;br /&gt;
				fields[i] = fields[i] or currentDate[components[i &amp;gt; 3 and i - 3 or i]]&lt;br /&gt;
			end&lt;br /&gt;
			for i = 1, nrDates do&lt;br /&gt;
				local index = i == 1 and 1 or 4&lt;br /&gt;
				dates[i] = Date(fields[index], fields[index+1], fields[index+2])&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- If partial dates are allowed, accept&lt;br /&gt;
			--     year only, or&lt;br /&gt;
			--     year and month only&lt;br /&gt;
			-- Do not accept year and day without a month because that makes no sense&lt;br /&gt;
			-- (and because, for example, Date(&#039;partial&#039;, 2001, nil, 12) sets day = nil, not 12).&lt;br /&gt;
			for i = 1, nrDates do&lt;br /&gt;
				local index = i == 1 and 1 or 4&lt;br /&gt;
				local y, m, d = fields[index], fields[index+1], fields[index+2]&lt;br /&gt;
				if (getopt.partial and y and (m or not d)) or (y and m and d) then&lt;br /&gt;
					dates[i] = Date(fix, partialText, y, m, d)&lt;br /&gt;
				elseif not y and not m and not d then&lt;br /&gt;
					dates[i] = Date(flagCurrent())&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		getopt.textdates = true  -- have parsed each date from a single text field&lt;br /&gt;
		dates[1] = Date(fix, partialText, flagCurrent(fields[1]))&lt;br /&gt;
		if not getopt.single then&lt;br /&gt;
			dates[2] = Date(fix, partialText, flagCurrent(fields[2]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not dates[1] then&lt;br /&gt;
		return message(getopt.missing1 or &#039;mt-need-valid-ymd&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if getopt.single then&lt;br /&gt;
		return dates[1]&lt;br /&gt;
	end&lt;br /&gt;
	if not dates[2] then&lt;br /&gt;
		return message(getopt.missing2 or &#039;mt-need-valid-ymd2&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return dates[1], dates[2]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ageGeneric(frame)&lt;br /&gt;
	-- Return the result required by the specified template.&lt;br /&gt;
	-- Can use sortable=x where x = on/table/off/debug in any supported template.&lt;br /&gt;
	-- Some templates default to sortable=on but can be overridden.&lt;br /&gt;
	local name = frame.args.template&lt;br /&gt;
	if not name then&lt;br /&gt;
		return message(&#039;mt-template-x&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local specs = {&lt;br /&gt;
		age_days = {                -- {{age in days}}&lt;br /&gt;
			show = &#039;d&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_days_nts = {            -- {{age in days nts}}&lt;br /&gt;
			show = &#039;d&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
			format = &#039;format_commas&#039;,&lt;br /&gt;
			sortable = &#039;on&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		duration_days = {           -- {{duration in days}}&lt;br /&gt;
			show = &#039;d&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
			duration = true,&lt;br /&gt;
		},&lt;br /&gt;
		duration_days_nts = {       -- {{duration in days nts}}&lt;br /&gt;
			show = &#039;d&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
			format = &#039;format_commas&#039;,&lt;br /&gt;
			sortable = &#039;on&#039;,&lt;br /&gt;
			duration = true,&lt;br /&gt;
		},&lt;br /&gt;
		age_full_years = {          -- {{age}}&lt;br /&gt;
			show = &#039;y&#039;,&lt;br /&gt;
			abbr = &#039;abbr_raw&#039;,&lt;br /&gt;
			flag = &#039;usesCurrent&#039;,&lt;br /&gt;
			omitZero = true,&lt;br /&gt;
			range = &#039;no&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_full_years_nts = {      -- {{age nts}}&lt;br /&gt;
			show = &#039;y&#039;,&lt;br /&gt;
			abbr = &#039;abbr_raw&#039;,&lt;br /&gt;
			format = &#039;format_commas&#039;,&lt;br /&gt;
			sortable = &#039;on&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_in_years = {            -- {{age in years}}&lt;br /&gt;
			show = &#039;y&#039;,&lt;br /&gt;
			abbr = &#039;abbr_raw&#039;,&lt;br /&gt;
			negative = &#039;error&#039;,&lt;br /&gt;
			range = &#039;dash&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_in_years_nts = {        -- {{age in years nts}}&lt;br /&gt;
			show = &#039;y&#039;,&lt;br /&gt;
			abbr = &#039;abbr_raw&#039;,&lt;br /&gt;
			negative = &#039;error&#039;,&lt;br /&gt;
			range = &#039;dash&#039;,&lt;br /&gt;
			format = &#039;format_commas&#039;,&lt;br /&gt;
			sortable = &#039;on&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_infant = {              -- {{age for infant}}&lt;br /&gt;
			-- Do not set show because special processing is done later.&lt;br /&gt;
			abbr = yes(args.abbr) and &#039;abbr_infant&#039; or &#039;abbr_off&#039;,&lt;br /&gt;
			disp = &#039;disp_age&#039;,&lt;br /&gt;
			sep = &#039;sep_space&#039;,&lt;br /&gt;
			sortable = &#039;on&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_m = {                   -- {{age in months}}&lt;br /&gt;
			show = &#039;m&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_w = {                   -- {{age in weeks}}&lt;br /&gt;
			show = &#039;w&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_wd = {                  -- {{age in weeks and days}}&lt;br /&gt;
			show = &#039;wd&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_yd = {                  -- {{age in years and days}}&lt;br /&gt;
			show = &#039;yd&#039;,&lt;br /&gt;
			format = &#039;format_commas&#039;,&lt;br /&gt;
			sep = args.sep ~= &#039;and&#039; and &#039;sep_comma&#039; or nil,&lt;br /&gt;
		},&lt;br /&gt;
		age_yd_nts = {              -- {{age in years and days nts}}&lt;br /&gt;
			show = &#039;yd&#039;,&lt;br /&gt;
			format = &#039;format_commas&#039;,&lt;br /&gt;
			sep = args.sep ~= &#039;and&#039; and &#039;sep_comma&#039; or nil,&lt;br /&gt;
			sortable = &#039;on&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_ym = {                  -- {{age in years and months}}&lt;br /&gt;
			show = &#039;ym&#039;,&lt;br /&gt;
			sep = &#039;sep_comma&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		age_ymd = {                 -- {{age in years, months and days}}&lt;br /&gt;
			show = &#039;ymd&#039;,&lt;br /&gt;
			range = true,&lt;br /&gt;
		},&lt;br /&gt;
		age_ymwd = {                -- {{age in years, months, weeks and days}}&lt;br /&gt;
			show = &#039;ymwd&#039;,&lt;br /&gt;
			wantMixture = true,&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
	local spec = specs[name]&lt;br /&gt;
	if not spec then&lt;br /&gt;
		return message(&#039;mt-template-bad-name&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if name == &#039;age_days&#039; then&lt;br /&gt;
		local su = stripToNil(args[&#039;show unit&#039;])&lt;br /&gt;
		if su then&lt;br /&gt;
			if su == &#039;abbr&#039; or su == &#039;full&#039; then&lt;br /&gt;
				spec.disp = nil&lt;br /&gt;
				spec.abbr = su == &#039;abbr&#039; and &#039;abbr_on&#039; or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local partial, autofill&lt;br /&gt;
	local range = stripToNil(args.range) or spec.range&lt;br /&gt;
	if range then&lt;br /&gt;
		-- Suppose partial dates are used and age could be 11 or 12 years.&lt;br /&gt;
		-- &amp;quot;|range=&amp;quot; (empty value) has no effect (spec is used).&lt;br /&gt;
		-- &amp;quot;|range=yes&amp;quot; or spec.range == true sets range = true (gives &amp;quot;11 or 12&amp;quot;)&lt;br /&gt;
		-- &amp;quot;|range=dash&amp;quot; or spec.range == &#039;dash&#039; sets range = &#039;dash&#039; (gives &amp;quot;11–12&amp;quot;).&lt;br /&gt;
		-- &amp;quot;|range=no&amp;quot; or spec.range == &#039;no&#039; sets range = nil and fills each date in the diff (gives &amp;quot;12&amp;quot;).&lt;br /&gt;
		--     (&amp;quot;on&amp;quot; is equivalent to &amp;quot;yes&amp;quot;, and &amp;quot;off&amp;quot; is equivalent to &amp;quot;no&amp;quot;).&lt;br /&gt;
		-- &amp;quot;|range=OTHER&amp;quot; sets range = nil and rejects partial dates.&lt;br /&gt;
		range = ({ dash = &#039;dash&#039;, off = &#039;no&#039;, no = &#039;no&#039;, [true] = true })[range] or yes(range)&lt;br /&gt;
		if range then&lt;br /&gt;
			partial = true  -- accept partial dates with a possible age range for the result&lt;br /&gt;
			if range == &#039;no&#039; then&lt;br /&gt;
				autofill = true  -- missing month/day in first or second date are filled from other date or 1&lt;br /&gt;
				range = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local getopt = {&lt;br /&gt;
		fix = yes(args.fix),&lt;br /&gt;
		flag = stripToNil(args.flag) or spec.flag,&lt;br /&gt;
		omitZero = spec.omitZero,&lt;br /&gt;
		partial = partial,&lt;br /&gt;
		wantMixture = spec.wantMixture,&lt;br /&gt;
	}&lt;br /&gt;
	local date1, date2 = getDates(frame, getopt)&lt;br /&gt;
	if type(date1) == &#039;string&#039; then&lt;br /&gt;
		return date1&lt;br /&gt;
	end&lt;br /&gt;
	local format = stripToNil(args.format)&lt;br /&gt;
	local spell = spellOptions[format]&lt;br /&gt;
	if format then&lt;br /&gt;
		format = &#039;format_&#039; .. format&lt;br /&gt;
	elseif name == &#039;age_days&#039; and getopt.textdates then&lt;br /&gt;
		format = &#039;format_commas&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local parms = {&lt;br /&gt;
		diff = date2:subtract(date1, { fill = autofill }),&lt;br /&gt;
		wantDuration = spec.duration or yes(args.duration),&lt;br /&gt;
		range = range,&lt;br /&gt;
		wantSc = yes(args.sc),&lt;br /&gt;
		show = args.show == &#039;hide&#039; and &#039;hide&#039; or spec.show,&lt;br /&gt;
		abbr = spec.abbr,&lt;br /&gt;
		disp = spec.disp,&lt;br /&gt;
		extra = makeExtra(args, getopt.usesCurrent and format ~= &#039;format_raw&#039;),&lt;br /&gt;
		format = format or spec.format,&lt;br /&gt;
		round = yes(args.round),&lt;br /&gt;
		sep = spec.sep,&lt;br /&gt;
		sortable = translateParameters.sortable[args.sortable or spec.sortable],&lt;br /&gt;
		spell = spell,&lt;br /&gt;
	}&lt;br /&gt;
	if (spec.negative or frame.args.negative) == &#039;error&#039; and parms.diff.isnegative then&lt;br /&gt;
		return message(&#039;mt-date-wrong-order&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return from_en(dateDifference(parms))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bda(frame)&lt;br /&gt;
	-- Implement [[Template:Birth date and age]].&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local options = {&lt;br /&gt;
		missing1 = &#039;mt-need-valid-bd&#039;,&lt;br /&gt;
		noMissing = true,&lt;br /&gt;
		single = true,&lt;br /&gt;
	}&lt;br /&gt;
	local date = getDates(frame, options)&lt;br /&gt;
	if type(date) == &#039;string&#039; then&lt;br /&gt;
		return date  -- error text&lt;br /&gt;
	end&lt;br /&gt;
	local Date = getExports(frame)&lt;br /&gt;
	local diff = Date(&#039;currentdate&#039;) - date&lt;br /&gt;
	if diff.isnegative or diff.years &amp;gt; 150 then&lt;br /&gt;
		return message(&#039;mt-invalid-bd-age&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local disp, show = &#039;disp_raw&#039;, &#039;y&#039;&lt;br /&gt;
	if diff.years &amp;lt; 2 then&lt;br /&gt;
		disp = &#039;disp_age&#039;&lt;br /&gt;
		if diff.years == 0 and diff.months == 0 then&lt;br /&gt;
			show = &#039;d&#039;&lt;br /&gt;
		else&lt;br /&gt;
			show = &#039;m&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local df = stripToNil(args.df)  -- day first (dmy); default is month first (mdy)&lt;br /&gt;
	local result = &#039;(&amp;lt;span class=&amp;quot;bday&amp;quot;&amp;gt;%-Y-%m-%d&amp;lt;/span&amp;gt;) &amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
					(df and &#039;%-d %B %-Y&#039; or &#039;%B %-d, %-Y&#039;)&lt;br /&gt;
	result = from_en(&#039;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt; &#039; ..&lt;br /&gt;
		date:text(result) ..&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;noprint ForceAgeToShow&amp;quot;&amp;gt; &#039; ..&lt;br /&gt;
		mtext[&#039;txt-age&#039;] ..&lt;br /&gt;
		dateDifference({&lt;br /&gt;
			diff = diff,&lt;br /&gt;
			show = show,&lt;br /&gt;
			abbr = &#039;abbr_off&#039;,&lt;br /&gt;
			disp = disp,&lt;br /&gt;
			sep = &#039;sep_space&#039;,&lt;br /&gt;
		}) ..&lt;br /&gt;
		&#039;)&amp;lt;/span&amp;gt;&#039;)&lt;br /&gt;
	local warnings = tonumber(frame.args.warnings)&lt;br /&gt;
	if warnings and warnings &amp;gt; 0 then&lt;br /&gt;
		local good = {&lt;br /&gt;
			df = true,&lt;br /&gt;
			mf = true,&lt;br /&gt;
			day = true,&lt;br /&gt;
			day1 = true,&lt;br /&gt;
			month = true,&lt;br /&gt;
			month1 = true,&lt;br /&gt;
			year = true,&lt;br /&gt;
			year1 = true,&lt;br /&gt;
		}&lt;br /&gt;
		local invalid&lt;br /&gt;
		local imax = options.textdates and 1 or 3&lt;br /&gt;
		for k, _ in pairs(args) do&lt;br /&gt;
			if type(k) == &#039;number&#039; then&lt;br /&gt;
				if k &amp;gt; imax then&lt;br /&gt;
					invalid = tostring(k)&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				if not good[k] then&lt;br /&gt;
					invalid = k&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if invalid then&lt;br /&gt;
			result = result .. message({ &#039;mt-bad-param1&#039;, invalid }, &#039;warning&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dda(frame)&lt;br /&gt;
	-- Implement [[Template:Death date and age]].&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local options = {&lt;br /&gt;
		missing1 = &#039;mt-need-valid-dd&#039;,&lt;br /&gt;
		missing2 = &#039;mt-need-valid-bd2&#039;,&lt;br /&gt;
		noMissing = true,&lt;br /&gt;
		partial = true,&lt;br /&gt;
	}&lt;br /&gt;
	local date1, date2 = getDates(frame, options)&lt;br /&gt;
	if type(date1) == &#039;string&#039; then&lt;br /&gt;
		return date1&lt;br /&gt;
	end&lt;br /&gt;
	local diff = date1 - date2&lt;br /&gt;
	if diff.isnegative then&lt;br /&gt;
		return message(&#039;mt-dd-wrong-order&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local Date = getExports(frame)&lt;br /&gt;
	local today = Date(&#039;currentdate&#039;) + 1  -- one day in future allows for timezones&lt;br /&gt;
	if date1 &amp;gt; today then&lt;br /&gt;
		return message(&#039;mt-dd-future&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local years&lt;br /&gt;
	if diff.partial then&lt;br /&gt;
		years = diff.partial.years&lt;br /&gt;
		years = type(years) == &#039;table&#039; and years[2] or years&lt;br /&gt;
	else&lt;br /&gt;
		years = diff.years&lt;br /&gt;
	end&lt;br /&gt;
	if years &amp;gt; 150 then&lt;br /&gt;
		return message(&#039;mt-invalid-dates-age&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local df = stripToNil(args.df)  -- day first (dmy); default is month first (mdy)&lt;br /&gt;
	local result&lt;br /&gt;
	if date1.day then  -- y, m, d known&lt;br /&gt;
		result = (df and&lt;br /&gt;
			&#039;%-d %B %-Y&#039; or&lt;br /&gt;
			&#039;%B %-d, %-Y&#039;) ..&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;(%-Y-%m-%d)&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	elseif date1.month then  -- y, m known; d unknown&lt;br /&gt;
		result =&lt;br /&gt;
			&#039;%B %-Y&#039; ..&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;(%-Y-%m-00)&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	else  -- y known; m, d unknown&lt;br /&gt;
		result =&lt;br /&gt;
			&#039;%-Y&#039; ..&lt;br /&gt;
			&#039;&amp;lt;span style=&amp;quot;display:none&amp;quot;&amp;gt;(%-Y-00-00)&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	result = from_en(date1:text(result) ..&lt;br /&gt;
		mtext[&#039;txt-aged&#039;] ..&lt;br /&gt;
		dateDifference({&lt;br /&gt;
			diff = diff,&lt;br /&gt;
			show = &#039;y&#039;,&lt;br /&gt;
			abbr = &#039;abbr_off&#039;,&lt;br /&gt;
			disp = &#039;disp_raw&#039;,&lt;br /&gt;
			range = &#039;dash&#039;,&lt;br /&gt;
			sep = &#039;sep_space&#039;,&lt;br /&gt;
		}) ..&lt;br /&gt;
		&#039;)&#039;)&lt;br /&gt;
	local warnings = tonumber(frame.args.warnings)&lt;br /&gt;
	if warnings and warnings &amp;gt; 0 then&lt;br /&gt;
		local good = {&lt;br /&gt;
			df = true,&lt;br /&gt;
			mf = true,&lt;br /&gt;
		}&lt;br /&gt;
		local invalid&lt;br /&gt;
		local imax = options.textdates and 2 or 6&lt;br /&gt;
		for k, _ in pairs(args) do&lt;br /&gt;
			if type(k) == &#039;number&#039; then&lt;br /&gt;
				if k &amp;gt; imax then&lt;br /&gt;
					invalid = tostring(k)&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				if not good[k] then&lt;br /&gt;
					invalid = k&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if invalid then&lt;br /&gt;
			result = result .. message({ &#039;mt-bad-param1&#039;, invalid }, &#039;warning&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dateToGsd(frame)&lt;br /&gt;
	-- Implement [[Template:Gregorian serial date]].&lt;br /&gt;
	-- Return Gregorian serial date of the given date, or the current date.&lt;br /&gt;
	-- The returned value is negative for dates before 1 January 1 AD&lt;br /&gt;
	-- despite the fact that GSD is not defined for such dates.&lt;br /&gt;
	local date = getDates(frame, { wantMixture=true, single=true })&lt;br /&gt;
	if type(date) == &#039;string&#039; then&lt;br /&gt;
		return date&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(date.gsd)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function jdToDate(frame)&lt;br /&gt;
	-- Return formatted date from a Julian date.&lt;br /&gt;
	-- The result includes a time if the input includes a fraction.&lt;br /&gt;
	-- The word &#039;Julian&#039; is accepted for the Julian calendar.&lt;br /&gt;
	local Date = getExports(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local date = Date(&#039;juliandate&#039;, args[1], args[2])&lt;br /&gt;
	if date then&lt;br /&gt;
		return from_en(date:text())&lt;br /&gt;
	end&lt;br /&gt;
	return message(&#039;mt-need-jdn&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dateToJd(frame)&lt;br /&gt;
	-- Return Julian date (a number) from a date which may include a time,&lt;br /&gt;
	-- or the current date (&#039;currentdate&#039;) or current date and time (&#039;currentdatetime&#039;).&lt;br /&gt;
	-- The word &#039;Julian&#039; is accepted for the Julian calendar.&lt;br /&gt;
	local Date = getExports(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local date = Date(args[1], args[2], args[3], args[4], args[5], args[6], args[7])&lt;br /&gt;
	if date then&lt;br /&gt;
		return tostring(date.jd)&lt;br /&gt;
	end&lt;br /&gt;
	return message(&#039;mt-need-valid-ymd-current&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function timeInterval(frame)&lt;br /&gt;
	-- Implement [[Template:Time interval]].&lt;br /&gt;
	-- There are two positional arguments: date1, date2.&lt;br /&gt;
	-- The default for each is the current date and time.&lt;br /&gt;
	-- Result is date2 - date1 formatted.&lt;br /&gt;
	local Date = getExports(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	local parms = {&lt;br /&gt;
		extra = makeExtra(args),&lt;br /&gt;
		wantDuration = yes(args.duration),&lt;br /&gt;
		range = yes(args.range) or (args.range == &#039;dash&#039; and &#039;dash&#039; or nil),&lt;br /&gt;
		wantSc = yes(args.sc),&lt;br /&gt;
	}&lt;br /&gt;
	local fix = yes(args.fix) and &#039;fix&#039; or &#039;&#039;&lt;br /&gt;
	local date1 = Date(fix, &#039;partial&#039;, stripToNil(args[1]) or &#039;currentdatetime&#039;)&lt;br /&gt;
	if not date1 then&lt;br /&gt;
		return message(&#039;mt-invalid-start&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local date2 = Date(fix, &#039;partial&#039;, stripToNil(args[2]) or &#039;currentdatetime&#039;)&lt;br /&gt;
	if not date2 then&lt;br /&gt;
		return message(&#039;mt-invalid-end&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	parms.diff = date2 - date1&lt;br /&gt;
	for argname, translate in pairs(translateParameters) do&lt;br /&gt;
		local parm = stripToNil(args[argname])&lt;br /&gt;
		if parm then&lt;br /&gt;
			parm = translate[parm]&lt;br /&gt;
			if parm == nil then  -- test for nil because false is a valid setting&lt;br /&gt;
				return message({ &#039;mt-bad-param2&#039;, argname, args[argname] })&lt;br /&gt;
			end&lt;br /&gt;
			parms[argname] = parm&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.round then&lt;br /&gt;
		local round = parms.round&lt;br /&gt;
		local show = parms.show&lt;br /&gt;
		if round ~= &#039;on&#039; then&lt;br /&gt;
			if show then&lt;br /&gt;
				if show.id ~= round then&lt;br /&gt;
					return message({ &#039;mt-conflicting-show&#039;, args.show, args.round })&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				parms.show = translateParameters.show[round]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		parms.round = true&lt;br /&gt;
	end&lt;br /&gt;
	return from_en(dateDifference(parms))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	age_generic = ageGeneric,           -- can emulate several age templates&lt;br /&gt;
	birth_date_and_age = bda,           -- Template:Birth_date_and_age&lt;br /&gt;
	death_date_and_age = dda,           -- Template:Death_date_and_age&lt;br /&gt;
	gsd = dateToGsd,                    -- Template:Gregorian_serial_date&lt;br /&gt;
	extract = dateExtract,              -- Template:Extract&lt;br /&gt;
	jd_to_date = jdToDate,              -- Template:?&lt;br /&gt;
	JULIANDAY = dateToJd,               -- Template:JULIANDAY&lt;br /&gt;
	time_interval = timeInterval,       -- Template:Time_interval&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=Module:About&amp;diff=10669</id>
		<title>Module:About</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=Module:About&amp;diff=10669"/>
		<updated>2021-12-30T02:09:55Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;local mArguments --initialize lazily local mHatnote = require(&amp;#039;Module:Hatnote&amp;#039;) local mHatList = require(&amp;#039;Module:Hatnote list&amp;#039;) local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local checkType = libraryUtil.checkType local p = {}  function p.about (frame) 	-- A passthrough that gets args from the frame and all 	mArguments = require(&amp;#039;Module:Arguments&amp;#039;) 	args = mArguments.getArgs(frame) 	return p._about(args) end   function p._about (args, options) 	-- Produces &amp;quot;about&amp;quot; hatnote....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local mArguments --initialize lazily&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mHatList = require(&#039;Module:Hatnote list&#039;)&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.about (frame)&lt;br /&gt;
	-- A passthrough that gets args from the frame and all&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	args = mArguments.getArgs(frame)&lt;br /&gt;
	return p._about(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p._about (args, options)&lt;br /&gt;
	-- Produces &amp;quot;about&amp;quot; hatnote.&lt;br /&gt;
&lt;br /&gt;
	-- Type checks and defaults&lt;br /&gt;
	checkType(&#039;_about&#039;, 1, args, &#039;table&#039;, true)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	checkType(&#039;_about&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local defaultOptions = {&lt;br /&gt;
		aboutForm = &#039;ꯃꯁꯤꯒꯤ %s ꯑꯁꯤ  %s ꯃꯇꯥꯡꯗꯅꯤ ꯫ &#039;,&lt;br /&gt;
		PageType = require(&#039;Module:Pagetype&#039;).main(),&lt;br /&gt;
		otherText = nil, --included for complete list&lt;br /&gt;
		sectionString = &#039;section&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for k, v in pairs(defaultOptions) do&lt;br /&gt;
		if options[k] == nil then options[k] = v end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set initial &amp;quot;about&amp;quot; string&lt;br /&gt;
	local pageType = (args.section and options.sectionString) or options.PageType&lt;br /&gt;
	local about = &#039;&#039;&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		about = string.format(options.aboutForm, pageType, args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--Allow passing through certain options&lt;br /&gt;
	local fsOptions = {&lt;br /&gt;
		otherText = options.otherText,&lt;br /&gt;
		extratext = args.text&lt;br /&gt;
	}&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	-- Set for-see list&lt;br /&gt;
	local forSee = mHatList._forSee(args, 2, fsOptions)&lt;br /&gt;
&lt;br /&gt;
	-- Concatenate and return&lt;br /&gt;
	return mHatnote._hatnote(about .. forSee, hnOptions)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Userpage&amp;diff=10670</id>
		<title>ꯇꯦꯝꯄ꯭ꯂꯦꯠ:Userpage</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=%EA%AF%87%EA%AF%A6%EA%AF%9D%EA%AF%84%EA%AF%AD%EA%AF%82%EA%AF%A6%EA%AF%A0:Userpage&amp;diff=10670"/>
		<updated>2021-12-30T02:07:13Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &amp;lt;div style=&amp;quot;text-align:center; border:1px solid #ffc9c9; background-color:#FFFFF3; font-size:85%; padding:.5em .5em 0 .5em;&amp;quot;&amp;gt; ꯃꯤꯇꯩꯂꯣꯟ ꯚꯥꯔꯠꯄꯦꯗꯤꯌꯥ &amp;lt;div&amp;gt;&amp;#039;&amp;#039;&amp;#039;ꯃꯁꯤ ꯃꯤꯇꯩꯂꯣꯟ ꯚꯥꯔꯠꯄꯦꯗꯤꯌꯥꯒꯤ ꯁꯤꯖꯤꯟꯅꯂꯣꯢꯒꯤ ꯂꯃꯥꯏꯅꯤ ꯫&amp;#039;&amp;#039;&amp;#039;&amp;lt;/div&amp;gt; ꯅꯪꯅ ꯃꯁꯤꯒꯤ ꯂꯃꯥꯏ ꯑꯁꯤ ꯑꯇꯩ ꯃꯐꯝ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; border:1px solid #ffc9c9; background-color:#FFFFF3; font-size:85%; padding:.5em .5em 0 .5em;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Bharatpedia-logo-v2-mni-v2.svg|60px|right|ꯃꯤꯇꯩꯂꯣꯟ ꯚꯥꯔꯠꯄꯦꯗꯤꯌꯥ]]&lt;br /&gt;
&amp;lt;div&amp;gt;&#039;&#039;&#039;ꯃꯁꯤ ꯃꯤꯇꯩꯂꯣꯟ ꯚꯥꯔꯠꯄꯦꯗꯤꯌꯥꯒꯤ ꯁꯤꯖꯤꯟꯅꯂꯣꯢꯒꯤ ꯂꯃꯥꯏꯅꯤ ꯫&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
ꯅꯪꯅ ꯃꯁꯤꯒꯤ ꯂꯃꯥꯏ ꯑꯁꯤ ꯑꯇꯩ ꯃꯐꯝꯗ ꯊꯦꯡꯅꯔꯕꯗꯤ, ꯅꯪꯅ ꯎꯔꯤꯕꯗꯨ ꯃꯤꯡꯁꯦꯜꯗ ꯎꯕꯗꯨꯅꯤ ꯫ ꯆꯦꯛꯁꯤꯜꯂꯨ ꯃꯗꯨꯗꯤ ꯂꯃꯥꯏ ꯑꯁꯤ ꯍꯧꯖꯤꯛ ꯃꯇꯝꯒ ꯆꯨꯅꯗꯕ ꯑꯣꯢꯕꯁꯨ ꯌꯥꯏ ꯑꯗꯨꯒ ꯁꯤꯖꯤꯟꯅꯂꯣꯢ ꯑꯁꯤꯒꯤ ꯚꯥꯔꯠꯄꯦꯗꯤꯌꯥ ꯂꯃꯥꯏ ꯑꯁꯤ ꯈꯛꯇꯗ ꯂꯩꯒꯅꯤ ꯫ ꯑꯁꯦꯡꯕ ꯂꯃꯥꯏꯗꯤ ꯃꯁꯤꯗ ꯂꯩꯔꯦ [//mni.bharatpedia.org/wiki/{{NAMESPACE}}:{{PAGENAMEE}} https://mni.bharatpedia.org/wiki/{{NAMESPACE}}:{{PAGENAMEE}}]&amp;lt;!-- -.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Templates:(all)|ꯁꯤꯖꯤꯟꯅꯔꯤꯕ-ꯂꯃꯥꯏ]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
	<entry>
		<id>https://mni.bharatpedia.org/w/index.php?title=%EA%AF%81%EA%AF%A4%EA%AF%96%EA%AF%A4%EA%AF%9F%EA%AF%85%EA%AF%94%EA%AF%A4%EA%AF%95:%EA%AF%91%EA%AF%8B%EA%AF%A5%EA%AF%A1%EA%AF%95_%EA%AF%83%EA%AF%89%EA%AF%A5%EA%AF%A1&amp;diff=10671</id>
		<title>ꯁꯤꯖꯤꯟꯅꯔꯤꯕ:ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</title>
		<link rel="alternate" type="text/html" href="https://mni.bharatpedia.org/w/index.php?title=%EA%AF%81%EA%AF%A4%EA%AF%96%EA%AF%A4%EA%AF%9F%EA%AF%85%EA%AF%94%EA%AF%A4%EA%AF%95:%EA%AF%91%EA%AF%8B%EA%AF%A5%EA%AF%A1%EA%AF%95_%EA%AF%83%EA%AF%89%EA%AF%A5%EA%AF%A1&amp;diff=10671"/>
		<updated>2021-12-30T02:01:46Z</updated>

		<summary type="html">&lt;p&gt;ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ: Created page with &amp;quot;{{Userpage}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Userpage}}&lt;/div&gt;</summary>
		<author><name>ꯑꯋꯥꯡꯕ ꯃꯉꯥꯡ</name></author>
	</entry>
</feed>