پودمان:External links2: تفاوت میان نسخه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
محتوای حذف‌شده محتوای افزوده‌شده
کاربردی در پودمان نداشته و نمی‌تواند هم داشته باشد. (درجا)
ظاهراً با حذف ; مشکلش رفع می‌شود؟ عجب
برچسب: برگردانده‌شده
خط ۲۰: خط ۲۰:
local preferredLanguage = 'Q8785'; -- armenian
local preferredLanguage = 'Q8785'; -- armenian


local templateColorName = 'գույն';
local templateColorName = 'գույն'
-- some project have "named" colors, defined by templates
-- some project have "named" colors, defined by templates
function colorByTitle( frame, colorTitle )
function colorByTitle( frame, colorTitle )

نسخهٔ ‏۲۰ آوریل ۲۰۲۴، ساعت ۲۰:۵۹

توضیحات پودمان[نمایش] [ویرایش] [تاریخچه] [پاکسازی]
خطای لوآ در خط 24: assign to undeclared variable 'colorByTitle'.

-- Localizable part
-- Please, note, that labels to various sites and cataloges are taken from Wikidata (i.e. Wikidata label)
require('strict')

local linksPrefix = ''
local project = 'ویکی‌پدیا'
local categoryTemplateEmpty = project .. ':قالب خالی «پیوندهای بیرونی»'
local categoryWithWikimediaCommons = project .. ':Վիքիպահեստի հղումներով հոդվածներ'
local templateLink = 'داده‌های_کتابخانه‌ای'

local group1Label = '[[' .. linksPrefix .. 'شبکه اجتماعی|در شبکه‌های اجتماعی]]'
local group2Label = 'متن آثار'
local group3Label = 'نگاره، ویدئو و صدا'
local group4Label = 'وبگاه‌های موضوعی'
local group5Label = 'لغتنامه‌ها و دایره المعارف‌ها'
local group6Label = 'طبقه‌بندی'
local group7Label = '[[' .. linksPrefix .. 'کنترل از طریق مرجع|کنترل استاندارد]]'

-- The language codes that should be always displayed even if they have normal rank and claim with another language and prefferered rank exists
local preferredLanguage = 'Q8785'; -- armenian

local templateColorName = 'գույն'
-- some project have "named" colors, defined by templates
function colorByTitle( frame, colorTitle )
	local templateName = 'գույն/' .. colorTitle;
	local templateTitle = mw.title.makeTitle( 'Template', templateName );
	if ( templateTitle == nil or not templateTitle.exists ) then
		return false;
	end
	return frame:expandTemplate{ title = templateName };
end

local dictionaries = {
-- Բառարաններ և հանրագիտարաններ
	{ id = 'P9629',			title = 'Armeniapedia',				linkF = function( id ) return 'http://www.armeniapedia.org/index.php?curid=' .. id .. '/'; end, },
	{ id = 'P9511',			title = 'Հայազգ',				linkF = function( id ) return 'http://am.hayazg.info/index.php?curid=' .. id .. '/'; end, },
	{ id = 'P9020',			title = 'AV Production',				linkF = function( id ) return 'https://avproduction.am/?ln=am&page=person&id=' .. id; end },
	{ id = 'Q4086271',		title = 'Աստվածաշնչյան',				project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'P1907',			title = 'Ավստրալական կենսագրական',		linkF = function ( id ) return 'http://adb.anu.edu.au/biography/' .. id .. ''; end },
	{ id = 'P4211',			title = 'Բաշկիրական',			linkF = function ( id ) return 'http://башкирская-энциклопедия.рф/index.php/component/content/article/' .. id; end, },
    { id = 'Q19217220',		title = 'Բերեզինա',				project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q20096917',		title = 'Բրիտանիկա (9-րդ)',				project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'Q867541',		title = 'Բրիտանիկա (11-րդ)',			project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'P1417',			title = 'Բրիտանիկա (օնլայն)',			linkF = function ( id ) return 'https://www.britannica.com/'.. id; end},
	{ id = 'Q15987490',		title = 'Բրիտանիկա (12-րդ)',				project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'P5019',			title = 'Բրոքհաուս',					linkF = function ( id ) return 'https://brockhaus.de/ecs/enzy/article/'.. id; end},
	{ id = 'Q602358',		title = 'Բրոքհաուսի և Եփրոնի',				project = 'ruwikisource',	projectCode = 's:' },			
	{ id = 'Q19180675',		title = 'Բրոքհաուսի և Եփրոնի փոքր',			project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q4263804',		title = 'Գտանակագիտական', },
	{ id = 'Q4239850',		title = 'Գրականական համառոտ' },
	{ id = 'Q1970746',		title = 'Վ. Դալի',					project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q30059240',		title = 'Դասական հնությունների իրական բառարան',			project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'P4613',			title = 'Ժամանակակից Ուկրաինայի',		linkF = function ( id ) return 'http://esu.com.ua/search_articles.php?id=' .. id; end, },
	{ title = 'Իտալացիների կենսագրական բառարան',	 id='P1986',	 linkF = function( id ) return 'https://treccani.it/enciclopedia/' .. id .. '_(Dizionario_Biografico)' end },
	{ id = 'P6058',		    title = 'Լարուսի',                       linkF = function  (id)  return 'https://www.larousse.fr/encyclopedie/' .. id end, },
	{ id = 'Q17290934',		title = 'Լենտապեդիա',				project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'P6504',			title = 'Լիտվական մարզային',				linkF = function ( id ) return 'http://www.lse.lt/index.php?' .. id; end, },
	{ id = 'P5395',			title = 'Կանադական',				linkF = function ( id ) return 'https://www.thecanadianencyclopedia.ca/en/article/' .. id .. '/'; end, },
    { id = 'P6741',			title = 'Կինոսոզվեզդիե',				linkF = function( id ) return 'http://www.kinosozvezdie.ru/actors/' .. id .. '/' .. id .. '.html'; end },
	{ id = 'Q4091875',		title = 'Կյուրեղի և Մեթոդիոսի', },
	{ id = 'P6385',			title = 'Կրուգոսվետ',				linkF = function ( id ) return 'https://www.krugosvet.ru/enc/' .. id; end, },
	--исключение для нетипичных адресов типа node/39767
	{ id = 'Q2627728',		title = 'Կրուգոսվետ' },
	{ id = 'P1438',			title = 'Համառոտ հրեական',				linkF = function ( id ) return 'https://eleven.co.il/article/' .. id; end, },
	{ id = 'Q4532135',		title = 'Հանրագիտարանային բառապաշար',		project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q4173137',		title = 'Հրեական Բրոքհաուսի և Եփրոնի',		project = 'ruwikisource',	projectCode = 's:' },
    { id = 'P6980',			title = 'Ձախ ափը',			linkF = function( id ) return 'https://lb.ua/file/' .. id; end },
	{ id = 'P1296',			title = 'Մեծ կատալոնական',			linkF = function ( id ) return 'https://www.enciclopedia.cat/ec-gec-' .. id .. '.xml' end },
	{ id = 'Q4091878',		title = 'Մեծ Յուժակովի',			project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'P4342',			title = 'Մեծ նորվեգական',			linkF = function ( id ) return 'https://snl.no/' .. id; end, },
    { id = 'P2924',			title = 'Մեծ ռուսական',				linkF = function ( id ) return 'https://bigenc.ru/text/' .. id; end, },
	{ id = 'Q20078554',		title = 'Մեծ սովետական (1 հրտ.)',		project = 'ruwikisource',	projectCode = 's:' },
    { id = 'P6596',			title = 'Միշտ կողկս…',				linkF = function( id ) return 'http://a-tremasov.ru/' .. id; end },
	{ id = 'Q19190511',		title = 'Նոր',			project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'P3217',			title = 'Շվեդական կենսագրական',				linkF = function ( id ) return 'https://sok.riksarkivet.se/sbl/Presentation.aspx?id=' .. id; end, },
	{ id = 'P902',			title = 'Շվեյցարական կենսագրական',				linkF = function ( id ) return 'http://www.hls-dhs-dss.ch/textes/f/F' .. id .. '.php'; end, },
	{ id = 'P886',			title = 'Շվեյցարական պատմական (օնլայն)',	linkF = function ( id ) return 'http://www.e-lir.ch/e-LIR___Lexicon.' .. id .. '.450.0.html'; end, },
	{ id = 'Q27680201',		title = 'Ռիմանի երաժշտական',			project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q1960551',		title = 'Ռուսական կենսագրական',			project = 'ruwikisource',	projectCode = 's:'	},
	{ id = 'Q4135594',		title = 'Ռուսաստանի կայսրության աշխարհագրական և վիճակագրական',	project = 'ruwikisource',	projectCode = 's:' },
    { id = 'P6081',			title = 'ՌԻԱ տեղեկանք',					linkF = function( id ) return 'https://ria.ru/spravka/00000000/' .. id .. '.html'; end },
	{ id = 'Q4114391',		title = 'Սիտինի ռազմական',				project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q20078551',		title = 'Տեխնիկական (1 հրտ.)',				project = 'ruwikisource',	projectCode = 's:' },
    { id = 'P6384',			title = 'Վիպերսոն',				linkF = function( id ) return 'http://viperson.ru/people/' .. id; end },
	{ id = 'Q63985075',		title = 'ՏԱՍՍ հանրագիտարան', },
    { id = 'P6219',			title = 'ՏԱՍՍ տեղեկանք',			linkF = function( id ) return 'https://tass.ru/info/' .. id; end },
	{ id = 'P1648',			title = 'Ուելսական կենսագրական',		linkF = function ( id ) return 'http://yba.llgc.org.uk/en/' .. id .. '.html' end, },
	{ id = 'Q2498180',		title = 'Ուղղափառ', },
	{ id = 'P5002',			title = 'Ուղղափառ',			linkF = function ( id ) return 'http://www.pravenc.ru/text/' .. id .. '.html'; end, },
	{ id = 'Q19211082',		title = 'Ուղղափառ աստվածաբանական',		project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'P1415',			title = 'Օքսֆորդի կենսագրական',			linkF = function( id ) return 'https://doi.org/10.1093/ref:odnb/' .. id; end, },
	{ id = 'Q42068474',		title = 'XX դարի ռուս գրողների կենսագրական-մատենագիտական բառարան',	project = 'ruwikisource',	projectCode = 's:' },
	{ id = 'Q590208',		title = 'Allgemeine Deutsche Biographie',		project = 'dewikisource',	projectCode = 's:de:' },
	{ id = 'Q19077875',		title = 'American Cycl. (1879)',		project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'Q19037977',		title = 'American Med. Biogr. (1920)',		project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'P4823',			title = 'American National Biography',		linkF = function ( id ) return 'https://doi.org/10.1093/anb/9780198606697.article.'.. id; end},
	{ id = 'Q12912667',		title = 'Appletons\' (1887—1901)',				project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'P2580',			title = 'BBLD',							linkF = function ( id ) return 'https://bbld.de/' .. id; end, },
	{ id = 'Q302556',		title = 'Catholic (1907—13)',				project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'P3241',			title = 'Catholic (1997—…)',			linkF = function ( id ) return 'http://www.newadvent.org/cathen/'.. id .. '.htm'; end},
    { id = 'Q16011749',     title = 'Dictionary of Music and Musicians',    project = 'enwikisource',       projectCode = 'wikisource:'},
	{ id = 'Q15987216',		title = 'Dictionary of National Biography',		project = 'enwikisource',	projectCode = 'wikisource:' },
	{ id = 'Q16014700',		title = 'Dictionary of National Biography (1st suppl.)', project = 'enwikisource', projectCode = 'wikisource:' },
	{ id = 'Q16014697',		title = 'Dictionary of National Biography (2nd suppl.)', project = 'enwikisource', projectCode = 'wikisource:' },
	{ id = 'P1614',			title = 'History of Parliament',				linkF = function ( id ) return 'http://www.historyofparliamentonline.org/volume/' .. id; end, },
	{ id = 'Q20961706',		title = 'Infernal (6e éd.)',				project = 'frwikisource',	projectCode = 's:fr:' },
    { id = 'P486',			title = 'MESH ID',			linkF = function( id ) return 'https://meshb.nlm.nih.gov/record/ui?ui=' .. id; end },
    { id = 'P1285',			title = 'Munzinger',			linkF = function( id ) return 'http://www.munzinger.de/search/go/document.jsp?id=' .. id; end },
	{ id = 'Q20089963',		title = 'New International',				project = 'enwikisource',	projectCode = 'wikisource:' },
    { id = 'P1263',			title = 'Notable Names Database',				linkF = function( id ) return 'http://nndb.com/people/' .. id; end },
	{ id = 'P3365',			title = 'Treccani',					linkF = function( id ) return 'http://www.treccani.it/enciclopedia/'.. id; end},
	{ id = 'P3219',			title = 'Universalis',				linkF = function ( id ) return 'https://www.universalis.fr/encyclopedie/' .. id  .. '/'; end, },
    { id = 'P7475',			title = 'Деловой Петербург',			linkF = function( id ) return 'http://whoiswho.dp.ru/cart/person/' .. id; end },
    { id = 'P7529',			title = 'Деловой Петербург',			linkF = function( id ) return 'http://whoiswho.dp.ru/cart/company/' .. id; end },
    { id = 'P6210',			title = 'Ліга.Досье',				linkF = function( id ) return 'https://file.liga.net/' .. id; end },
	{ id = 'P6739',			title = 'Россия-Культура',				linkF = function( id ) return 'https://tvkultura.ru/person/show/person_id/' .. id .. '/'; end, },
	}

-- Feel free to correct labels and categories, or add/remove sources here
-- Non-localizable part (not need to localize )
local moduleNavbox = require('Module:Navbox')

local titleBasedLinks = { ['Q602358'] = true, ['Q17290934'] = true, ['Q1960551'] = true }

local p = {}

function dlalLink( id )	return 'https://digilib.aua.am/am/-/library/' .. id; end
function bavLink( id )	return 'http://viaf.org/processed/BAV%7C' .. id; end
function bibsysLink( id )	return 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&cql=bs.autid+%3D+' .. id .. '&feltselect=bs.autid'; end
function bncLink( id )	return 'http://cantic.bnc.cat/registres/CUCId/' .. id; end
function bneLink( id )	return 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=' .. id; end
function bnfLink( id )	return 'http://catalogue.bnf.fr/ark:/12148/cb' .. id; end
function boxofficemojoLink( id )	return 'http://www.boxofficemojo.com/movies/?id=' .. id .. '.htm'; end
function bpnLink( id )	return 'http://www.biografischportaal.nl/persoon/' .. id; end
function calisLink( id )	return 'http://opac.calis.edu.cn/aopac/ajsp/detail.jsp?actionfrom=1&actl=CAL++' .. id; end
function cbdbLink( id )	return 'http://db1.ihp.sinica.edu.tw/cbdbc/cbdbkmeng?~~AAA' .. id; end
function ciniiLink( id )	return 'http://ci.nii.ac.jp/author/' .. id; end
function conorLink( id )	return 'http://www.cobiss.si/scripts/cobiss?command=DISPLAY&base=CONOR&rid=' .. id; end
function doLink( id )	return 'http://www.disease-ontology.org/?id=' .. id; end
function gtaaLink( id )	return 'http://data.beeldengeluid.nl/gtaa/' .. id; end
function commonsWikimediaLink( id )	return ':commons:Category:' .. id; end
function egaxaLink( id )	return 'http://viaf.org/processed/EGAXA%7Cvtls' .. id; end


function fanLibRuLink( id )
	local firstChar = mw.ustring.sub( id, 1, 1 );
	return 'http://fan.lib.ru/' .. firstChar .. '/' .. id .. '/';
end

function flickrLink( id )	return 'https://www.flickr.com/' .. id; end
function hushLink( id )	return 'https://hush.am/index.php?route=product/hush&grave_id=' .. id; end
function findagraveLink( id )	return 'http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&GRid=' .. id; end
function dnbLink( id )	return 'http://d-nb.info/' .. id; end
function gndLink( id )	return 'http://d-nb.info/gnd/' .. id; end
function ibdbPersonLink( id )	return 'http://www.ibdb.com/person.php?id=' .. id; end
function ibdbProductionLink( id )	return 'http://www.ibdb.com/production.php?id=' .. id; end
function ibdbShowLink( id )	return 'http://www.ibdb.com/show.php?id=' .. id; end
function ibdbVenueLink( id )	return 'http://www.ibdb.com/venue.php?id=' .. id; end
function isfdbAuthorLink( id )	return 'http://www.isfdb.org/cgi-bin/ea.cgi?' .. id; end
function isfdbPublicationLink( id )	return 'http://www.isfdb.org/cgi-bin/pl.cgi?' .. id; end
function isfdbSeriesLink( id )	return 'http://www.isfdb.org/cgi-bin/pe.cgi?' .. id; end
function isfdbPublisherLink( id )	return 'http://www.isfdb.org/cgi-bin/publisher.cgi?' .. id; end
function imslpLink( id )	return 'http://imslp.org/wiki/' .. string.gsub( id, ' ', '_' ); end

function imdbLink( id )
	if string.match( id, '^ch' ) then
		return 'http://www.imdb.com/character/' .. id;
	end
	if string.match( id, '^co' ) then
		return 'http://www.imdb.com/company/' .. id;
	end
	if string.match( id, '^nm' ) then
		return 'http://www.imdb.com/name/' .. id;
	end
	if string.match( id, '^tt' ) then
		return 'http://www.imdb.com/title/' .. id;
	end

	return false
end

function isniLink( id )
	id = id:gsub( '[ %-]', '' ):upper();
	return 'http://isni-url.oclc.nl/isni/' .. id;
end

function lccnLink( id )
	return 'http://id.loc.gov/authorities/' .. id;
end

function locLink( id )
	return 'https://lccn.loc.gov/' .. id;
end
function lastfmLink( id )
	return 'https://www.last.fm/music/' .. id;
end

function iccuLink( id )
	id = id:gsub( '\\\\', '%5C' ):upper();
	return 'http://opac.sbn.it/opacsbn/opac/iccu/scheda_authority.jsp?bid=' .. id;
end

function lnbLink( id )	return 'http://viaf.org/processed/LNB%7CLNC10-' .. id; end
function rgaliLink( id )	return 'http://rgali.ru/obj/' .. id .. '?lc=ru'; end
function rslLink0( id )	return 'http://aleph.rsl.ru/F?func=direct-set&l_base=xall&doc_number=' .. id; end
function merimeeLink( id ) return false	end
function microsoftLink( id )	return 'https://academic.microsoft.com/#/detail/' .. id; end
function mixcloudLink( id )	return 'https://mixcloud.com/' .. id .. '/'; end
function naukaUkrLink( id )	return 'http://irbis-nbuv.gov.ua/ASUA/' .. id; end
function nclLink( id )	return 'http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=' .. id; end
function ndlLink( id )	return 'http://id.ndl.go.jp/auth/ndlna/' .. id; end
function nlcLink( id )	return false	end
function nliLink( id )	return 'http://a20.libnet.ac.il/F?func=find-b&REQUEST=' .. id .. '&find_code=SYS&local_base=NNL10'; end
function nkcLink( id )	return 'http://aut.nkp.cz/' .. id; end
function nlaLink( id ) 	return 'http://nla.gov.au/anbd.aut-an' .. id; end
function nlrLink( id ) 	return 'http://alephnew.bibnat.ro:8991/F?func=find-b&request=' .. id .. '000354872&find_code=SYS&adjacent=Y&local_base=NLR10' end
function nszlLink( id )	return 'http://viaf.org/processed/NSZL%7C' .. id; end
function nskLink( id )	return 'http://viaf.org/processed/NSK%7C' .. id; end
function ntaLink( id )	return 'http://data.bibliotheken.nl/id/thes/p' .. id; end
function nukatLink( id )	return 'http://viaf.org/processed/NUKAT%7C' .. id; end


function orcidLink( id )
	id = id:gsub( '[ %-]', '' ):upper();
	return 'http://orcid.org/' .. id; end


function declaratorLink( id )	return 'http://declarator.org/person/' .. id .. '/'; end
function gutenbergLink( id )	return 'https://gutenberg.org/ebooks/' .. id; end
function promodjLink( id )	return 'http://promodj.com/' .. id; end
function prozaRuLink( id )	return 'http://proza.ru/avtor/' .. id; end
function ptbnpLink( id )	return 'http://viaf.org/processed/PTBNP%7C' .. id; end
function rkdArtistsLink( id )	return 'https://rkd.nl/nl/explore/artists/' .. id; end
function rkdImagesLink( id )	return 'http://explore.rkd.nl/en/images/' .. id; end
function rodovidLink( id )	return 'http://ru.rodovid.org/wk/Person:' .. id; end
function rottentomatoesLink( id )	return 'http://www.rottentomatoes.com/' .. id; end
function rslLink( id )	return 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=' .. id; end

function rutubeLink( id )
	if string.match( id, '^%d+$' ) then
		return 'http://rutube.ru/video/persion/' .. id .. '/';
	end
	return 'http://' .. id .. '.rutube.ru/';
end

function samlibRuLink( id )
	local firstChar = mw.ustring.sub( id, 1, 1 );
	return 'http://samlib.ru/' .. firstChar .. '/' .. id .. '/';
end

function kohaLink( id )	return 'http://armunicat.nla.am/cgi-bin/koha/opac-authoritiesdetail.pl?authid=' .. id; end
function haygirqLink( id )	return 'http://haygirk.nla.am/cgi-bin/koha/opac-detail.pl?biblionumber=' .. id; end
function ucacrLink( id )	return 'http://tert.nla.am/cgi-bin/koha/opac-detail.pl?biblionumber=' .. id; end
function selibrLink( id )	return 'http://libris.kb.se/auth/' .. id; end
function stihiRuLink( id )	return 'http://stihi.ru/avtor/' .. id; end
function sudocLink( id )	return 'http://www.idref.fr/' .. id; end
function ulanLink( id )	return 'http://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=' .. id; end
function vimeoLink( id )	return 'https://vimeo.com/' .. id; end
function viafLink( id )	return 'http://viaf.org/viaf/' .. id; end
function tiktokLink( id )	return 'https://www.tiktok.com/@' .. id; end
function youtubeLink( id )	return 'https://youtube.com/' .. id; end
function youtubeLinkLong( id )  return 'https://youtube.com/channel/' .. id; end
function worldcatLink( id )	return 'https://www.worldcat.org/identities/containsVIAFID/' .. id; end

function renderLabel( params )
	if type( params ) == 'string' then
		return params;
	end

	local id = params[ 1 ];
	local default = params[ 2 ];

	if #params >= 3 then
		local label = params[ 3 ];
		local link = mw.wikibase.sitelink( id );
		if ( link ~= nil ) then
			return '[[' .. link .. '|' .. label .. ']]';
		end
		local title = mw.wikibase.label( id ) or default;
		return '<span title="' .. title .. '" style="border-bottom: 1px dotted; cursor: help;">' .. label .. '</span>'
	end

	return mw.wikibase.label( id ) or default;
end

local socialNetworkProperties = {
-- Սոցիալական ցանցեր
	{ { 'Q116933', 'ВКонтакте' },   	'P3185',		function( id ) return 'https://vk.com/' .. id; end },
	{ { 'Q219523', 'Живой журнал' },	'P3258',		function( id ) return 'http://' .. id .. '.livejournal.com/'; end },
	{ { 'Q219523', 'Живой журнал' },	'Q219523',		function( id ) return 'http://' .. id .. '.livejournal.com/'; end },
	{ { 'Q4299813', 'Мой круг' },		'Q4299813',		function( id ) return 'http://' .. id .. '.moikrug.ru/'; end },
	{ { 'Q4299858', 'Мой мир' },		'Q4299858',		function( id ) return 'http://my.mail.ru/' .. id; end },
	{ { 'Q1123836', 'Одноклассники' },	'P5163',		function( id ) return 'https://ok.ru/' .. id; end },
	{ { 'Q171186', 'Blogger' },   		'Q171186',		function( id ) return 'http://' .. id .. '.blogspot.com' end },
	{ { 'Q355', 'Facebook' }, 		   	'P2013',		function( id ) return 'https://www.facebook.com/' .. id; end },
	{ { 'Q355', 'Facebook' }, 		   	'P4003',		function( id ) return 'https://www.facebook.com/pages/' .. id; end },
	{ { 'Q213660', 'LinkedIn' },		'P2035',		function( id ) return id; end },
	{ { 'Q213660', 'LinkedIn' },		'P6634',		function( id ) return 'https://www.linkedin.com/in/' .. id .. '/'; end },
	{ { 'Q213660', 'LinkedIn' },		'P4264',		function( id ) return 'https://www.linkedin.com/company/' .. id .. '/'; end },
	{ { 'Q4043051', 'LiveInternet' },	'Q4043051',		function( id ) return 'http://www.liveinternet.ru/users/' .. id; end },
	{ { 'Q40629', 'MySpace' },			'Q40629',		function( id ) return 'https://myspace.com/' .. id; end },
	{ { 'Q40629', 'MySpace' },			'P3265',		function( id ) return 'https://myspace.com/' .. id; end },
	{ { 'Q92526', 'Sina Weibo' },		'P3579',		function( id ) return 'https://weibo.com/' .. id; end },
	{ { 'Q15616276', 'Telegram' },		'P3789',		function( id ) return 'https://t.me/' .. id; end },
	{ { 'Q15616276', 'Telegram' },		'Q15616276',	function( id ) return 'https://t.me/' .. id; end },
	{ { 'Q384060', 'Tumblr' },			'Q384060',		function( id ) return 'http://' .. id .. '.tumblr.com/'; end },
	{ { 'Q918', 'Twitter' },			'P2002',		function( id ) return 'https://twitter.com/' .. id; end },
}

local textsProperties = {
-- Ստեղծագործություններիի տեքստ
	{ { 'Q106615110', 'Հայ մատենագրութեան թուանշային գրադարան' },	'P9528',	dlalLink },
	{ { 'Q17195344', 'Журнал «Самиздат»' },	'Q17195344',	samlibRuLink },
	{ { 'Q22673', 'Գուտենբերգ նախագիծ' },	'P2034',		gutenbergLink },
	{ { 'Q4380129', 'Проза.ру' },			'Q4380129',		prozaRuLink },
	{ { 'Q4442644', 'Стихи.ру' },			'Q4442644',		stihiRuLink },
	{ { 'Q17300505', 'Lib.Ru/Фантастика' },	'Q17300505',	fanLibRuLink },
}

local labelAllocine = { 'Q31165', 'AlloCine' };
local labelAnimeNewsNetwork = { 'Q220509', 'Anime News Network' };
local labelDeezer = { 'Q602243', 'Deezer' };
local labelDiscogs = { 'Q504063', 'Discogs' };
local labelIBDb = { 'Q31964', 'Internet Broadway Database' };
local labelISFDb = { 'Q2629164', 'Internet Speculative Fiction Database' };
local labelMusicBrainz = { 'Q14005', 'MusicBrainz' };
local labelEncyclopaediaMetallum = { 'Q938726', 'Encyclopaedia Metallum' };
local labelYandexMusic = { 'Q4537983', 'Яндекс.Музыка' };
local labelYouTube = { 'Q866', 'YouTube' };
local labelTikTok = { 'Q48938223', 'TikTok' };

local contentHostingProperties = {
-- Ֆոտո, վիդեո և աուդիո
	{ { 'Q20056642', 'Apple Music' },	'P2850',		function( id ) return 'https://itunes.apple.com/am/artist/' .. id; end,	false },
	{ { 'Q545966', 'Bandcamp' },	'P3283',		function( id ) return 'https://' .. id .. '.bandcamp.com'; end },
	{ labelDeezer,					'P2722',		function( id ) return 'https://www.deezer.com/artist/' .. id; end,	false },
	{ labelDeezer,					'P2723',		function( id ) return 'https://www.deezer.com/album/' .. id; end, 	false },
	{ labelDeezer,					'P2724',		function( id ) return 'https://www.deezer.com/track/' .. id; end, 	false },
	{ { 'Q103204', 'Flickr' },		'P3267',		flickrLink,		false },
	{ { 'Q3238917', 'Google Play Music' },	'P4198',		function( id ) return 'https://play.google.com/store/music/artist?id=' .. id; end,	false },
	{ { 'Q209330', 'Instagram' },	'P2003',		function( id ) return 'https://instagram.com/' .. id; end,	false },
	{ { 'Q183718', 'Last.fm' },		'P3192',		lastfmLink,		false },
	{ { 'Q6883832', 'Mixcloud' },	'Q6883832',		mixcloudLink,	false },
	{ { 'Q2572292', 'Musopen' },	'P2338',		function( id ) return 'https://musopen.org/composer/' .. id .. '/'; end,	false },
	{ { 'Q17117201', 'PROMODJ' },	'Q17117201',	promodjLink,	false },
	{ { 'Q372827', 'Rutube' },		'Q372827',		rutubeLink,		false },
	{ { 'Q568769', 'SoundCloud' },		'P3040',		function( id ) return 'http://soundcloud.com/' .. id .. '/'; end,	false },
	{ { 'Q568769', 'SoundCloud' },		'Q568769',		function( id ) return 'http://soundcloud.com/' .. id .. '/'; end,	false },
	{ { 'Q689141', 'Spotify' },		'P1902',		function( id ) return 'https://open.spotify.com/artist/' .. id; end,	false },
	{ labelTikTok,			'P7085',		tiktokLink,	false },
	{ { 'Q156376', 'Vimeo' },			'Q156376',		vimeoLink,		false },
	{ { 'Q156376', 'Vimeo' },			'P4015',		vimeoLink,		false },
	{ labelYandexMusic,		'P1553',		function( id ) return 'https://music.yandex.com/artist/' .. id; end,	false },
	{ labelYandexMusic,		'P2819',		function( id ) return 'https://music.yandex.com/album/' .. id; end,	false },
	{ labelYouTube,			'P2397',		youtubeLinkLong,	false },
	{ labelYouTube,			'Q866',			youtubeLink,	false },
}

local themeProfilesProperties = {
	-- Թեմատիկ կայքեր. գիտություն և տեխնիկա
	{ 'ՀՀ ԳԱԱ',		'P5212',	function( id ) return 'https://www.sci.am/membersview.php?id=' .. id; end },
	{ 'Հայաստանի գրողների միություն',		'P9606',	function( id ) return 'http://wua.am/$1/' .. id; end },
	{ 'Հայաստանի կոմպոզիտորների միություն',		'P9628',	function( id ) return 'http://composers.am/?p=' .. id; end },
	{ 'Հանրային ռադիոյի արխիվ',		'P9631',	function( id ) return 'http://armradioarchive.am/ar/' .. id; end },
	{ 'ՀՄԴ-9',		'P493',	function( id ) return 'http://www.icd9data.com/getICD9Code.ashx?icd9=' .. id; end },
	{ 'ՀՄԴ-9-ԿՄ',		'P1692',	function( id ) return 'http://icd9cm.chrisendres.com/index.php?action=search&srchtext=' .. id; end },
	{ 'ՀՄԴ-10',		'P494',	function( id ) return 'http://apps.who.int/classifications/icd10/browse/2016/en#/' .. id; end },
	{ 'ՀՄԴ-10-ԿՄ',		'P4229',	function( id ) return 'https://icdcodelookup.com/icd-10/codes/' .. id; end },
	{ 'ChEMBL',		'P592',		function( id ) return 'https://www.ebi.ac.uk/chembl/compound/inspect/' .. id; end },
	{ 'DiseasesDB',		'P557',		function( id ) return 'http://www.diseasesdatabase.com/ddb' .. id .. '.htm'; end },
	{ 'Drugbank',		'P715',		function( id ) return 'https://www.drugbank.ca/drugs/DB' .. id; end },
	{ 'eMedicine',		'P673',		function( id ) return 'http://emedicine.medscape.com/article/' .. id; end },
	{ 'Foundational Model of Anatomy',		'P1402',		function( id ) return 'http://purl.org/sig/ont/fma/fma' .. id; end },
	{ 'GeneReviews',		'P668',	function( id ) return 'https://www.ncbi.nlm.nih.gov/books/' .. id; end },
	{ 'GeoNames',		'P1566',	function( id ) return 'https://www.geonames.org/' .. id; end },
	{ 'Wikimapia',		'P7678',	function( id ) return 'http://wikimapia.org/' .. id; end },
	{ 'ГВР',		'P884',   	function( id ) return 'http://verum.wiki/index.php?claster=gvr&q=' .. id; end },
	{ { 'Q364', 'GitHub ' }, 	'P2037',	function( id ) return 'https://github.com/' .. id; end },
	{ { 'Q494817', 'Google Scholar' },			'P1960',	function( id ) return 'https://scholar.google.com/citations?user=' .. id; end },
	{ 'HomoloGene',		'P593',	function( id ) return 'https://www.ncbi.nlm.nih.gov/homologene?term=' .. id; end },
	{ 'IUPHAR',			'P595',	function( id ) return 'https://www.guidetopharmacology.org/GRAC/LigandDisplayForward?ligandId=' .. id; end },
	{ { 'Q4026990', 'JPL Small-Body Database' },'P716',	function( id ) return 'https://ssd.jpl.nasa.gov/sbdb.cgi?sstr=' .. id; end },
	{ 'ICPC 2',		'P667',	function( id ) return 'https://www.hetop.eu/hetop/3CGP/en/?rr=CIP_D_' .. id; end },
	{ 'KEGG',		'P665',	function( id ) return 'https://www.kegg.jp/entry/' .. id; end },
	{ { 'Q547473', 'MacTutor' },		'P1563',	function( id ) return 'http://www-history.mcs.st-andrews.ac.uk/Biographies/' .. id .. '.html'; end },
	{ 'MalaCards',		'P1583',	function( id ) return 'https://www.malacards.org/card/' .. id; end },
	{ { 'Q829984', 'Mathematics Genealogy Project' },	'P549',	function( id ) return 'https://genealogy.math.ndsu.nodak.edu/id.php?id=' .. id; end },
	{ { 'Q18241050', 'zbMATH' },			'P1556',	function( id ) return 'https://www.zbmath.org/authors/?q=ai:' .. id; end },
	{ { 'Q4330205', 'Math-Net.ru' },		'P4252',	function( id ) return 'http://www.mathnet.ru/rus/person' .. id; end },
	{ 'MedlinePlus',		'P604',		function( id ) return 'https://medlineplus.gov/ency/article/' .. id .. '.htm'; end },
	{ 'NCI',		'P1395',	function( id ) return 'https://www.cancer.gov/cancertopics/types/' .. id; end },
	{ 'NCI Thesaurus ',		'P1748',	function( id ) return 'https://ncit.nci.nih.gov/ncitbrowser/ConceptReport.jsp?dictionary=NCI%20Thesaurus&code=' .. id; end },
	{ 'Neurolex',		'P696',	function( id ) return 'http://neurolex.org/wiki/' .. id; end },
	{ 'OMIM',		'P492',	function( id ) return 'https://omim.org/entry/' .. id; end },
	{ { 'Q124688', 'Open Hub ' },			'P1972',	function( id ) return 'https://www.openhub.net/p/' .. id; end },
	{ { 'Q51044', 'ORCID' },		'P496',		orcidLink },
	{ 'PDB',		'P638',		function( id ) return 'https://www.rcsb.org/structure/' .. id; end },
	{ 'PubMed Health',		'P653',		function( id ) return 'https://www.ncbi.nlm.nih.gov/pubmedhealth/' .. id; end },
	{ 'RefSeq',		'P637',		function( id ) return 'https://www.ncbi.nlm.nih.gov/protein/' .. id; end },
	{ 'RefSeq RNA',		'P639',		function( id ) return 'http://www.ncbi.nlm.nih.gov/nuccore/' .. id; end },
	{ { 'Q7315186', 'ResearcherID' },			'P1053',	function( id ) return 'http://www.researcherid.com/rid/' .. id; end },
	{ { 'Q371467', 'Scopus' },			'P1153',	function( id ) return 'http://www.scopus.com/authid/detail.url?authorId=' .. id; end },
	{ { 'Q1061861', 'Structurae' },			'P2418',	function( id ) return 'http://structurae.de/personen/' .. id; end },
	{ 'Terminologia Anatomica 98',		'P1323',	function( id ) return 'https://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id=' .. id; end },
	{ 'UNII',		'P652',	function( id ) return 'https://fdasis.nlm.nih.gov/srs/unii/' .. id; end },
	{ 'Vaccine Ontology',		'P1928',	function( id ) return 'http://www.ontobee.org/browser/rdf.php?o=VO&iri=http://purl.obolibrary.org/obo/$1' .. id; end },
	{ 'VIOLIN',		'P1925',	function( id ) return 'http://www.violinet.org/vaxquery/vaccine_detail.php?c_vaccine_id=' .. id; end },

	-- Թեմատիկ կայքեր. քաղաքականություն
	{ 'ՀՀ Ազգային ժողով',				'P5213',	function( id ) return 'http://www.parliament.am/deputies.php?sel=details&ID=' .. id; end },
	{ 'INSEE', 'P374', function( id ) return 'https://www.insee.fr/fr/statistiques/2011101?geo=COM-' .. id .. ''; end },
	{ 'Верховна рада',				'P3391',	function( id ) return 'http://itd.rada.gov.ua/mps/info/page/' .. id; end },
	{ 'Герои страны',				'P2943',	function( id ) return 'http://www.warheroes.ru/hero/hero.asp?Hero_id=' .. id; end },
	{ { 'Q20035614', 'Декларатор' },	'P1883',	declaratorLink },
	{ 'Եվրախորհրդարան',				'P1186',	function( id ) return 'http://www.europarl.europa.eu/meps/en/' .. id; end },
	{ 'Բրիտանիայի խորհրդարան',		'P1996',	function( id ) return 'http://www.parliament.uk/biographies/' .. id; end },
	{ 'Ռիկստագ',				'P1214',	function( id ) return 'http://data.riksdagen.se/personlista/?iid=' .. id .. '&utformat=html'; end },
	{ 'Слово i Дiло',			'P7282',	function( id ) return 'https://www.slovoidilo.ua/persony/' .. id; end },
	{ 'Русская армия в Великой войне',	'P6737',	function( id ) return 'http://www.grwar.ru/persons/persons.html?id=' .. id; end },
	{ 'ЧЕСНО',					'P7145',	function( id ) return 'https://www.chesno.org/politician/' .. id .. '/'; end },

	-- Թեմատիկ կայքեր. սպորտ
	{ '08euro.Ru',						'P7111',	function( id ) return 'http://www.08euro.ru/teams/' .. id .. '.shtml'; end },
	{ '100 бомбардиров',				'P6632',	function( id ) return 'http://100bombardirov.ru/ru/player/' .. id .. '.htm'; end },
	{ '247Sports',			'P7397',	function( id ) return 'https://247sports.com/Player/' .. id; end },
	{ '365chess',			'P3314',	function( id ) return 'http://www.365chess.com/players/' .. id; end },
	{ '90minut',			'P3605',	function( id ) return 'http://www.90minut.pl/kariera.php?id=' .. id; end },
	{ '90minut',			'P7453',	function( id ) return 'http://www.90minut.pl/skarb.php?id_klub=' .. id; end },
	{ 'ACB (խաղացող)',				'P3525',	function( id ) return 'http://www.acb.com/jugador.php?id=' .. id; end },
	{ 'ACB (մարզիչ)',				'P6297',	function( id ) return 'http://www.acb.com/entrenador.php?id=' .. id; end },
	{ 'AIC',				'P6319',	function( id ) return 'https://aic.football.it/scheda/' .. id; end },
	{ 'All Blacks',					'P3645',	function( id ) return 'http://stats.allblacks.com/asp/profile.asp?ABID=' .. id; end },
	{ 'ARRS',				'P3653',	function( id ) return 'https://more.arrs.run/runner/' .. id; end },
	{ 'AS.com',				'P3427',	function( id ) return 'http://resultados.as.com/resultados/ficha/deportista/' .. id; end },
	{ 'ATP',				'P536',		function( id ) return 'https://www.atptour.com/en/players/-/' .. id .. '/overview'; end },
	{ 'Barbarian F.C.',				'P4493',	function( id ) return 'http://www.barbarianfc.co.uk/archive/profile/' .. id; end },
	{ 'Baseball-Reference.com',			'P1825',	function( id ) return 'https://www.baseball-reference.com/players/' .. id .. '.html' end },
	{ 'Baseball-Reference.com (բացի MLB)',	'P1826',	function( id ) return 'https://www.baseball-reference.com/register/player.fcgi?id=' .. id; end },
	{ 'Basketball-Reference.com (խաղացող)',		'P2685',	function( id ) return 'https://www.basketball-reference.com/players/' .. id .. '.html' end },
	{ 'Basketball-Reference.com (մարզիչ)',		'P4718',	function( id ) return 'https://www.basketball-reference.com/coaches/' .. id .. '.html' end },
	{ 'Basketball-Reference.com (խաղացող)',		'P4561',	function( id ) return 'https://www.basketball-reference.com/wnba/players/' .. id .. '.html' end },
	{ 'Basketball-Reference.com (մարզիչ)',		'P4720',	function( id ) return 'https://www.basketball-reference.com/wnba/coaches/' .. id .. '.html' end },
	{ 'Basketball-Reference.com (Ջի-Լիգա)',	'P4744',	function( id ) return 'https://www.basketball-reference.com/gleague/players/' .. id .. '.html' end },
	{ 'Basketball-Reference.com (Եվրոպա)',	'P4790',	function( id ) return 'https://www.basketball-reference.com/euro/players/' .. id .. '.html' end },
	{ 'BDFA',			'P6188',	function( id ) return 'https://bdfa.com.ar/jugadores-' .. id .. '.html'; end },
	{ 'BDFutbol',				'P3655',	function( id ) return 'http://www.bdfutbol.com/en/j/j' .. id .. '.html'; end },
	{ 'BDFutbol',				'P7488',	function( id ) return 'https://www.bdfutbol.com/en/e/e' .. id .. '.html'; end },
	{ 'Beachsoccer.ru',					'P6253',	function( id ) return 'http://www.beachsoccer.ru/players/player' .. id .. '/'; end },
	{ 'Beach Volleyball Database',		'P2800',	function( id ) return 'http://www.bvbinfo.com/player.asp?ID=' .. id; end },
	{ 'biathlon.com.ua',				'P6386',	function( id ) return 'https://www.biathlon.com.ua/profile.php?id=' .. id .. '&lang=rus'; end },
	{ 'BoxRec',				'P1967',	function( id ) return 'http://boxrec.com/boxer/' .. id; end },
	{ 'BSRussia',			'P6252',	function( id ) return 'http://bsrussia.com/profiles/persons/' .. id; end },
	{ 'BWF',				'P2729',	function( id ) return 'https://bwf.tournamentsoftware.com/player-profile/' .. id; end },
	{ 'BWFbadminton.com',			'P3620',	function( id ) return 'https://bwfbadminton.com/player/' .. id; end },
	{ 'CanadaSoccer.com',				'P7459',	function( id ) return 'https://canadasoccer.com/?pid=' .. id .. '&t=profile'; end },
	{ 'Chess DB',				'P1440',	function( id ) return 'https://chess-db.com/public/pinfo.jsp?id=' .. id; end },
	{ 'Chess Games',			'P1665',	function( id ) return 'http://www.chessgames.com/perl/chessplayer?pid=' .. id; end },
	{ 'Chess Tempo',			'P3315',	function( id ) return 'https://chesstempo.com/gamedb/player/' .. id; end },
	{ 'College Football HoF',			'P3044',	function( id ) return 'https://footballfoundation.org/hof_search.aspx?hof=' .. id; end },
	{ 'CQ Ranking',				'P1541',	function( id ) return 'https://cqranking.com/men/asp/gen/rider.asp?riderid=' .. id; end },
	{ 'CQ Ranking',				'P2709',	function( id ) return 'https://cqranking.com/women/asp/gen/rider.asp?riderid=' .. id; end },
	{ 'CUP2002.RU',				'P7112',	function( id ) return 'http://www.cup2002.ru/' .. id .. '.shtml'; end },
	{ 'Curlingzone.com',				'P3556',	function( id ) return 'http://www.curlingzone.com/player.php?playerid=' .. id; end },
	{ 'CycleBase',					'P4508',	function( id ) return 'https://www.cyclebase.nl/?lang=en&page=renner&id=' .. id; end },
	{ 'Cycling Archives',				'P1409',	function( id ) return 'http://www.cyclingarchives.com/coureurfiche.php?coureurid=' .. id; end },
	{ 'Diamond League',					'P3923',	function( id ) return 'https://www.diamondleague.com/athletes/' .. id .. '.html'; end },
	{ 'DraftExpress',					'P3533',	function( id ) return 'http://www.draftexpress.com/profile/' .. id .. '/'; end },
	{ 'Driver Database',				'P3684',	function( id ) return 'https://www.driverdb.com/drivers/' .. id .. '/'; end },
	{ 'Dynamomania.com',				'P7395',	function( id ) return 'http://dynamomania.com/player/' .. id .. '-a'; end },
	{ 'EFC',			'P4475',	function( id ) return 'https://www.eurofencing.info/competitions/fencers/case:fencer/licence:' .. id; end },
	{ 'Elite Football',				'P7343',	function( id ) return 'http://www.elitefootball.com/player/-/' .. id; end },
	{ 'Elite Prospects (խաղացող)',		'P2481',	function( id ) return 'http://www.eliteprospects.com/player.php?player=' .. id; end },
	{ 'Elite Prospects (մարզիչ)',		'P4319',	function( id ) return 'http://www.eliteprospects.com/staff.php?staff=' .. id; end },
	{ 'ENARD',					'P3958',	function( id ) return 'http://infoenard.org.ar/' .. id; end },
	{ 'England Football Online (խաղացող)','P6331',	function( id ) return 'http://www.englandfootballonline.com/TeamPlyrsBios/Players' .. id .. '.html'; end },
	{ 'England Football Online (խաղացող)','P6330',	function( id ) return 'http://www.englandfootballonline.com/TeamMgr/Mgr_' .. id .. '.html'; end },
	{ 'englandstats.com',				'P7608',	function( id ) return 'https://www.englandstats.com/players.php?pid=' .. id; end },
	{ 'EPCR',				'P3666',	function( id ) return 'https://www.epcrugby.com/player?PlayGuid=' .. id; end },
	{ 'ESBL',				'P4042',	function( id ) return 'http://www.esbl.ee/biograafia/' .. id; end },
	{ 'EspritBleu',					'P4050',	function( id ) return 'http://espritbleu.franceolympique.com/espritbleu/athletes/' .. id .. '.php'; end },
	{ 'ESPN.com',				'P3571',	function( id ) return 'http://www.espn.com/mlb/player/stats/_/id/' .. id; end },
	{ 'ESPNFC.com',					'P3681',	function( id ) return 'http://www.espnfc.com/player/' .. id; end },
	{ 'ESPNscrum',				'P858',		function( id ) return 'http://en.espn.co.uk/statsguru/rugby/player/' .. id .. '.html'; end },
	{ 'eu-football.info (խաղացող)',		'P3726',	function( id ) return 'http://eu-football.info/_player.php?id=' .. id; end },
	{ 'eu-football.info',				'P7435',	function( id ) return 'https://eu-football.info/_referee.php?id=' .. id; end },
	{ 'eu-football.info (մարզիչ)',		'P7463',	function( id ) return 'https://eu-football.info/_manager.php?id=' .. id; end },
	{ 'eu-football.info',				'P7492',	function( id ) return 'https://eu-football.info/_match.php?id=' .. id; end },
	{ 'Euro04.Ru',				'P7113',	function( id ) return 'http://www.euro04.ru/teams/' .. id .. '.shtml'; end },
	{ 'Eurobasket.com (խաղացող)',			'P3527',	function( id ) return 'http://www.eurobasket.com/player.asp?PlayerID=' .. id; end },
	{ 'Eurobasket.com (մարզիչ)',		'P6865',	function( id ) return 'http://www.eurobasket.com/coach.asp?CoachID=' .. id; end },
	{ 'Eurohockey.com',				'P2601',	function( id ) return 'http://www.eurohockey.com/player/' .. id .. '-.html'; end },
	{ 'EuroLeague (խաղացող)',			'P3536',	function( id ) return 'https://www.euroleague.net/competition/players/showplayer?pcode=' .. id; end },
	{ 'EuroLeague (մարզիչ)',			'P6866',	function( id ) return 'https://www.euroleague.net/competition/coaches/showcoach?pcode=' .. id; end },
	{ 'European Athletics',				'P3766',	function( id ) return 'http://www.european-athletics.org/athletes/group=' .. id .. '/index.html'; end },
	{ 'eWRC-results.com',				'P3927',	function( id ) return 'https://www.ewrc-results.com/profile/' .. id; end },
	{ 'FaroeSoccer (խաղացող)',					'P6627',	function( id ) return 'http://www.faroesoccer.com/player.php?playerID=' .. id; end },
	{ 'FaroeSoccer (մարզիչ)',					'P6628',	function( id ) return 'http://www.faroesoccer.com/coach.php?coachID=' .. id; end },
	{ 'FEI',				'P3111',	function( id ) return 'https://data.fei.org/Person/Performance.aspx?personfeiid=' .. id; end },
    { 'FIBT',	           'P2991',	function( id ) return 'http://www.ibsf.org/en/athletes/athlete/' .. id; end }, 
    { 'FIL',	               'P2990',	function( id ) return 'https://www.fil-luge.org/en/athletes/' .. id; end }, 
    { 'FIS (դահուկներով մրցավազք)',	                 'P2773',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=CC&competitorid=' .. id; end }, 
	{ 'FIS (դահուկավազք)',			'P2772',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=AL&competitorid=' .. id; end },
	{ 'FIS (ֆրիսթայլ)',					'P2774',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=FS&competitorid=' .. id; end },
	{ 'FIS (դահուկացատկ)',					'P2775',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=JP&competitorid=' .. id; end },
	{ 'FIS (դահուկային բիաթլոն)',					'P2776',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=NK&competitorid=' .. id; end },
	{ 'FIS (սնոուբորդ)',			'P2777',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=SB&competitorid=' .. id; end },
	{ 'FIS (տելեմարկ)',			'P6669',	function( id ) return 'https://www.fis-ski.com/DB/general/athlete-biography.html?sectorcode=TM&competitorid=' .. id; end },
	{ 'FISA',			'P2091',	function( id ) return 'http://www.worldrowing.com/athletes/athlete/' .. id .. '/'; end },
	{ 'FlashScore.com',			'P7460',	function( id ) return 'https://www.flashscore.com/match/' .. id; end },
	{ 'FootballDatabase.eu',			'P3537',	function( id ) return 'https://www.footballdatabase.eu/en/player/details/' .. id; end },
	{ 'FootballDatabase.eu',			'P7351',	function( id ) return 'https://www.footballdatabase.eu/en/club/team/' .. id; end },
	{ 'FootballFacts.ru',			'P3660',	function( id ) return 'http://footballfacts.ru/players/' .. id; end },
	{ 'FootballFacts.ru',			'P7358',	function( id ) return 'http://footballfacts.ru/clubs/' .. id; end },
	{ 'footofeminin.fr',			'P4262',	function( id ) return 'http://www.statsfootofeminin.fr/joueur.php?joueur=' .. id; end },
	{ 'ForaDeJogo (խաղացող)',				'P3046',	function( id ) return 'https://www.foradejogo.net/player.php?player=' .. id; end },
	{ 'ForaDeJogo (մարզիչ)',			'P3661',	function( id ) return 'https://www.foradejogo.net/manager.php?manager=' .. id; end },
	{ 'ForaDeJogo',					'P7412',	function( id ) return 'https://www.foradejogo.net/team.php?team=' .. id; end },
	{ 'FSkate.ru',				'P6624',	function( id ) return 'http://www.fskate.ru/skaters/' .. id .. '.html'; end },
	{ 'Fussballdaten.de',			'P3538',	function( id ) return 'https://www.fussballdaten.de/person/' .. id .. '/'; end },
	{ 'Fussballdaten.de',			'P7495',	function( id ) return 'https://www.fussballdaten.de/vereine/' .. id .. '/'; end },
	{ 'Futbolme',				'P7399',	function( id ) return 'https://futbolme.com/jugador.php?id=' .. id; end },
	{ 'FIE',			'P2423',	function( id ) return 'https://fie.org/athletes/' .. id; end },
	{ 'FIG',		'P2696',	function( id ) return 'http://www.gymnastics.sport/site/athletes/bio_detail.php?id=' .. id .. '&type=licence'; end },
	{ 'FINA',		'P3408',	function( id ) return 'https://www.fina.org/athletes/' .. id; end },
	{ 'Germany06.Ru',					'P7652',	function( id ) return 'http://www.germany06.ru/teams/' .. id .. '.shtml'; end },
	{ 'Global Poker Index',				'P3564',	function( id ) return 'http://www.globalpokerindex.com/poker-players/' .. id; end },
	{ 'Goratings',				'P2805',	function( id ) return 'http://www.goratings.org/players/' .. id .. '.html'; end },
	{ 'Gracenote',				'P4397',	function( id ) return 'https://www.paralympic.org/asp/redirect/ipc.asp?page=athletebio&personid=' .. id; end },
	{ 'Handball123',					'P7002',	function( id ) return 'https://www.handball123.com/player/' .. id .. '.html' end },
	{ 'Hockey-Reference.com',			'P3598',	function( id ) return 'http://www.hockey-reference.com/players/' .. id .. '.html' end },
	{ 'hockeyDB',						'P2602',	function( id ) return 'http://www.hockeydb.com/ihdb/stats/pdisplay.php?pid=' .. id; end },
	{ 'IAT',					'P2780',	function( id ) return 'https://www.iat.uni-leipzig.de/datenbanken/dbdiving/daten.php?id_sportler=' .. id; end },
	{ 'IAT',					'P2778',	function( id ) return 'https://www.iat.uni-leipzig.de/datenbanken/dbtriathlon/daten.php?spid=' .. id; end },
	{ 'IAT',					'P2779',	function( id ) return 'https://www.iat.uni-leipzig.de/datenbanken/dbgwh/daten.php?spid=' .. id; end },
    { 'IBU',	              'P2459',	function( id ) return 'https://biathlonresults.com/?IBUId=' .. id; end },
    { 'ICF',	                  'P3689',	function( id ) return 'https://www.canoeicf.com/athlete/' .. id; end },
	{ 'iDNES.cz',			'P3663',	function( id ) return 'https://fotbal.idnes.cz/databanka.aspx?t=hrac&id=' .. id; end },
	{ 'IFJ',			'P4559',	function( id ) return 'https://www.ijf.org/judoka/' .. id; end },
	{ 'IFSC',			'P3690',	function( id ) return 'http://www.ifsc-climbing.org/index.php?option=com_ifsc&view=athlete&id=' .. id; end },
	{ 'ISSF',			'P2730',	function( id ) return 'https://www.issf-sports.org/athletes/athlete.ashx?personissfid=' .. id; end },
	{ 'ISU',			'P2694',	function( id ) return 'http://www.isuresults.com/bios/isufs' .. id.. '.htm'; end },
	{ 'IT’S RUGBY',						'P3769',	function( id ) return 'http://www.itsrugby.co.uk/player_' .. id .. '.html'; end },
	{ 'ITF',				'P599',	function( id ) return 'https://www.itftennis.com/procircuit/players/player/profile.aspx?playerid=' .. id; end },
	{ 'ITRA',				'P3584',	function( id ) return 'http://itra.run/community/' .. id; end },
	{ 'ITTF',				'P1364',	function( id ) return 'http://results.ittf.link/index.php?option=com_fabrik&view=details&formid=99&rowid=' .. id; end },
	{ 'ITU',				'P3604',	function( id ) return 'http://www.triathlon.org/athletes/profile/' .. id; end },
	{ 'IWF',				'P3667',	function( id ) return 'http://www.iwf.net/results/athletes/?athlete=&id=' .. id; end },
	{ 'IWRP',				'P4504',	function( id ) return 'http://iwrp.net/?view=contestant&id_zawodnik=' .. id; end },
	{ 'J.League (խաղացող)',				'P3565',	function( id ) return 'https://data.j-league.or.jp/SFIX04/?player_id=' .. id; end },
	{ 'J.League (մարզիչ)',				'P4048',	function( id ) return 'https://data.j-league.or.jp/SFIX07/?staff_id=' .. id; end },
	{ 'JudoInside',						'P2767',	function( id ) return 'https://www.judoinside.com/judoka/' .. id .. '/'; end },
	{ 'Juwra.com',				'P3949',	function( id ) return 'http://www.juwra.com/' .. id .. '.html'; end },
	{ 'K League',				'P3053',	function( id ) return 'http://www.kleague.com/en/content/playersearch?playercode=' .. id; end },
	{ 'Kicker.de',				'P6615',	function( id ) return 'http://www.kicker.de/' .. id .. '/vereinsspieler_profil.html'; end },
	{ 'L’Équipe',				'P3665',	function( id ) return 'https://www.lequipe.fr/Football/FootballFicheJoueur' .. id .. '.html'; end },
	{ 'lapreferente.com',				'P7359',	function( id ) return 'https://www.lapreferente.com/J' .. id .. '/.html'; end },
	{ 'LevskiSofia.info (խաղացող)',		'P6411',	function( id ) return 'https://levskisofia.info/player/' .. id .. '/'; end },
	{ 'LevskiSofia.info (մարզիչ)',		'P6410',	function( id ) return 'https://levskisofia.info/coach/' .. id .. '/'; end },
	{ 'LFB',					'P4382',	function( id ) return 'http://www.basketlfb.com/' .. id; end },
	{ 'LFH',					'P4289',	function( id ) return 'http://www.handlfh.org/joueuse/' .. id .. '/'; end },
	{ 'LFP',					'P3683',	function( id ) return 'https://www.ligue1.com/joueur/' .. id; end },
	{ 'LNH',					'P4192',	function( id ) return 'https://www.lnh.fr/joueurs/' .. id; end },
	{ 'LNV',					'P4281',	function( id ) return 'http://www.lnv.fr/joueurs/' .. id .. '/v.html'; end },
	{ 'LongSwimsDB',					'P7232',	function( id ) return 'https://db.marathonswimmers.org/p/' .. id .. '/'; end },
	{ 'Mémoire du cyclisme',			'P4516',	function( id ) return 'http://www.memoire-du-cyclisme.eu/pelotons/coureurs.php?c=' .. id; end },
	{ 'MLB',					'P3541',	function( id ) return 'https://www.mlb.com/player/' .. id; end },
	{ 'MLS',					'P2398',	function( id ) return 'https://www.mlssoccer.com/players/' .. id; end },
	{ 'MotoGP.com',						'P3928',	function( id ) return 'http://www.motogp.com/en/riders/' .. id; end },
	{ 'National Football Teams.com',	'P2574',	function( id ) return 'http://www.national-football-teams.com/player/' .. id .. '.html'; end },
	{ 'National Wrestling Hall of Fame',	'P6688',	function( id ) return 'https://nwhof.org/stillwater/champions-database/#type=cdb&wrestler=' .. id; end },
	{ 'NFL',							'P3539',	function( id ) return 'http://www.nfl.com/player/wd/' .. id .. '/profile'; end },
	{ 'Olympic Channel',				'P5815',	function( id ) return 'https://www.olympicchannel.com/athletes/detail/' .. id; end },
	{ 'OnsOranje',						'P5158',	function( id ) return 'https://www.onsoranje.nl/teams/' .. id; end },
	{ 'PlusLiga',						'P7551',	function( id ) return 'http://www.plusliga.pl/players/id/' .. id .. '.html'; end },
	{ 'Pro Football Hall of Fame',		'P6930',	function( id ) return 'https://www.profootballhof.com/players/' .. id .. '/'; end },
	{ 'Pro-Football-Reference.com (խաղացող)',		'P3561',	function( id ) return 'https://www.pro-football-reference.com/players/' .. id .. '.htm' end },
	{ 'Pro-Football-Reference.com (մարզիչ)',		'P6836',	function( id ) return 'https://www.pro-football-reference.com/coaches/' .. id .. '.htm' end },
	{ 'ProCyclingStats',				'P1663',	function( id ) return 'https://www.procyclingstats.com/rider/' .. id; end },
	{ 'racing-reference',				'P3048',	function( id ) return 'http://www.racing-reference.info/driver/' .. id; end },
	{ 'Rallye-info.com',				'P3930',	function( id ) return 'http://www.rallye-info.com/driverprofile.asp?driver=' .. id; end },
    { 'RealGM',							'P3957',	function( id ) return 'http://basketball.realgm.com/player/wd/Summary/' .. id .. ''; end },
	{ 'Red Bull',						'P3883',	function( id ) return 'https://www.redbull.com/int-en/athlete/' .. id; end },
	{ 'Reprezentacija.rs',				'P3908',	function( id ) return 'http://www.reprezentacija.rs/' .. id .. '/#content'; end },
	{ 'Rivals.com',						'P7339',	function( id ) return 'https://n.rivals.com/content/prospects/' .. id; end },
	{ 'Rollerstory.net',				'P7146',	function( id ) return 'https://www.rollerstory.net/skater.php?id=' .. id; end },
	{ 'Romanian Soccer',				'P6399',	function( id ) return 'http://www.romaniansoccer.ro/players/' .. id .. '/'; end },
	{ 'Rugby League Project',			'P6881',	function( id ) return 'https://www.rugbyleagueproject.org/' .. id .. '.html'; end },
	{ 'Sambafoot',						'P3668',	function( id ) return 'http://www.sambafoot.com/en/players/' .. id .. '.html' end },
	{ 'Sherdog',						'P2818',	function( id ) return 'https://www.sherdog.com/fighter/' .. id; end },
	{ 'ShorttrackOnLine.info',			'P3693',	function( id ) return 'http://www.shorttrackonline.info/skaterbio.php?id=' .. id; end },
	{ 'ski-db.com',						'P3619',	function( id ) return 'https://www.ski-db.com/db/profiles/' .. id .. '.php'; end },
	{ 'Soccerbase (խաղացող)',				'P2193',	function( id ) return 'https://www.soccerbase.com/players/player.sd?player_id=' .. id; end },
	{ 'Soccerbase (դատավոր)',				'P7465',	function( id ) return 'https://www.soccerbase.com/referees/referee.sd?referee_id=' .. id; end },
	{ 'Soccerbase (մարզիչ)',			'P2195',	function( id ) return 'https://www.soccerbase.com/managers/manager.sd?manager_id=' .. id; end },
	{ 'Soccerbase',						'P7454',	function( id ) return 'https://www.soccerbase.com/teams/team.sd?team_id=' .. id; end },
	{ 'soccerdonna.de',					'P4381',	function( id ) return 'https://www.soccerdonna.de/wiki/pedia/profil/spieler_' .. id .. '.html'; end },
	{ 'Soccerway',						'P2369',	function( id ) return 'https://int.soccerway.com/players/-/' .. id .. '/' end },
	{ 'Soccerway',						'P6131',	function( id ) return 'https://int.soccerway.com/teams/wd/wd/' .. id .. '/' end },
	{ 'Soccerway',						'P7494',	function( id ) return 'https://int.soccerway.com/matches/0000/00/00/-/-/-/-/' .. id; end },
	{ 'Speedskatingbase.eu',			'P2350',	function( id ) return 'http://www.speedskatingbase.eu/?section=skaters&subsection=skater&skaterid=' .. id; end },
	{ 'SpeedSkatingNews.info',			'P3694',	function( id ) return 'http://www.speedskatingnews.info/en/data/skater/' .. id .. '/'; end },
	{ 'SpeedskatingResults.com',		'P4314',	function( id ) return 'http://speedskatingresults.com/index.php?p=17&s=' .. id; end },
	{ 'SpeedSkatingStats',				'P3695',	function( id ) return 'http://www.speedskatingstats.com/index.php?file=skater&code=' .. id; end },
	{ 'Sportbox.ru',					'P4421',	function( id ) return 'http://news.sportbox.ru/Vidy_sporta/' .. id; end },
	{ 'sports.md',						'P6401',	function( id ) return 'http://moldova.sports.md/' .. id .. '/'; end },
--	{ 'Sports.ru',						'P4408',	function( id ) return 'https://www.sports.ru/tags/' .. id; end },
	{ 'Sports-Reference.com',			'P1447',	function( id ) return 'http://www.sports-reference.com/olympics/athletes/' .. id .. '.html' end },
	{ 'Sports-Reference.com (քոլեջ)',			'P3696',	function( id ) return 'https://www.sports-reference.com/cbb/players/' .. id .. '.html' end },
	{ 'Sports-Reference.com (մարզիչ)',			'P4751',	function( id ) return 'https://www.sports-reference.com/cbb/coaches/' .. id .. '.html' end },
	{ 'StadiumDB',						'P5288',	function( id ) return 'http://stadiumdb.com/stadiums/' .. id; end },
	{ 'Strava',							'P5283',	function( id ) return 'https://www.strava.com/pros/' .. id; end },
	{ 'svenskfotboll.se',				'P1238',	function( id ) return 'https://www.svenskfotboll.se/spelarfakta/' .. id .. '/'; end },
	{ 'Swimrankings.net',				'P2640',	function( id ) return 'https://www.swimrankings.net/index.php?page=athleteDetail&athleteId=' .. id; end },
	{ 'SwimSwam',						'P4315',	function( id ) return 'https://swimswam.com/bio/' .. id .. '/'; end },
	{ 'Taekwondo Data',					'P2987',	function( id ) return 'http://www.taekwondodata.com/' .. id .. '.html'; end },
	{ 'teams.by',						'P6321',	function( id ) return 'http://www.teams.by/player/info/' .. id; end },
	{ 'teams.by',						'P7490',	function( id ) return 'http://www.teams.by/club-' .. id .. '/'; end },
	{ 'The Hendon Mob',					'P6146',	function( id ) return 'http://pokerdb.thehendonmob.com/player.php?n=' .. id; end },
	{ 'Peakbagger',						'P7278',	function( id ) return 'https://www.peakbagger.com/climber/climber.aspx?cid=' .. id; end },
	{ 'playmarkerstats.com (խաղացող)',	'P3047',	function( id ) return 'https://www.thefinalball.com/player.php?id=' .. id end },
	{ 'playmarkerstats.com (մարզիչ)',	'P6316',	function( id ) return 'http://www.thefinalball.com/coach.php?id=' .. id end },
	{ 'playmarkerstats.com (դատավոր)',	'P6315',	function( id ) return 'http://www.thefinalball.com/arbitro.php?id=' .. id end },
	{ 'playmarkerstats.com',			'P7280',	function( id ) return 'http://www.playmakerstats.com/equipa.php?id=' .. id end },
	{ 'playmarkerstats.com',			'P7493',	function( id ) return 'http://www.playmakerstats.com/jogo.php?id=' .. id end },
	{ 'TheSports.org',					'P4391',	function( id ) return 'http://www.the-sports.org/t-spf' .. id .. '.html'; end },
	{ 'THW Kiel',						'P4263',	function( id ) return 'http://archiv.thw-handball.de/thw/sp_' .. id .. '.htm'; end },
	{ 'Tilastopaja',					'P3882',	function( id ) return 'https://www.tilastopaja.eu/db/at.php?Sex=2&ID=' .. id; end },
	{ 'Tilastopaja',					'P3884',	function( id ) return 'https://www.tilastopaja.eu/db/at.php?Sex=1&ID=' .. id; end },
	{ 'Track and Field Statistics',		'P3924',	function( id ) return 'http://trackfield.brinkster.net/Profile.asp?ID=' .. id .. '&Gender=W'; end },
	{ 'Track and Field Statistics',		'P3925',	function( id ) return 'http://trackfield.brinkster.net/Profile.asp?ID=' .. id .. '&Gender=M'; end },
	{ 'Transfermarkt (դատավոր)',			'P3699',	function( id ) return 'https://www.transfermarkt.com/transfermarkt/profil/schiedsrichter/' .. id; end },
	{ 'Transfermarkt (խաղացող)',			'P2446',	function( id ) return 'https://www.transfermarkt.com/transfermarkt/profil/spieler/' .. id; end },
	{ 'Transfermarkt (մարզիչ)',			'P2447',	function( id ) return 'https://www.transfermarkt.com/transfermarkt/profil/trainer/' .. id; end },
	{ 'Transfermarkt',					'P7223',	function( id ) return 'https://www.transfermarkt.co.uk/-/startseite/verein/' .. id; end },
	{ 'Transfermarkt',					'P7455',	function( id ) return 'https://www.transfermarkt.co.uk/-/index/spielbericht/' .. id; end },
	{ 'TuttoCalciatori.Net (խաղացող)',	'P7036',	function( id ) return 'https://www.tuttocalciatori.net/' .. id; end },
	{ 'TuttoCalciatori.Net (մարզիչ)',	'P7035',	function( id ) return 'https://www.tuttocalciatori.net/allenatori/' .. id .. '-'; end },
	{ 'UIPM',							'P2726',	function( id ) return 'http://www.uipmworld.org/athlete/' .. id; end },
	{ 'UltraSignup',					'P3585',	function( id ) return 'https://ultrasignup.com/results_participant.aspx?' .. id; end },
	{ 'Vesti.kz',						'P6215',	function( id ) return 'http://vesti.kz/player/' .. id .. '/' end },
	{ 'Voetbalstats',					'P5742',	function( id ) return 'https://voetbalstats.nl/spelernedxi.php?persid=' .. id; end },
	{ 'World Athletics',				'P1146',	function( id ) return 'https://www.worldathletics.org/athletes/-/' .. id; end },
	{ 'World Curling Tour',				'P3556',	function( id ) return 'http://www.worldcurl.com/player.php?playerid=' .. id; end },
	{ 'WorldCup10.Ru',					'P7115',	function( id ) return 'http://www.worldcup10.ru/commands/' .. id .. '.shtml'; end },
	{ 'worldfootball.net (խաղացող)',		'P2020',	function( id ) return 'http://www.worldfootball.net/player_summary/' .. id .. '/' end },
	{ 'worldfootball.net (դատավոր)',		'P6314',	function( id ) return 'https://www.worldfootball.net/referee_summary/' .. id .. '/' end },
	{ 'worldfootball.net',				'P7287',	function( id ) return 'https://www.worldfootball.net/teams/' .. id .. '/' end },
	{ 'worldfootball.net',				'P7441',	function( id ) return 'https://www.worldfootball.net/competition/' .. id .. '/' end },
	{ 'WorldofVolley',					'P5789',	function( id ) return 'http://www.worldofvolley.com/wov-community/players/' .. id .. '.html'; end },
	{ 'WorldReferee.com',				'P7436',	function( id ) return 'https://worldreferee.com/referee/' .. id; end },
	{ 'WorldSBK.com',					'P4076',	function( id ) return 'http://www.worldsbk.com/en/rider/' .. id; end },
	{ 'WSOP',							'P3554',	function( id ) return 'https://www.wsop.com/players/profile/?playerID=' .. id; end },
	{ 'X Games',						'P4893',	function( id ) return 'http://www.xgames.com/athletes/' .. id; end },
	{ 'Спорт-страна.ру',				'P6416',	function( id ) return 'http://sport-strana.ru/' .. id .. '/'; end },
	{ 'Ադրիատիկ լիգա',				'P6850',	function( id ) return 'https://www.aba-liga.com/player.php?id=' .. id; end },
	{ 'ԱԽԼ',							'P3522',	function( id ) return 'http://www.nhl.com/ice/player.htm?id=' .. id; end },
	{ 'Աղեղնաձգության համաշխարհային ֆեդերացիա',	'P3010',	function( id ) return 'https://worldarchery.org/athlete/' .. id; end },
	{ 'ԱՄՆ օլիմպիական կոմիտե',		'P4063',	function( id ) return 'https://www.teamusa.org/Athletes/' .. id; end },
	{ 'Առագաստանավային սպորտի միջազգային ֆեդերացիա',	'P2804',	function( id ) return 'https://site-isaf.soticcloud.net/biog?memberid=' .. id; end },
	{ 'Ավստրալիայի օլիմպիական կոմիտե',	'P3682',	function( id ) return 'http://corporate.olympics.com.au/athlete/' .. id; end },
	{ 'ԲԿՄԱ',	                        'P6613',	function( id ) return 'http://cska.ru/person/' .. id; end },
	{ 'ԲՆ',							'P6940',	function( id ) return 'http://pro-box.ru/boksyery/' .. id .. '/'; end },
	{ 'Բրազիլիայի օլիմպիական կոմիտե',	'P4060',	function( id ) return 'https://www.cob.org.br/pt/atletas/' .. id; end },
	{ 'Բրիտանական օլիմպիական ասոցիացիա',		'P4490',	function( id ) return 'https://www.teamgb.com/athletes/' .. id; end },
	{ 'Բունդեսլիգա',						'P5057',	function( id ) return 'https://www.liquimoly-hbl.de/en/import/players/' .. id .. '/'; end },
	{ 'Գերմանական ուլտրամարաթոնյան ասոցիացիա',		'P2162',	function( id ) return 'http://statistik.d-u-v.org/getresultperson.php?runner=' .. id; end },
	{ 'Գերմանական ֆուտբոլային միություն',		'P4023',	function( id ) return 'https://datencenter.dfb.de/en/profile/' .. id; end },
	{ 'Գերմանիայի օլիմպիական մարզական համադաշնություն',	'P4053',	function( id ) return 'https://www.teamdeutschland.de/de/athleten/detail/a_action/show/a_athletes/' .. id .. '.html'; end },
	{ 'Դանիայի ֆուտբոլի միություն',		'P6109',	function( id ) return 'https://www.dbu.dk/landshold/landsholdsdatabasen/PlayerInfo/' .. id; end },
	{ 'ԵՎԿ',							'P3725',	function( id ) return 'https://www.cev.eu/PlayerDetail.aspx?PlayerID=' .. id; end },
	{ 'Եվրոհանդբոլ',							'P3573',	function( id ) return 'http://www.eurohandball.com/player/' .. id; end },
	{ 'Թագավորական Բելգիայի ֆուտբոլային ասոցիացիա',	'P2823',	function( id ) return 'http://static.belgianfootball.be/project/publiek/jrinteren/speler_' .. id .. '.htm'; end },
	{ 'Էստոնական ֆուտբոլային միություն',		'P3659',	function( id ) return 'http://jalgpall.ee/voistlused/player/' .. id; end },
	{ 'ԹՖՖ (խաղացող)',					'P2448',	function( id ) return 'https://www.tff.org/Default.aspx?pageId=526&kisiID=' .. id; end },
	{ 'ԹՖՖ (դատավոր)',					'P7405',	function( id ) return 'https://www.tff.org/Default.aspx?pageID=531&hakemID=' .. id; end },
	{ 'ԹՖՖ (մարզիչ)',					'P2449',	function( id ) return 'https://www.tff.org/Default.aspx?pageID=527&antID=' .. id; end },
	{ 'Լատվիայի օլիմպիական կոմիտե',		'P2593',	function( id ) return 'http://olimpiade.lv/en/olympic-athletes/' .. id; end },
	{ 'Իսլանդիայի ֆուտբոլի ասոցիացիա',	'P6495',	function( id ) return 'https://www.ksi.is/mot/leikmadur/$PlayerDetails/Games/?leikmadur=' .. id; end },
	{ 'Իսրայելի ֆուտբոլային ասոցիացիա',		'P3748',	function( id ) return 'http://www.football.org.il/players/player/?player_id=' .. id; end },
	{ 'Իտալիայի աթլետիկայի ֆեդերացիա',	'P3446',	function( id ) return 'http://www.fidal.it/atleta_one.php?t=' .. id; end },
	{ 'Իտալիայի աթլետիկայի ֆեդերացիա',	'P7364',	function( id ) return 'http://www.fidal.it/societa/-/' .. id; end },
	{ 'Լեհաստանի աթլետիկայի ասոցիացիա',	'P5075',	function( id ) return 'http://www.domtel-sport.pl/statystykaLA/personal.php?page=profile&nr_zaw=' .. id; end },
	{ 'ԽՖՄ',							'P3577',	function( id ) return 'http://hns-cff.hr/en/players/' .. id .. '/-/'; end },
	{ 'Կանադայի օլիմպիական կոմիտե',		'P4054',	function( id ) return 'http://olympic.ca/team-canada/' .. id .. '/'; end },
	{ 'ԿԽԼ',							'P3652',	function( id ) return 'https://www.khl.ru/players/' .. id .. '/' end },
	{ 'Կյոռլինգի համաշխարհային ֆեդերացիա',	'P3557',	function( id ) return 'http://results.worldcurling.org/Person/Details/' .. id; end },	{ 'ՌՄՖԱ',							'P6320',	function( id ) return 'http://amfr.ru/persons/' .. id .. '/'; end },
	{ 'Համագործակցության խաղեր',				'P4548',	function( id ) return 'https://thecgf.com/results/athletes/' .. id; end },
    { 'Համագործակցության խաղեր 2006',			'P5716',	function( id ) return 'http://m2006.thecgf.com/Participants/Participants?ID=' .. id; end },
	{ 'Համագործակցության խաղեր 2014',			'P6953',	function( id ) return 'http://g2014results.thecgf.com/athlete/-/' .. id .. '/'; end },
	{ 'Համաշխարհային խաղեր',					'P4588',	function( id ) return 'https://www.theworldgames.org/results#athlete=:' .. id; end },
	{ 'Հոկեյի փառքի սրահ',			'P3567',	function( id ) return 'https://www.hhof.com/LegendsOfHockey/jsp/SearchPlayer.jsp?player=' .. id; end },
	{ 'Ղրիմի ֆուտբոլային միություն',		'P6318',	function( id ) return 'https://www.cfu2015.com/players/' .. id .. '/'; end },
	{ 'Մարզական Ռուսաստան',				'P6421',	function( id ) return 'https://infosport.ru/person/' .. id; end },
	{ 'Միասնական պայքարի աշխարհ',		'P2727',	function( id ) return 'https://www.iat.uni-leipzig.de/datenbanken/dbwrestling/daten.php?spid=' .. id; end },
	{ 'Միացյալ լիգա ՎՏԲ',				'P6732',	function( id ) return 'http://www.vtb-league.com/ru/player/' .. id .. '/'; end },
	{ 'ՄՊԿ',							'P7550',	function( id ) return 'https://www.paralympic.org/' .. id; end },
	{ 'ՄՕԿ',							'P3171',	function( id ) return 'https://www.olympic.org/' .. id; end },	{ 'Ռուսաստանի թեթև աթլետիկա',							'P5077',	function( id ) return 'http://sport.rusathletics.com/AthleteProfile/' .. id; end },
	{ 'Նոր Զելանդիայի օլիմպիական կոմիտե',		'P4056',	function( id ) return 'http://www.olympic.org.nz/athletes/' .. id .. '/'; end },
	{ 'Նորվեգիայի ֆուտբոլի ասոցիացիա',		'P3936',	function( id ) return 'https://www.fotball.no/fotballdata/person/profil/?fiksId=' .. id; end },
	{ 'Նորվեգիայի հանդբոլի ասոցիացիա',		'P3700',	function( id ) return 'https://handballold.nif.no/Statistikk_Landskamper.asp?SpillerId=' .. id; end },
	{ 'Շվեդիայի օլիմպիական կոմիտե',		'P2323',	function( id ) return 'http://sok.se/idrottare/idrottare/' .. id .. '.html'; end },
	{ 'ՇՖՄ',	                        'P3049',	function( id ) return 'https://www.scottishfa.co.uk/players/?pid=' .. id; end },
	{ 'Չեխիայի ֆուտբոլի առաջնություն',		'P7451',	function( id ) return 'http://en.fortunaliga.cz/hrac/' .. id .. '-'; end },
	{ 'Չեխիայի ֆուտբոլի ասոցիացիա',	'P3050',	function( id ) return 'http://nv.fotbal.cz/reprezentace/reprezentace-a/statistiky/viewstat3.asp?name=' .. id; end },
	{ 'Պրեսբոլ',						'P6311',	function( id ) return 'https://www.pressball.by/footballstat/' .. id .. '/'; end },
	{ 'ՌԲՄ',							'P6387',	function( id ) return 'http://biathlonrus.com/team/main/' .. id .. '/'; end },
	{ 'ՌԲՖ',							'P6975',	function( id ) return 'http://rusboxing.ru/prof-box/boxers/' .. id .. '/'; end },
	{ 'ՌԲՖ',							'P6994',	function( id ) return 'http://rusboxing.ru/calendar/boxers/' .. id .. '/'; end },
	{ 'ՌԳՀԴ',	                        'P3622',	function( id ) return 'http://www.rusbandy.ru/gamer/' .. id .. '/'; end },
	{ 'ՌԴՄԴ',							'P6598',	function( id ) return 'https://flgr-results.ru/?ActivePage=Profile&RusCode=' .. id; end },
	{ 'ՌԼԴՍՖ',							'P6825',	function( id ) return 'http://www.fgssr.ru/Sport/UI/Page/PersonList/PersonPage.aspx?personid=' .. id; end },
	{ 'ՌՆՖ',							'P5969',	function( id ) return 'https://russiabasket.ru/players/' .. id; end },
	{ 'ՌՇՖ',							'P4994',	function( id ) return 'http://ratings.ruchess.ru/people/' .. id; end },
	{ 'ՌՊԼ (խաղացող)',					'P4417',	function( id ) return 'https://premierliga.ru/players/' .. id; end },
	{ 'ՌՊԼ (համագործող)',				'P6312',	function( id ) return 'https://premierliga.ru/staff/staff_' .. id .. '.html'; end },
	{ 'ՌՊԼ (դատավոր)',					'P6313',	function( id ) return 'https://premierliga.ru/rfpl/arbitr/arbitr_' .. id .. '.html'; end },
	{ 'Ռուսական բիաթլոն',				'P5771',	function( id ) return 'http://base.biathlonrus.com/athlete/card/id/' .. id; end },
	{ 'Ռուսական բիաթլոն',				'P5772',	function( id ) return 'http://base.biathlonrus.com/coach/card/id/' .. id; end },
	{ 'Ռուսական հոկեյ',				'P6154',	function( id ) return 'http://r-hockey.ru/player.asp?TXT=' .. id; end },
	{ 'Ռուսաստանի ֆուտբոլի ազգային հավաքական',		'P6317',	function( id ) return 'http://www.rusteam.permian.ru/players/' .. id .. '.html'; end },
	{ 'Ռուսաստանի ֆուտբոլի մրցավարներ',		'P6701',	function( id ) return 'http://referee.ru/arbitrator/' .. id .. '.html'; end },
	{ 'Սլովակիայի ֆուտբոլի առաջնություն',	'P7530',	function( id ) return 'http://fortunaliga.sk/hrac/' .. id .. '-'; end },
	{ 'ՈւԵՖԱ',							'P2276',	function( id ) return 'http://ru.uefa.com/teamsandplayers/players/player=' .. id .. '/profile/index.html'; end },
	{ 'ՈւԵՖԱ',							'P7360',	function( id ) return 'https://ru.uefa.com/teamsandplayers/coaches/coach=' .. id .. '/profile/index.html'; end },
	{ 'ՈւԵՖԱ',							'P7361',	function( id ) return 'https://ru.uefa.com/teamsandplayers/teams/club=' .. id .. '/profile/index.html'; end },
	{ 'ՈւՊԼ',							'P7362',	function( id ) return 'https://upl.ua/ru/people/view/' .. id; end },
	{ 'ՈւՊՖԼ',							'P7423',	function( id ) return 'http://pfl.ua/players/' .. id; end },
    { 'ՈւՖԱ',	                        'P3662',	function( id ) return 'https://footpass.ffu.ua/players/' .. id .. '/' end },
	{ 'Սպորտը Ուրալում',					'P6388',	function( id ) return 'http://sportufo.ru/index.php?option=com_content&view=article&id=' .. id; end },
	{ 'Օդեսայի ֆուտբոլ',				'P6415',	function( id ) return 'http://football.odessa.ua/person/?' .. id; end },
	{ 'ՖԱԼ',							'P7265',	function( id ) return 'http://1fnl.ru/players/' .. id; end },
	{ 'ՖԻԲԱ',							'P3542',	function( id ) return 'http://archive.fiba.com/pages/eng/fa/p/rpp//q//pid/' .. id .. '/_//players.html' end },
	{ 'ՖԻԴԵ',							'P1440',	function( id ) return 'https://ratings.fide.com/card.phtml?event=' .. id; end },
	{ 'ՖԻՖԱ',							'P1469',	function( id ) return 'https://static.fifa.com/fifa-tournaments/players-coaches/people=' .. id .. '/index.html'; end },
	{ 'Ֆրանսիայի դահուկների ֆեդերացիա',	'P6612',	function( id ) return 'http://www.ffs.fr/biathlon/competitions/fiche-individuelle?licence=' .. id; end },
	{ 'ՖՖՖ',	                        'P4886',	function( id ) return 'https://www.fff.fr/equipes-de-france/toutes-les-joueuses/fiche-joueuse/' .. id .. '-wd' end },
	{ 'ՖՖՖ',	                        'P4883',	function( id ) return 'https://www.fff.fr/equipes-de-france/tous-les-joueurs/fiche-joueur/' .. id .. '-wd' end },

	-- Թեմատիկ կայքեր. աուդիո և վիդեո
	{ 'Armenian Cinema ID',							'P5218',	function( id ) return 'https://www.arm-cinema.am/am/' ..  id .. '.html'; end },
    { 'AFDb',	'P3351',	function( id ) return 'http://www.adultfilmdatabase.com/actor.cfm?actorid=' .. id .. ''; end },
	{ { 'Q477809', 'AllMovie' },	'P1562',	function(id) return 'http://www.allmovie.com/movie/' .. id; end },
	{ { 'Q477809', 'AllMovie' },	'P2019',	function(id) return 'http://www.allmovie.com/artist/' .. id; end },

	{ { 'Q31181', 'AllMusic' },		'P1728',	function(id) return 'http://www.allmusic.com/artist/' .. id; end },
	{ { 'Q31181', 'AllMusic' },		'P1729',	function(id) return 'http://www.allmusic.com/album/' .. id; end },
	{ { 'Q31181', 'AllMusic' },		'P1730',	function(id) return 'http://www.allmusic.com/song/' .. id; end },
	{ { 'Q31181', 'AllMusic' },		'P1994',	function(id) return 'http://www.allmusic.com/composition/' .. id; end },

	{ labelAllocine,	'P1265',	function(id) return 'http://www.allocine.fr/film/fichefilm_gen_cfilm=' .. id .. '.html'; end },
	{ labelAllocine,	'P1266',	function(id) return 'http://www.allocine.fr/personne/fichepersonne_gen_cpersonne=' .. id .. '.html'; end },
	{ labelAllocine,	'P1267',	function(id) return 'http://www.allocine.fr/series/ficheserie_gen_cserie=' .. id .. '.html'; end },

    { 'AniDB',	'P5646',	function( id ) return 'https://anidb.net/perl-bin/animedb.pl?show=anime&aid=' .. id .. ''; end },
    { 'AniDB',	'P5648',	function( id ) return 'https://anidb.net/perl-bin/animedb.pl?show=character&charid=' .. id .. ''; end },
    { 'AniDB',	'P5649',	function( id ) return 'https://anidb.net/perl-bin/animedb.pl?show=creator&creatorid=' .. id .. ''; end },

	{ labelAnimeNewsNetwork,	'P1982',	function(id) return 'http://www.animenewsnetwork.com/encyclopedia/people.php?id=' .. id; end },
	{ labelAnimeNewsNetwork,	'P1983',	function(id) return 'http://www.animenewsnetwork.com/encyclopedia/company.php?id=' .. id; end },
	{ labelAnimeNewsNetwork,	'P1984',	function(id) return 'http://www.animenewsnetwork.com/encyclopedia/manga.php?id=' .. id; end },
	{ labelAnimeNewsNetwork,	'P1985',	function(id) return 'http://www.animenewsnetwork.com/encyclopedia/anime.php?id=' .. id; end },

	{ { 'Q223142', 'Box Office Mojo' },	'P1237',	boxofficemojoLink },

	{ { 'Q3561957', 'ČSFD' },	'P2529',	function(id) return 'http://www.csfd.cz/film/' .. id; end },
	{ { 'Q3561957', 'ČSFD' },	'P2605',	function(id) return 'http://www.csfd.cz/tvurce/' .. id; end },
	{ { 'Q16323348', 'DNF' },	'P2626',	function(id) return 'https://www.dfi.dk/viden-om-film/filmdatabasen/person/' .. id; end },

	{ labelDiscogs,	'P1953',	function(id) return 'http://www.discogs.com/artist/' .. id; end },
	{ labelDiscogs,	'P1954',	function(id) return 'http://www.discogs.com/master/' .. id; end },
	{ labelDiscogs,	'P1955',	function(id) return 'http://www.discogs.com/label/' .. id; end },
	{ labelDiscogs,	'P2206',	function(id) return 'http://www.discogs.com/release/' .. id; end },

	{ { 'Q2638147', 'FilmAffinity' },			'P480',		function(id) return 'http://www.filmaffinity.com/en/film' .. id .. '.html' end },
	{ 'Filmportal', 'P2639',	function( id ) return 'https://www.filmportal.de/' .. id .. ''; end },
	{ labelEncyclopaediaMetallum,				'P1952',	function(id) return 'https://www.metal-archives.com/bands//' .. id; end },
	{ labelEncyclopaediaMetallum,				'P1989',	function(id) return 'https://www.metal-archives.com/artists//' .. id; end },
	{ labelEncyclopaediaMetallum,				'P2721',	function(id) return 'http://www.metal-archives.com/release.php?id=' .. id; end },
	{ 'IAFD',	'P3869',	function( id ) return 'http://www.iafd.com/person.rme/perfid=' .. id .. '/gender=f'; end },
	{ labelIBDb,								'P1217',	ibdbVenueLink },
	{ labelIBDb,								'P1218',	ibdbProductionLink },
	{ labelIBDb,								'P1219',	ibdbShowLink },
	{ labelIBDb,								'P1220',	ibdbPersonLink },
	{ { 'Q37312', 'Internet Movie Database' },						'P345',		imdbLink },
	{ { 'Q523660', 'International Music Score Library Project' },	'P839',		imslpLink },
	{ { 'Q2389071', 'КиноПоиск' },				'P2604',	function( id ) return 'https://www.kinopoisk.ru/name/' .. id .. '/'; end },
	{ { 'Q150248', 'Metacritic' },				'P1712',	function( id ) return 'http://www.metacritic.com/' .. id; end },
	{ { 'Q6824428', 'MetroLyrics' },				'P2624',	function( id ) return 'http://www.metrolyrics.com/' .. id .. '.html'; end },
	{ { 'Q2158761', 'MovieMeter' },				'P1969',	function( id ) return 'https://www.moviemeter.nl/director/' .. id; end },
	{ labelMusicBrainz,							'P434',		function( id ) return 'https://musicbrainz.org/artist/' .. id; end },
	{ labelMusicBrainz,							'P435',		function( id ) return 'https://musicbrainz.org/work/' .. id; end },
	{ labelMusicBrainz,							'P436',		function( id ) return 'https://musicbrainz.org/release-group/' .. id; end },
	{ 'Penthouse',	'P6290',	function( id ) return 'https://penthousegold.com/models/' .. id .. '.html'; end },
	{ { 'Q22673', 'Project Gutenberg' },		'P1938',	function(id) return 'https://gutenberg.org/ebooks/author/' .. id; end },
	{ 'Rate Your Music',							'P5404',	function( id ) return 'https://rateyourmusic.com/artist/' .. id .. ''; end },
	{ { 'Q105584', 'Rotten Tomatoes' },			'P1258',	rottentomatoesLink },
	{ { 'Q4066284', 'Аниматор.ру' },			'P1934',	function(id) return 'http://www.animator.ru/db/?p=show_film&fid=' .. id; end },
	{ { 'Q4066284', 'Аниматор.ру' },			'P5770',	function(id) return 'http://www.animator.ru/db/?p=show_person&pid=' .. id; end },
	{ { 'Q7713473', 'AFI' },					'P3593',	function(id) return 'https://catalog.afi.com/Catalog/moviedetails/' .. id; end },

	-- Թեմատիկ կայքեր. գրականություն
	{ labelISFDb,	'P1233',	isfdbAuthorLink },
	{ labelISFDb,	'P1234',	isfdbPublicationLink },
	{ labelISFDb,	'P1235',	isfdbSeriesLink },
	{ labelISFDb,	'P1239',	isfdbPublisherLink },

	{ { 'Q17299517', 'RKDartists' },	'P650',		rkdArtistsLink },
	{ { 'Q17299580', 'RKDimages' },		'P350',		rkdImagesLink },

	{ { 'Q24694883', 'ECARTICO' },	'P2915',	function(id) return 'http://www.vondel.humanities.uva.nl/ecartico/persons/' .. id; end },
	{ 'OCLC',	'P243',	function( id ) return 'https://www.worldcat.org/oclc/' .. id .. ''; end },

	-- Թեմատիկ կայքեր. վիդեոխաղեր
	{ 'Behind The Voice Actors','P4965',	function( id ) return 'http://www.behindthevoiceactors.com/video-games/' .. id; end },
	{ 'CPC-Power',				'P4847',	function( id ) return 'http://www.cpc-power.com/index.php?page=detail&num=' .. id; end },
    { 'IGN',					'P5385',	function( id ) return 'http://ign.com/games/' .. id .. ''; end },
	{ 'GameRankings',			'P4769',	function( id ) return 'http://www.gamerankings.com/-/' .. id .. '-/index.html'; end },
    { 'GameSpot',				'P5494',	function( id ) return 'https://www.gamespot.com/' .. id .. ''; end },
	{ 'Gaming-History',			'P4806',	function( id ) return 'https://www.arcade-history.com/?page=detail&id=' .. id; end },
	{ 'Giant Bomb',				'P5247',	function( id ) return 'https://www.giantbomb.com/wd/' .. id .. '/'; end },
	{ 'Guardiana',				'P4710',	function( id ) return 'https://www.guardiana.net/?game_id=' .. id; end },
	{ 'Hall of Light',			'P4671',	function( id ) return 'http://hol.abime.net/' ..id; end },
	{ 'KLOV',					'P2858',	function( id ) return 'http://www.arcade-museum.com/game_detail.php?game_id=' .. id; end },
	{ 'Lemon 64',				'P4816',	function( id ) return 'http://www.lemon64.com/?game_id=' .. id; end },
	{ 'MobyGames',				'P1933',	function( id ) return 'https://www.mobygames.com/game/' .. id; end },
    { 'MobyGames',	  			'P4773',	function( id ) return 'http://www.mobygames.com/company/' .. id .. ''; end },
 	{ 'MobyGames',				'P5360',	function( id ) return 'https://www.mobygames.com/game-group/' .. id; end },
	{ 'Ready64',				'P4916',	function( id ) return 'http://ready64.org/giochi/scheda_gioco/id/' .. id .. '/'; end },
	{ 'Redump',					'P5290',	function( id ) return 'http://redump.org/disc/' .. id .. '/'; end },
	{ 'VGMdb',					'P5659',	function( id ) return 'https://vgmdb.net/product/' .. id .. ''; end },
	{ 'World of Spectrum',		'P4705',	function( id ) return 'https://www.worldofspectrum.org/infoseekid.cgi?id=' .. id; end },

	-- Թեմատիկ կայքեր. այլ
	{ 'ՀԱՊ',		'P5210',	function( id ) return 'http://www.gallery.am/en/database/item/' .. id; end },
 	{ 'Flags of the World',		'P3089',	function( id ) return 'http://flagspot.net/flags/' .. id .. '.html'; end },
	{ { 'Q41226', 'Open Directory Project' },	'P998',		function ( id )	return 'https://curlie.org/' .. id; end },
	{ 'The Peerage',	'P4638',	function( id ) return 'https://tools.wmflabs.org/wikidata-externalid-url/?p=4638&url_prefix=http://www.thepeerage.com/&id=' .. id .. ''; end },

	{ { 'Q106777822', 'hush.am' },				'P9607',		hushLink },
	{ { 'Q63056', 'Find a Grave' },				'P535',		findagraveLink },
 	{ 'gravsted.dk',	'P4359',	function( id ) return 'https://www.gravsted.dk/person.php?navn=' .. id; end },
 	{ 'JewAge',			'P4116',	function( id ) return 'http://www.jewage.org/wiki/ru/Profile:' .. id; end },
 	{ 'WikiTree',		'P2949',	function( id ) return 'https://www.wikitree.com/wiki/' .. id; end },
 	{ 'WeRelate',		'P4159',	function( id ) return 'http://www.werelate.org/wiki/Person:' .. id; end },
 	{ { 'Q649227', 'Родовод' },					'P1185',	rodovidLink },	
	
}

local taxons = {
 	{ 'Avibase',		'P2026',	function( id ) return 'https://avibase.bsc-eoc.org/species.jsp?avibaseid=' .. id; end },
 	{ 'CMS',			'P6033',	function( id ) return 'https://www.cms.int/en/species/' .. id; end },
 	{ 'eBird',			'P3444',	function( id ) return 'https://ebird.org/species/' .. id; end },
 	{ 'EOL',			'P830',		function( id ) return 'https://eol.org/pages/' .. id; end },
 	{ 'GBIF',			'P846',		function( id ) return 'https://www.gbif.org/species/' .. id; end },
 	{ 'iNaturalist',	'P3151',	function( id ) return 'https://www.inaturalist.org/taxa/' .. id; end },
 	{ 'NCBI',			'P685',		function( id ) return 'https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=' .. id; end },
 	{ 'Neotropical Birds',	'P6047',	function( id ) return 'https://neotropical.birds.cornell.edu/Species-Account/nb/species/' .. id; end },
 	{ 'IRMNG',			'P5055',	function( id ) return 'http://www.irmng.org/aphia.php?p=taxdetails&id=' .. id; end },
 	{ 'ITIS TSN',		'P815',		function( id ) return 'https://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&search_value=' .. id; end },
 	{ 'SeaLifeBase',	'P6018',	function( id ) return 'https://www.sealifebase.ca/Summary/SpeciesSummary.php?id=' .. id; end },
 	{ 'WoRMS',			'P850',		function( id ) return 'http://www.marinespecies.org/aphia.php?p=taxdetails&id=' .. id; end },
}

local authorityControl = {
	{ { 'Q101537013', 'Հայաստանի գրադարանների համահավաք գրացուցակ', 'ՀԳՀԳ' },					'P8833',		kohaLink, },
	{ { 'Q105429169', 'Հայ գիրք գրադարանային գրացուցակ', 'Հայ գիրք'},					'P9398',		haygirqLink, },
	{ { 'Q213678', 'Bibliotheca Apostolica Vaticana', 'BAV' },				'P1017',	bavLink, },
	{ { 'Q4584301', '', 'BIBSYS' },							'P1015', 	bibsysLink, },
	{ { 'Q1200925', 'Biblioteca de Catalunya', 'BNC' },						'P1273',	bncLink, },
	{ { 'Q750403', 'Biblioteca Nacional de España', 'BNE' },				'P950', 	bneLink, },
	{ { 'Q193563', 'Bibliothèque nationale de France', 'BNF' }, 			'P268', 	bnfLink, },
	{ { 'Q1868372', 'Biografisch Portaal', 'BPN' },					'P651',		bpnLink, },
	{ { 'Q9384291', '中国高等教育文献保障系统', 'CALIS' },					'P270', 	calisLink, },
	{ { 'Q17299677', 'China Biographical Database Project', 'CBDB' },		'P497', 	cbdbLink, },
	{ { 'Q10726338', 'Citation Information by NII', 'CiNii' },				'P271', 	ciniiLink, },
	{ { 'Q16744133', 'CONOR', 'CONOR' },					'P1280',	conorLink, },
	{ { 'Q27302', 'Deutsche Nationalbibliothek', 'DNB' },					'P1292', 	dnbLink, },
	{ { 'Q5282129', 'Disease Ontology' },	'P699',	doLink },
	{ { 'Q501851', 'مكتبة الإسكندرية الجديدة', 'EGAXA' },					'P1309', 	egaxaLink, },
	{ { 'Q36578', 'Gemeinsame Normdatei', 'GND' },					'P227', 	gndLink, },
	{ { 'Q19366588', 'Gemeinsamer Thesaurus für audiovisuelle Archive', 'GTAA' },	'P1741',	gtaaLink, },
	{ { 'Q3803707', 'Istituto Centrale per il Catalogo Unico', 'ICCU' },	'P396', 	iccuLink, },
	{ { 'Q423048', 'International Standard Name Identifier', 'ISNI' },		'P213',		isniLink, },
	{ { 'Q620946', 'Library of Congress Control Number', 'LCCN' },			'P244',		lccnLink, },
	{ { 'Q13219454', 'Library of Congress Control Number', 'LOC' },			'P1144',	locLink, },
	{ { 'Q1133733', 'Latvijas Nacionālā bibliotēka', 'LNB' },				'P1368',	lnbLink, },
	{ { 'Q809830', 'Base Mérimée', 'Mérimée' },				'P380',		merimeeLink, },
	{ { 'Q28136779', 'Microsoft Academic', 'Microsoft' },			'P6366',	microsoftLink, },

	{ { 'Q618340', '國家圖書館 (中華民國)', 'NCL' },							'P1048', 	nclLink, },
	{ { 'Q477675', '国立国会図書館', 'NDL' },								'P349',		ndlLink, },
	{ { 'Q732353', '中国国家图书馆', 'NLC' },								'P1213', 	nlcLink, },
-- NLI numbers seems unstable
	{ { 'Q1967876', 'Národní knihovna České republiky', 'NKC' },			'P691',		nkcLink, },
	{ { 'Q623578', 'National Library of Australia', 'NLA' }, 				'P409',		nlaLink, },
	{ { 'Q1467610', 'Αναγνωριστικό Καθιερωμένων από τον Κατάλογο Καθιερωμένων Όρων της Εθνικής Βιβλιοθήκης της Ελλάδος', 'NLG' },	'P3348',	function(id) return 'http://nlg.okfn.gr/resource/authority/record' .. id; end, },
	{ { 'Q622012', 'Biblioteca Națională a României', 'NLR' }, 				'P1003',	nlrLink, },
	{ { 'Q856423', 'Polska Biblioteka Narodowa', 'NLP' }, 					'P1695',	function(id) return 'http://mak.bn.org.pl/cgi-bin/KHW/makwww.exe?BM=01&IM=04&NU=01&WI=' .. id; end, },
	{ { 'Q631375', 'Nacionalna i sveučilišna knjižnica u Zagrebu', 'NSK' },	'P1375',	nskLink, },
	{ { 'Q1526131', 'Koninklijke Bibliotheek', 'NTA' },						'P1006',	ntaLink, },
	{ { 'Q1063819', 'Országos Széchényi Könyvtár', 'NSZL' },				'P951',		nszlLink, },
	{ { 'Q11789729', 'Narodowy Uniwersalny Katalog Centralny', 'NUKAT' },	'P1207',	nukatLink, },
	{ { 'Q245966', 'Biblioteca Nacional de Portugal', 'PTBNP' },			'P1005',	ptbnpLink, },
	{ { 'Q1048694', 'Российская государственная библиотека', 'РГБ' },		'P947', 	rslLink, },
	{ { 'Q953058', 'Kungliga biblioteket', 'LIBRIS' },						'P906',		selibrLink, },
	{ { 'Q2597810', 'Système universitaire de documentation', 'SUDOC' },	'P269',		sudocLink, },
	{ { 'Q54919', 'Virtual International Authority File', 'VIAF' },			'P214',		viafLink, },
	{ { 'Q2494649', 'Union List of Artist Names', 'ULAN' },					'P245',		ulanLink, },
	{ { 'Q65212904', 'Наука України', 'ИРБИС-НБУВ' },						'P7148',	naukaUkrLink, },
	{ { 'Q2860429', 'Российский государственный архив литературы и искусства', 'РГАЛИ' },	'P6752',		rgaliLink, },
	{ { 'Q1048694', 'Российская государственная библиотека', 'РГБ' },	'P1973',		rslLink0, },
}

local authorityControlExt = {
	{ { 'Q846596', 'WorldCat Identities', 'WorldCat VIAF' },'P214',    worldcatLink, },
}

function getQualifierSingleValue( statement, qualifierName )
	if (statement ~= nil
			and statement.qualifiers ~= nil
			and statement.qualifiers[qualifierName] ~= nil) then

		for qualifierIndex, qualifier in pairs( statement.qualifiers[qualifierName] ) do
			if (qualifier.datavalue ~= nil
					and qualifier.datavalue.type ~= nil
					and qualifier.datavalue.value ~= nil) then

				if ( qualifier.datavalue.type == "monolingualtext" ) then
					return qualifier.datavalue.value.text;
				end
				if ( qualifier.datavalue.type == "string" ) then
					return qualifier.datavalue.value;
				end
				if ( qualifier.datavalue.type == "wikibase-entityid" ) then
					return qualifier.datavalue.value.id;
				end
				mw.log( 'Unknown qualifier type: ' .. qualifier.datavalue.type )
				return qualifier.datavalue.value;

			end
		end

	end
	return nil;
end

function getQualifierValues( statement, qualifierName )
	local result = {}
	if (statement ~= nil
			and statement.qualifiers ~= nil
			and statement.qualifiers[qualifierName] ~= nil) then
		local qualifiers = statement.qualifiers[qualifierName];
		for _, qualifier in pairs( qualifiers ) do
			if (qualifier.datavalue ~= nil
				and qualifier.datavalue.type ~= nil
				and qualifier.datavalue.value ~= nil) then

				if ( qualifier.datavalue.type == "string" ) then
					result[ #result + 1 ] = qualifier.datavalue.value;
				elseif ( qualifier.datavalue.type == "wikibase-entityid" ) then
					result[ #result + 1 ] = qualifier.datavalue.value.id;
				else
					mw.log( 'Unknown qualifier type: ' .. qualifier.datavalue.type );
					result[ #result + 1 ] = qualifier.datavalue.value;
				end
			end
		end
	end
	return result;
end

function collectLinks( configuration, elementId )

	local moduleLanguages
	if ( mw.title.makeTitle( 'Module', 'Languages' ).exists
			and mw.title.makeTitle( 'Module', 'Languages/data' ).exists
			and mw.title.makeTitle( 'Module', 'Wikidata/Language-codes' ).exists) then
		moduleLanguages = require('Module:Languages');
	else
		moduleLanguages = false;
	end

	--Create rows
	local elements = {}
	local data = {}


	local item = mw.wikibase.getEntity( elementId )
	if item == nil or item.claims == nil then
		return elements
	end

	if ( item.claims['P553'] ~= nil ) then
		local claim = item.claims['P553']
		for _, statement in pairs( claim ) do
			if (statement ~= nil) then
				-- profile ID
				local rank = statement.rank or 'normal';
				if ( rank ~= 'deprecated' ) then
					local itemId = getQualifierSingleValue( statement, 'P554' );
					if (itemId ~= nil) then
						-- language
						local languages = getQualifierValues( statement, 'P407' );
						local resourceId = statement.mainsnak.datavalue.value.id;
						if (data[resourceId] == nil) then
							data[resourceId] = {};
						end
						table.insert( data[resourceId], { itemId = itemId, languages = languages, rank = rank} );
					end
				end
			end
		end
	end

	for _, params in pairs( configuration ) do
		local resourceId = params[2]

		local claim = item.claims[ resourceId ]
		if ( claim ) then
			for _, statement in pairs( claim ) do
				local rank = statement.rank or 'normal';
				if ( rank ~= 'deprecated' and statement.mainsnak.datavalue) then
					local itemId = statement.mainsnak.datavalue.value;
					local languages = getQualifierValues( statement, 'P407' );
					if (data[resourceId] == nil) then
						data[resourceId] = {};
					end
					table.insert( data[resourceId], { itemId = itemId, languages = languages, rank = rank} );
				end
			end
		end
	end

	for resourceId, resourceDatas in pairs( data ) do
		data[resourceId] = filterByRank( resourceDatas );
	end

	local hasNonOptionalLinks = false

	for _, params in pairs( configuration ) do
		local resourceId = params[2]
		local optional = params[5] or false;

		local resourceDatas = data[resourceId];
		if resourceDatas ~= nil then
			if ( not optional ) then
				hasNonOptionalLinks = true
			end

			local resourceLabel = renderLabel( params[1] );
			local firstChar = mw.ustring.sub( resourceLabel, 1, 1 );
			local separateDesign = firstChar == '[' or firstChar == '<';

			local html = '';
			if ( separateDesign ) then
				html = html .. resourceLabel .. ':&nbsp;';
			end

			local preitemId
			for index, resourceData in pairs(resourceDatas) do
				local itemId = resourceData.itemId;
				if index == 2 then
					--даёт возможность поставить id из одного свойства в разные ссылки
					if itemId == preitemId then
						break
					end
				end

				local languages = resourceData.languages;
				local link = params[3] ( itemId );
				local linkFirstChar;
				local interwiki;
				if ( link ) then
					linkFirstChar = mw.ustring.sub( link, 1, 1 );
					interwiki = linkFirstChar == ':'
				end
				if ( separateDesign ) then
					if ( index ~= 1 ) then
						html = html .. ',&nbsp;'
					end
					if ( link ) then
						if ( interwiki ) then
							html = html .. '[[' .. link .. '|' .. itemId .. ']]';
						else
							html = html .. '[' .. link .. ' ' .. itemId .. ']';
						end
					else
						html = html .. itemId;
					end
				else
					if ( index ~= 1 ) then
						html = html .. ' · '
					end
					if ( link ) then
						if ( interwiki ) then
							html = html .. '[[' .. link .. '|' .. resourceLabel .. ']]';
						else
							html = html .. '[' .. link .. ' ' .. resourceLabel .. ']';
						end
					else
						-- it should not happen
						html = html .. resourceLabel .. ':&nbsp;' .. itemId;
					end

					if ( moduleLanguages ) then
						if ( languages ~= nil and #languages > 0 ) then
							for langIndex, language in pairs(languages) do
								html = html .. '&nbsp;' .. moduleLanguages.getRefHtml( language )
							end
						end
					end
				end
				preitemId = resourceData.itemId;
			end
			if ( #params >= 4 and params[4] ) then
				html = html .. '[[رده:' .. params[4] .. ']]'
			end
			table.insert( elements, html )
		end
	end

	if ( not hasNonOptionalLinks ) then
		return {}
	end

	return elements
end

function collectDictionaryLinks( elementId )
	--Create rows
	local elements = {}

	local item = mw.wikibase.getEntity( elementId );
	if ( item == nil or item.claims == nil) then
		return elements
	end

	local sourceToElementLinks = {};

	local claim = item.claims['P1343']
	if ( claim ) then
		for _, statement in pairs( claim ) do
			if (statement ~= nil) then
				local rank = statement.rank or 'normal';
				if ( rank ~= 'deprecated' ) then
					local resourceId = statement.mainsnak.datavalue.value.id;
					local languages = getQualifierValues( statement, 'P407' );

					-- Wikisource link ?
					local entityId = getQualifierSingleValue( statement, 'P805' ) or getQualifierSingleValue( statement, 'P248' );
					if ( entityId ) then
						if (sourceToElementLinks[resourceId] == nil) then
							sourceToElementLinks[resourceId] = {};
						end
						table.insert( sourceToElementLinks[resourceId], { entityId = entityId, languages = languages, rank = rank } );
					end

					-- URL to encyclopedia
					local url = getQualifierSingleValue( statement, 'P953' );
					if (url == nil) then
						-- no longer recommend, but widely used
						url = getQualifierSingleValue( statement, 'P854' ); 
					end
					if ( url ~= nil ) then
						if (sourceToElementLinks[resourceId] == nil) then
							sourceToElementLinks[resourceId] = {};
						end
						table.insert( sourceToElementLinks[resourceId], { url = url, languages = languages, rank = rank } );
					end
				end
			end
		end
	end

	for _, description in pairs( dictionaries ) do
		if ( description.linkF ) then
			local claim = item.claims[ description.id ];
			if ( claim ) then
				for _, statement in pairs( claim ) do
					local rank = statement.rank or 'normal';
					if ( rank ~= 'deprecated' and statement.mainsnak.datavalue) then
						local value = statement.mainsnak.datavalue.value;
						local url = description.linkF( value );
						local languages = getQualifierValues( statement, 'P407' );
						if ( sourceToElementLinks[description.id] == nil) then
							sourceToElementLinks[description.id] = {};
						end
						table.insert( sourceToElementLinks[description.id], { url = url, languages = languages, rank = rank} );
					end
				end
			end
		end
	end

	local html = '';
	for _, description in pairs( dictionaries ) do
		local links = sourceToElementLinks[ description.id ];
		if ( links ) then
			for _, link in pairs( links ) do
				if ( link.url ) then
					table.insert( elements, '[' .. link.url .. ' ' .. description.title .. ']' );
				end

				if ( link.entityId ) then
					local sitelink = mw.wikibase.getSitelink( link.entityId, description.project );
					if ( sitelink ) then
						table.insert( elements, '[[' ..  description.projectCode .. sitelink .. '|' .. description.title .. ']]' );
					end
				end
			end
		end
	end

	return elements
end

function contains( tableStructure, value )
	if ( tableStructure == nil or value == nil) then
		return true;
	end
	for index, line in pairs( tableStructure ) do
		if ( line == value ) then
			return true;
		end
	end
	return false;
end

function filterByRank( resourceDatas )
	-- itemId, languages. rank = rank

	local hasPreffered = false;
	for index, resourceData in pairs(resourceDatas) do
		if ( resourceData.rank == 'preferred' ) then
			hasPreffered = true;
		end
	end

	if (not hasPreffered) then
		return resourceDatas;
	end

	local result = {};
	for index, resourceData in pairs(resourceDatas) do
		if ( resourceData.rank == 'preferred' or contains(resourceData.languages, preferredLanguage) ) then
			table.insert(result, resourceData);
		end
	end

	return result;
end

function p.render( frame )
	local colorArg = '';
	local elementId = nil;
	if ( frame ~= nil ) then
		local parentArgs = frame:getParent().args
		colorArg = parentArgs[templateColorName] or parentArgs['color'] or parentArgs[1] or '';
		if parentArgs['d'] and parentArgs['d'] ~= '' then
			elementId = string.upper( parentArgs['d'] );
		end
		if ( colorArg ~= '' ) then
			local firstChar = mw.ustring.sub( colorArg, 1, 1 );
			if ( firstChar ~= '#' ) then
				local byTemplate = colorByTitle( frame, colorArg );
				if ( byTemplate ) then
					colorArg = byTemplate;
				end
			end
		end
	end

	local navboxData = {
		name  = 'External links',
		navboxclass = 'navbox ruwikiArticleExternalLinksTable',
		bodyclass = 'hlist',
	};
	if colorArg and colorArg ~= '' then
		navboxData.groupstyle = 'background: ' .. colorArg .. ';';
	end

	local rowIndex = 1;

	local socialNetworksElements = collectLinks( socialNetworkProperties, elementId );
	if ( #socialNetworksElements > 0 ) then
		navboxData['group' .. rowIndex] = group1Label;
		navboxData['list' .. rowIndex] = table.concat( socialNetworksElements , ' · ' );
		rowIndex = rowIndex + 1;
	end

	local textsElements = collectLinks( textsProperties, elementId );
	if ( #textsElements > 0 ) then
		navboxData['group' .. rowIndex] = group2Label;
		navboxData['list' .. rowIndex] = table.concat( textsElements , ' · ' );
		rowIndex = rowIndex + 1;
	end

	local contentHostingElements = collectLinks( contentHostingProperties, elementId );
	if ( #contentHostingElements > 0 ) then
		navboxData['group' .. rowIndex] = group3Label;
		navboxData['list' .. rowIndex] = table.concat( contentHostingElements , ' · ' );
		rowIndex = rowIndex + 1;
	end

	local themeProfilesElements = collectLinks( themeProfilesProperties, elementId );
	if ( #themeProfilesElements > 0 ) then
		navboxData['group' .. rowIndex] = group4Label;
		navboxData['list' .. rowIndex] = table.concat( themeProfilesElements , ' · ' );
		rowIndex = rowIndex + 1;
	end

	local dictionaryElements = collectDictionaryLinks( elementId );
	if ( #dictionaryElements > 0 ) then
		navboxData['group' .. rowIndex] = group5Label;
		navboxData['list' .. rowIndex] = table.concat( dictionaryElements , ' · ' );
		rowIndex = rowIndex + 1;
	end

	local taxElements = collectLinks( taxons, elementId );
	if ( #taxElements > 0 ) then
		navboxData['group' .. rowIndex] = group6Label;
		navboxData['list' .. rowIndex] = table.concat( taxElements , ' · ' );
		rowIndex = rowIndex + 1;
	end

local authorityControlElements = collectLinks( authorityControl, elementId );
	local authorityControlExtElements = collectLinks( authorityControlExt, elementId );
	if ( #authorityControlElements > 0 ) then
		navboxData['group' .. rowIndex] = group7Label;
		if ( #authorityControlExtElements > 0 ) then
			navboxData['list' .. rowIndex] = table.concat( authorityControlElements , ' · ' ) .. ' · ' .. table.concat( authorityControlExtElements , ' · ' );
		else
			navboxData['list' .. rowIndex] = table.concat( authorityControlElements , ' · ' );
		end
		if ( #authorityControlElements > 5 ) then
			navboxData['group' .. rowIndex] = nil;
			package.loaded['Module:Navbox'] = nil;
local templateStyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'الگو:Navbox/styles.css' } };
			local collapsibleNavbox = require('Module:Navbox')._navbox( { title = group7Label, list1 = navboxData['list' .. rowIndex],
				border = 'subgroup', navbar = 'plain', state = 'collapsed', titleclass = 'ts-navbox-plaintitle', bodyclass = 'authoritycontrol',
				titlestyle = navboxData.groupstyle } );
			navboxData['list' .. rowIndex] = templateStyles .. collapsibleNavbox;
		end
		rowIndex = rowIndex + 1;
	end

	if ( rowIndex == 1 ) then
		if ( mw.title.getCurrentTitle().namespace == 0 ) then
			return '[[رده:' .. categoryTemplateEmpty .. ']]';
		end
	else
		if navboxData['group1'] then
			navboxData['group1'] = '<div style="padding: 0px 0px 0px 18px; width: 100%;"><div style="float: right;">' ..
				frame:expandTemplate{ title = 'tnavbar-view', args = { templateLink } } .. '</div>&nbsp;&nbsp;' ..
				navboxData['group1'] .. '</div>';
		else
			navboxData['group1'] = '<div style="padding: 0px 0px 0px 0px; width: 100%;">' ..
				frame:expandTemplate{ title = 'tnavbar-view', args = { templateLink } } .. '</div>';
		end
	end

	local navbox = moduleNavbox._navbox( navboxData )
	return navbox
end

function p.renderDocumentation()
	local result = ''
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group1Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( socialNetworkProperties );
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group2Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( textsProperties );
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group3Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( contentHostingProperties );
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group4Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( themeProfilesProperties );
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group5Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( dictionaries );
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group6Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( taxons );
	result = result .. '|-\n';
	result = result .. '! colspan=4 | ' .. group7Label .. '\n';
	result = result .. '|-\n';
	result = result .. renderDocumentationCategory( authorityControl );
	return result;
end

function renderDocumentationCategory( links )
	local result = '';

	for _, params in pairs( links ) do
		local resourceLabel = renderLabel( params[ 1 ] or params.title );
		local resourceId = params[ 2 ] or params.id;
		local category = params[ 4 ];
		local optional;
		if ( params[ 5 ] or false ) then
			optional = 'TRUE';
		else
			optional = 'FALSE';
		end
	
		result = result .. '| ' .. resourceLabel .. '\n';
		if string.match( resourceId, '^P' ) then
			result = result .. '| [[:d:Property:' .. resourceId .. '|' .. resourceId .. ']]\n';
		elseif string.match( resourceId, '^Q' ) then
			result = result .. '| [[:d:' .. resourceId .. '' .. '|' .. resourceId .. ']]\n';
		else
			result = result .. '| &nbsp; \n';
		end

		if ( category ~= nil and category ~= false ) then
			result = result .. '| [[:رده:' .. category .. '|' .. category .. ']]\n';
		else
			result = result .. '| &nbsp; \n';
		end
		result = result .. '| ' .. optional .. '\n';
		result = result .. '|-\n';
	end

	return result;
end

return p