<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://vion.tail5ecd76.ts.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AStatistical</id>
	<title>Модуль:Statistical - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://vion.tail5ecd76.ts.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AStatistical"/>
	<link rel="alternate" type="text/html" href="https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Statistical&amp;action=history"/>
	<updated>2026-11-07T19:23:11Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Statistical&amp;diff=7285&amp;oldid=prev</id>
		<title>wp&gt;ru.wikipedia: Импорт из русской Википедии, версия 151451783</title>
		<link rel="alternate" type="text/html" href="https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Statistical&amp;diff=7285&amp;oldid=prev"/>
		<updated>2026-01-30T14:45:28Z</updated>

		<summary type="html">&lt;p&gt;Импорт из русской Википедии, версия 151451783&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local templateIncrease = &amp;#039;Увеличение&amp;#039;&lt;br /&gt;
local templateDecrease = &amp;#039;Уменьшение&amp;#039;&lt;br /&gt;
local templateNoChange = &amp;#039;Без изменения&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
local Regions = mw.loadData(&amp;quot;Модуль:Statistical/Regions&amp;quot;)&lt;br /&gt;
bit32 = require( &amp;#039;bit32&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	local function LimitDouble(Val)&lt;br /&gt;
			local MaxNumber = 2147483648&lt;br /&gt;
			return Val - (math.floor(Val / MaxNumber) * MaxNumber)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local function shl(Val, Shift)&lt;br /&gt;
			if Shift &amp;gt; 0 then&lt;br /&gt;
					return  LimitDouble(Val * (2 ^ Shift))&lt;br /&gt;
			else&lt;br /&gt;
					return Value&lt;br /&gt;
			end &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function shr(Val, Shift)&lt;br /&gt;
			if Shift &amp;gt; 0 then &lt;br /&gt;
				return math.floor(Val / (2 ^ Shift))&lt;br /&gt;
			else&lt;br /&gt;
				return Val&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
	-- Код основан на алгоритме SuperFastHash:&lt;br /&gt;
		-- http://www.azillionmonkeys.com/qed/hash.html&lt;br /&gt;
	local function MakeHash(PlaceName)    &lt;br /&gt;
		local dataLength = mw.ustring.len(PlaceName)&lt;br /&gt;
			if dataLength == 0 then return 0 end&lt;br /&gt;
		local hash = dataLength&lt;br /&gt;
		local remainingBytes =  math.fmod(dataLength, 2)&lt;br /&gt;
			local numberOfLoops = math.floor(dataLength / 2)&lt;br /&gt;
			local currentIndex = 0&lt;br /&gt;
			local tmp = 0&lt;br /&gt;
			while (numberOfLoops &amp;gt; 0) do &lt;br /&gt;
			hash = LimitDouble(hash + mw.ustring.codepoint(PlaceName, currentIndex + 1))&lt;br /&gt;
			tmp = bit32.bxor(shl(mw.ustring.codepoint(PlaceName, currentIndex + 2), 11), hash)&lt;br /&gt;
			hash = bit32.bxor(shl(hash, 16), tmp)&lt;br /&gt;
			hash = LimitDouble(hash + shr(hash, 11))&lt;br /&gt;
			currentIndex = currentIndex + 2&lt;br /&gt;
			numberOfLoops = numberOfLoops - 1&lt;br /&gt;
			end&lt;br /&gt;
		if remainingBytes == 1 then&lt;br /&gt;
			hash = LimitDouble(hash + mw.ustring.codepoint(PlaceName, currentIndex + 1))&lt;br /&gt;
			hash = bit32.bxor(hash, shl(hash, 10))&lt;br /&gt;
			hash = LimitDouble(hash + shr(hash, 1))&lt;br /&gt;
			end&lt;br /&gt;
		hash = bit32.bxor(hash, shl(hash, 3))&lt;br /&gt;
		hash = LimitDouble(hash + shr(hash, 5))&lt;br /&gt;
		hash = bit32.bxor(hash, shl(hash, 4))&lt;br /&gt;
		hash = LimitDouble(hash + shr(hash, 17))&lt;br /&gt;
		hash = bit32.bxor(hash, shl(hash, 25))&lt;br /&gt;
		hash = LimitDouble(hash + shr(hash, 6))&lt;br /&gt;
		return hash&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
local function First_less_Second(a, b)  &lt;br /&gt;
		local LenA = mw.ustring.len(a)&lt;br /&gt;
		local LenB = mw.ustring.len(b)&lt;br /&gt;
		for i = 1, (LenA &amp;lt; LenB) and LenA or LenB do&lt;br /&gt;
				if mw.ustring.codepoint(a, i, i) ~= mw.ustring.codepoint(b, i, i) then&lt;br /&gt;
						return mw.ustring.codepoint(a, i, i) &amp;lt; mw.ustring.codepoint(b, i, i) &lt;br /&gt;
				end&lt;br /&gt;
		end&lt;br /&gt;
		return LenA &amp;lt; LenB&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function GetHashData(PlaceHash)     &lt;br /&gt;
	local NumPage = math.floor((PlaceHash - 1) / 33554432 + 2)&lt;br /&gt;
	if NumPage == 2 and (PlaceHash - 1) &amp;lt; 16777216 then NumPage = 1 end&lt;br /&gt;
	local templatename&lt;br /&gt;
	if NumPage &amp;lt; 10  then templatename = &amp;quot;Население/STA-00&amp;quot;..NumPage else templatename = &amp;quot;Население/STA-0&amp;quot;..NumPage	end&lt;br /&gt;
	local page = mw.title.new(templatename, 10)&lt;br /&gt;
	local RawData = page:getContent()&lt;br /&gt;
	HashData = RawData:match(&amp;quot;|&amp;quot; .. PlaceHash .. &amp;quot;=([^\n&amp;lt;]+)&amp;quot;)&lt;br /&gt;
	if (HashData==&amp;quot;&amp;quot;) then HashData=nil &lt;br /&gt;
	elseif (tonumber(HashData)~=nil) then HashData=tonumber(HashData) end&lt;br /&gt;
	return HashData&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.GenerateAndReturnHash(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
&lt;br /&gt;
		if args == nil then return &amp;quot;Введите название объекта АТД&amp;quot; end&lt;br /&gt;
		local PlaceName = args[1]&lt;br /&gt;
 &lt;br /&gt;
		if PlaceName == nil then return &amp;quot;Введите название объекта АТД&amp;quot; end&lt;br /&gt;
		PlaceName = mw.text.trim(PlaceName)&lt;br /&gt;
		local PlaceHash = MakeHash(PlaceName)&lt;br /&gt;
	local NumPage = math.floor((PlaceHash - 1) / 33554432 + 2)&lt;br /&gt;
	if NumPage == 2 and (PlaceHash - 1) &amp;lt; 16777216 then NumPage = 1 end&lt;br /&gt;
	local templatename&lt;br /&gt;
	if NumPage &amp;lt; 10  then templatename = &amp;quot;Население/STA-00&amp;quot;..NumPage else templatename = &amp;quot;Население/STA-0&amp;quot;..NumPage	end    &lt;br /&gt;
		return PlaceHash..&amp;#039; → &amp;#039;..&amp;#039;[[Шаблон:&amp;#039;..templatename..&amp;#039;]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.GetStat(frame)&lt;br /&gt;
		local args&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		args = frame:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		args = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args == nil then return &amp;quot;Введите название объекта АТД&amp;quot; end&lt;br /&gt;
	local PlaceName = args[1]&lt;br /&gt;
&lt;br /&gt;
	if args[3] ~= nil and tonumber(args[3]) then args.year = args[3] end&lt;br /&gt;
	&lt;br /&gt;
	local Format = mw.text.trim ( (args[2] or &amp;quot;Таблица&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
		if PlaceName == nil then return &amp;quot;Введите название объекта АТД&amp;quot; end&lt;br /&gt;
		PlaceName = mw.text.trim(PlaceName)&lt;br /&gt;
	if Format == &amp;#039;Хеш&amp;#039; or Format == &amp;#039;х&amp;#039;  then do return MakeHash(PlaceName) end end&lt;br /&gt;
		&lt;br /&gt;
		local Region = args[&amp;#039;Регион&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		local check = args[&amp;#039;check&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
		if check == &amp;#039;&amp;#039; or check == &amp;#039;0&amp;#039; or check == &amp;#039;false&amp;#039; then&lt;br /&gt;
			check = false;&lt;br /&gt;
		else&lt;br /&gt;
			check = true;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local PlaceData = nil&lt;br /&gt;
	local RegionData = nil&lt;br /&gt;
&lt;br /&gt;
		local CheckRedirect = false&lt;br /&gt;
		local NeedhandleRedirect = false&lt;br /&gt;
		&lt;br /&gt;
	local function GetPlaceData()&lt;br /&gt;
		local PlaceHash = MakeHash(PlaceName)&lt;br /&gt;
			PlaceData = nil&lt;br /&gt;
		RegionData = nil&lt;br /&gt;
		local test = PlaceName:match(&amp;quot;%((%P+)%)&amp;quot;)&lt;br /&gt;
		if Region==&amp;#039;&amp;#039; and test~=&amp;#039;&amp;#039; then&lt;br /&gt;
			-- Если в имени населенного пункта есть уточнение с именем региона, то можно не пользоваться индексной таблицей, то есть не вызывать GetHashData&lt;br /&gt;
			local value = Regions[test]&lt;br /&gt;
			if(value) then&lt;br /&gt;
					RegionData = mw.loadData(&amp;quot;Модуль:Statistical/&amp;quot;..value)&lt;br /&gt;
					PlaceData = RegionData[PlaceHash]&lt;br /&gt;
			end&lt;br /&gt;
		elseif Region ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			-- магия, позволяющая указывать не только индекс, но и значение напрямую&lt;br /&gt;
			Region = Regions[Region] or Region&lt;br /&gt;
			RegionData = mw.loadData(&amp;quot;Модуль:Statistical/&amp;quot;..Region)&lt;br /&gt;
			PlaceData = RegionData[PlaceHash]&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if PlaceData == nil then&lt;br /&gt;
			local RegionPage = GetHashData(PlaceHash)&lt;br /&gt;
			if RegionPage == 0 then return &amp;quot;#Н/Д&amp;quot;..frame:callParserFunction{name = &amp;#039;#tag:ref&amp;#039;, args = {PlaceName ..&amp;quot; &amp;gt; Совпадение хешей. Пожалуйста, укажите регион вручную, например &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{ Население | &amp;quot; .. PlaceName .. &amp;quot; | &amp;quot; .. Format ..&amp;quot; | Регион = Приморский край }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; .. ((args.nocat and &amp;quot;&amp;quot;) or &amp;quot;[[Категория:Википедия:Статьи с неправильными параметрами шаблона Население]]&amp;quot;)}} end &lt;br /&gt;
			if RegionPage ~= nil then&lt;br /&gt;
				if type(tonumber(RegionPage)) == &amp;quot;number&amp;quot; then&lt;br /&gt;
					-- очень плохая вещь, ибо GetHashData очень дорогая по памяти функция&lt;br /&gt;
					PlaceHash=tonumber(RegionPage)&lt;br /&gt;
					RegionPage = GetHashData(PlaceHash) &lt;br /&gt;
				end&lt;br /&gt;
				if type(RegionPage) == &amp;quot;table&amp;quot; then RegionPage = RegionPage[PlaceName] end&lt;br /&gt;
				if RegionPage ~= nil then &lt;br /&gt;
					RegionData = mw.loadData(&amp;quot;Модуль:Statistical/&amp;quot;..RegionPage) &lt;br /&gt;
					if RegionData ~= nil then PlaceData = RegionData[PlaceHash] end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	GetPlaceData()&lt;br /&gt;
		-- Проверка на редирект, если данные не найдены&lt;br /&gt;
	if PlaceData == nil then&lt;br /&gt;
		local page = mw.title.makeTitle(&amp;#039;&amp;#039;, PlaceName)&lt;br /&gt;
		if page.redirectTarget then &lt;br /&gt;
			PlaceName = page.redirectTarget.text &lt;br /&gt;
			GetPlaceData()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local IsWikidata &lt;br /&gt;
	-- Если данные перемещены из шаблона Население в Wikidata, то работаем с ними&lt;br /&gt;
	if PlaceData ~= nil then &lt;br /&gt;
		IsWikidata = PlaceData == &amp;quot;Wikidata&amp;quot; &lt;br /&gt;
	else&lt;br /&gt;
			if check then&lt;br /&gt;
				return 0;&lt;br /&gt;
			else&lt;br /&gt;
				--return &amp;quot;#Н/Д&amp;quot;..frame:callParserFunction{name = &amp;#039;#tag:ref&amp;#039;, args = {PlaceName ..&amp;quot; &amp;gt; Данные не обнаружены. Возможно, страница переименовывалась. Проверьте справочник&amp;quot;..  ((args.nocat and &amp;quot;&amp;quot;) or &amp;quot;[[Категория:Википедия:Статьи с неправильными параметрами шаблона Население]]&amp;quot;)}} &lt;br /&gt;
				-- Вместо прекращения работы при неудаче поиска данных в шаблоне Население попытка поиска в Wikdata&lt;br /&gt;
				IsWikidata = true&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
	if check then&lt;br /&gt;
		return 1;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
		local LastRecord = 0&lt;br /&gt;
		local Qcode &lt;br /&gt;
		&lt;br /&gt;
	if IsWikidata then&lt;br /&gt;
		Qcode = args.from or mw.wikibase.getEntityIdForTitle(PlaceName) or &amp;quot;&amp;quot;&lt;br /&gt;
		if Qcode == &amp;quot;&amp;quot; then&lt;br /&gt;
			local page = mw.title.makeTitle(&amp;#039;&amp;#039;, PlaceName)&lt;br /&gt;
			if page.redirectTarget then &lt;br /&gt;
				PlaceName = page.redirectTarget.text &lt;br /&gt;
				Qcode = args.from or mw.wikibase.getEntityIdForTitle(PlaceName) or &amp;quot;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if Qcode == &amp;quot;&amp;quot; then&lt;br /&gt;
			return &amp;quot;#Н/Д&amp;quot;..frame:callParserFunction{name = &amp;#039;#tag:ref&amp;#039;, args = {PlaceName ..&amp;quot; &amp;gt; Данные в Викиданных не обнаружены. Чтобы устранить ошибку, убедитесь, что на Викиданных заполнен параметр численности населения (P1082) для соответствующего населённого пункта, или проверьте, совпадает ли название населённого пункта в шаблоне с названием соответствующей статьи в Википедии.&amp;quot;..  ((args.nocat and &amp;quot;&amp;quot;) or &amp;quot;[[Категория:Википедия:Статьи с неправильными параметрами шаблона Население]]&amp;quot;)}} &lt;br /&gt;
		end&lt;br /&gt;
		if next(mw.wikibase.getBestStatements(Qcode, &amp;#039;P1082&amp;#039;)) == nil then&lt;br /&gt;
			return &amp;quot;#Н/Д&amp;quot;..frame:callParserFunction{name = &amp;#039;#tag:ref&amp;#039;, args = {PlaceName ..&amp;quot; &amp;gt; Данные в Викиданных не обнаружены. Чтобы устранить ошибку, убедитесь, что на Викиданных заполнен параметр численности населения (P1082) для соответствующего населённого пункта, или проверьте, совпадает ли название населённого пункта в шаблоне с названием соответствующей статьи в Википедии.&amp;quot;..  ((args.nocat and &amp;quot;&amp;quot;) or &amp;quot;[[Категория:Википедия:Статьи с неправильными параметрами шаблона Население]]&amp;quot;)}} &lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
			for k in pairs(PlaceData) do&lt;br /&gt;
				LastRecord = LastRecord + 1&lt;br /&gt;
				if args[3] ~= nil and PlaceData[LastRecord][1] == tonumber(args[3]) then&lt;br /&gt;
				break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
		local NumRecord = LastRecord&lt;br /&gt;
 &lt;br /&gt;
	local function FormatY()    &lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatY&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
				return PlaceData[NumRecord][1]&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	local function FormatN()    &lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatN&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
				return PlaceData[NumRecord][2]&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	local function FormatS(SourceType)  &lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatS&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
				if ( PlaceData[NumRecord][3] == nil or PlaceData[NumRecord][3] == &amp;#039;&amp;#039; ) then&lt;br /&gt;
						return &amp;quot;&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
						local Source1&lt;br /&gt;
						local Source2 &lt;br /&gt;
						if string.find(PlaceData[NumRecord][3],&amp;quot;%d+[A-Z]+&amp;quot;)==1 then&lt;br /&gt;
							if RegionData[&amp;#039;Источники&amp;#039;][PlaceData[NumRecord][3]] ~= nil then&lt;br /&gt;
								Source1 = RegionData[&amp;#039;Источники&amp;#039;][PlaceData[NumRecord][3]][1]&lt;br /&gt;
									Source2 = PlaceData[NumRecord][3]&lt;br /&gt;
							else&lt;br /&gt;
								Source1 = PlaceData[NumRecord][3] .. &amp;#039;[[Категория:Википедия:Статьи с неправильными источниками в модуле Statistical]]&amp;#039;&lt;br /&gt;
									Source2 = &amp;quot;&amp;quot;&lt;br /&gt;
							end&lt;br /&gt;
						else&lt;br /&gt;
								Source1 = PlaceData[NumRecord][3]&lt;br /&gt;
								Source2 = &amp;quot;&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
						if string.find(Source1, &amp;quot;https?://&amp;quot;)==1 then&lt;br /&gt;
								Source1 = &amp;#039;[&amp;#039;..Source1..&amp;#039;]&amp;#039;&lt;br /&gt;
						end&lt;br /&gt;
				if SourceType == &amp;quot;и&amp;quot; then&lt;br /&gt;
					return Source1&lt;br /&gt;
				end&lt;br /&gt;
						if Source2 == &amp;quot;&amp;quot; then&lt;br /&gt;
								return frame:callParserFunction{name = &amp;#039;#tag:ref&amp;#039;, args = {Source1}}&lt;br /&gt;
						else&lt;br /&gt;
								return frame:callParserFunction{name = &amp;#039;#tag:ref&amp;#039;, args = {Source1, name = Source2}}&lt;br /&gt;
						end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
	end        &lt;br /&gt;
 &lt;br /&gt;
	local function FormatF()&lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatF&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
			local lang = mw.language.getContentLanguage()&lt;br /&gt;
			return lang:formatNum( PlaceData[NumRecord][2] )&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	local function FormatT()    &lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatT&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
				if NumRecord &amp;gt; 1 then&lt;br /&gt;
						if PlaceData[NumRecord][2] &amp;gt; PlaceData[NumRecord - 1][2] then&lt;br /&gt;
								return frame:expandTemplate{&lt;br /&gt;
									title = templateIncrease&lt;br /&gt;
								}&lt;br /&gt;
						elseif PlaceData[NumRecord][2] &amp;lt; PlaceData[NumRecord - 1][2] then&lt;br /&gt;
								return frame:expandTemplate{&lt;br /&gt;
									title = templateDecrease&lt;br /&gt;
								}&lt;br /&gt;
						else&lt;br /&gt;
								return frame:expandTemplate{&lt;br /&gt;
									title = templateNoChange&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;
	end&lt;br /&gt;
&lt;br /&gt;
	local function FormatD()    &lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatD&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
			local tempHeight = 320&lt;br /&gt;
			local tempWidth = 800&lt;br /&gt;
			mw.logObject(LastRecord)&lt;br /&gt;
			local tickCount = 5&lt;br /&gt;
			if LastRecord &amp;gt; 100 then&lt;br /&gt;
				tickCount = 10&lt;br /&gt;
			end&lt;br /&gt;
			local tempMod = math.fmod (LastRecord, tickCount)&lt;br /&gt;
			if LastRecord &amp;lt; 40 then &lt;br /&gt;
				tempHeight = 200  + 170 * (LastRecord - 1) / 40&lt;br /&gt;
				tempWidth = 200 + 600 * (LastRecord - 1) / 40&lt;br /&gt;
			end&lt;br /&gt;
			local tempGroup = &amp;quot;&amp;quot;&lt;br /&gt;
			local tempTooltip = &amp;quot;&amp;quot;&lt;br /&gt;
			local tempLegend = &amp;quot;&amp;quot;&lt;br /&gt;
			for k in pairs(PlaceData) do &lt;br /&gt;
				NumRecord = k&lt;br /&gt;
				tempGroup = tempGroup .. FormatN() .. &amp;quot;:&amp;quot;&lt;br /&gt;
				tempTooltip = tempTooltip .. FormatF() .. &amp;quot; (&amp;quot; .. FormatY() .. &amp;quot;):&amp;quot;&lt;br /&gt;
				if LastRecord &amp;lt; tickCount or math.fmod (k, tickCount) == tempMod  then tempLegend = tempLegend .. FormatY() end&lt;br /&gt;
				tempLegend = tempLegend .. &amp;quot;:&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			tempGroup = string.sub (tempGroup, 1, string.len (tempGroup)-1)&lt;br /&gt;
			tempTooltip = string.sub (tempTooltip, 1, string.len (tempTooltip)-1)&lt;br /&gt;
			tempLegend = string.sub (tempLegend, 1, string.len (tempLegend)-1)&lt;br /&gt;
				local barChartFunc = require(&amp;#039;Модуль:Chart&amp;#039;)[&amp;#039;bar chart&amp;#039;];&lt;br /&gt;
			local Diagram = {&lt;br /&gt;
				[&amp;#039;height&amp;#039;] = tempHeight,&lt;br /&gt;
				[&amp;#039;width&amp;#039;] = tempWidth,&lt;br /&gt;
				[&amp;#039;group 1&amp;#039;] = tempGroup,&lt;br /&gt;
				[&amp;#039;tooltip 1&amp;#039;] = tempTooltip,&lt;br /&gt;
				[&amp;#039;colors&amp;#039;] = &amp;quot;#B0C4DE&amp;quot;,&lt;br /&gt;
				[&amp;#039;x legends&amp;#039;] = tempLegend,&lt;br /&gt;
				[&amp;#039;group names&amp;#039;] = &amp;#039;Численность населения&amp;#039;,&lt;br /&gt;
				[&amp;#039;default color&amp;#039;] = &amp;#039;#1E90FF&amp;#039;&lt;br /&gt;
				}    	&lt;br /&gt;
			local cframe = mw.getCurrentFrame();&lt;br /&gt;
			local barChart = barChartFunc(cframe:newChild{ title=cframe.title, args = Diagram})&lt;br /&gt;
			local ts = frame:extensionTag{ name = &amp;#039;templatestyles&amp;#039;, content = &amp;#039;&amp;#039;, args = { src = &amp;#039;Module:Statistical/styles.css&amp;#039; } }&lt;br /&gt;
			return ts .. mw.text.tag( &amp;#039;div&amp;#039;, { class = &amp;#039;ts-statistical&amp;#039; }, barChart )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function FormatG()    &lt;br /&gt;
		local xValues = &amp;quot;|arg:x=&amp;quot;&lt;br /&gt;
		local yValues = &amp;quot;|arg:y1=&amp;quot;&lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			xValues, yValues = frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode,year=args.year,[&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatG&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }:match(&amp;quot;^(.-);(.*)$&amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
			for k in pairs(PlaceData) do &lt;br /&gt;
				NumRecord = k&lt;br /&gt;
				xValues = xValues .. FormatY() .. &amp;quot;,&amp;quot;&lt;br /&gt;
				yValues = yValues .. FormatN() .. &amp;quot;,&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local chartParams = &amp;quot;|arg:y1Title=&amp;quot; .. PlaceName .. xValues:gsub(&amp;#039;,$&amp;#039;, &amp;#039;&amp;#039;) .. yValues:gsub(&amp;#039;,$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		local graph = string.format(&amp;quot;{{#chart:Wikidata population (with dynamic data).chart%s}}&amp;quot;, chartParams)&lt;br /&gt;
		local _, count = string.gsub(xValues, &amp;#039;,&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		local cat = &amp;quot;&amp;quot;&lt;br /&gt;
		if count &amp;lt;= 3 then&lt;br /&gt;
			cat = &amp;quot;[[Категория:Википедия:Мало точек для графика]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		return mw.getCurrentFrame():preprocess( graph .. cat )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function FormatTable()    &lt;br /&gt;
				-- Формирование HTML-таблицы&lt;br /&gt;
			if IsWikidata then&lt;br /&gt;
			return frame:expandTemplate{ title = &amp;quot;Wikidata&amp;quot;, args={from=Qcode, column = args[&amp;#039;Столбцов&amp;#039;], decor = args[&amp;#039;Оформление&amp;#039;], titul = args[&amp;#039;Заголовок&amp;#039;], [&amp;#039;property-module&amp;#039;]=&amp;quot;Statistical/Wikidata&amp;quot;,[&amp;#039;property-function&amp;#039;]=&amp;quot;FormatTable&amp;quot;,property=&amp;quot;p1082[p585][rank:preferred, rank:normal]&amp;quot;} }&lt;br /&gt;
			else&lt;br /&gt;
				local HTML = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
					local MaxData&lt;br /&gt;
					if args[&amp;#039;Столбцов&amp;#039;] then&lt;br /&gt;
							Column = tonumber(args[&amp;#039;Столбцов&amp;#039;])&lt;br /&gt;
					else&lt;br /&gt;
				Column = 7&lt;br /&gt;
					end&lt;br /&gt;
					if Column &amp;gt; LastRecord then Column = LastRecord end&lt;br /&gt;
	 &lt;br /&gt;
					if args[&amp;#039;Оформление&amp;#039;] ~= nil then&lt;br /&gt;
							HTML:attr(&amp;#039;class&amp;#039;, args[&amp;#039;Оформление&amp;#039;])&lt;br /&gt;
					else&lt;br /&gt;
							HTML:attr(&amp;#039;class&amp;#039;, &amp;#039;standard&amp;#039;) &lt;br /&gt;
					end&lt;br /&gt;
	 &lt;br /&gt;
					local TempRow&lt;br /&gt;
					local NumRow = 0&lt;br /&gt;
					HTML:tag(&amp;#039;caption&amp;#039;)&lt;br /&gt;
						:wikitext(args[&amp;#039;Заголовок&amp;#039;] or &amp;#039;Численность населения&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;background-color&amp;#039;, &amp;#039;var(--ruwiki-background-color-blue200, #cfe3ff)&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;color&amp;#039;, &amp;#039;inherit&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;border&amp;#039;, &amp;#039;1px solid var(--border-color-base, #a2a9b1)&amp;#039;)&lt;br /&gt;
					:css(&amp;#039;border-bottom&amp;#039;, &amp;#039;0&amp;#039;)&lt;br /&gt;
					&lt;br /&gt;
					for i = 1, math.ceil(LastRecord / Column) do&lt;br /&gt;
							TempRow = HTML:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
							for j = 1, Column do&lt;br /&gt;
					NumRecord = (i - 1) * Column + j&lt;br /&gt;
									if PlaceData[NumRecord] == nil then&lt;br /&gt;
											TempRow:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;scope&amp;#039;, &amp;#039;col&amp;#039;):wikitext(&amp;quot;&amp;quot;)&lt;br /&gt;
									else&lt;br /&gt;
											TempRow:tag(&amp;#039;th&amp;#039;):attr(&amp;#039;scope&amp;#039;, &amp;#039;col&amp;#039;):wikitext(FormatY()..FormatS(&amp;quot;с&amp;quot;))&lt;br /&gt;
									end&lt;br /&gt;
							end&lt;br /&gt;
	 &lt;br /&gt;
							TempRow = HTML:tag(&amp;#039;tr&amp;#039;):css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
							for j = 1, Column do&lt;br /&gt;
					NumRecord = (i - 1) * Column + j&lt;br /&gt;
									if PlaceData[NumRecord] == nil then&lt;br /&gt;
											TempRow:tag(&amp;#039;td&amp;#039;):wikitext(&amp;quot;&amp;quot;)&lt;br /&gt;
									else&lt;br /&gt;
											TempRow:tag(&amp;#039;td&amp;#039;):wikitext(FormatT()..FormatF())&lt;br /&gt;
									end&lt;br /&gt;
							end&lt;br /&gt;
					end            &lt;br /&gt;
					return tostring(HTML)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- грязный хак для графиков (если вставлять &amp;lt;templatestyles&amp;gt; напрямую, то это ломает версию без форматирования)&lt;br /&gt;
	-- стили стоит или перенести в Common.css, если графики будут активнее использоваться, или разобрать шаблон на несколько&lt;br /&gt;
	local styles = frame:extensionTag(&amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, { src = &amp;#039;Шаблон:WikidataChart/styles.css&amp;#039; })&lt;br /&gt;
&lt;br /&gt;
		if Format == &amp;#039;Год&amp;#039; or Format == &amp;#039;г&amp;#039; then&lt;br /&gt;
		mw.logObject(Format)&lt;br /&gt;
				return FormatY()    &lt;br /&gt;
		elseif Format == &amp;#039;Безформат&amp;#039; or Format == &amp;#039;Число&amp;#039; or Format == &amp;#039;ч&amp;#039;  then&lt;br /&gt;
				return FormatN()    &lt;br /&gt;
		elseif Format == &amp;#039;Ссылка&amp;#039; or Format == &amp;#039;с&amp;#039;  then&lt;br /&gt;
				return FormatS(&amp;quot;с&amp;quot;)    &lt;br /&gt;
		elseif Format == &amp;#039;Источник&amp;#039; or Format == &amp;#039;и&amp;#039;  then&lt;br /&gt;
				return FormatS(&amp;quot;и&amp;quot;)    &lt;br /&gt;
		elseif Format == &amp;#039;Формат&amp;#039; or Format == &amp;#039;ф&amp;#039;  then&lt;br /&gt;
				return FormatF()    &lt;br /&gt;
		elseif Format == &amp;#039;ФорматГод&amp;#039; or Format == &amp;#039;фг&amp;#039;  then&lt;br /&gt;
				return FormatF()..&amp;quot; (&amp;quot;..FormatY()..&amp;quot;)&amp;quot;    &lt;br /&gt;
		elseif Format == &amp;#039;ФорматСсылка&amp;#039; or Format == &amp;#039;фс&amp;#039;  then&lt;br /&gt;
				return FormatF()..FormatS()    &lt;br /&gt;
		elseif Format == &amp;#039;ФорматСсылкаГод&amp;#039; or Format == &amp;#039;фсг&amp;#039;  then&lt;br /&gt;
				return FormatF()..FormatS()..&amp;quot; (&amp;quot;..FormatY()..&amp;quot;)&amp;quot;&lt;br /&gt;
		elseif Format == &amp;#039;Тренд&amp;#039; or Format == &amp;#039;т&amp;#039;  then&lt;br /&gt;
				return FormatT()..FormatF()    &lt;br /&gt;
		elseif Format == &amp;#039;Значение&amp;#039; or Format == &amp;#039;ТрендСсылка&amp;#039; or Format == &amp;#039;тс&amp;#039;  then&lt;br /&gt;
				return FormatT()..FormatF()..FormatS()&lt;br /&gt;
		elseif Format == &amp;#039;ТрендСсылкаГод&amp;#039; or Format == &amp;#039;тсг&amp;#039;  then&lt;br /&gt;
				return FormatT()..FormatF()..FormatS()..&amp;quot; (&amp;quot;..FormatY()..&amp;quot;)&amp;quot;&lt;br /&gt;
	elseif Format == &amp;#039;Диаграмма&amp;#039; or Format == &amp;#039;д&amp;#039;  then&lt;br /&gt;
		mw.logObject(FormatD())&lt;br /&gt;
				return FormatD()&lt;br /&gt;
	elseif Format == &amp;#039;График&amp;#039; or Format == &amp;#039;график&amp;#039;  then&lt;br /&gt;
				return styles..FormatG()&lt;br /&gt;
		else&lt;br /&gt;
			return FormatTable()&lt;br /&gt;
		end&lt;br /&gt;
		return 1, Format&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wp&gt;ru.wikipedia</name></author>
	</entry>
</feed>