# Contributor: Marian Buschsieweke <marian.buschsieweke@posteo.net>
# Maintainer: Marian Buschsieweke <marian.buschsieweke@posteo.net>
pkgname=texmf-dist
pkgver=2024.0
_release=20240312
pkgrel=7
pkgdesc="TeX Live texmf core distribution"
url="https://tug.org/texlive/"
# texlive
arch="noarch !s390x !ppc64le !riscv64"
license="LPPL-1.0 LPPL-1.1 LPPL-1.2 LPPL-1.3a LPPL-1.3c GPL-2.0-only"
depends="
	perl-file-homedir
	perl-unicode-linebreak
	perl-yaml-tiny
	"
# using gawk speeds parsing the tlpdb up, reduces packaging time significantly.
makedepends="
	gawk
	"
subpackages="
	texmf-dist-doc
	texmf-dist-examples:_examples
	texmf-dist-lang:_lang
	texmf-dist-full:_full
	texmf-dist-full-examples:_full_examples
	texmf-dist-most:_most
	texmf-dist-most-examples:_most_examples
	"

_collections="
	bibtexextra
	binextra
	context
	fontsextra
	fontsrecommended
	fontutils
	formatsextra
	games
	humanities
	langarabic
	langchinese
	langcjk
	langcyrillic
	langczechslovak
	langenglish
	langeuropean
	langfrench
	langgerman
	langgreek
	langitalian
	langjapanese
	langkorean
	langother
	langpolish
	langportuguese
	langspanish
	latex
	latexextra
	latexrecommended
	luatex
	mathscience
	metapost
	music
	pictures
	plaingeneric
	pstricks
	publishers
	xetex
	"
source="
	https://ftp.tu-chemnitz.de/pub/tug/historic/systems/texlive/${_release:0:4}/texlive-$_release-texmf.tar.xz
	tlpkg-$pkgver.tar.gz::https://ftp.tu-chemnitz.de/pub/tug/historic/systems/texlive/${_release:0:4}/install-tl-unx.tar.gz
	texlive-$pkgver.tlpdb::https://mari-bu.de/texlive-$pkgver.tlpdb

	00-preamble.dat
	00-preamble.dat.lua
	00-preamble.def
	90-epilog.dat
	90-epilog.dat.lua
	90-epilog.def

	0001-texmfcnf.patch
	0002-fix-newtt-map.patch
	0003-tlmgr.patch
	0004-latexmk.patch
	"
builddir="$srcdir/texlive-$_release-texmf"

# One subpackage and doc package per collection. All collections are packed
# by the _subpkg function, which will based on the subpkgname pack both the
# srcfiles and runfiles into the subpkg folder, but also copy the docfiles
# into the -doc subpackage folder. This avoids searching the package twice
# in the db. The split function for the -doc subpackages will then only
# compress the man pages.
for collection in $_collections; do
	# the runfiles and srcfiles go in here
	subpackages="$subpackages $pkgname-$collection:_subpkg"
	# the man pages go in here
	subpackages="$subpackages $pkgname-$collection-doc:_subpkgdoc:noarch"
	# the other documentation goes in here
	subpackages="$subpackages $pkgname-$collection-examples:_subpkgexamples:noarch"

	# For each language collection, we have a chunk of the hyphenation
	# configuration that we need to provide for the texlive trigger.
	case $collection in
	lang?*)
		source="$source 10-$collection.dat 10-$collection.dat.lua 10-$collection.def"
		;;
	esac
done

_tlpdb="$builddir/texlive-$pkgver.tlpdb"

_tlpdb_get_values() {
	local pkg
	local key
	pkg="$1"
	key="$2"

	awk \
		"/^name $pkg\$/,/^$/{if(/^$key /) print substr(\$0, length(\"$key\") + 2)}" \
		"$_tlpdb"
}

_tlpdb_write_pkgsnip() {
	local pkg
	pkg="$1"
	local snip
	snip="$2"

	awk \
		"/^name $pkg\$/,/^\$/{print \$0}" \
		"$_tlpdb" > "$snip"
}

_tlpdb_get_xfiles() {
	local pkg
	local type
	snip="$1"
	type="$2"

	awk \
		'/^'"$type"'files size=[0-9]*$/ {flag=1; next} flag && /^ texmf-dist/ {print $1; next} flag && !/^ / {exit}' \
		"$snip"
}

_tlpdb_get_docfiles() {
	_tlpdb_get_xfiles "$1" doc
}

_tlpdb_get_datafiles() {
	_tlpdb_get_xfiles "$1" run
	_tlpdb_get_xfiles "$1" src
}

_tlpdb_get_collections() {
	awk \
		'/^name collection-([a-z0-9_-]+)$/{print substr($0, 17)}' \
		"$_tlpdb"
}

_pack_collection() {
	local collection
	local datadir
	local deps
	local pkgsnip
	pkgsnip="$(mktemp)"
	collection="$1"
	datadir="$2"
	docdir="$3"
	examplesdir="$4"
	deps="$(_tlpdb_get_values "collection-$collection" "depend")"

	for dep in $deps; do
		case "$dep" in
		collection-basic)
			# All subpackages already depend on texmf-dist
			;;
		collection-*)
			local actualdep
			actualdep="texmf-dist-${dep#collection-}"
			msg "Injecting dependency to $actualdep"
			depends="$depends $actualdep"
			;;
		*)
			msg "Adding $dep"
			# writing part of DB for current package into temporary file, so
			# that when parsing metadata from it we do not need to search the
			# whole DB again.
			_tlpdb_write_pkgsnip "$dep" "$pkgsnip"
			local paths
			paths="$(_tlpdb_get_datafiles "$pkgsnip")"
			for path in $paths; do
				mkdir -p "$datadir/usr/share/$(dirname "$path")"
				mv "$builddir/$path" "$datadir/usr/share/$path"
			done
			paths="$(_tlpdb_get_docfiles "$pkgsnip")"
			for path in $paths; do
				case "$path" in
				texmf-dist/doc/man/*.pdf)
					# all man pages are provided twice, one as PDF and once
					# as troff. Since they are identical content-wise, we only
					# pack the smaller troff file
					;;
				texmf-dist/doc/man/*.1)
					mkdir -p "$docdir/usr/share/man/man1"
					mv "$builddir/$path" "$docdir/usr/share/man/man1/${path##*/}texmf-dist"
					;;
				texmf-dist/doc/man/*.5)
					mkdir -p "$docdir/usr/share/man/man5"
					mv "$builddir/$path" "$docdir/usr/share/man/man5/${path##*/}texmf-dist"
					;;
				*)
					mkdir -p "$examplesdir/usr/share/$(dirname "$path")"
					mv "$builddir/$path" "$examplesdir/usr/share/$path"
					;;
				esac
			done
			;;
		esac
	done

	rm -f "$pkgsnip"
}

prepare() {
	ln -s "../install-tl-$_release" install-tl
	# Copy rather link the TeXlive pkg db it so that we can patch it.
	cp "../texlive-$pkgver.tlpdb" ./

	default_prepare

	# Don't install a pre-compiled binaries. The source code is distributed
	# along the pre-compiled binaries for those who need them. There are few
	# offenders with niche use cases, such as bible typesetting.
	local bin_files
	bin_files="
		texmf-dist/doc/luatex/opbible/txs-gen/mod2tex
		"

	for bin_file in $bin_files; do
		local escaped_path
		escaped_path="${bin_file//\//\\/}"
		sed -e "/^ $escaped_path\$/d" \
			-i "$_tlpdb"
	done

	# Script files with a shebang should be executable. Fix this, where
	# needed.
	# shellcheck disable=SC3045 # Not caring about dash compatibility here
	find . \
		-type f \
		\( -name '*.sh' -o -name '*.py' -o -name '*.lua' -o -name '*.perl' \) \
		-print0 \
		| while IFS= read -r -d '' scriptfile; do

		if head -n 1 "$scriptfile" | grep -Eq '^#!/(|usr/)bin'; then
			chmod +x "$scriptfile"
		fi
	done
}

check() {
	# there are no unit tests, but we check if the subpackages do still
	# match the list of collections in the tlpdb
	local collections
	collections="$(_tlpdb_get_collections)"

	for collection in $collections; do
		case "$collection" in
		basic)
			# no subpackage for basic, the basic collection goes into the root
			# package instead
			;;
		texworks)
			# windows-only package
			;;
		wintools)
			# windows-only package
			;;
		*)
			case "$subpackages" in
			*"texmf-dist-$collection"*)
				# collection in subpackages, everything fine
				;;
			*)
				echo "subpackage \"texmf-dist-$collection\" missing"
				return 1
			esac
			;;
		esac
	done
}

package() {
	_pack_collection "basic" "$pkgdir" "${pkgdir%/}-doc" "${pkgdir%/}-examples"

	# install tlpkg parts needed for texconfig
	mkdir -p "$pkgdir"/usr/share/tlpkg
	mv "install-tl/tlpkg/TeXLive" \
		"$pkgdir"/usr/share/tlpkg/

	mkdir -p "$pkgdir/usr/share/texmf-dist/tex/generic/config/lang.d"
	local ext
	for ext in def dat dat.lua; do
		rm "$pkgdir/usr/share/texmf-dist/tex/generic/config/language.$ext"
		cp "$srcdir/00-preamble.$ext" \
			"$pkgdir/usr/share/texmf-dist/tex/generic/config/lang.d/"
		cp "$srcdir/90-epilog.$ext" \
			"$pkgdir/usr/share/texmf-dist/tex/generic/config/lang.d/"
	done
}

_subpkg() {
	local collection
	collection="${subpkgname#texmf-dist-}"
	pkgdesc="texmf-dist: $(_tlpdb_get_values "collection-$collection" shortdesc)"
	depends="texmf-dist"

	case "$collection" in
	bibtexextra)
		local biblatexver
		biblatexver="$(gawk 'match($0, /\\def\\abx@version{([0-9]+\.[0-9]*)}/, arr) {print arr[1]}' "$builddir/texmf-dist/tex/latex/biblatex/biblatex.sty")"
		provides="biblatex=$biblatexver.$pkgver-r$pkgrel"
		;;
	lang*)
		mkdir -p "$subpkgdir/usr/share/texmf-dist/tex/generic/config/lang.d"
		local ext
		for ext in def dat dat.lua; do
			cp "$srcdir/10-$collection.$ext" \
				"$subpkgdir/usr/share/texmf-dist/tex/generic/config/lang.d/"
		done
	esac

	_pack_collection "$collection" "$subpkgdir" "${subpkgdir%/}-doc"  "${subpkgdir%/}-examples"
}

_subpkgdoc() {
	local base
	base="${subpkgname%-doc}"
	local collection
	collection="${base#texmf-dist-}"
	# We cannot use default_doc, as this does not work for subpackges
	pkgdesc="texmf-dist: $(_tlpdb_get_values "collection-$collection" shortdesc) (man pages)"
	depends=""
	install_if="docs ${subpkgname%-doc}=$pkgver-r$pkgrel"

	# compress man pages, if the doc packages contains some uncompressed ones
	if [ -d "$subpkgdir"/usr/share/man ]; then
		find "$subpkgdir"/usr/share/man -type f ! -name "*.gz" \
			-exec gzip -9 {} \;
	fi

	mkdir -p "$subpkgdir"
}

_subpkgexamples() {
	local base
	base="${subpkgname%-examples}"
	local collection
	collection="${base#texmf-dist-}"
	pkgdesc="texmf-dist: $(_tlpdb_get_values "collection-$collection" shortdesc) (examples and documentation)"
	depends="$base $base-doc"

	mkdir -p "$subpkgdir"
}

_most() {
	pkgdesc="TeX Live texmf distribution including most packages"
	# everything but texmf-dist-lang* and texmf-dist-fontsextra
	depends="$pkgname"

	for collection in $_collections; do
		case "$collection" in
		lang*)
			;;
		basic)
			;;
		fontsextra)
			;;
		*)
			depends="$depends texmf-dist-$collection"
			;;
		esac
	done
	mkdir -p "$subpkgdir"
}

_lang() {
	pkgdesc="TeX Live texmf distribution: Additional languages"
	depends="$pkgname"

	for collection in $_collections; do
		case "$collection" in
		lang*)
			depends="$depends texmf-dist-$collection"
			;;
		esac
	done
	mkdir -p "$subpkgdir"
}

_examples() {
	pkgdesc="$pkgdesc (examples and doc)"
	depends="$pkgname $pkgname-doc"

	mkdir -p "$subpkgdir"
}

_full() {
	pkgdesc="Full TeX Live texmf distribution"
	depends="$pkgname-most $pkgname-lang $pkgname-fontsextra"
	mkdir -p "$subpkgdir"
}

_full_examples() {
	pkgdesc="All examples and documentation for the TeX Live texmf distribution"
	depends="$pkgname-examples"
	for collection in $_collections; do
		depends="$depends $pkgname-$collection-doc $pkgname-$collection-examples"
	done
	mkdir -p "$subpkgdir"
}

_most_examples() {
	pkgdesc="Examples and documentation for texmf-dist-most"
	# everything but texmf-dist-lang* and texmf-dist-fontsextra
	depends="$pkgname"

	for collection in $_collections; do
		case "$collection" in
		lang*)
			;;
		basic)
			;;
		fontsextra)
			;;
		*)
			depends="$depends texmf-dist-$collection-doc texmf-dist-$collection-examples"
			;;
		esac
	done
	mkdir -p "$subpkgdir"
}

sha512sums="
32d65b59e8ee334c301e1d918d7e3c8fa7c9be1d0a367331a76c658082200cd95f7318ce857c192f08bd9c1fcc1b31d4350f4ae0b59ec493565711fb06148830  texlive-20240312-texmf.tar.xz
d86fcf4a4d6a42d8236aded827175d764835f54fa5eefcb74641b35e53fdbc439fdbf7ada3a1baa88c62c2a7b9d683099aecbb77ef694bf9df5fccca7d1277d6  tlpkg-2024.0.tar.gz
2b419f95abeb6a061aa4c8f4a3b480611fbd1ca5e0acf7e9176e53c64c3a6709df1a3771c7e898b4e24ddccfaa0e98e3455c442e28477a5028a74f6fd8d536c9  texlive-2024.0.tlpdb
f4b3d3417683d811aaaae33556e5caf5c7c88bf0a4dd0503764c4c82907ae491f11d2082345ed1be0e1c294b4b2086e0d823ac60bf1e1dacaceb642ef9f53e45  00-preamble.dat
3e915e6ce1d04bb3c422c93a82fe024c4f34c392acbd624493e4a1cbc11c301e254509edbc681c0575cb4a4f01b3005acc0cc869b114d27dfe8ad2eeef5279bd  00-preamble.dat.lua
9d08eba635cba7a7931609a63330f132617853d5a02e83048d1ed837a145bfd364ae043f7c585ebdc677f3ad33e455d702ade171b1ba084d583f6d572f92683a  00-preamble.def
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  90-epilog.dat
d7ec3c9184e21b059635a5056b00d43422f35419d1034c5021630ba19dbcdf2533fbce0b4611f491be2c4e3d78522059a9165c48130b2a9eb6ec75e6598cba31  90-epilog.dat.lua
09ccff6997da32d88a2c785aaee932053be20a81f6870b6dd1a7c5db6d82f499e0e4c6339ffbbcbfe39133a22624b049b828d9d5cfc3ffcb528b5ea9450d5d4f  90-epilog.def
f4a071332067c5fd598110106614a5b3d4a11708d86c5483822961b05a663e39498f99223e389f5dbb57b5eb4295730b65d022e479703499c970adc6272d3a68  0001-texmfcnf.patch
1599bbe462196b21ae6ffbdb0bb971ba69011126fa5f882f0c6795715f7cde1b394a7eebe442047fa8ef4387f357cd0ebb34684c1661a0cb76b9352620f5891e  0002-fix-newtt-map.patch
90410f13d87ad3043dab32cb740dc4b386aa192ba556a6087e7c94d9120e763b063f2486fe826f86ee49f6464cbe4f516a71c43eec5a99a8760e264eb6ad45ec  0003-tlmgr.patch
33defd44d7377a0f92efb6a780a7bfbbfd97f8e010d353634f8565a3af0f36b03f6756d700846941277866bc3fa5b926393915405afaab543f866a57d80ae9d6  0004-latexmk.patch
a6ce8adfd8268b2d07684f6d87e3e4c8f07c2d8eed7f486f4095172e81555a489a8e9d3d5114c592de565b8c62a0ec85cfd1998c1df682f308bc605e2aca7d7a  10-langarabic.dat
bdc4d6a3945dad281aec486866346ba22f40f774c8b837a86f354b1cd908ddc7b774fb88724d4c6baf477bc3a6451781f42a7a3cec613784729a921afff5a235  10-langarabic.dat.lua
e361f1a14ecf90376cc584067616ed5ed157279e7b028549f1624825c2739db46796ab19d002a8d47098a647f8769270a8d4eb51ded737147774a8d0584fffa6  10-langarabic.def
90e1ca847014cfa50c63a2d947f8b59e38c7fc0d972d46d50f2677ad9faba1ae54f0060d6af603aab6e70844be466915b79b5641cd63f539a444021558273384  10-langchinese.dat
e2713c98277a54d4b5fba9ab14ed204681b0a74ac0d30c4958353936772cdb9df55b5a8839d94b3ac79f1f69a37919d2d786d29df46915ba272717147feb6545  10-langchinese.dat.lua
86e3646bcd19586cbb4f2a5b748c60c1b87f45320483cf43efd1c259729daca112ddbdfcb6819177e0b8500d210987bf6b894ee9bacdf016bdaad955467e82e6  10-langchinese.def
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langcjk.dat
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langcjk.dat.lua
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langcjk.def
78965fa1bc6de33854fa9ac1ab4439488756c4bc51ff9a1870bd3a7e2adfe56c0f49849ff84d52645e9a07aa96a48780750d1dd3b710c17bcbc982019b650fdc  10-langcyrillic.dat
b63993af7579c13d2e5bdaedab1bc7a796e089f7b9d9abc903b4babd310371afbcf6afb91cd43dbd62080455eff15dfc0799b097729fa87a55cd94e260ff25b0  10-langcyrillic.dat.lua
d58678b00a9f981deeef70a8d3bcd093c17fe641e62ceb22a0ddbb9e592efdbd705fa88793b504ce581efe87070be8296c523491fe5a81829aad64ea4f960c01  10-langcyrillic.def
aebefe877bb5a233d5ce6cd2e8bd62a53fd49e0bf39cd0590bddac7eaee804b9012f612e7f28fd55f5975fbe876d5ece748cbfd015fabdfe884af674cf1e062b  10-langczechslovak.dat
04eca7e0f51b7473ecbcfbd1a1f5f87b47000ded65584464efbba65a1dbce6059d7146a8f1b5cbbf7eecc54deb83b3a4fe36bbeff910159e63f40ccff02c7f84  10-langczechslovak.dat.lua
48ab3e9edb73b76663c79a603f53672230fd281bf9014944101d111acd95fa8ab2154e5b1cba636acc876adc54e2fddf5b23187a7b2a456244795bf2d0dad3e4  10-langczechslovak.def
94e0cafafa4d555f41da51f28cc15a18e7a0599cfc79e3d07d8252c7dd890a7394f6b14b7f409327bb16dbe4d8d3bf41abc14901d67bf8b3620319a538035cc8  10-langenglish.dat
e373a1dea296f801d2088abff6c2b6ff467eb8b0616c5e1c04364444997ae1b66308872180d1dc9d33f4bc8dec9cd3dd83bf9609e960d5fd8ca07688f52bd705  10-langenglish.dat.lua
4d43421cfe465f88ce62532149c6b5218fb45d1fb173caed96799dc03ec1088ee86f210dccf8f4ac508ed1f01c7317af5b40436485595e89a5cf8b38dcd78547  10-langenglish.def
21e707f78a561ce2c6eca73bda4645e0f7478dab442c6c09d4c7b2e477bbcb62b69f9a33bf335eae884158fdfd4f9f49502a2b8f6618df7f0c350dbf71c0fa87  10-langeuropean.dat
060e8e2913730757407c0700c61df7531ca10dcc972e6b25621bb47b091d4cdfe5ecdfba8e3e0e072ac8564b8ec387318e2642a215e0b7b8620b5001eb4dd7e7  10-langeuropean.dat.lua
61877a7649ac61f04b548ad0332e366dfd2eefeab042302f6e82b8a2c9dbeec3f21bec087543bf20c70dced714f6a3d3fafb751bf6e6cdc58f6e052444faad41  10-langeuropean.def
acf6133d7574c12c9918d0ce59d8f23d7c2b177b711ba957fd7ceba5ba4ad68080df09ed065988dc08fa11b8208007bd7720b2b019250cc1e46ab62da9c79002  10-langfrench.dat
3ae6c6bee1ee65c40a89eadac34e3155e179da96a323deb3366a924b7101ddfe5c456741f63a40e692737a5a1237254a323830e4f760454e67145c2f34641e63  10-langfrench.dat.lua
5cf0c6fa3dfcbb4bac150a9901c69933b415583781c1cb2e702742b0c0a42aacb1b830acc4a92c51fb42fa8e50044da604b739c6f997be66dd98de7eecec7243  10-langfrench.def
8d634a3cff53bb5d87aaadd7e990fb79a356e959a47a6e6182543db3d53f99b3cbe09f81f2ef9dc7915ba402107c0709699ab2cceb850b2bc86f96b566808f73  10-langgerman.dat
e44c5f7a9d23c66aea1333cb7bb2e94bd84f357cc2d73939c079a930bc8b7b144b551cb6b229b771d48ffbc591c6c105a66e484dc98c077163f6deef616c684b  10-langgerman.dat.lua
cc33cf0ad6f56eeee5bf9dbed21af2bf3f15450d01afc30fcf537835fb506b45f1e82db45928b773e96b92006ea82d52ccd4dbc0b436fd9efe2e15fd93c2657d  10-langgerman.def
6fe9f0a895390e107ed21ecfab5dff8fe17a63fa5aeb2432d62f4d595cb662dbae989cdc43afa82e0d4d9dd7534159e4e95a45dea5d75d0c1d6f855323674a5d  10-langgreek.dat
20909ae1de80b5a373de0b433522f53022d878a75633228edf4b5c324b06451a15c4072acf10c3054126903f471f9c12270424e879ec2ad7ccc2c6ac40656fe1  10-langgreek.dat.lua
4346203966fb6a239be817d3412fbc4d168603fc57907f884f3aa851910f99ce5226ea899f20667eecb9f596c26d11460c016ede752f97c4d2f7fd2260f68d73  10-langgreek.def
b4074f8b7844cfbf78fe75708809ea4bc656ba2e22c22b6659df2cc53d367670d954c69654eeacc66ad582e1aac1b24c1e011d49960b4876c9ac8929510fac6e  10-langitalian.dat
3aefbe8aa86626675df4c987bbe6b3a2dc7c479d0912f33c9d96875172c6efa8c6d7df26494fe43656b5fe12bd8e37a59d6a2fe99f02792905730a3d22211ad8  10-langitalian.dat.lua
7e5826380e770af6ff485d1fe6443d642c4be81e70f0712f8c01c9bf9ba7bd7b5a6379e05e4cde62c4cfeecb630679427f51b04482759b3202a7833050044646  10-langitalian.def
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langjapanese.dat
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langjapanese.dat.lua
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langjapanese.def
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langkorean.dat
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langkorean.dat.lua
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e  10-langkorean.def
0756fc63c88bb38b422519699c2b01dbdd1844755d6146f3288de44673d1d7a7d4521af2b18e0bde2ee1bf87b75c0ba662948a1c1bc175faa3380dd5a7225369  10-langother.dat
f48c961099d3e2bfe0de01dcc5b37344c4c585bc752f741f7456798c9ae3398e94224bc1ae9925f5c752ef30f404854e418fd78988d46e978362cc5c4a2e3599  10-langother.dat.lua
ebe7d4d93231e177bcb6ad507689c2e7955e047d8313221c17da2076af437d10c3d3c975b50aeaf6ce98d7dcf22afb4762d76708cc31ffdde371a3ff8da32f08  10-langother.def
6a696a5e1d455889828f4f2cd65109269c5aa6ffae71d54f635577f1a83fd7a0a7e04fd80be4c921f70aece5e0937baee45ac405a3d9860f6f5032c190218f0c  10-langpolish.dat
662d9dee05a87aebc10c4cad738daabce9fa1ec6b54000b115903203239b261113bc4ba4f27d79b96bfe5a579d747b65873bd0c40e5687798d7bd3b2c50c1a1f  10-langpolish.dat.lua
989afebf39140873601d02f501b4ff07aba277598d9fa41a25e46037aba599736351b982640ae9de9be36728a6c668e6e19b5024a130bfbe88762c8c64aa29ee  10-langpolish.def
2d8378244338634504d7a64afc0aeba95f110ea6d26673fde1802a2bc87ba7ae1058dc8a41b5a00df6539789e1c36e4f3e5e4e6a292d93daa3c9aff0fb80fca3  10-langportuguese.dat
0680f8150ba23688bcc6322ac80536e35a21c3f3d1e9e242b033b6d9f3a4b15a4e29c7bb8e9a92f6f26323e06f7a2020243fc0872859b9a06329c68c0a90dbef  10-langportuguese.dat.lua
57760ccf4a97555cdfbaa3bdc4c9d04a4c178e54c4bd7986b9ac329fda822ed9329fa8e8813f15601981f27daeccd698aef145f6f6952fd34e4f097fcac4457c  10-langportuguese.def
040416ad1fb266651d9aee60823d50efb482ba6aab466de6788a64198a9f1308256753219cb4fe43030d8f9c8f7196fed5a816157052a130051b6a817c33aeb9  10-langspanish.dat
788d492e3c2e2ffc5a0fbc08bf418c8aadc194340968726ede321b7dbefa18ddd7d8a9864e828ad04f036c1a30de099d0ad8a2f9bc2f85ff4560c7664b70c5ef  10-langspanish.dat.lua
9621573b42e209c9309e25742a5d336149f13996ad0bd53d9753f6d46c6c6189c47e56e824aa6075a88390db0a9be1ee7cc8f145b8f72ab9da86a296dd9f798c  10-langspanish.def
"
