<?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%3ATyphoon_warnings_table</id>
	<title>Module:Typhoon warnings table - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ATyphoon_warnings_table"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Typhoon_warnings_table&amp;action=history"/>
	<updated>2026-05-24T08:10:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Typhoon_warnings_table&amp;diff=147391&amp;oldid=prev</id>
		<title>imported&gt;Chlod at 04:34, 5 September 2022</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Typhoon_warnings_table&amp;diff=147391&amp;oldid=prev"/>
		<updated>2022-09-05T04:34:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
local stormColor = require(&amp;quot;Module:Tropical cyclone categories&amp;quot;)._color&lt;br /&gt;
local zh = require(&amp;quot;Module:Lang-zh&amp;quot;)._Zh&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Global functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.header(country, time)&lt;br /&gt;
	return mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
    	mw.html.create(&amp;quot;th&amp;quot;)&lt;br /&gt;
    		:css(&amp;quot;font-weight&amp;quot;, &amp;quot;normal&amp;quot;)&lt;br /&gt;
    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
    		:wikitext(&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. country .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. (&lt;br /&gt;
    			time and &lt;br /&gt;
    				&amp;quot; (as of &amp;quot; .. time .. &amp;quot;)&amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
			))&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
---------------------------- COUNTRY-BASED WARNINGS ----------------------------&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- China&lt;br /&gt;
--&lt;br /&gt;
-- Storm signals in China are defined by the CMA.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Note: v (in m/s) = 0.386B^(3/2), where B is the Beaufort force&lt;br /&gt;
function p.cma_signals(signal)&lt;br /&gt;
	if signal == &amp;quot;4&amp;quot; or signal == &amp;quot;blue&amp;quot; or signal == &amp;quot;b&amp;quot; then&lt;br /&gt;
		return {&lt;br /&gt;
			level = 4,&lt;br /&gt;
			color = &amp;quot;#3265FE&amp;quot;,&lt;br /&gt;
			name = &amp;quot;Blue typhoon alert&amp;quot;,&lt;br /&gt;
			name_zh = &amp;quot;台风蓝色预警信号&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Blue typhoon alert - China.svg&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Average of [[Beaufort scale|Beaufort force]]&amp;amp;nbsp;6 (44&amp;amp;nbsp;km/h; 27&amp;amp;nbsp;mph) &amp;quot;&lt;br /&gt;
		           .. &amp;quot;or higher wind speeds on coasts or land, or gusts of up to Beaufort force&amp;amp;nbsp;8 &amp;quot;&lt;br /&gt;
		           .. &amp;quot;(68&amp;amp;nbsp;km/h; 42&amp;amp;nbsp;mph), within 24 hours.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	elseif signal == &amp;quot;3&amp;quot; or signal == &amp;quot;yellow&amp;quot; or signal == &amp;quot;y&amp;quot; then&lt;br /&gt;
		return {&lt;br /&gt;
			level = 3,&lt;br /&gt;
			color = &amp;quot;#FAEC2C&amp;quot;,&lt;br /&gt;
			name = &amp;quot;Yellow typhoon alert&amp;quot;,&lt;br /&gt;
			name_zh = &amp;quot;台风黄色预警信号&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Yellow typhoon alert - China.svg&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Average of [[Beaufort scale|Beaufort force]]&amp;amp;nbsp;8 (68&amp;amp;nbsp;km/h; 42&amp;amp;nbsp;mph) &amp;quot;&lt;br /&gt;
		           .. &amp;quot;or higher wind speeds on coasts or land, or gusts of up to Beaufort force&amp;amp;nbsp;10 &amp;quot;&lt;br /&gt;
		           .. &amp;quot;(95&amp;amp;nbsp;km/h; 59&amp;amp;nbsp;mph), within 24 hours.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	elseif signal == &amp;quot;2&amp;quot; or signal == &amp;quot;orange&amp;quot; or signal == &amp;quot;o&amp;quot; then&lt;br /&gt;
		return {&lt;br /&gt;
			level = 2,&lt;br /&gt;
			color = &amp;quot;#F68C1F&amp;quot;,&lt;br /&gt;
			name = &amp;quot;Orange typhoon alert&amp;quot;,&lt;br /&gt;
			name_zh = &amp;quot;台风橙色预警信号&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Orange typhoon alert - China.svg&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Average of [[Beaufort scale|Beaufort force]]&amp;amp;nbsp;10 (95&amp;amp;nbsp;km/h; 59&amp;amp;nbsp;mph) &amp;quot;&lt;br /&gt;
		           .. &amp;quot;or higher wind speeds on coasts or land, or gusts of up to Beaufort force&amp;amp;nbsp;12 &amp;quot;&lt;br /&gt;
		           .. &amp;quot;(125&amp;amp;nbsp;km/h; 78&amp;amp;nbsp;mph), within 12 hours.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	elseif signal == &amp;quot;1&amp;quot; or signal == &amp;quot;red&amp;quot; or signal == &amp;quot;r&amp;quot; then&lt;br /&gt;
		return {&lt;br /&gt;
			level = 1,&lt;br /&gt;
			color = &amp;quot;#D62F28&amp;quot;,&lt;br /&gt;
			name = &amp;quot;Red typhoon alert&amp;quot;,&lt;br /&gt;
			name_zh = &amp;quot;台风红色预警信号&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Red typhoon alert - China.svg&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Average of [[Beaufort scale|Beaufort force]]&amp;amp;nbsp;12 (125&amp;amp;nbsp;km/h; 78&amp;amp;nbsp;mph) &amp;quot;&lt;br /&gt;
		           .. &amp;quot;or higher wind speeds on coasts or land, or gusts of up to Beaufort force&amp;amp;nbsp;14 &amp;quot;&lt;br /&gt;
		           .. &amp;quot;(158&amp;amp;nbsp;km/h; 98&amp;amp;nbsp;mph), within 6 hours.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		return {&lt;br /&gt;
			level = 0,&lt;br /&gt;
			color = &amp;quot;#000000&amp;quot;,&lt;br /&gt;
			name = &amp;quot;Unknown typhoon alert level&amp;quot;,&lt;br /&gt;
			name_zh = &amp;quot;台风未知预警信号&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Stop hand nuvola.svg&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Please make sure that the parameter is a valid signal. &amp;quot;&lt;br /&gt;
				   .. &amp;quot;Consult the [[Template:TyphoonWarningsTable#China|documentation]] for more details.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cma_level_row(signal)&lt;br /&gt;
	return mw.html.create(&amp;quot;tr&amp;quot;)&lt;br /&gt;
		:node(&lt;br /&gt;
	    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;width&amp;quot;, &amp;quot;700px&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;text-align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
	    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
	    		:node(&lt;br /&gt;
	    			mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	    				:css(&amp;quot;font-size&amp;quot;, &amp;quot;large&amp;quot;)&lt;br /&gt;
	    				:css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
	    				:wikitext(signal.name)&lt;br /&gt;
    			)&lt;br /&gt;
    			:wikitext(&amp;quot;&amp;lt;br/&amp;gt;&amp;quot; .. zh{[&amp;quot;c&amp;quot;] = signal.name_zh, [&amp;quot;labels&amp;quot;] = &amp;quot;no&amp;quot;})&lt;br /&gt;
	    		:wikitext(&amp;quot;&amp;lt;p&amp;gt;[[File:&amp;quot; .. signal.image .. &amp;quot;|100px|alt=&amp;quot; .. signal.name .. &amp;quot; icon]]&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
    			:node(&lt;br /&gt;
    				mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
    					:css(&amp;quot;margin&amp;quot;, &amp;quot;0&amp;quot;)&lt;br /&gt;
    					:wikitext(signal.details)&lt;br /&gt;
				)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.china(outputTable, args)&lt;br /&gt;
	local CNsignal = args[&amp;quot;CNsignal&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	if CNsignal then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;China&amp;quot;, args[&amp;quot;CNtime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
    	&lt;br /&gt;
    	local signalData = p.cma_signals(CNsignal)&lt;br /&gt;
		outputTable:node(p.cma_level_row(signalData))&lt;br /&gt;
		&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;CNsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;CNsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Hong Kong&lt;br /&gt;
--&lt;br /&gt;
-- Storm signals in Hong Kong are defined by the HKO.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.hko_signals(signal, direction)&lt;br /&gt;
	if signal == 1 then&lt;br /&gt;
		return {&lt;br /&gt;
			name = &amp;quot;Signal No. 01 - Standby Signal&amp;quot;,&lt;br /&gt;
			image = &amp;quot;No. 01 Standby Signal.png&amp;quot;,&lt;br /&gt;
			summary = &amp;quot;A tropical cyclone is centred within 800&amp;amp;nbsp;km of the territory.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	elseif signal == 3 then&lt;br /&gt;
		return {&lt;br /&gt;
			name = &amp;quot;Signal No. 03 - Strong Wind Signal&amp;quot;,&lt;br /&gt;
			image = &amp;quot;No. 03 Strong Wind Signal.png&amp;quot;,&lt;br /&gt;
			summary = &amp;quot;Strong winds generally over Hong Kong at sea level are expected in 12 hours.&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Expect strong winds with a sustained speed of 41–62&amp;amp;nbsp;km/h and gusts of up to 110&amp;amp;nbsp;km/h.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	elseif signal == 8 then&lt;br /&gt;
		local direction = (&lt;br /&gt;
			(direction == &amp;quot;ne&amp;quot; or direction == &amp;quot;northeast&amp;quot;) and &amp;quot;Northeast&amp;quot; or (&lt;br /&gt;
			(direction == &amp;quot;nw&amp;quot; or direction == &amp;quot;northwest&amp;quot;) and &amp;quot;Northwest&amp;quot; or (&lt;br /&gt;
			(direction == &amp;quot;se&amp;quot; or direction == &amp;quot;southeast&amp;quot;) and &amp;quot;Southeast&amp;quot; or (&lt;br /&gt;
			(direction == &amp;quot;sw&amp;quot; or direction == &amp;quot;southwest&amp;quot;) and &amp;quot;Southwest&amp;quot; or (&lt;br /&gt;
				nil&lt;br /&gt;
			)))))&lt;br /&gt;
		if direction then&lt;br /&gt;
			return {&lt;br /&gt;
				name = &amp;quot;Signal No. 08 - &amp;quot; .. direction .. &amp;quot; Gale or Storm Signal&amp;quot;,&lt;br /&gt;
				image = &amp;quot;No. 8 &amp;quot; .. direction .. &amp;quot; Gale or Storm Signal.png&amp;quot;,&lt;br /&gt;
				summary = &amp;quot;Gale or storm-force winds are expected.&amp;quot;,&lt;br /&gt;
				details = &amp;quot;Expect strong winds with a sustained speed of 63–117&amp;amp;nbsp;km/h from the &amp;quot;&lt;br /&gt;
					.. string.lower(direction) ..&lt;br /&gt;
				&amp;quot; quadrant and gusts of up to 180&amp;amp;nbsp;km/h.&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		else &lt;br /&gt;
			return {&lt;br /&gt;
				name = &amp;quot;Invalid Hong Kong Observatory Signal Direction&amp;quot;,&lt;br /&gt;
				image = &amp;quot;Stop hand nuvola.svg&amp;quot;,&lt;br /&gt;
				summary = &amp;quot;Signal No. 8 used without providing a valid wind direction.&amp;quot;,&lt;br /&gt;
				details = &amp;quot;Use &amp;lt;code&amp;gt;8NE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;8SE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;8NW&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;8SW&amp;lt;/code&amp;gt; instead. &amp;quot;&lt;br /&gt;
				       .. &amp;quot;Consult the [[Template:TyphoonWarningsTable#Hong Kong|documentation]] for more details.&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	elseif signal == 9 then&lt;br /&gt;
		return {&lt;br /&gt;
			name = &amp;quot;Signal No. 09 - Increasing Gale or Storm Signal&amp;quot;,&lt;br /&gt;
			image = &amp;quot;No. 09 Increasing Gale or Storm Signal.png&amp;quot;,&lt;br /&gt;
			summary = &amp;quot;Gale or storm-force winds are increasing or expected to increase significantly in strength.&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Expect strong winds with a sustained speed of 88–117&amp;amp;nbsp;km/h and gusts no faster than 220&amp;amp;nbsp;km/h.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	elseif signal == 10 then&lt;br /&gt;
		return {&lt;br /&gt;
			name = &amp;quot;Signal No. 10 - Hurricane Signal&amp;quot;,&lt;br /&gt;
			image = &amp;quot;No. 10 Hurricane Signal.png&amp;quot;,&lt;br /&gt;
			summary = &amp;quot;Hurricane-force winds.&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Expect strong winds above 117 km/h and gusts of more than 220 km/h.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		return {&lt;br /&gt;
			name = &amp;quot;Invalid Hong Kong Observatory Signal&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Stop hand nuvola.svg&amp;quot;,&lt;br /&gt;
			summary = &amp;quot;A valid storm signal was not provided in the &amp;lt;code&amp;gt;HKsignal&amp;lt;/code&amp;gt; parameter.&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Please make sure that the parameter is a valid signal. &amp;quot;&lt;br /&gt;
			       .. &amp;quot;Consult the [[Template:TyphoonWarningsTable#Hong Kong|documentation]] for more details.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.hong_kong(outputTable, args)&lt;br /&gt;
	local HKsignal = args[&amp;quot;HKsignal&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	if HKsignal then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;Hong Kong&amp;quot;, args[&amp;quot;HKtime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
    	&lt;br /&gt;
    	HKsignal = string.lower(HKsignal)&lt;br /&gt;
    	&lt;br /&gt;
    	local signal = nil&lt;br /&gt;
    	if HKsignal == &amp;quot;1&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(1)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;3&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(3)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;8&amp;quot; then&lt;br /&gt;
    		-- Provide the opportunity for an editor to see that a quadrant is &lt;br /&gt;
    		-- required.&lt;br /&gt;
    		signal = p.hko_signals(8)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;8nw&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(8, &amp;quot;nw&amp;quot;)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;8ne&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(8, &amp;quot;ne&amp;quot;)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;8sw&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(8, &amp;quot;sw&amp;quot;)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;8se&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(8, &amp;quot;se&amp;quot;)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;9&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(9)&lt;br /&gt;
    	elseif HKsignal == &amp;quot;10&amp;quot; then&lt;br /&gt;
    		signal = p.hko_signals(10)&lt;br /&gt;
    	else &lt;br /&gt;
    		signal = p.hko_signals(HKsignal)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		outputTable&lt;br /&gt;
			:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:css(&amp;quot;width&amp;quot;, &amp;quot;700px&amp;quot;)&lt;br /&gt;
			    		:css(&amp;quot;text-align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:node(&lt;br /&gt;
			    			mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
			    				:css(&amp;quot;font-size&amp;quot;, &amp;quot;large&amp;quot;)&lt;br /&gt;
			    				:css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
			    				:wikitext(signal.name)&lt;br /&gt;
		    			)&lt;br /&gt;
			    		:wikitext(&amp;quot;&amp;lt;br/&amp;gt;[[File:&amp;quot; .. signal.image .. &amp;quot;|80px|alt=&amp;quot; .. signal.name .. &amp;quot;]]&amp;lt;br/&amp;gt;&amp;quot;)&lt;br /&gt;
			    		:node(&lt;br /&gt;
			    			mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
			    				:wikitext(signal.summary)&lt;br /&gt;
		    			)&lt;br /&gt;
			    		:node(&lt;br /&gt;
			    			mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
			    				:css(&amp;quot;font-style&amp;quot;, &amp;quot;italic&amp;quot;)&lt;br /&gt;
			    				:wikitext(signal.details)&lt;br /&gt;
	    				)&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
	&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;HKsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;HKsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
    	end&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Macau&lt;br /&gt;
--&lt;br /&gt;
-- Storm signals in the Macau are defined by the SMG.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.smg_signals(signal, direction)&lt;br /&gt;
	-- Use the same data from HKO but change the associated icons.&lt;br /&gt;
	local output = p.hko_signals(signal, direction)&lt;br /&gt;
	output.summary = output.summary:gsub( &amp;quot;Hong Kong&amp;quot;, &amp;quot;Macau&amp;quot; )&lt;br /&gt;
	if signal == 1 then&lt;br /&gt;
		output.image = &amp;quot;Aspecto do sinal nº 1 de tempestade tropical de Macau na dia.png&amp;quot;&lt;br /&gt;
	elseif signal == 3 then&lt;br /&gt;
		output.image = &amp;quot;Aspecto do sinal nº 3 de tempestade tropical de Macau na dia.png&amp;quot;&lt;br /&gt;
	elseif signal == 8 then&lt;br /&gt;
		local direction = (&lt;br /&gt;
			(direction == &amp;quot;ne&amp;quot; or direction == &amp;quot;northeast&amp;quot;) and &amp;quot;NE&amp;quot; or (&lt;br /&gt;
			(direction == &amp;quot;nw&amp;quot; or direction == &amp;quot;northwest&amp;quot;) and &amp;quot;NW&amp;quot; or (&lt;br /&gt;
			(direction == &amp;quot;se&amp;quot; or direction == &amp;quot;southeast&amp;quot;) and &amp;quot;SE&amp;quot; or (&lt;br /&gt;
			(direction == &amp;quot;sw&amp;quot; or direction == &amp;quot;southwest&amp;quot;) and &amp;quot;SW&amp;quot; or (&lt;br /&gt;
				nil&lt;br /&gt;
			)))))&lt;br /&gt;
		if direction then&lt;br /&gt;
			output.image = &amp;quot;Aspecto do sinal nº 8 &amp;quot; .. direction .. &amp;quot; de tempestade tropical de Macau na dia.png&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return {&lt;br /&gt;
				name = &amp;quot;Invalid Meteorological and Geophysical Bureau Signal Direction&amp;quot;,&lt;br /&gt;
				image = &amp;quot;Stop hand nuvola.svg&amp;quot;,&lt;br /&gt;
				summary = &amp;quot;Signal No. 8 used without providing a valid wind direction.&amp;quot;,&lt;br /&gt;
				details = &amp;quot;Use &amp;lt;code&amp;gt;8NE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;8SE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;8NW&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;8SW&amp;lt;/code&amp;gt; instead. &amp;quot;&lt;br /&gt;
				       .. &amp;quot;Consult the [[Template:TyphoonWarningsTable#Macau|documentation]] for more details.&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	elseif signal == 9 then&lt;br /&gt;
		output.image = &amp;quot;Aspecto do sinal nº 9 de tempestade tropical de Macau na dia.png&amp;quot;&lt;br /&gt;
	elseif signal == 10 then&lt;br /&gt;
		output.image = &amp;quot;Aspecto do sinal nº 10 de tempestade tropical de Macau na dia.png&amp;quot;&lt;br /&gt;
	else &lt;br /&gt;
		return {&lt;br /&gt;
			name = &amp;quot;Invalid Meteorological and Geophysical Bureau Signal&amp;quot;,&lt;br /&gt;
			image = &amp;quot;Stop hand nuvola.svg&amp;quot;,&lt;br /&gt;
			summary = &amp;quot;A valid storm signal was not provided in the &amp;lt;code&amp;gt;MOsignal&amp;lt;/code&amp;gt; parameter.&amp;quot;,&lt;br /&gt;
			details = &amp;quot;Please make sure that the parameter is a valid signal. &amp;quot;&lt;br /&gt;
			       .. &amp;quot;Consult the [[Template:TyphoonWarningsTable#Macau|documentation]] for more details.&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.macau(outputTable, args)&lt;br /&gt;
	local MOsignal = args[&amp;quot;MOsignal&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	if MOsignal then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;Macau&amp;quot;, args[&amp;quot;MOtime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
    	&lt;br /&gt;
    	MOsignal = string.lower(MOsignal)&lt;br /&gt;
    	&lt;br /&gt;
    	local signal = nil&lt;br /&gt;
    	if MOsignal == &amp;quot;1&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(1)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;3&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(3)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;8&amp;quot; then&lt;br /&gt;
    		-- Provide the opportunity for an editor to see that a quadrant is &lt;br /&gt;
    		-- required.&lt;br /&gt;
    		signal = p.smg_signals(8)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;8nw&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(8, &amp;quot;nw&amp;quot;)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;8ne&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(8, &amp;quot;ne&amp;quot;)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;8sw&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(8, &amp;quot;sw&amp;quot;)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;8se&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(8, &amp;quot;se&amp;quot;)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;9&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(9)&lt;br /&gt;
    	elseif MOsignal == &amp;quot;10&amp;quot; then&lt;br /&gt;
    		signal = p.smg_signals(10)&lt;br /&gt;
    	else &lt;br /&gt;
    		signal = p.smg_signals(MOsignal)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		outputTable&lt;br /&gt;
			:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:css(&amp;quot;width&amp;quot;, &amp;quot;700px&amp;quot;)&lt;br /&gt;
			    		:css(&amp;quot;text-align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:node(&lt;br /&gt;
			    			mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
			    				:css(&amp;quot;font-size&amp;quot;, &amp;quot;large&amp;quot;)&lt;br /&gt;
			    				:css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
			    				:wikitext(signal.name)&lt;br /&gt;
		    			)&lt;br /&gt;
			    		:wikitext(&amp;quot;&amp;lt;br/&amp;gt;[[File:&amp;quot; .. signal.image .. &amp;quot;|80px|alt=&amp;quot; .. signal.name .. &amp;quot;]]&amp;lt;br/&amp;gt;&amp;quot;)&lt;br /&gt;
			    		:node(&lt;br /&gt;
			    			mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
			    				:wikitext(signal.summary)&lt;br /&gt;
		    			)&lt;br /&gt;
			    		:node(&lt;br /&gt;
			    			mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
			    				:css(&amp;quot;font-style&amp;quot;, &amp;quot;italic&amp;quot;)&lt;br /&gt;
			    				:wikitext(signal.details)&lt;br /&gt;
	    				)&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
	&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;MOsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;MOsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
    	end&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Philippines&lt;br /&gt;
--&lt;br /&gt;
-- Storm signals in the Philippines are defined by the PAGASA.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.pagasa_signals = {&lt;br /&gt;
	s5 = {&lt;br /&gt;
		name = &amp;quot;Signal #5&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#CD77CD&amp;quot;,&lt;br /&gt;
		speed = &amp;quot; 185&amp;amp;nbsp;km/h (115&amp;amp;nbsp;mph) or greater&amp;quot;,&lt;br /&gt;
		time = &amp;quot;12 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	s4 = {&lt;br /&gt;
		name = &amp;quot;Signal #4&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#FF6060&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;118–184&amp;amp;nbsp;km/h (73–114&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		time = &amp;quot;12 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	s3 = {&lt;br /&gt;
		name = &amp;quot;Signal #3&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#FFAA00&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;89–117&amp;amp;nbsp;km/h (55–72&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		time = &amp;quot;18 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	s2 = {&lt;br /&gt;
		name = &amp;quot;Signal #2&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#FFF200&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;62–88&amp;amp;nbsp;km/h (39–54&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		time = &amp;quot;24 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	s1 = {&lt;br /&gt;
		name = &amp;quot;Signal #1&amp;quot;,&lt;br /&gt;
		color = &amp;quot;#00AAFF&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;39–61&amp;amp;nbsp;km/h (24–38&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		time = &amp;quot;36 hours&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.pagasa_row(signal, data, args)&lt;br /&gt;
	return mw.html.create(&amp;quot;tr&amp;quot;)&lt;br /&gt;
		:node(&lt;br /&gt;
	    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;width&amp;quot;, &amp;quot;12.6em&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;text-align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;vertical-align&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;color&amp;quot;, &amp;quot;black&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;background-color&amp;quot;, p.pagasa_signals[signal].color)&lt;br /&gt;
	    		:wikitext(&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. p.pagasa_signals[signal].name .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;quot;)&lt;br /&gt;
	    		:wikitext(&lt;br /&gt;
	    			&amp;quot;&amp;#039;&amp;#039;Winds of &amp;quot; .. p.pagasa_signals[signal].speed .. (&lt;br /&gt;
						yesno(args[&amp;quot;PHhistorical&amp;quot;]) and &amp;quot;&amp;quot; or &amp;quot; are &amp;quot; .. (&lt;br /&gt;
							yesno(args[&amp;quot;PHactive&amp;quot;]) and &amp;quot;prevailing or &amp;quot; or &amp;quot;&amp;quot;&lt;br /&gt;
						) .. &amp;quot;expected to occur within &amp;quot; .. &lt;br /&gt;
							p.pagasa_signals[signal].time	&lt;br /&gt;
					)  .. &amp;quot;.&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    			)&lt;br /&gt;
		)&lt;br /&gt;
		:node(&lt;br /&gt;
			mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    :css(&amp;quot;vertical-align&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
			    :wikitext(&amp;quot;\n&amp;quot; .. data .. &amp;quot;\n&amp;quot;)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.philippines(outputTable, args)&lt;br /&gt;
	local PH1 = args[&amp;quot;PH1&amp;quot;]&lt;br /&gt;
	local PH2 = args[&amp;quot;PH2&amp;quot;]&lt;br /&gt;
	local PH3 = args[&amp;quot;PH3&amp;quot;]&lt;br /&gt;
	local PH4 = args[&amp;quot;PH4&amp;quot;]&lt;br /&gt;
	local PH5 = args[&amp;quot;PH5&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	if PH1 or PH2 or PH3 or PH4 or PH5 then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;Philippines&amp;quot;, args[&amp;quot;PHtime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
    	&lt;br /&gt;
    	if PH5 then&lt;br /&gt;
    		outputTable:node(p.pagasa_row(&amp;quot;s5&amp;quot;, PH5, args))&lt;br /&gt;
    	end&lt;br /&gt;
    	if PH4 then&lt;br /&gt;
    		outputTable:node(p.pagasa_row(&amp;quot;s4&amp;quot;, PH4, args))&lt;br /&gt;
    	end&lt;br /&gt;
    	if PH3 then&lt;br /&gt;
    		outputTable:node(p.pagasa_row(&amp;quot;s3&amp;quot;, PH3, args))&lt;br /&gt;
    	end&lt;br /&gt;
    	if PH2 then&lt;br /&gt;
    		outputTable:node(p.pagasa_row(&amp;quot;s2&amp;quot;, PH2, args))&lt;br /&gt;
    	end&lt;br /&gt;
    	if PH1 then&lt;br /&gt;
    		outputTable:node(p.pagasa_row(&amp;quot;s1&amp;quot;, PH1, args))&lt;br /&gt;
    	end&lt;br /&gt;
	&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;PHsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;PHsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
    	end&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- South Korea&lt;br /&gt;
--&lt;br /&gt;
-- Typhoon advisories and warnings in Korea are defined by the KMA.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.south_korea(outputTable, args, frame)&lt;br /&gt;
	if args[&amp;quot;KRA&amp;quot;] or args[&amp;quot;KRW&amp;quot;] then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;South Korea&amp;quot;, args[&amp;quot;KRtime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;quot;KRA&amp;quot;] then&lt;br /&gt;
		outputTable:node(mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
				:node(&lt;br /&gt;
					mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	    				:css(&amp;quot;font-size&amp;quot;, &amp;quot;large&amp;quot;)&lt;br /&gt;
	    				:css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
	    				:node(&lt;br /&gt;
	    					mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	    						:attr(&amp;quot;aria-role&amp;quot;, &amp;quot;presentation&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;display&amp;quot;, &amp;quot;inline-block&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;background-color&amp;quot;, &amp;quot;#ffb300&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;height&amp;quot;, &amp;quot;1.2em&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;width&amp;quot;, &amp;quot;0.4em&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;margin-right&amp;quot;, &amp;quot;0.4em&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;vertical-align&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
						)&lt;br /&gt;
	    				:wikitext(&amp;quot;Typhoon Advisory&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
				:node(&lt;br /&gt;
					mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
						:wikitext(&amp;quot;A typhoon advisory has been issued for the following areas.&amp;quot;)&lt;br /&gt;
						:wikitext(args[&amp;quot;KRsource&amp;quot;] and (&amp;quot; Refer to official information for more details.&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
				:wikitext(&amp;quot;\n&amp;quot; .. args[&amp;quot;KRA&amp;quot;] .. &amp;quot;\n&amp;quot;)&lt;br /&gt;
				:node(&lt;br /&gt;
					mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
						:wikitext(&amp;quot;&amp;#039;&amp;#039;Expect strong winds, [[wind wave]]s, heavy rain, and [[storm surge]]s.&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;quot;KRW&amp;quot;] then&lt;br /&gt;
		outputTable:node(mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
				:node(&lt;br /&gt;
					mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	    				:css(&amp;quot;font-size&amp;quot;, &amp;quot;large&amp;quot;)&lt;br /&gt;
	    				:css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
	    				:node(&lt;br /&gt;
	    					mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
	    						:attr(&amp;quot;aria-role&amp;quot;, &amp;quot;presentation&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;display&amp;quot;, &amp;quot;inline-block&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;background-color&amp;quot;, &amp;quot;red&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;height&amp;quot;, &amp;quot;1.2em&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;width&amp;quot;, &amp;quot;0.4em&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;margin-right&amp;quot;, &amp;quot;0.4em&amp;quot;)&lt;br /&gt;
	    						:css(&amp;quot;vertical-align&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
						)&lt;br /&gt;
	    				:wikitext(&amp;quot;Typhoon Warning&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
				:node(&lt;br /&gt;
					mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
						:wikitext(&amp;quot;A typhoon warning has been issued for the following areas.&amp;quot;)&lt;br /&gt;
						:wikitext(args[&amp;quot;KRsource&amp;quot;] and (&amp;quot; Refer to official information for more details.&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
				:wikitext(&amp;quot;\n&amp;quot; .. args[&amp;quot;KRW&amp;quot;] .. &amp;quot;\n&amp;quot;)&lt;br /&gt;
				:node(&lt;br /&gt;
					mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
						:wikitext(&amp;quot;&amp;#039;&amp;#039;Expect precipitation over 200mm or warning-level winds, [[wind wave]]s, or storm surges.&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
				)&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;quot;KRA&amp;quot;] or args[&amp;quot;KRW&amp;quot;] then&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;KRsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;KRsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
    	end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Taiwan&lt;br /&gt;
--&lt;br /&gt;
-- Sea and Land Typhoon Warnings in Taiwan are defined by the CWB.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
function p.taiwan(outputTable, args, frame)&lt;br /&gt;
	if args[&amp;quot;TW&amp;quot;] then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;Taiwan&amp;quot;, args[&amp;quot;TWtime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
    	&lt;br /&gt;
    	-- Graphic cell&lt;br /&gt;
    	local graphic = mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;rowspan&amp;quot;, &amp;quot;4&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;padding-right&amp;quot;, &amp;quot;32px&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;white-space&amp;quot;, &amp;quot;nowrap&amp;quot;)&lt;br /&gt;
			:css(&amp;quot;box-sizing&amp;quot;, &amp;quot;border-box&amp;quot;)&lt;br /&gt;
			:node(&lt;br /&gt;
				-- Red block&lt;br /&gt;
				mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:css(&amp;quot;display&amp;quot;, &amp;quot;inline-block&amp;quot;)&lt;br /&gt;
					:css(&amp;quot;height&amp;quot;, &amp;quot;64px&amp;quot;)&lt;br /&gt;
					:css(&amp;quot;width&amp;quot;, &amp;quot;24px&amp;quot;)&lt;br /&gt;
					:css(&amp;quot;margin-right&amp;quot;, &amp;quot;16px&amp;quot;)&lt;br /&gt;
					:css(&amp;quot;background-color&amp;quot;, &amp;quot;red&amp;quot;)&lt;br /&gt;
					:css(&amp;quot;vertical-align&amp;quot;, &amp;quot;top&amp;quot;)&lt;br /&gt;
			)&lt;br /&gt;
			:wikitext(&lt;br /&gt;
				-- Icon&lt;br /&gt;
				&amp;quot;[[File:CWB Typhoon Warning Icon.svg|64px|alt=Sea and Land Typhoon Warning icon]]&amp;quot;&lt;br /&gt;
			)&lt;br /&gt;
			&lt;br /&gt;
		local content = mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			:node(&lt;br /&gt;
				mw.html.create(&amp;quot;span&amp;quot;)&lt;br /&gt;
    				:css(&amp;quot;font-size&amp;quot;, &amp;quot;large&amp;quot;)&lt;br /&gt;
    				:css(&amp;quot;font-weight&amp;quot;, &amp;quot;bold&amp;quot;)&lt;br /&gt;
    				:wikitext(&amp;quot;Sea and Land Typhoon Warning&amp;quot;)&lt;br /&gt;
			)&lt;br /&gt;
			:node(&lt;br /&gt;
				mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
					:wikitext(&amp;quot;A sea and land typhoon warning has been issued for the following areas.&amp;quot;)&lt;br /&gt;
			)&lt;br /&gt;
			:node(frame:expandTemplate{ title = &amp;#039;div col&amp;#039;, args = { colwidth = &amp;quot;10em&amp;quot; } }) -- No module equivalent&lt;br /&gt;
			:wikitext(&amp;quot;\n&amp;quot; .. args[&amp;quot;TW&amp;quot;] .. &amp;quot;\n&amp;quot;)&lt;br /&gt;
			:node(frame:expandTemplate{ title = &amp;#039;div col end&amp;#039; }) -- No module equivalent&lt;br /&gt;
			:node(&lt;br /&gt;
				mw.html.create(&amp;quot;p&amp;quot;)&lt;br /&gt;
					:wikitext(&amp;quot;&amp;#039;&amp;#039;Expect winds stronger than 55 km/h within 18 hours.&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
			)&lt;br /&gt;
    	&lt;br /&gt;
    	-- Create the inner table&lt;br /&gt;
    	local iTable = mw.html.create(&amp;quot;table&amp;quot;)&lt;br /&gt;
    	iTable:node(&lt;br /&gt;
    		mw.html.create(&amp;quot;tr&amp;quot;)&lt;br /&gt;
    			:node(graphic)&lt;br /&gt;
    			:node(content)&lt;br /&gt;
		)&lt;br /&gt;
		&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
		    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
		    		:attr(&amp;quot;colspan&amp;quot;, &amp;quot;3&amp;quot;)&lt;br /&gt;
		    		:node(iTable)&lt;br /&gt;
	    	)&lt;br /&gt;
    	)&lt;br /&gt;
		&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;TWsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;TWsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
    	end&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
---------------------------- AGENCY-BASED WARNINGS -----------------------------&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- National Weather Service, Tiyan, Guam&lt;br /&gt;
--&lt;br /&gt;
-- Storm signals (Typhoon and Tropical Storm Warnings, etc.) issued by the NWS.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
p.nws_criteria = {&lt;br /&gt;
	tyw = {&lt;br /&gt;
		name = &amp;quot;Typhoon Warning&amp;quot;,&lt;br /&gt;
		color = stormColor(&amp;quot;cat5&amp;quot;),&lt;br /&gt;
		description = &amp;quot;Typhoon conditions ($speed) expected within $duration.&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;over 118&amp;amp;nbsp;km/h (74&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		duration = &amp;quot;24 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	tya = {&lt;br /&gt;
		name = &amp;quot;Typhoon Watch&amp;quot;,&lt;br /&gt;
		color = stormColor(&amp;quot;cat4&amp;quot;),&lt;br /&gt;
		description = &amp;quot;Typhoon conditions ($speed) possible within $duration.&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;over 118&amp;amp;nbsp;km/h (74&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		duration = &amp;quot;24 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	trw = {&lt;br /&gt;
		name = &amp;quot;Tropical Storm Warning&amp;quot;,&lt;br /&gt;
		color = stormColor(&amp;quot;cat3&amp;quot;),&lt;br /&gt;
		description = &amp;quot;Tropical storm conditions ($speed) expected within $duration.&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;88–117&amp;amp;nbsp;km/h (55–73&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		duration = &amp;quot;24 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	tra = {&lt;br /&gt;
		name = &amp;quot;Tropical Storm Watch&amp;quot;,&lt;br /&gt;
		color = stormColor(&amp;quot;cat2&amp;quot;),&lt;br /&gt;
		description = &amp;quot;Tropical storm conditions ($speed) possible within $duration.&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;88–117&amp;amp;nbsp;km/h (55–73&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		duration = &amp;quot;24 hours&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	gaw = {&lt;br /&gt;
		name = &amp;quot;Gale Warning&amp;quot;,&lt;br /&gt;
		color = stormColor(&amp;quot;ts&amp;quot;),&lt;br /&gt;
		description = &amp;quot;Gale conditions ($speed) expected within $duration.&amp;quot;,&lt;br /&gt;
		speed = &amp;quot;63-87&amp;amp;nbsp;km/h (39–72&amp;amp;nbsp;mph)&amp;quot;,&lt;br /&gt;
		duration = &amp;quot;24 hours&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.nws_row(signal, data)&lt;br /&gt;
	return mw.html.create(&amp;quot;tr&amp;quot;)&lt;br /&gt;
		:node(&lt;br /&gt;
	    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;width&amp;quot;, &amp;quot;14em&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;text-align&amp;quot;, &amp;quot;center&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;vertical-align&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;color&amp;quot;, &amp;quot;black&amp;quot;)&lt;br /&gt;
	    		:css(&amp;quot;background-color&amp;quot;, &amp;quot;#&amp;quot; .. p.nws_criteria[signal].color)&lt;br /&gt;
	    		:wikitext(&amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. p.nws_criteria[signal].name .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;quot;)&lt;br /&gt;
	    		:wikitext(&lt;br /&gt;
	    			&amp;quot;&amp;#039;&amp;#039;&amp;quot; ..&lt;br /&gt;
	    				string.gsub(&lt;br /&gt;
	    					string.gsub(&lt;br /&gt;
		    					p.nws_criteria[signal].description,&lt;br /&gt;
		    					&amp;quot;%$speed&amp;quot;,&lt;br /&gt;
		    					p.nws_criteria[signal].speed&lt;br /&gt;
	    					),&lt;br /&gt;
	    					&amp;quot;%$duration&amp;quot;,&lt;br /&gt;
	    					p.nws_criteria[signal].duration&lt;br /&gt;
    					)&lt;br /&gt;
	    			.. &amp;quot;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    			)&lt;br /&gt;
		)&lt;br /&gt;
		:node(&lt;br /&gt;
			mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    :css(&amp;quot;vertical-align&amp;quot;, &amp;quot;middle&amp;quot;)&lt;br /&gt;
			    :wikitext(&amp;quot;\n&amp;quot; .. data .. &amp;quot;\n&amp;quot;)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.nws(outputTable, args)&lt;br /&gt;
	local TYW = args[&amp;quot;TYW&amp;quot;]&lt;br /&gt;
	local TYA = args[&amp;quot;TYA&amp;quot;]&lt;br /&gt;
	local TRW = args[&amp;quot;TRW&amp;quot;] or args[&amp;quot;TSW&amp;quot;]&lt;br /&gt;
	local TRA = args[&amp;quot;TRA&amp;quot;] or args[&amp;quot;TSA&amp;quot;]&lt;br /&gt;
	local GAW = args[&amp;quot;GAW&amp;quot;]&lt;br /&gt;
	&lt;br /&gt;
	if TYW or TYA or TRW or TRA or GAW then&lt;br /&gt;
		-- Create the header&lt;br /&gt;
		outputTable:node(&lt;br /&gt;
			p.header(&amp;quot;National Weather Service&amp;quot;, args[&amp;quot;NWStime&amp;quot;])&lt;br /&gt;
    	)&lt;br /&gt;
    	&lt;br /&gt;
    	if TYW then&lt;br /&gt;
    		outputTable:node(p.nws_row(&amp;quot;tyw&amp;quot;, TYW))&lt;br /&gt;
    	end&lt;br /&gt;
    	if TYA then&lt;br /&gt;
    		outputTable:node(p.nws_row(&amp;quot;tya&amp;quot;, TYA))&lt;br /&gt;
    	end&lt;br /&gt;
    	if TRW then&lt;br /&gt;
    		outputTable:node(p.nws_row(&amp;quot;trw&amp;quot;, TRW))&lt;br /&gt;
    	end&lt;br /&gt;
    	if TRA then&lt;br /&gt;
    		outputTable:node(p.nws_row(&amp;quot;tra&amp;quot;, TRA))&lt;br /&gt;
    	end&lt;br /&gt;
    	if GAW then&lt;br /&gt;
    		outputTable:node(p.nws_row(&amp;quot;gaw&amp;quot;, GAW))&lt;br /&gt;
    	end&lt;br /&gt;
	&lt;br /&gt;
		-- Create the footer&lt;br /&gt;
		if args[&amp;quot;NWSsource&amp;quot;] then&lt;br /&gt;
			outputTable:node(&lt;br /&gt;
				mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
			    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
			    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
			    		:wikitext(&amp;quot;Source: &amp;quot; .. args[&amp;quot;NWSsource&amp;quot;])&lt;br /&gt;
		    	)&lt;br /&gt;
	    	)&lt;br /&gt;
    	end&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Template invocation features&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		trim = true,&lt;br /&gt;
		removeBlanks = true&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
    return p._main(frame, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(frame, args)&lt;br /&gt;
	-- Generate table&lt;br /&gt;
	local finalTable = mw.html.create(&amp;quot;table&amp;quot;)&lt;br /&gt;
		:attr(&amp;quot;class&amp;quot;, &amp;quot;wikitable typhoon-warnings-table&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
	if yesno(args[&amp;quot;float&amp;quot;]) then&lt;br /&gt;
		finalTable:css(&amp;quot;float&amp;quot;, args[&amp;quot;align&amp;quot;] or &amp;quot;left&amp;quot;)&lt;br /&gt;
	elseif yesno(args[&amp;quot;demo&amp;quot;]) then&lt;br /&gt;
		finalTable:css(&amp;quot;float&amp;quot;, &amp;quot;right&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args[&amp;quot;width&amp;quot;] then&lt;br /&gt;
		finalTable:css(&amp;quot;width&amp;quot;, args[&amp;quot;width&amp;quot;])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Save the table prior to row insertion&lt;br /&gt;
	local premake = tostring(finalTable);&lt;br /&gt;
	&lt;br /&gt;
	-- Generate rows&lt;br /&gt;
	p.china(finalTable, args)&lt;br /&gt;
	p.hong_kong(finalTable, args)&lt;br /&gt;
	p.macau(finalTable, args)&lt;br /&gt;
	p.philippines(finalTable, args)&lt;br /&gt;
	p.south_korea(finalTable, args, frame)&lt;br /&gt;
	p.taiwan(finalTable, args, frame)&lt;br /&gt;
	p.nws(finalTable, args)&lt;br /&gt;
	&lt;br /&gt;
	-- Save the table after row insertion&lt;br /&gt;
	local postmake = tostring(finalTable)&lt;br /&gt;
	&lt;br /&gt;
	-- If there is no difference between the table before insertion and after&lt;br /&gt;
	-- insertion, it is fair to assume that there were no arguments given.&lt;br /&gt;
	if postmake == premake then&lt;br /&gt;
		finalTable:node(&lt;br /&gt;
			mw.html.create(&amp;quot;tr&amp;quot;):node(&lt;br /&gt;
		    	mw.html.create(&amp;quot;td&amp;quot;)&lt;br /&gt;
		    		:attr(&amp;quot;colspan&amp;quot;, 3)&lt;br /&gt;
	    			:css(&amp;quot;color&amp;quot;, &amp;quot;black&amp;quot;)&lt;br /&gt;
		    		:css(&amp;quot;background-color&amp;quot;, &amp;quot;#&amp;quot; .. stormColor(&amp;quot;td&amp;quot;))&lt;br /&gt;
		    		:wikitext(&amp;quot;No &amp;#039;&amp;#039;&amp;#039;tropical cyclone watches or warnings&amp;#039;&amp;#039;&amp;#039; posted at this time.&amp;quot;)&lt;br /&gt;
	    	)&lt;br /&gt;
    	)&lt;br /&gt;
    	postmake = tostring(finalTable)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    -- Output&lt;br /&gt;
    return tostring(postmake) &lt;br /&gt;
    	.. (yesno(args[&amp;quot;clear&amp;quot;]) and (&amp;quot;\n&amp;quot; .. frame:expandTemplate{&lt;br /&gt;
    		title = &amp;quot;clear&amp;quot;&lt;br /&gt;
    	}) or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Chlod</name></author>
	</entry>
</feed>