diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-01-12 18:06:34 -0500 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-01-12 18:06:34 -0500 |
commit | 330c0a9ff2e05b86f69f0209b3265cb003e0c98d (patch) | |
tree | 34cccc67370ca8d178c21556bc6c6a894bef1f84 /libre/iceweasel-libre/PKGBUILD | |
parent | 3a5380856fae97f3358dc00522656c9f1fc26187 (diff) | |
parent | dc26483bfd644bb2ad6dd25e3bb5ca9e2bbe1099 (diff) |
Merge branch 'wip-merge'
Conflicts:
libre/dpkg/PKGBUILD
libre/iceweasel-i18n/PKGBUILD
libre/iceweasel-libre/PKGBUILD
Diffstat (limited to 'libre/iceweasel-libre/PKGBUILD')
-rw-r--r-- | libre/iceweasel-libre/PKGBUILD | 480 |
1 files changed, 359 insertions, 121 deletions
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD index 581a0c00b..4dc30c9ad 100644 --- a/libre/iceweasel-libre/PKGBUILD +++ b/libre/iceweasel-libre/PKGBUILD @@ -1,168 +1,406 @@ -# Contributor (ConnochaetOS): Henry Jensen <hjensen@connochaetos.org> +# Maintainer: Márcio Silva <coadde@lavabit.com> # Contributor (Parabola): Luke Shumaker <lukeshu@sbcglobal.net> -# Contributor: Figue <ffigue at gmail> # Contributor (Parabola): fauno <fauno@kiwwwi.com.ar> # Contributor (Parabola): vando <facundo@esdebian.org> # Contributor (Parabola): André Silva <emulatorman@lavabit.com> -# Contributor (Parabola): Márcio Silva <coadde@lavabit.com> + +# Maintainer (ConnochaetOS): Henry Jensen <hjensen@connochaetos.org> + +# Maintainer (Arch) : Ionut Biru <ibiru@archlinux.org> # Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com> + +# Contributor: Figue <ffigue at gmail> # Thank you very much to the older contributors: # Contributor: evr <evanroman at gmail> -# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com> +# Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com> + +lowercase() { tr A-Z a-z <<<"$*"; } + +# Version Configuration ############################################## _pgo=false -# We're getting this from Debian Experimental _debname=iceweasel -_debver=17.0.1 -_debrel=2 -_debrepo=http://ftp.debian.org/debian/pool/main/ -debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } - -_pkgname=iceweasel -pkgname=iceweasel-libre -pkgver=$_debver.$_debrel +_debver=18.0 +_debrel=1 +_debrepo=http://ftp.debian.org/debian/pool/main + +# locales can be easily generated by running +# $ sed -rn 's/.*-l10n-([^.]*)\..*/\1/p' src/*.dsc | sort -u +_locales=(ach af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gu-IN he hi-IN hr hu hy-AM id is it ja kk km kn ko ku lg lij lt lv mai mk ml mr nb-NO nl nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta-LK ta te th tr uk vi zh-CN zh-TW zu) + +pkgbase=iceweasel +pkgname=(iceweasel-libre) +for locale in "${_locales[@]}"; do + pkgname+=("iceweasel-libre-l10n-$(lowercase ${locale})") +done +pkgver=${_debver}.${_debrel} pkgrel=1 -if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi -if $_pgo; then - pkgname+='-pgo' +###################################################################### + +debfile() { echo "${_debrepo}/${1:0:1}/${1%_*}/${1}"; } + +if [[ -z $pkgbase ]]; then pkgbase=$pkgname; fi +if $_pgo; then pkgname+='-pgo'; fi +if [ "$pkgbase" != "$pkgname" ]; then + provides+=("$pkgbase=$pkgver") + conflicts+=("$pkgbase") fi -pkgdesc="A libre version of Debian Iceweasel, the Browser based on Mozilla Firefox." -arch=('i586' 'i686' 'x86_64' 'mips64el') -license=('GPL2' 'MPL' 'LGPL') -depends=('alsa-lib' 'dbus-glib' 'desktop-file-utils' 'gtk2' 'hicolor-icon-theme' 'hunspell' 'libevent' 'libnotify' 'libvpx' 'libxt' 'mime-types' 'mozilla-common' 'mozilla-searchplugins' 'nss>=3.13.1' 'sqlite3' 'startup-notification') -makedepends=( 'autoconf2.13' 'diffutils' 'imagemagick' 'libidl2' 'librsvg' 'libxslt' 'mesa' 'pkg-config' 'python2' 'quilt' 'unzip' 'wireless_tools' 'zip') -[ "$CARCH" != "mips64el" ] && makedepends+=('yasm') +pkgdesc="A libre version of Debian Iceweasel, the web browser based on Mozilla Firefox." +arch=( + 'i686' + 'mips64el' + 'x86_64' +) +license=( + 'GPL2' + 'LGPL' + 'MPL' +) +depends=( + 'alsa-lib' + 'dbus-glib' + 'desktop-file-utils' + 'gtk2' + 'hicolor-icon-theme' + 'hunspell' + 'libevent' + 'libnotify' + 'libvpx' + 'libxt' + 'mime-types' + 'mozilla-common' + 'mozilla-searchplugins' + 'nss>=3.14.1' + 'sqlite' + 'startup-notification' +) +makedepends=( + 'autoconf2.13' + 'diffutils' + 'dpkg-devtools' + 'imagemagick' + 'imake' + 'libidl2' + 'librsvg' + 'libxslt' + 'mesa' + 'python2' + 'unzip' + 'zip' +) +[[ $CARCH != mips64el ]] && makedepends+=('yasm') if $_pgo; then makedepends+=('xorg-server-xvfb') - options=(!ccache) -fi - -url="http://www.geticeweasel.org/" -install=iceweasel.install -source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2" - "$_debrepo/`debfile $_debname`_$_debver-$_debrel.debian.tar.gz" - mozconfig - mozconfig.pgo - libre.patch - iceweasel.desktop - iceweasel-install-dir.patch - vendor.js - shared-libs.patch - Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch) -md5sums=('37b9b7eafc8affa9b8a5942f8ff19f8f' - '062bbd20d1de7e01e8e11667c24de960' - 'eab149c1994ab14392e55af3abb08e80' - 'ac29b01c189f20abae2f3eef1618ffc0' - 'c8040002668fae7d1b950833bae51607' - '2823e0ecdefc16b590a9997f9228924a' - 'abf5ecb74caa857abb42bcfbb3442d9c' - '0d053487907de4376d67d8f499c5502b' - '52e52f840a49eb1d14be1c0065b03a93' - '65f68090d2a69b467bd2707d0c4ea3bd') - -if [ "$_pkgname" != "$pkgname" ]; then - provides+=("$_pkgname=$pkgver") - conflicts+=("$_pkgname") + options+=(!ccache) fi +optdepends=('networkmanager: Location detection via available WiFi networks') +url="http://packages.debian.org/source/experimental/$_debname" +install=firefox.install +options=(!emptydirs) +source=($(debfile ${_debname}_${_debver}-${_debrel}.dsc) + $(debfile ${_debname}_${_debver}-${_debrel}.debian.tar.gz) + $(debfile ${_debname}_${_debver}.orig.tar.bz2) + $(debfile ${_debname}_${_debver}.orig-compare-locales.tar.bz2) + $(for locale in "${_locales[@]}"; do debfile ${_debname}_${_debver}.orig-l10n-${locale}.tar.bz2; done) + replace-urls.txt libre.patch mozconfig.pgo + mozconfig $pkgbase.desktop iceweasel-install-dir.patch vendor.js shared-libs.patch + bug677092.patch) +# use dpkg-source to extract everything +noextract=(); for file in "${source[@]}"; do noextract+=("${file##*/}"); done -build() { - export QUILT_PATCHES=debian/patches - export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index' - export QUILT_DIFF_ARGS='--no-timestamps' - export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$_pkgname" - export PYTHON="/usr/bin/python2" - export DEBIAN_BUILD="mozilla-release" - mv debian "$srcdir/$DEBIAN_BUILD" - cd "$srcdir/$DEBIAN_BUILD" - - # Doesn't apply and seems unimportant - rm -v debian/patches/l10n/Place-google-and-gmail-before-yandex.patch || true +# This is a bug, we should fix it. +mips64el-prepare() { + # Fix MIPS N32 support. + sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \ + js/src/assembler/wtf/Platform.h + # Disable JIT. + sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \ + js/src/assembler/wtf/Platform.h + sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.in +} +misp64el-configure() { + echo 'ac_add_options --disable-methodjit' >> .mozconfig + echo 'ac_add_options --disable-tracejit' >> .mozconfig + echo 'ac_add_options --disable-jemalloc' >> .mozconfig +} - # This patch doesn't works in some parts due that has patches for others locales languages, source code hasn't it - rm -v debian/patches/debian-hacks/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch || true +prepare() { + if [[ -d "/usr/lib/$pkgbase" ]]; then + error "Because of how rpath is set, this package cannot be installed during build" + return 1 + fi + dpkg-source -x ${_debname}_${_debver}-${_debrel}.dsc mozilla-release + cd mozilla-release - quilt push -a + patch -Np1 -i ../iceweasel-install-dir.patch + patch -Np1 -i ../shared-libs.patch - patch -Np1 -i "$srcdir/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch" # Adding fixed Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch - patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname - patch -Np1 -i "$srcdir/libre.patch" - patch -Np1 -i "$srcdir/shared-libs.patch" + # Back out https://bugzilla.mozilla.org/show_bug.cgi?id=677092 + # in order to fix https://bugzilla.mozilla.org/show_bug.cgi?id=818468 + patch -Rp1 -i ../bug677092.patch - cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch - - if $_pgo; then - cat "$srcdir/mozconfig.pgo" >> .mozconfig - fi + # Replace common URLs + sed '/^#/d' ../replace-urls.txt | while read -r moz_url gnu_url; do + if [[ -n $moz_url ]]; then + printf 'liberating: %s -> %s\n' "$moz_url" "$gnu_url" + grep -Erl "${moz_url}" \ + --exclude='*.'{patch,orig,rej} \ + --exclude-dir={.pc,test,tests,testing} \ + | xargs -d '\n' --no-run-if-empty sed -ri "s<${moz_url}<${gnu_url}<g" + fi + done - # From js on abslibre-mips64el.git - if [ "$CARCH" = "mips64el" ]; then - msg "Force disabling JIT." - sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \ - js/src/assembler/wtf/Platform.h - sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.{in,ref} + # Liberate the locales + printf '%s\n' l10n-*/*/searchplugins/*.xml \ + | grep -Ev 'creativecommons|wikipedia|wikipediaro|wiktionary' \ + | xargs -d '\n' rm -f + for dir in l10n-*/*/searchplugins; do + pushd "$dir" + ls | sed -n 's/\.xml$//p' > list.txt + popd + done + find l10n-* -name 'region.properties' -delete - echo "ac_add_options --disable-methodjit" >> .mozconfig - echo "ac_add_options --disable-tracejit" >> .mozconfig - fi + # Patch anything that's left + patch -Np1 -i ../libre.patch # Fix PRE_RELEASE_SUFFIX sed -i '/^PRE_RELEASE_SUFFIX := ""/s/ ""//' \ browser/base/Makefile.in - # This is a bug, we should fix it - if [ "$CARCH" = "mips64el" ]; then - # Fix MIPS N32 support. - sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \ - js/src/assembler/wtf/Platform.h - # Disable JIT. - sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \ - js/src/assembler/wtf/Platform.h - sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.in - echo 'ac_add_options --disable-methodjit' >> .mozconfig - echo 'ac_add_options --disable-tracejit' >> .mozconfig - echo 'ac_add_options --disable-jemalloc' >> .mozconfig + if [[ $CARCH == mips64el ]]; then mips64el-prepare; fi + + touch "$srcdir/.makepkg-prepare" +} + +build() { + [[ -f "$srcdir/.makepkg-prepare" ]] || { prepare || return $?; cd "$srcdir"; } + cd "$srcdir" + build_browser + for locale in "${_locales[@]}"; do + cd "$srcdir" + build_locale "${locale}" + done +} + +build_browser() { + cd mozilla-release + + cp ../mozconfig .mozconfig + if $_pgo; then cat ../mozconfig.pgo >> .mozconfig; fi + if [[ $CARCH == mips64el ]]; then mips64el-configure; fi + + # WebRTC build tries to execute "python" and expects Python 2 + # Workaround taken from chromium PKGBUILD + mkdir "$srcdir/python2-path" + ln -s /usr/bin/python2 "$srcdir/python2-path/python" + export PATH="$srcdir/python2-path:$PATH" + + export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$pkgbase" + export PYTHON="/usr/bin/python2" + export MOZ_MAKE_FLAGS="$MAKEFLAGS" + unset MAKEFLAGS + + if $_pgo; then + export MOZ_PGO=1 + export DISPLAY=:99 + Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY & fi + _fail=0 + make -f client.mk build || _fail=1 + if $_pgo; then - LD_PRELOAD="" /usr/bin/Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 :99 & - LD_PRELOAD="" DISPLAY=:99 make -j1 -f client.mk profiledbuild MOZ_MAKE_FLAGS="$MAKEFLAGS" kill $! || true - else - LD_PRELOAD="" make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS" fi + return $_fail +} + +build_locale() { + locale=$1 + cd mozilla-release + + export PYTHON="/usr/bin/python2" + export PRODUCT='browser' + + # This is an adaptation of the "$(L10N_BUILD_STAMPS)" rule from debian/rules + [[ -e l10n ]] || mkdir -p l10n + [[ -e l10n/$locale ]] || ln -sf ../l10n-$locale l10n/$locale + ${PYTHON} config/pythonpath.py -I$(pwd)/compare-locales/lib \ + $(pwd)/compare-locales/scripts/compare-locales \ + -m $(pwd)/moz-objdir/l10n-$locale ${PRODUCT}/locales/l10n.ini $(pwd)/l10n $locale + make -C moz-objdir/${PRODUCT}/locales langpack-$locale \ + L10NBASEDIR=$(pwd)/l10n MOZ_CHROME_FILE_FORMAT=flat \ + MOZ_LANGPACK_EID=langpack-${locale}@${pkgbase}.mozilla.org \ + PKG_LANGPACK_BASENAME='$(MOZ_LANGPACK_EID)' PKG_LANGPACK_PATH=xpi/ \ + LOCALE_MERGEDIR=$(pwd)/moz-objdir/l10n-$locale +} + +install-icon() { + local brandingdir=$1 prog=$2 size=$3 + local sizedir=${size}x${size} ext=png + [[ $size == scalable ]] && { sizedir=$size; ext=svg; size=''; } + + dirs=({moz-objdir/,}"$brandingdir") + files=({default,mozicon,${prog}{,_icon}}${size}.${ext}) + + for dir in "${dirs[@]}"; do + for files in "${files[@]}"; do + if [[ -e "$dir/$file" ]]; then + install -Dm644 "$dir/$file" \ + "$pkgdir/usr/share/icons/hicolor/$sizedir/apps/$prog.png" + return 0 + fi + done + done + #return 1 } -package() { - cd "$srcdir/$DEBIAN_BUILD" +package_iceweasel-libre() { + cd mozilla-release make -j1 -f client.mk DESTDIR="$pkgdir" install - install -Dm644 "$srcdir/vendor.js" "$pkgdir/usr/lib/$_pkgname/defaults/preferences" + install -Dm644 ../vendor.js "$pkgdir/usr/lib/$pkgbase/defaults/preferences/vendor.js" - # I don't even know why we're hitting the objdir, and ConnOS didn't - _brandingdir=debian/branding - brandingdir=moz-objdir/$_brandingdir - icondir="$pkgdir/usr/share/icons/hicolor" - for i in 16x16 32x32 48x48 64x64; do - install -Dm644 "$brandingdir/default${i/x*/}.png" "$icondir/$i/apps/$_pkgname.png" + for size in 16 32 48 64 128 scalable; do + install-icon debian/branding $pkgbase $size done - install -Dm644 "$brandingdir/mozicon128.png" "$icondir/128x128/apps/$_pkgname.png" - install -Dm644 "$_brandingdir/iceweasel_icon.svg" "$icondir/scalable/apps/$_pkgname.svg" - install -d "$pkgdir/usr/share/applications" - install -m644 "$srcdir/iceweasel.desktop" "$pkgdir/usr/share/applications" + install -Dm644 ../$pkgbase.desktop \ + "$pkgdir/usr/share/applications/$pkgbase.desktop" - rm -rf "$pkgdir/usr/lib/$_pkgname/"{dictionaries,hyphenation,searchplugins,plugins} - ln -sf /usr/share/hunspell "$pkgdir/usr/lib/$_pkgname/dictionaries" - ln -sf /usr/share/hyphen "$pkgdir/usr/lib/$_pkgname/hyphenation" - ln -sf /usr/lib/mozilla/plugins "$pkgdir/usr/lib/$_pkgname/plugins" - ln -sf /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$_pkgname/searchplugins" + # Use system-provided dictionaries + rm -rf "$pkgdir"/usr/lib/$pkgbase/{dictionaries,hyphenation} + ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgbase/dictionaries" + ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgbase/hyphenation" + # use mozilla-searchplugins + rm -rf "$pkgdir"/usr/lib/$pkgbase/searchplugins + ln -s /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$pkgbase/searchplugins" # We don't want the development stuff - rm -rf "$pkgdir"/usr/{include,lib/$_pkgname-devel,share/idl} + rm -r "$pkgdir"/usr/{include,lib/$pkgbase-devel,share/idl} - # Workaround for now: https://bugzilla.mozilla.org/show_bug.cgi?id=658850 - ln -sf $_pkgname "$pkgdir/usr/lib/$_pkgname/$_pkgname-bin" + #workaround for now + #https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + ln -sf $pkgbase "$pkgdir/usr/lib/$pkgbase/$pkgbase-bin" } + +package_locale() { + locale=$1 + cd mozilla-release + lang=$(sed -n "/^%define L10N_LANG ${locale}/,+1p" debian/l10n/browser-l10n.control|sed -n 's/%define L10N_LANGUAGE\s\s*//p') + pkgdesc="${lang} language package for Iceweasel-libre" + depends=("iceweasel-libre=${pkgver}") + + extdir="$pkgdir"/usr/lib/iceweasel/extensions/ + install -d "${extdir}" + install -m644 moz-objdir/dist/xpi/langpack-${locale}@${pkgbase}.mozilla.org.xpi "${extdir}" +} +for locale in "${_locales[@]}"; do + eval "package_iceweasel-libre-l10n-$(lowercase ${locale})() { package_locale ${locale}; }" +done + +md5sums=('263569a577f72314694a711cc6a0d96f' + '6a571d3a3b355c331f67d57702f4fccf' + '366e1e4847d7e00eba77ee5a4be0d3db' + '80dd4a702302fb36719c67445b487895' + 'c99d7605c0e0bb0d77e71cd54f305a9a' + '1f4aeabf6c28fcf6539d13f65f8b366b' + 'cb9cc5f721d81442f1a93d134054f23c' + 'c69e0fa169bf6c49b1f83afd2383b628' + '09f4376791d17a772c60a0308095211d' + 'a16081e4da9daf6df5f6fcce2000cec1' + '88dd4c5837485acea83e97f3cb4f1e31' + '8751f0a634656ba973c53f96d1fa34e1' + 'f4531f867e6e75501bac3d7ed5f09045' + '740667ba651f0562b45bbfe63b8ec84e' + 'a1f3637341457fb8272d126f1aa70e4b' + '3d00ad2734c890930441d6cd919f11c8' + '84b7a2bf7f1458b60e9552d04c7e84b2' + '30ce51ca764b091c59df5c08e35e8a7f' + '1291e5976c83a8cda1903e4443d44c8e' + '1eacf81985d9993b2b94f98fd4c453e0' + '07b91907c98155c1b95e5d7f47367fde' + 'cd4042405f6eaa2931021f745f49d91f' + '24f8a5d05d0d2485c30b46e6d6835330' + '1b95f32637229a86e4633994350cf76f' + 'ae6007384d85dbd14fbe6496e0b9e47b' + 'a8ef67c04d3dc263f0f58e877b13cd71' + 'b5c3b2e366aa776e574d0972df72a423' + '200f856b50a7485a1d5447cbf8dee77c' + '1767400f27cf010572308f949e56176e' + 'c6dde21438789ccf4c666afc22ee713c' + 'd202408658b9e7e7a2656dd874ac0712' + '1c463a18e2a395314f7d0ad72282d5aa' + 'ec222722f432e8a94f993c1c32cd9757' + 'cf44fd1d567a7638fc0b5b80bb0398f7' + '13151197d7ef349699e55c760c74af16' + '32c185ef506e439bb63f572906a9bf66' + '2e6b90b3c6cad17753ec1aecaf61073c' + 'dbf451ef9ecf1816973ac4dffe7e2b8e' + '85c0900fb798fb64a8883dba06deccc0' + '0efff47ab838fd320c710ffd46ee3a57' + '28e5d445e7a91ddd64d50478b05edb51' + '770dcdf1a8d6d2db64dadb6e4f6149fb' + '7732b021cdf73ace33cb41609b327f3d' + '3a195266b43e9f477619aac9c326a26b' + 'a55e22c7ab045826b331efd7c0f036ef' + '2edcd565c19828e3d4a2da19f8529edd' + '531c54a91d509e768b55bfd88a96a527' + 'ddf2182b6e33795450bf41f46e7be521' + '8bf4edabc95abbaf274ddd5e5c5db562' + '63a227dbab0e66b6a0d4804c419049e2' + '3c9bab1f629c0b079345a186c0f22afc' + '786a62179094cda5f5e831232f4f94ce' + '535f68d0cfa4dee9df0cddbee42a4c94' + 'ffc4c457dfa697162e4198e61ae19e3b' + '4476b94e676b3cfb309f972f7c42da1b' + '792700b40ba53de7de5b48187b604b29' + '7f71fa7bed8488226168406ac022d2fd' + 'fdd9a144cd2a630d1b7ab6b73315c548' + '88d668eccb111a9e4f5fde58e000a5aa' + '46509bb591bf54b6fed025814bfc11bf' + '715a3f8c2fcdab17b24ce61f55c49183' + '658226211d66a724d0335a173ef8512f' + 'ecb41c7536c95cf2ca118d7ab6b7d357' + 'b813931cfba36f3b00826ba2d36e648f' + '2a926d37294ab24a7d7dc879339ae736' + 'fba979124cd393f1164a59e3b9183ccc' + 'e8597a5af1643b9c9a0b02a3756e0a86' + '665140babab027228eb195b6c0e83d4e' + 'e71a740bfc52d25968f8e2c4c1896897' + '47bd00559728578bfc257b80c72ce393' + '3a3d846613363e6d4dd99326cd07417d' + '80daf692c2fa80ef7f528df2a6aed42e' + '25c03afb8f5086a07eb0e26c94bcbc01' + '481db49b914f33d6c594ecebbc291e4c' + '742d2af843536fc1cdc8560b5aa0620f' + '9ee935f09dc89b42db9ad8db3473717d' + 'cf3e65e4db50dfa467defb4f820cd378' + '3e0c8ea5b69c4363e40c21dda5230850' + '32b73226e95ae47dc11a554a7208d960' + '437602c23394eb02ae5fe03ca4fd29bc' + 'f7a347a3d5679d82340d227474de938f' + '1a898825183ed67ea72b67a2c3486dd4' + '73bead055152cd4885b9834691c9066a' + '722a0d2212060e2044cbac859db3e063' + 'fba01f51ac90dec18758a7468fb509e1' + '03c2a59eab8ef4ad3687b91c07f96165' + 'd502ec35e4ec26d7f538f4b96402fe9c' + 'b75b729e9ab3ff9a908115ab520339a9' + 'cd696e70fdb4f5ab9d50040abea46b82' + '1b9df937ef08b6a72ca7d659f91df099' + '17bbe91d26b302aa36391ed57199006d' + 'de6037c0a65e7b86e0929637156ba587' + 'a8fc4658d45b6bf9350023e5c3f34e56' + '8f96efe6c0257c8049bbe4bc85d42994' + 'e4cd438a0b2a42dfb14bc7716e901e5f' + '5bfaf77580b6d3ce185b4c3ad4fa30ca' + '39d8b9249c5effe5fe24d2e9f80a9a94' + '2baf8cffccd50c568ad153a709cb3136' + 'e9b4ec9a34bdab1854255aaa05e7cedd' + '52e52f840a49eb1d14be1c0065b03a93' + '23520aca140fb0dd3e1b6f21b21f591f') |