<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AGeological_range</id>
	<title>Module:Geological range - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AGeological_range"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Geological_range&amp;action=history"/>
	<updated>2026-05-28T07:29:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Geological_range&amp;diff=136366&amp;oldid=prev</id>
		<title>imported&gt;Izno: rm unnecessary vendor specifics</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Geological_range&amp;diff=136366&amp;oldid=prev"/>
		<updated>2022-11-02T23:17:03Z</updated>

		<summary type="html">&lt;p&gt;rm unnecessary vendor specifics&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
	This module is an update to already existing templates:&lt;br /&gt;
		{{Template:period start}}&lt;br /&gt;
		{{Template:period end}}&lt;br /&gt;
		{{Template:period color}}&lt;br /&gt;
		{{Template:Phanerozoic 220px}}&lt;br /&gt;
		{{Template:All time 250px}}&lt;br /&gt;
		{{Template:Geological range}}&lt;br /&gt;
		{{Template:Fossil range/bar}}&lt;br /&gt;
		{{Template:Fossil range/marker}}&lt;br /&gt;
		{{Template:Long fossil range}}&lt;br /&gt;
		{{Template:Long fossil range/bar 250}}&lt;br /&gt;
		{{Template:Long fossil range/marker}}&lt;br /&gt;
	And now it takes just one module to export all the data above,&lt;br /&gt;
	so we need only one template to just show a geological range.&lt;br /&gt;
	That template would be {{Template:Geological range}}, no need&lt;br /&gt;
	for any other templates.&lt;br /&gt;
	&lt;br /&gt;
	Done by HastaLaVi2.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local periods = {&lt;br /&gt;
	-- Some other notable dates&lt;br /&gt;
	{&amp;quot;burgess shale&amp;quot;, 508, aliases={&amp;quot;middle middle cambrian&amp;quot;}},   --[[Middle middle is approximate; cf. Burgess Shale ]]&lt;br /&gt;
	{&amp;quot;chengjiang&amp;quot;, 518},&lt;br /&gt;
	{&amp;quot;sirius passet&amp;quot;, 518},&lt;br /&gt;
	{&amp;quot;doushantou&amp;quot;, 570},&lt;br /&gt;
	--[[ Data from ICS chart&lt;br /&gt;
	The names from the ICS chart are always first on the line.&lt;br /&gt;
	]]&lt;br /&gt;
	{&amp;quot;precambrian&amp;quot;, 4600,&lt;br /&gt;
		{&amp;quot;hadean&amp;quot;},&lt;br /&gt;
		{&amp;quot;archean&amp;quot;, 4000,&lt;br /&gt;
			{&amp;quot;eoarchean&amp;quot;, aliases={&amp;quot;isuan&amp;quot;}},&lt;br /&gt;
			{&amp;quot;paleoarchean&amp;quot;, 3600},&lt;br /&gt;
			{&amp;quot;mesoarchean&amp;quot;, 3200},&lt;br /&gt;
			{&amp;quot;neoarchean&amp;quot;, 2800},&lt;br /&gt;
		},&lt;br /&gt;
		{&amp;quot;proterozoic&amp;quot;, 2500,&lt;br /&gt;
			{&amp;quot;paleoproterozoic&amp;quot;,&lt;br /&gt;
				{&amp;quot;siderian&amp;quot;},&lt;br /&gt;
				{&amp;quot;rhyacian&amp;quot;, 2300},&lt;br /&gt;
				{&amp;quot;orosirian&amp;quot;, 2050},&lt;br /&gt;
				{&amp;quot;statherian&amp;quot;, 1800},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;mesoproterozoic&amp;quot;, 1600,&lt;br /&gt;
				{&amp;quot;calymmian&amp;quot;},&lt;br /&gt;
				{&amp;quot;ectasian&amp;quot;, 1400, aliases={&amp;quot;riphean&amp;quot;}},&lt;br /&gt;
				{&amp;quot;stenian&amp;quot;, 1200,&lt;br /&gt;
					{&amp;quot;mayanian&amp;quot;, 1100},&lt;br /&gt;
					{&amp;quot;sinian&amp;quot;, 1050, aliases={&amp;quot;sturtian&amp;quot;}},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;neoproterozoic&amp;quot;, 1000,&lt;br /&gt;
				{&amp;quot;tonian&amp;quot;,&lt;br /&gt;
					{&amp;quot;baikalian&amp;quot;, 850},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;cryogenian&amp;quot;, 720},&lt;br /&gt;
				{&amp;quot;ediacaran&amp;quot;, 635, aliases={&amp;quot;vendian&amp;quot;}},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	{&amp;quot;phanerozoic&amp;quot;, 541.0,&lt;br /&gt;
		{&amp;quot;paleozoic&amp;quot;,&lt;br /&gt;
			{&amp;quot;cambrian&amp;quot;,&lt;br /&gt;
				{&amp;quot;lower cambrian&amp;quot;, -- group of two epochs, not in ICS chart&lt;br /&gt;
					{&amp;quot;terreneuvian&amp;quot;,&lt;br /&gt;
						aliases= {&amp;quot;lowest cambrian&amp;quot;, &amp;quot;earliest cambrian&amp;quot;},&lt;br /&gt;
						{&amp;quot;fortunian&amp;quot;,&lt;br /&gt;
							{&amp;quot;manykaian&amp;quot;, aliases= {&amp;quot;nemakit daldynian&amp;quot;}},&lt;br /&gt;
							{&amp;quot;caerfai&amp;quot;, 530, aliases= {&amp;quot;tommotian&amp;quot;}},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;cambrian stage 2&amp;quot;, 529},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;cambrian series 2&amp;quot;, 521,&lt;br /&gt;
						{&amp;quot;cambrian stage 3&amp;quot;,&lt;br /&gt;
							aliases= {&amp;quot;middle lower cambrian&amp;quot;},&lt;br /&gt;
							{&amp;quot;atdabanian&amp;quot;},&lt;br /&gt;
							{&amp;quot;botomian&amp;quot;, 522},&lt;br /&gt;
							{&amp;quot;toyonian&amp;quot;, 516, aliases= {&amp;quot;upper lower cambrian&amp;quot;}},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;cambrian stage 4&amp;quot;, 514},&lt;br /&gt;
					},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;cambrian series 3&amp;quot;, 509,&lt;br /&gt;
					aliases= {&amp;quot;middle cambrian&amp;quot;, &amp;quot;miaolingian&amp;quot;},&lt;br /&gt;
					{&amp;quot;cambrian stage 5&amp;quot;, aliases= {&amp;quot;lower middle cambrian&amp;quot;, &amp;quot;st davids&amp;quot;, &amp;quot;wuliuan&amp;quot;}},&lt;br /&gt;
					{&amp;quot;drumian&amp;quot;, 504.5},&lt;br /&gt;
					{&amp;quot;guzhangian&amp;quot;, 500.5, aliases= {&amp;quot;nganasanian&amp;quot;, &amp;quot;mindyallan&amp;quot;}},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;furongian&amp;quot;, 497,&lt;br /&gt;
					aliases= {&amp;quot;upper cambrian&amp;quot;, &amp;quot;merioneth&amp;quot;},&lt;br /&gt;
					{&amp;quot;paibian&amp;quot;, aliases= {&amp;quot;franconian&amp;quot;}},  -- unofficial and approximate&lt;br /&gt;
					{&amp;quot;jiangshanian&amp;quot;,&lt;br /&gt;
						494,&lt;br /&gt;
						{&amp;quot;upper upper cambrian&amp;quot;, 489.5, aliases= {&amp;quot;mansian&amp;quot;}},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;cambrian stage 10&amp;quot;},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;ordovician&amp;quot;, 485.4,&lt;br /&gt;
				{&amp;quot;lower ordovician&amp;quot;,&lt;br /&gt;
					{&amp;quot;tremadocian&amp;quot;,&lt;br /&gt;
						{&amp;quot;upper lower ordovician&amp;quot;, 479},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;floian&amp;quot;, 477.7, aliases={&amp;quot;arenig&amp;quot;}},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;middle ordovician&amp;quot;, 470.0,&lt;br /&gt;
					{&amp;quot;dapingian&amp;quot;, aliases={&amp;quot;ordovician iii&amp;quot;, &amp;quot;lower middle ordovician&amp;quot;}},&lt;br /&gt;
					{&amp;quot;darriwilian&amp;quot;, 467.3},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;upper ordovician&amp;quot;, 458.4,&lt;br /&gt;
					{&amp;quot;sandbian&amp;quot;,&lt;br /&gt;
						aliases= {&amp;quot;ordovician v&amp;quot;, &amp;quot;lower upper ordovician&amp;quot;},&lt;br /&gt;
						{&amp;quot;middle upper ordovician&amp;quot;, 455},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;katian&amp;quot;, 453.0, aliases={&amp;quot;ordovician vi&amp;quot;}},&lt;br /&gt;
					{&amp;quot;hirnantian&amp;quot;, 445.2},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;silurian&amp;quot;, 443.8,&lt;br /&gt;
				{&amp;quot;llandovery&amp;quot;,&lt;br /&gt;
					aliases= {&amp;quot;lower silurian&amp;quot;},&lt;br /&gt;
					{&amp;quot;rhuddanian&amp;quot;},&lt;br /&gt;
					{&amp;quot;aeronian&amp;quot;, 440.8},&lt;br /&gt;
					{&amp;quot;telychian&amp;quot;, 438.5},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;wenlock&amp;quot;, 433.4,&lt;br /&gt;
					{&amp;quot;sheinwoodian&amp;quot;},&lt;br /&gt;
					{&amp;quot;homerian&amp;quot;, 430.5},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;ludlow&amp;quot;, 427.4,&lt;br /&gt;
					aliases= {&amp;quot;upper silurian&amp;quot;},&lt;br /&gt;
					{&amp;quot;gorstian&amp;quot;},&lt;br /&gt;
					{&amp;quot;ludfordian&amp;quot;, 425.6},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;pridoli&amp;quot;, 423.0,&lt;br /&gt;
					{&amp;quot;unnamed pridoli stage&amp;quot;},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;devonian&amp;quot;, 419.2,&lt;br /&gt;
				{&amp;quot;lower devonian&amp;quot;,&lt;br /&gt;
					{&amp;quot;lochkovian&amp;quot;, aliases={&amp;quot;downtonian&amp;quot;}}, -- approx&lt;br /&gt;
					{&amp;quot;pragian&amp;quot;, 410.8, aliases={&amp;quot;praghian&amp;quot;}},&lt;br /&gt;
					{&amp;quot;emsian&amp;quot;, 407.6},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;middle devonian&amp;quot;, 393.3,&lt;br /&gt;
					{&amp;quot;eifelian&amp;quot;},&lt;br /&gt;
					{&amp;quot;givetian&amp;quot;, 387.7},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;upper devonian&amp;quot;, 382.7,&lt;br /&gt;
					{&amp;quot;frasnian&amp;quot;},&lt;br /&gt;
					{&amp;quot;famennian&amp;quot;, 372.2},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;carboniferous&amp;quot;, 358.9,&lt;br /&gt;
				{&amp;quot;mississippian&amp;quot;, -- Subperiod from ICS chart&lt;br /&gt;
					aliases= {&amp;quot;lower carboniferous&amp;quot;},&lt;br /&gt;
					{&amp;quot;lower mississippian&amp;quot;,&lt;br /&gt;
						{&amp;quot;tournaisian&amp;quot;},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;middle mississippian&amp;quot;, 346.7,&lt;br /&gt;
						{&amp;quot;visean&amp;quot;},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;upper pennsylvanian&amp;quot;, 330.9,&lt;br /&gt;
						{&amp;quot;serpukhovian&amp;quot;,&lt;br /&gt;
							{&amp;quot;namurian&amp;quot;, 326},&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;pennsylvanian&amp;quot;, 323.2, -- Subperiod from ICS chart&lt;br /&gt;
					aliases= {&amp;quot;upper carboniferous&amp;quot;},&lt;br /&gt;
					{&amp;quot;lower pennsylvanian&amp;quot;,&lt;br /&gt;
						{&amp;quot;bashkirian&amp;quot;,&lt;br /&gt;
							{&amp;quot;westphalian&amp;quot;, 313},&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;middle pennsylvanian&amp;quot;, 315.2,&lt;br /&gt;
						{&amp;quot;moscovian&amp;quot;},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;upper pennsylvanian&amp;quot;, 307.0,&lt;br /&gt;
						{&amp;quot;kasimovian&amp;quot;,&lt;br /&gt;
							{&amp;quot;stephanian&amp;quot;, 304},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;gzhelian&amp;quot;, 303.7},&lt;br /&gt;
					},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;permian&amp;quot;, 298.9,&lt;br /&gt;
				{&amp;quot;cisuralian&amp;quot;,&lt;br /&gt;
					aliases= {&amp;quot;lower permian&amp;quot;},&lt;br /&gt;
					{&amp;quot;asselian&amp;quot;},&lt;br /&gt;
					{&amp;quot;sakmarian&amp;quot;, 295.0},&lt;br /&gt;
					{&amp;quot;artinskian&amp;quot;, 290.1},&lt;br /&gt;
					{&amp;quot;kungurian&amp;quot;, 283.5},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;guadalupian&amp;quot;, 272.95,&lt;br /&gt;
					aliases= {&amp;quot;middle permian&amp;quot;},&lt;br /&gt;
					{&amp;quot;roadian&amp;quot;, aliases={&amp;quot;ufimian&amp;quot;}},&lt;br /&gt;
					{&amp;quot;wordian&amp;quot;, 268.8},&lt;br /&gt;
					{&amp;quot;capitanian&amp;quot;, 265.1},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;lopingian&amp;quot;, 259.1,&lt;br /&gt;
					aliases= {&amp;quot;upper permian&amp;quot;},&lt;br /&gt;
					{&amp;quot;wuchiapingian&amp;quot;, aliases={&amp;quot;longtanian&amp;quot;}},&lt;br /&gt;
					{&amp;quot;changhsingian&amp;quot;, 254.14},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		{&amp;quot;mesozoic&amp;quot;, 251.902,&lt;br /&gt;
			{&amp;quot;triassic&amp;quot;,&lt;br /&gt;
				{&amp;quot;lower triassic&amp;quot;,&lt;br /&gt;
					{&amp;quot;induan&amp;quot;},&lt;br /&gt;
					{&amp;quot;olenekian&amp;quot;, 251.2, aliases={&amp;quot;spathian&amp;quot;}},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;middle triassic&amp;quot;, 247.2,&lt;br /&gt;
					{&amp;quot;anisian&amp;quot;},&lt;br /&gt;
					{&amp;quot;ladinian&amp;quot;, 242},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;upper triassic&amp;quot;, 237,&lt;br /&gt;
					{&amp;quot;carnian&amp;quot;},&lt;br /&gt;
					{&amp;quot;norian&amp;quot;, 227},&lt;br /&gt;
					{&amp;quot;rhaetian&amp;quot;, 208.5},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;jurassic&amp;quot;, 201.3,&lt;br /&gt;
				{&amp;quot;lower jurassic&amp;quot;,&lt;br /&gt;
					{&amp;quot;hettangian&amp;quot;},&lt;br /&gt;
					{&amp;quot;sinemurian&amp;quot;, 199.3},&lt;br /&gt;
					{&amp;quot;pliensbachian&amp;quot;, 190.8},&lt;br /&gt;
					{&amp;quot;toarcian&amp;quot;, 182.7},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;middle jurassic&amp;quot;, 174.1,&lt;br /&gt;
					{&amp;quot;aalenian&amp;quot;},&lt;br /&gt;
					{&amp;quot;bajocian&amp;quot;, 170.3},&lt;br /&gt;
					{&amp;quot;bathonian&amp;quot;, 168.3},&lt;br /&gt;
					{&amp;quot;callovian&amp;quot;, 166.1},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;upper jurassic&amp;quot;, 163.5,&lt;br /&gt;
					{&amp;quot;oxfordian&amp;quot;},&lt;br /&gt;
					{&amp;quot;kimmeridgian&amp;quot;, 157.3},&lt;br /&gt;
					{&amp;quot;tithonian&amp;quot;, 152.1},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;cretaceous&amp;quot;, 145.0,&lt;br /&gt;
				{&amp;quot;lower cretaceous&amp;quot;,&lt;br /&gt;
					{&amp;quot;berriasian&amp;quot;, aliases={&amp;quot;neocomian&amp;quot;}},&lt;br /&gt;
					{&amp;quot;valanginian&amp;quot;, 139.8},&lt;br /&gt;
					{&amp;quot;hauterivian&amp;quot;, 132.9},&lt;br /&gt;
					{&amp;quot;barremian&amp;quot;, 129.4, aliases={&amp;quot;gallic&amp;quot;}},&lt;br /&gt;
					{&amp;quot;aptian&amp;quot;, 125.0},&lt;br /&gt;
					{&amp;quot;albian&amp;quot;, 113.0},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;upper cretaceous&amp;quot;, 100.5,&lt;br /&gt;
					{&amp;quot;cenomanian&amp;quot;},&lt;br /&gt;
					{&amp;quot;turonian&amp;quot;, 93.9},&lt;br /&gt;
					{&amp;quot;coniacian&amp;quot;, 89.8, aliases={&amp;quot;senonian&amp;quot;}},&lt;br /&gt;
					{&amp;quot;santonian&amp;quot;, 86.3},&lt;br /&gt;
					{&amp;quot;campanian&amp;quot;, 83.6},&lt;br /&gt;
					{&amp;quot;maastrichtian&amp;quot;, 72.1},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		{&amp;quot;cenozoic&amp;quot;, 66.0,&lt;br /&gt;
			{&amp;quot;tertiary&amp;quot;,   -- Group of 2 periods, former term&lt;br /&gt;
				{&amp;quot;paleogene&amp;quot;,&lt;br /&gt;
					{&amp;quot;paleocene&amp;quot;,&lt;br /&gt;
						{&amp;quot;danian&amp;quot;,&lt;br /&gt;
							aliases= {&amp;quot;lower paleocene&amp;quot;},&lt;br /&gt;
							{&amp;quot;puercan&amp;quot;, 65},&lt;br /&gt;
							{&amp;quot;torrejonian&amp;quot;, 63.3},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;selandian&amp;quot;, 61.6,&lt;br /&gt;
							aliases= {&amp;quot;middle paleocene&amp;quot;},&lt;br /&gt;
							{&amp;quot;tiffanian&amp;quot;, 60.2},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;thanetian&amp;quot;, 59.2,&lt;br /&gt;
							aliases= {&amp;quot;upper paleocene&amp;quot;},&lt;br /&gt;
							{&amp;quot;clarkforkian&amp;quot;, 56.8},&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;eocene&amp;quot;, 56.0,&lt;br /&gt;
						{&amp;quot;ypresian&amp;quot;,&lt;br /&gt;
							aliases= {&amp;quot;lower eocene&amp;quot;, &amp;quot;mp 10&amp;quot;},&lt;br /&gt;
							{&amp;quot;wasatchian&amp;quot;, 55.4},&lt;br /&gt;
							{&amp;quot;bridgerian&amp;quot;, 50.3},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;middle eocene&amp;quot;, 47.8,&lt;br /&gt;
							{&amp;quot;lutetian&amp;quot;,&lt;br /&gt;
								aliases= {&amp;quot;mp 11&amp;quot;},&lt;br /&gt;
								{&amp;quot;uintan&amp;quot;, 46.2},&lt;br /&gt;
								{&amp;quot;duchesnean&amp;quot;, 42},&lt;br /&gt;
							},&lt;br /&gt;
							{&amp;quot;bartonian&amp;quot;, 41.2,&lt;br /&gt;
								{&amp;quot;chadronian&amp;quot;, 38},&lt;br /&gt;
							},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;priabonian&amp;quot;, aliases={37.8, &amp;quot;upper eocene&amp;quot;}},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;oligocene&amp;quot;, 33.9,&lt;br /&gt;
						{&amp;quot;rupelian&amp;quot;,&lt;br /&gt;
							aliases= {&amp;quot;lower oligocene&amp;quot;},&lt;br /&gt;
							{&amp;quot;orellan&amp;quot;},&lt;br /&gt;
							{&amp;quot;whitneyan&amp;quot;, 33.3},&lt;br /&gt;
							{&amp;quot;arikeean&amp;quot;, 30.6},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;chattian&amp;quot;, 28.1, aliases={&amp;quot;upper oligocene&amp;quot;}},&lt;br /&gt;
					},&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;neogene&amp;quot;, 23.03,&lt;br /&gt;
					{&amp;quot;miocene&amp;quot;,&lt;br /&gt;
						{&amp;quot;lower miocene&amp;quot;,   -- Group of 2 stages, not in ICS chart&lt;br /&gt;
							{&amp;quot;aquitanian&amp;quot;,&lt;br /&gt;
								{&amp;quot;hemingfordian&amp;quot;, 20.6},&lt;br /&gt;
							},&lt;br /&gt;
							{&amp;quot;burdigalian&amp;quot;, 20.44,&lt;br /&gt;
								{&amp;quot;barstovian&amp;quot;, 16.3},&lt;br /&gt;
							},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;middle miocene&amp;quot;, 15.97,   -- Group of 2 stages, not in ICS chart&lt;br /&gt;
							{&amp;quot;langhian&amp;quot;},&lt;br /&gt;
							{&amp;quot;serravallian&amp;quot;, 13.82,&lt;br /&gt;
								{&amp;quot;clarendonian&amp;quot;, 13.6},&lt;br /&gt;
							},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;upper miocene&amp;quot;, 11.63,   -- Group of 2 stages, not in ICS chart&lt;br /&gt;
							{&amp;quot;tortonian&amp;quot;,&lt;br /&gt;
								{&amp;quot;hemphillian&amp;quot;, 10.3},&lt;br /&gt;
							},&lt;br /&gt;
							{&amp;quot;messinian&amp;quot;, 7.246},&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;pliocene&amp;quot;, 5.333,&lt;br /&gt;
						{&amp;quot;zanclean&amp;quot;,&lt;br /&gt;
							aliases= {&amp;quot;lower pliocene&amp;quot;},&lt;br /&gt;
							{&amp;quot;blancan&amp;quot;, 4.75},&lt;br /&gt;
						},&lt;br /&gt;
						{&amp;quot;piacenzian&amp;quot;, 3.600, aliases={&amp;quot;upper pliocene&amp;quot;}},&lt;br /&gt;
					},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
			{&amp;quot;quaternary&amp;quot;, 2.58,&lt;br /&gt;
				{&amp;quot;pleistocene&amp;quot;,&lt;br /&gt;
					{&amp;quot;lower pleistocene&amp;quot;,   -- Group of 2 stages, implied from ICS chart&lt;br /&gt;
						{&amp;quot;gelasian&amp;quot;},&lt;br /&gt;
						{&amp;quot;calabrian&amp;quot;, 1.80,&lt;br /&gt;
							{&amp;quot;irvingtonian&amp;quot;, 1.8},&lt;br /&gt;
						},&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;middle pleistocene&amp;quot;, 0.774, -- this date has been redefined by the ICS.&lt;br /&gt;
						aliases= {&amp;quot;ionian&amp;quot;, &amp;quot;chibanian&amp;quot;},&lt;br /&gt;
						--[[the name &amp;quot;Chibanian&amp;quot; was formally adopted&lt;br /&gt;
							for this stage by the ICS in January 2020.&lt;br /&gt;
							The term &amp;quot;Ionian&amp;quot; was a proposed term for&lt;br /&gt;
							this same span of time. ]]&lt;br /&gt;
						{&amp;quot;rancholabrean&amp;quot;, 0.24}, -- this date has been redefined by the ICS.&lt;br /&gt;
					},&lt;br /&gt;
					{&amp;quot;upper pleistocene&amp;quot;, aliases={0.129, &amp;quot;tarantian&amp;quot;}}, -- proposed name for this as-yet formally undefined stage&lt;br /&gt;
				},&lt;br /&gt;
				{&amp;quot;holocene&amp;quot;, 0.0117,&lt;br /&gt;
					{&amp;quot;greenlandian&amp;quot;, aliases={&amp;quot;lower holocene&amp;quot;}},&lt;br /&gt;
					{&amp;quot;northgrippian&amp;quot;, 0.0082, aliases={&amp;quot;middle holocene&amp;quot;}},&lt;br /&gt;
					{&amp;quot;meghalayan&amp;quot;, 0.0042, aliases={&amp;quot;upper holocene&amp;quot;}},&lt;br /&gt;
				},&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	},&lt;br /&gt;
	{&amp;quot;present&amp;quot;, 0, aliases={&amp;quot;now&amp;quot;, &amp;quot;recent&amp;quot;, &amp;quot;current&amp;quot;}},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local colors = {&lt;br /&gt;
	{&amp;quot;rgb(154,217,221)&amp;quot;, &amp;quot;phanerozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(242,249,29)&amp;quot;, &amp;quot;cenozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(249,249,127)&amp;quot;, &amp;quot;quaternary&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(242,249,2)&amp;quot;, &amp;quot;tertiary&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(255,230,25)&amp;quot;, &amp;quot;neogene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(254,242,224)&amp;quot;, &amp;quot;holocene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(255,242,174)&amp;quot;, &amp;quot;pleistocene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(244,249,173)&amp;quot;, &amp;quot;pliocene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(255,255,0)&amp;quot;, &amp;quot;miocene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(253,154,82)&amp;quot;, &amp;quot;paleogene&amp;quot;, &amp;quot;palæogene&amp;quot;, &amp;quot;palaeogene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(253,192,122)&amp;quot;, &amp;quot;oligocene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(253,180,108)&amp;quot;, &amp;quot;eocene&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(253,167,95)&amp;quot;, &amp;quot;paleocene&amp;quot;, &amp;quot;palæocene&amp;quot;, &amp;quot;palaeocene&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(98,197,202)&amp;quot;, &amp;quot;mesozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(127,198,78)&amp;quot;, &amp;quot;cretaceous&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(188,209,94)&amp;quot;, &amp;quot;late cretaceous&amp;quot;, &amp;quot;upper cretaceous&amp;quot;, &amp;quot;maastrichtian&amp;quot;, &amp;quot;campanian&amp;quot;, &amp;quot;santonian&amp;quot;, &amp;quot;coniacian&amp;quot;, &amp;quot;turonian&amp;quot;, &amp;quot;cenomanian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(161,200,167)&amp;quot;, &amp;quot;early cretaceous&amp;quot;, &amp;quot;lower cretaceous&amp;quot;, &amp;quot;albian&amp;quot;, &amp;quot;aptian&amp;quot;, &amp;quot;barremian&amp;quot;, &amp;quot;hauterivian&amp;quot;, &amp;quot;valanginian&amp;quot;, &amp;quot;berriasian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(52,178,201)&amp;quot;, &amp;quot;jurassic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(189,228,247)&amp;quot;, &amp;quot;late jurassic&amp;quot;, &amp;quot;upper jurassic&amp;quot;, &amp;quot;hettangian&amp;quot;, &amp;quot;sinemurian&amp;quot;, &amp;quot;pliensbachian&amp;quot;, &amp;quot;toarcian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(132,207,232)&amp;quot;, &amp;quot;mid jurassic&amp;quot;, &amp;quot;middle jurassic&amp;quot;, &amp;quot;aalenian&amp;quot;, &amp;quot;bajocian&amp;quot;, &amp;quot;bathonian&amp;quot;, &amp;quot;callovian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(0,176,227)&amp;quot;, &amp;quot;early jurassic&amp;quot;, &amp;quot;lower jurassic&amp;quot;, &amp;quot;oxfordian&amp;quot;, &amp;quot;kimmeridgian&amp;quot;, &amp;quot;tithonian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(129,43,146)&amp;quot;, &amp;quot;triassic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(198,167,203)&amp;quot;, &amp;quot;late triassic&amp;quot;, &amp;quot;upper triassic&amp;quot;, &amp;quot;carnian&amp;quot;, &amp;quot;norian&amp;quot;, &amp;quot;rhaetian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(187,135,182)&amp;quot;, &amp;quot;mid triassic&amp;quot;, &amp;quot;middle triassic&amp;quot;, &amp;quot;anisian&amp;quot;, &amp;quot;ladinian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(152,57,153)&amp;quot;, &amp;quot;lower triassic&amp;quot;, &amp;quot;early triassic&amp;quot;, &amp;quot;induan&amp;quot;, &amp;quot;olenekian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(153,192,141)&amp;quot;, &amp;quot;palæozoic&amp;quot;, &amp;quot;paleozoic&amp;quot;, &amp;quot;palaeozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(240,64,60)&amp;quot;, &amp;quot;permian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(247,188,169)&amp;quot;, &amp;quot;late permian&amp;quot;, &amp;quot;upper permian&amp;quot;, &amp;quot;lopingian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(241,143,116)&amp;quot;, &amp;quot;middle permian&amp;quot;, &amp;quot;mid permian&amp;quot;, &amp;quot;guadalupian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(228,117,92)&amp;quot;, &amp;quot;early permian&amp;quot;, &amp;quot;lower permian&amp;quot;, &amp;quot;cisuralian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(103,165,153)&amp;quot;, &amp;quot;carboniferous&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(153,194,181)&amp;quot;, &amp;quot;upper carboniferous&amp;quot;, &amp;quot;pennsylvanian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(202,204,205)&amp;quot;, &amp;quot;upper pennsylvanian&amp;quot;, &amp;quot;gzhelian&amp;quot;, &amp;quot;kasimovian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(180,206,203)&amp;quot;, &amp;quot;middle pennsylvanian&amp;quot;, &amp;quot;mid pennsylvanian&amp;quot;, &amp;quot;moscovian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(153,197,200)&amp;quot;, &amp;quot;lower pennsylvanian&amp;quot;, &amp;quot;bashkirian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(103,143,102)&amp;quot;, &amp;quot;lower carboniferous&amp;quot;, &amp;quot;mississippian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(205,197,134)&amp;quot;, &amp;quot;upper mississippian&amp;quot;, &amp;quot;serpukhovian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(171,188,133)&amp;quot;, &amp;quot;middle mississippian&amp;quot;, &amp;quot;visean&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(145,179,132)&amp;quot;, &amp;quot;lower mississippian&amp;quot;, &amp;quot;tournaisian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(203,140,55)&amp;quot;, &amp;quot;devonian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(245,228,181)&amp;quot;, &amp;quot;upper devonian&amp;quot;, &amp;quot;late devonian&amp;quot;, &amp;quot;frasnian&amp;quot;, &amp;quot;famennian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(244,207,132)&amp;quot;, &amp;quot;middle devonian&amp;quot;, &amp;quot;mid devonian&amp;quot;, &amp;quot;givetian&amp;quot;, &amp;quot;eifelian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(229,180,110)&amp;quot;, &amp;quot;lower devonian&amp;quot;, &amp;quot;early devonian&amp;quot;, &amp;quot;emsian&amp;quot;, &amp;quot;pragian&amp;quot;, &amp;quot;praghian&amp;quot;, &amp;quot;lochkovian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(179,225,182)&amp;quot;, &amp;quot;silurian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(230,245,225)&amp;quot;, &amp;quot;latest silurian&amp;quot;, &amp;quot;pridoli&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(191,230,207)&amp;quot;, &amp;quot;late silurian&amp;quot;, &amp;quot;upper silurian&amp;quot;, &amp;quot;ludlow&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(179,225,194)&amp;quot;, &amp;quot;middle silurian&amp;quot;, &amp;quot;mid silurian&amp;quot;, &amp;quot;wenlock&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(153,215,179)&amp;quot;, &amp;quot;lower silurian&amp;quot;, &amp;quot;early silurian&amp;quot;, &amp;quot;llandovery&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(0,146,112)&amp;quot;, &amp;quot;ordovician&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(141,200,170)&amp;quot;, &amp;quot;upper ordovician&amp;quot;, &amp;quot;late ordovician&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(166,219,171)&amp;quot;, &amp;quot;hirnantian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(153,214,159)&amp;quot;, &amp;quot;katian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(140,208,148)&amp;quot;, &amp;quot;sandbian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(71,179,147)&amp;quot;, &amp;quot;middle ordovician&amp;quot;, &amp;quot;mid ordovician&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(116,198,156)&amp;quot;, &amp;quot;dariwillian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(102,192,146)&amp;quot;, &amp;quot;dapingian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(0,158,126)&amp;quot;, &amp;quot;lower ordovician&amp;quot;, &amp;quot;early ordovician&amp;quot;, &amp;quot;tremadoc&amp;quot;, &amp;quot;ashgill&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(65,176,135)&amp;quot;, &amp;quot;floian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(51,169,126)&amp;quot;, &amp;quot;tremadocian&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(127,160,86)&amp;quot;, &amp;quot;cambrian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(179,224,149)&amp;quot;, &amp;quot;furongian&amp;quot;, &amp;quot;cambrian series 4&amp;quot;, &amp;quot;series 4&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(230,245,201)&amp;quot;, &amp;quot;cambrian stage 10&amp;quot;, &amp;quot;stage 10&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(217,240,187)&amp;quot;, &amp;quot;cambrian stage 9&amp;quot;, &amp;quot;stage 9&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(204,235,174)&amp;quot;, &amp;quot;paibian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(166,207,134)&amp;quot;, &amp;quot;cambrian series 3&amp;quot;, &amp;quot;series 3&amp;quot;, &amp;quot;middle cambrian&amp;quot;, &amp;quot;mid cambrian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(204,223,170)&amp;quot;, &amp;quot;guzhangian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(191,217,157)&amp;quot;, &amp;quot;drumian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(179,212,146)&amp;quot;, &amp;quot;cambrian stage 5&amp;quot;, &amp;quot;stage 5&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(153,192,120)&amp;quot;, &amp;quot;cambrian series 2&amp;quot;, &amp;quot;lower cambrian&amp;quot;, &amp;quot;series 2&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(179,202,142)&amp;quot;, &amp;quot;cambrian stage 4&amp;quot;, &amp;quot;stage 4&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(166,197,131)&amp;quot;, &amp;quot;cambrian stage 3&amp;quot;, &amp;quot;stage 3&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(140,176,108)&amp;quot;, &amp;quot;terreneuvean&amp;quot;, &amp;quot;cambrian series 1&amp;quot;, &amp;quot;series 1&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(166,186,128)&amp;quot;, &amp;quot;cambrian stage 2&amp;quot;, &amp;quot;stage 2&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(153,181,117)&amp;quot;, &amp;quot;fortunian&amp;quot;, &amp;quot;cambrian stage 1&amp;quot;, &amp;quot;stage 1&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(159,184,133)&amp;quot;, &amp;quot;early cambrian&amp;quot;}, -- Unofficial!&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(247,67,112)&amp;quot;, &amp;quot;precambrian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(247,53,99)&amp;quot;, &amp;quot;proterozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(250,191,93)&amp;quot;, &amp;quot;neoproterozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(254,217,106)&amp;quot;, &amp;quot;ediacaran&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(254,204,92)&amp;quot;, &amp;quot;cryogenian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(254,191,78)&amp;quot;, &amp;quot;tonian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(253,180,98)&amp;quot;, &amp;quot;mesoproterozoic&amp;quot;},&lt;br /&gt;
	&lt;br /&gt;
	{&amp;quot;rgb(253,224,178)&amp;quot;, &amp;quot;stenian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(252,214,164)&amp;quot;, &amp;quot;ectasian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(251,204,150)&amp;quot;, &amp;quot;calymmian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(247,67,112)&amp;quot;, &amp;quot;paleoproterozoic&amp;quot;, &amp;quot;palaeoproterozoic&amp;quot;, &amp;quot;palæoproterozoic&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(239,147,174)&amp;quot;, &amp;quot;statherian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(238,134,160)&amp;quot;, &amp;quot;orosirian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(236,122,147)&amp;quot;, &amp;quot;rhyacian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(235,110,136)&amp;quot;, &amp;quot;siderian&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(240,4,127)&amp;quot;, &amp;quot;archean&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(2449,155,193)&amp;quot;, &amp;quot;neoarchean&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(247,104,169)&amp;quot;, &amp;quot;mesoarchean&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(244,68,159)&amp;quot;, &amp;quot;paleoarchean&amp;quot;, &amp;quot;palæoarchean&amp;quot;, &amp;quot;palaeoarchean&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(218,3,127)&amp;quot;, &amp;quot;eoarchean&amp;quot;},&lt;br /&gt;
	{&amp;quot;rgb(174,2,126)&amp;quot;, &amp;quot;hadean&amp;quot;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local nameToYear = {}&lt;br /&gt;
local yearToName = {}&lt;br /&gt;
local startToEnd = {{},{},{},{},{},{},{},{}}&lt;br /&gt;
&lt;br /&gt;
local function nStep(t, year, i)&lt;br /&gt;
	if type(t) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for _,x in ipairs(t) do&lt;br /&gt;
			local preYear = year&lt;br /&gt;
			if type(x) == &amp;quot;table&amp;quot; then&lt;br /&gt;
				table.insert(startToEnd[i], {x[1]})&lt;br /&gt;
				year = tonumber(x[2]) and x[2] or year&lt;br /&gt;
				if year == preYear then&lt;br /&gt;
					table.insert(yearToName[#yearToName], x[1])&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(yearToName, {year, x[1]})&lt;br /&gt;
				end&lt;br /&gt;
				nameToYear[x[1]] = year&lt;br /&gt;
				if x.aliases then&lt;br /&gt;
					for _,alias in ipairs(x.aliases) do&lt;br /&gt;
						nameToYear[alias] = year&lt;br /&gt;
						table.insert(startToEnd[i][#startToEnd[i]], alias)&lt;br /&gt;
						table.insert(yearToName[#yearToName], alias)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			nStep(x, year, i+1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
nStep(periods, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
for _,nextP in ipairs(startToEnd) do&lt;br /&gt;
	for k,period in ipairs(nextP) do&lt;br /&gt;
		for _,name in ipairs(period) do&lt;br /&gt;
			startToEnd[name] = nextP[k+1] and nextP[k+1][1] or &amp;quot;present&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findandrep(text, one, two)&lt;br /&gt;
	return mw.ustring.sub( mw.ustring.gsub(tostring(text), one, two), 1, -1 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function round(num, rou)&lt;br /&gt;
  return num and tonumber(string.format(&amp;quot;%.&amp;quot; .. (rou or 0) .. &amp;quot;f&amp;quot;, num))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getByTable(text, t)&lt;br /&gt;
	text = mw.getContentLanguage():lc(text)&lt;br /&gt;
	for _,inside in pairs(t) do&lt;br /&gt;
		for i=2,30 do&lt;br /&gt;
			if inside[i] and inside[i] == text then return inside[1] end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function periodID(id)&lt;br /&gt;
	local text = mw.getContentLanguage():lc(tostring(id))&lt;br /&gt;
	local found = {&lt;br /&gt;
		[&amp;quot;series 2&amp;quot;] = &amp;quot;cambrian series 2&amp;quot;,&lt;br /&gt;
		[&amp;quot;series 3&amp;quot;] = &amp;quot;cambrian series 3&amp;quot;,&lt;br /&gt;
		[&amp;quot;stage 2&amp;quot;]  = &amp;quot;cambrian stage 2&amp;quot;,&lt;br /&gt;
		[&amp;quot;stage 3&amp;quot;]  = &amp;quot;cambrian stage 3&amp;quot;,&lt;br /&gt;
		[&amp;quot;stage 4&amp;quot;]  = &amp;quot;cambrian stage 4&amp;quot;,&lt;br /&gt;
		[&amp;quot;stage 5&amp;quot;]  = &amp;quot;cambrian stage 5&amp;quot;,&lt;br /&gt;
		[&amp;quot;stage 10&amp;quot;] = &amp;quot;cambrian stage 10&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	if found[text] then&lt;br /&gt;
		text = found[text]&lt;br /&gt;
	else&lt;br /&gt;
		text = findandrep(text, &amp;quot;-&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		text = findandrep(text, &amp;quot;%f[%w]palaeo&amp;quot;, &amp;quot;paleo&amp;quot;)&lt;br /&gt;
		text = findandrep(text, &amp;quot;%f[%w]early%f[%W]&amp;quot;, &amp;quot;lower&amp;quot;)&lt;br /&gt;
		text = findandrep(text, &amp;quot;%f[%w]mid%f[%W]&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
		text = findandrep(text, &amp;quot;%f[%w]late%f[%W]&amp;quot;, &amp;quot;upper&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function periodStart(period, rou)&lt;br /&gt;
	return period and round(nameToYear[periodID(period)], rou or 5)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function periodEnd(period, rou)&lt;br /&gt;
	return period and periodStart(startToEnd[periodID(period)], rou or 5)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function periodColor(period)&lt;br /&gt;
	return getByTable(mw.getContentLanguage():lc(period), colors)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function mark(typ, num1, num2, num3)&lt;br /&gt;
	local g, h = typ.width, typ.all&lt;br /&gt;
	local result&lt;br /&gt;
	if (num1-num2)&amp;gt;5 then&lt;br /&gt;
		result = &amp;quot;&amp;lt;div style=&amp;#039;position:absolute; height:8px; left:&amp;quot;..((h-num1)/h*g)..&amp;quot;px;&amp;quot;&lt;br /&gt;
			..&amp;quot;width:&amp;quot;..((num1-num2)*g/h)..&amp;quot;px; background-color:#360; opacity:&amp;quot;&lt;br /&gt;
			..(num3 and tonumber(&amp;quot;0.&amp;quot;..tostring(num3)) or 1)..&amp;quot;; &amp;#039;&amp;gt;&amp;lt;!--range-border--&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
		if num3 then else&lt;br /&gt;
			result = result .. &amp;quot;&amp;lt;div style=&amp;#039;position:absolute; height:6px; top:1px; left:&amp;quot; .. (((h-num1)/h*g)+1)&lt;br /&gt;
			..&amp;quot;px; width:&amp;quot; .. (((num1-num2)*g/h)-2) .. &amp;quot;px; background-color:#6c3;&amp;#039;&amp;gt;&amp;lt;!--range-marker--&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if num3 then else&lt;br /&gt;
			result = &amp;quot;&amp;lt;div style=&amp;#039;position:absolute; left:&amp;quot; .. ((h-num1)/h*g) ..&amp;quot;px;&amp;quot;&lt;br /&gt;
			.. &amp;quot;font-size:50%&amp;#039;&amp;gt;&amp;lt;!--contains arrow--&amp;gt;&amp;lt;div style=&amp;#039;position:relative; left:-0.42em&amp;#039;&amp;gt;&amp;quot;&lt;br /&gt;
			.. &amp;quot;&amp;lt;!--nudges back left--&amp;gt;&amp;amp;darr;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bar(typ, val1, val2, val3)&lt;br /&gt;
	local g, h = typ.width, typ.all&lt;br /&gt;
	local gen = g == 250 and (val3 and &amp;quot;6&amp;quot; or &amp;quot;12px; top:6&amp;quot;)..&amp;quot;px&amp;quot; or &amp;quot;100%&amp;quot;&lt;br /&gt;
	return &amp;quot;&amp;lt;div style=&amp;#039;position:absolute; height:&amp;quot;..gen..&amp;quot;; text-align:center; background-color:&amp;quot;.. periodColor(val1)&lt;br /&gt;
		.. &amp;quot;;left:&amp;quot; .. ((h-periodStart(val1))/h*g) .. &amp;quot;px; width:&amp;quot;&lt;br /&gt;
		.. ((periodStart(val1)-periodEnd(val1))/h*g) .. &amp;quot;px;&amp;#039;&amp;gt;&amp;quot;..(val2 and &amp;quot;[[&amp;quot;..val1..&amp;quot;|&amp;quot;..val2..&amp;quot;]]&amp;quot; or &amp;quot;&amp;quot;)..&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function compare(year, num)&lt;br /&gt;
	local period&lt;br /&gt;
	&lt;br /&gt;
	for k,inside in pairs(yearToName) do&lt;br /&gt;
		if num == 1 then&lt;br /&gt;
			if year &amp;lt;= inside[1] then&lt;br /&gt;
				period = inside[2]&lt;br /&gt;
			end&lt;br /&gt;
		elseif num == 2 then&lt;br /&gt;
			if year &amp;gt;= inside[1] and (yearToName[k-1] and year &amp;lt;= yearToName[k-1][1]) then&lt;br /&gt;
				if year == yearToName[k-1][1] then&lt;br /&gt;
					period = yearToName[k-1][2]&lt;br /&gt;
				else&lt;br /&gt;
					period = inside[2]&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;[[&amp;quot; .. (period == &amp;quot;present&amp;quot; and &amp;quot;Holocene|&amp;quot; or &amp;quot;&amp;quot;) .. mw.getContentLanguage():ucfirst(period) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _show(veri)&lt;br /&gt;
	local result = {}&lt;br /&gt;
	&lt;br /&gt;
	local year1 = tonumber(veri[1]) or periodStart(veri[1])&lt;br /&gt;
	local year2 = tonumber(veri[2]) or periodEnd(veri[2]) or periodEnd(veri[1]) or tonumber(veri[1])&lt;br /&gt;
		&lt;br /&gt;
	local year1_e = tonumber(veri[&amp;quot;earliest&amp;quot;]) or periodStart(veri[&amp;quot;earliest&amp;quot;]) or year1&lt;br /&gt;
	local year2_e = tonumber(veri[&amp;quot;latest&amp;quot;]) or periodEnd(veri[&amp;quot;latest&amp;quot;]) or year2&lt;br /&gt;
	&lt;br /&gt;
	local typ = year1 &amp;gt;= 650 and {width=250,all=4600} or {width=220,all=650}&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &amp;quot;&amp;lt;span&amp;gt;&amp;quot;)&lt;br /&gt;
	if veri[&amp;quot;prefix&amp;quot;] then&lt;br /&gt;
		table.insert(result, veri[&amp;quot;prefix&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, ((veri[3] or veri[&amp;quot;text&amp;quot;]) or&lt;br /&gt;
			(tostring(year1) .. (year2 and &amp;quot;-&amp;quot;..tostring(year2) or &amp;quot;&amp;quot;) .. &amp;quot;&amp;amp;nbsp;[[Megaannum|Ma]]&amp;quot;))&lt;br /&gt;
		.. (veri[1] and &amp;quot;&amp;lt;br&amp;gt;&amp;quot; or &amp;quot;&amp;quot;) .. (tonumber(veri[1]) and compare(year1, 1) or veri[1])&lt;br /&gt;
		.. (veri[2] and &amp;quot;-&amp;quot; or &amp;quot;&amp;quot;) .. ((tonumber(veri[2])) and  compare(year2, 2) or (veri[2] or &amp;quot;&amp;quot;))&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
	local ref = veri[&amp;quot;ref&amp;quot;] or veri[&amp;quot;reference&amp;quot;] or veri[&amp;quot;refs&amp;quot;] or veri[&amp;quot;references&amp;quot;]&lt;br /&gt;
	if ref then table.insert(result, ref) end&lt;br /&gt;
	table.insert(result, &amp;quot;&amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
	local ps = veri[&amp;quot;PS&amp;quot;] or veri[&amp;quot;ps&amp;quot;]&lt;br /&gt;
	if ps then table.insert(result, ps) end&lt;br /&gt;
	table.insert(result, &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &amp;quot;&amp;lt;div id=&amp;#039;Timeline-row&amp;#039; style=&amp;#039;margin: 4px auto 0; clear:both;&amp;quot;&lt;br /&gt;
		..&amp;quot;width:&amp;quot;..tostring(typ.width)..&amp;quot;px; padding:0px; height:18px; overflow:visible; border:1px #666;&amp;quot;&lt;br /&gt;
		..&amp;quot;border-style:solid none; position:relative; z-index:0; font-size:13px;&amp;#039;&amp;gt;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if typ.all == 4600 then&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Hadean&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Hadean&amp;quot;, &amp;quot;&amp;lt;span style=&amp;#039;color:white&amp;#039;&amp;gt;&amp;#039;&amp;#039;Had&amp;#039;n&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;&amp;quot;, 1))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;eoarchean&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Paleoarchean&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Mesoarchean&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;neoarchean&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;archean&amp;quot;, &amp;quot;Archean&amp;quot;, 1))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;paleoproterozoic&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;mesoproterozoic&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;neoproterozoic&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;proterozoic&amp;quot;, &amp;quot;Proterozoic&amp;quot;, 1))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Paleozoic&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Mesozoic&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;Cenozoic&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;phanerozoic&amp;quot;, &amp;quot;Pha.&amp;quot;, 1))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(result, &lt;br /&gt;
			&amp;quot;&amp;lt;div style=&amp;#039;position:absolute; height:100%; left:0; width:&amp;quot;..(periodStart(&amp;quot;cambrian&amp;quot;)/650*250)..&amp;quot;px;&amp;quot;&lt;br /&gt;
			..&amp;quot;padding-left:5px; text-align:left; background-color:&amp;quot;.. periodColor(&amp;quot;ediacaran&amp;quot;) ..&amp;quot;;&amp;quot;&lt;br /&gt;
			.. &amp;quot;background-image: linear-gradient(to right, rgba(255,255,255,1), rgba(254,217,106,1) 15%, rgba(254,217,106,1));&amp;#039;&amp;gt;&amp;quot;&lt;br /&gt;
			..&amp;quot;[[Precambrian|PreЄ]]&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;cambrian&amp;quot;, &amp;quot;Є&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;ordovician&amp;quot;, &amp;quot;O&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;silurian&amp;quot;, &amp;quot;S&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;devonian&amp;quot;, &amp;quot;D&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;carboniferous&amp;quot;, &amp;quot;C&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;permian&amp;quot;, &amp;quot;P&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;triassic&amp;quot;, &amp;quot;T&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;jurassic&amp;quot;, &amp;quot;J&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;cretaceous&amp;quot;, &amp;quot;K&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;paleogene&amp;quot;, &amp;quot;&amp;lt;small&amp;gt;Pg&amp;lt;/small&amp;gt;&amp;quot;))&lt;br /&gt;
		table.insert(result, bar(typ, &amp;quot;neogene&amp;quot;, &amp;quot;&amp;lt;small&amp;gt;N&amp;lt;/small&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert(result, &amp;quot;&amp;lt;div name=Range style=&amp;#039;margin:0 auto; line-height:0; clear:both; width:&amp;quot;..tostring(typ.width)..&amp;quot;px; padding:0px; height:8px; overflow:visible; background-color:transparent; position:relative; top:-4px; z-index:100;&amp;#039;&amp;gt;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	if year1 and year2 then table.insert(result, mark(typ, year1_e, year2_e, 42)) end&lt;br /&gt;
	table.insert(result, mark(typ, year1, year2))&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &amp;quot;&amp;lt;/div Range&amp;gt;\n&amp;lt;/div Timeline-row&amp;gt;&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function show(frame)&lt;br /&gt;
	return _show(frame:getParent().args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {_show = _show, show = show}&lt;/div&gt;</summary>
		<author><name>imported&gt;Izno</name></author>
	</entry>
</feed>