{-# LANGUAGE OverloadedStrings #-} module Network.Mime ( -- * Lookups mimeByExt , defaultMimeLookup -- * Defaults , defaultMimeType , defaultMimeMap -- * Utilities , fileNameExtensions -- * Types , FileName , MimeType , MimeMap , Extension ) where import Data.Text (Text) import qualified Data.Text as T import Data.ByteString (ByteString) import Data.ByteString.Char8 () import qualified Data.Map as Map -- | Maps extensions to mime types. type MimeMap = Map.Map Extension MimeType -- | The filename component of a filepath, leaving off the directory but -- keeping all extensions. type FileName = Text -- | Individual mime type for be served over the wire. type MimeType = ByteString -- | Look up a mime type from the given mime map and default mime type. mimeByExt :: MimeMap -> MimeType -- ^ default mime type -> FileName -> MimeType mimeByExt mm def = go . fileNameExtensions where go [] = def go (e:es) = case Map.lookup e mm of Nothing -> go es Just mt -> mt -- | @mimeByExt@ applied to @defaultMimeType@ and @defaultMimeMap@. defaultMimeLookup :: FileName -> MimeType defaultMimeLookup = mimeByExt defaultMimeMap defaultMimeType -- | Get a list of all of the file name extensions from a piece. -- -- > pieceExtensions "foo.tar.gz" == ["tar.gz", "gz"] fileNameExtensions :: FileName -> [Extension] fileNameExtensions = go . T.toLower . dropToExt where dropToExt = T.drop 1 . T.dropWhile (/= '.') go e | T.null e = [] | otherwise = e : go next where next = dropToExt e -- | Path extension. May include multiple components, e.g. tar.gz type Extension = Text -- | The default fallback mime type \"application/octet-stream\". defaultMimeType :: MimeType defaultMimeType = "application/octet-stream" -- | A default mapping from filename extension to mime type. -- -- Generated from the Apache and nginx mime.types files. defaultMimeMap :: MimeMap defaultMimeMap = Map.fromAscList [ ("123", "application/vnd.lotus-1-2-3") , ("3dml", "text/vnd.in3d.3dml") , ("3ds", "image/x-3ds") , ("3g2", "video/3gpp2") , ("3gp", "video/3gpp") , ("3gpp", "video/3gpp") , ("7z", "application/x-7z-compressed") , ("aab", "application/x-authorware-bin") , ("aac", "audio/x-aac") , ("aam", "application/x-authorware-map") , ("aas", "application/x-authorware-seg") , ("abw", "application/x-abiword") , ("ac", "application/pkix-attr-cert") , ("acc", "application/vnd.americandynamics.acc") , ("ace", "application/x-ace-compressed") , ("acu", "application/vnd.acucobol") , ("acutc", "application/vnd.acucorp") , ("adp", "audio/adpcm") , ("aep", "application/vnd.audiograph") , ("afm", "application/x-font-type1") , ("afp", "application/vnd.ibm.modcap") , ("ahead", "application/vnd.ahead.space") , ("ai", "application/postscript") , ("aif", "audio/x-aiff") , ("aifc", "audio/x-aiff") , ("aiff", "audio/x-aiff") , ("air", "application/vnd.adobe.air-application-installer-package+zip") , ("ait", "application/vnd.dvb.ait") , ("ami", "application/vnd.amiga.ami") , ("apk", "application/vnd.android.package-archive") , ("appcache", "text/cache-manifest") , ("application", "application/x-ms-application") , ("apr", "application/vnd.lotus-approach") , ("arc", "application/x-freearc") , ("asc", "text/plain") , ("asf", "video/x-ms-asf") , ("asm", "text/x-asm") , ("aso", "application/vnd.accpac.simply.aso") , ("asx", "video/x-ms-asf") , ("atc", "application/vnd.acucorp") , ("atom", "application/atom+xml") , ("atomcat", "application/atomcat+xml") , ("atomsvc", "application/atomsvc+xml") , ("atx", "application/vnd.antix.game-component") , ("au", "audio/basic") , ("avi", "video/x-msvideo") , ("aw", "application/applixware") , ("azf", "application/vnd.airzip.filesecure.azf") , ("azs", "application/vnd.airzip.filesecure.azs") , ("azw", "application/vnd.amazon.ebook") , ("bat", "application/x-msdownload") , ("bcpio", "application/x-bcpio") , ("bdf", "application/x-font-bdf") , ("bdm", "application/vnd.syncml.dm+wbxml") , ("bed", "application/vnd.realvnc.bed") , ("bh2", "application/vnd.fujitsu.oasysprs") , ("bin", "application/octet-stream") , ("blb", "application/x-blorb") , ("blorb", "application/x-blorb") , ("bmi", "application/vnd.bmi") , ("bmp", "image/bmp") , ("book", "application/vnd.framemaker") , ("box", "application/vnd.previewsystems.box") , ("boz", "application/x-bzip2") , ("bpk", "application/octet-stream") , ("btif", "image/prs.btif") , ("bz", "application/x-bzip") , ("bz2", "application/x-bzip") , ("c", "text/plain") , ("c11amc", "application/vnd.cluetrust.cartomobile-config") , ("c11amz", "application/vnd.cluetrust.cartomobile-config-pkg") , ("c4d", "application/vnd.clonk.c4group") , ("c4f", "application/vnd.clonk.c4group") , ("c4g", "application/vnd.clonk.c4group") , ("c4p", "application/vnd.clonk.c4group") , ("c4u", "application/vnd.clonk.c4group") , ("cab", "application/vnd.ms-cab-compressed") , ("caf", "audio/x-caf") , ("cap", "application/vnd.tcpdump.pcap") , ("car", "application/vnd.curl.car") , ("cat", "application/vnd.ms-pki.seccat") , ("cb7", "application/x-cbr") , ("cba", "application/x-cbr") , ("cbr", "application/x-cbr") , ("cbt", "application/x-cbr") , ("cbz", "application/x-cbr") , ("cc", "text/x-c") , ("cco", "application/x-cocoa") , ("cct", "application/x-director") , ("ccxml", "application/ccxml+xml") , ("cdbcmsg", "application/vnd.contact.cmsg") , ("cdf", "application/x-netcdf") , ("cdkey", "application/vnd.mediastation.cdkey") , ("cdmia", "application/cdmi-capability") , ("cdmic", "application/cdmi-container") , ("cdmid", "application/cdmi-domain") , ("cdmio", "application/cdmi-object") , ("cdmiq", "application/cdmi-queue") , ("cdx", "chemical/x-cdx") , ("cdxml", "application/vnd.chemdraw+xml") , ("cdy", "application/vnd.cinderella") , ("cer", "application/pkix-cert") , ("cfs", "application/x-cfs-compressed") , ("cgm", "image/cgm") , ("chat", "application/x-chat") , ("chm", "application/vnd.ms-htmlhelp") , ("chrt", "application/vnd.kde.kchart") , ("cif", "chemical/x-cif") , ("cii", "application/vnd.anser-web-certificate-issue-initiation") , ("cil", "application/vnd.ms-artgalry") , ("cla", "application/vnd.claymore") , ("class", "application/java-vm") , ("clkk", "application/vnd.crick.clicker.keyboard") , ("clkp", "application/vnd.crick.clicker.palette") , ("clkt", "application/vnd.crick.clicker.template") , ("clkw", "application/vnd.crick.clicker.wordbank") , ("clkx", "application/vnd.crick.clicker") , ("clp", "application/x-msclip") , ("cmc", "application/vnd.cosmocaller") , ("cmdf", "chemical/x-cmdf") , ("cml", "chemical/x-cml") , ("cmp", "application/vnd.yellowriver-custom-menu") , ("cmx", "image/x-cmx") , ("cod", "application/vnd.rim.cod") , ("com", "application/x-msdownload") , ("conf", "text/plain") , ("cpio", "application/x-cpio") , ("cpp", "text/plain") , ("cpt", "application/mac-compactpro") , ("crd", "application/x-mscardfile") , ("crl", "application/pkix-crl") , ("crt", "application/x-x509-ca-cert") , ("cryptonote", "application/vnd.rig.cryptonote") , ("csh", "application/x-csh") , ("csml", "chemical/x-csml") , ("csp", "application/vnd.commonspace") , ("css", "text/css") , ("cst", "application/x-director") , ("csv", "text/csv") , ("cu", "application/cu-seeme") , ("curl", "text/vnd.curl") , ("cww", "application/prs.cww") , ("cxt", "application/x-director") , ("cxx", "text/plain") , ("dae", "model/vnd.collada+xml") , ("daf", "application/vnd.mobius.daf") , ("dart", "application/vnd.dart") , ("dataless", "application/vnd.fdsn.seed") , ("davmount", "application/davmount+xml") , ("dbk", "application/docbook+xml") , ("dcr", "application/x-director") , ("dcurl", "text/vnd.curl.dcurl") , ("dd2", "application/vnd.oma.dd2+xml") , ("ddd", "application/vnd.fujixerox.ddd") , ("deb", "application/x-debian-package") , ("def", "text/plain") , ("deploy", "application/octet-stream") , ("der", "application/x-x509-ca-cert") , ("dfac", "application/vnd.dreamfactory") , ("dgc", "application/x-dgc-compressed") , ("dic", "text/x-c") , ("dir", "application/x-director") , ("dis", "application/vnd.mobius.dis") , ("dist", "application/octet-stream") , ("distz", "application/octet-stream") , ("djv", "image/vnd.djvu") , ("djvu", "image/vnd.djvu") , ("dll", "application/x-msdownload") , ("dmg", "application/x-apple-diskimage") , ("dmp", "application/vnd.tcpdump.pcap") , ("dms", "application/octet-stream") , ("dna", "application/vnd.dna") , ("doc", "application/msword") , ("docm", "application/vnd.ms-word.document.macroenabled.12") , ("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document") , ("dot", "application/msword") , ("dotm", "application/vnd.ms-word.template.macroenabled.12") , ("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template") , ("dp", "application/vnd.osgi.dp") , ("dpg", "application/vnd.dpgraph") , ("dra", "audio/vnd.dra") , ("dsc", "text/prs.lines.tag") , ("dssc", "application/dssc+der") , ("dtb", "application/x-dtbook+xml") , ("dtd", "application/xml-dtd") , ("dts", "audio/vnd.dts") , ("dtshd", "audio/vnd.dts.hd") , ("dump", "application/octet-stream") , ("dvb", "video/vnd.dvb.file") , ("dvi", "application/x-dvi") , ("dwf", "model/vnd.dwf") , ("dwg", "image/vnd.dwg") , ("dxf", "image/vnd.dxf") , ("dxp", "application/vnd.spotfire.dxp") , ("dxr", "application/x-director") , ("ear", "application/java-archive") , ("ecelp4800", "audio/vnd.nuera.ecelp4800") , ("ecelp7470", "audio/vnd.nuera.ecelp7470") , ("ecelp9600", "audio/vnd.nuera.ecelp9600") , ("ecma", "application/ecmascript") , ("edm", "application/vnd.novadigm.edm") , ("edx", "application/vnd.novadigm.edx") , ("efif", "application/vnd.picsel") , ("ei6", "application/vnd.pg.osasli") , ("elc", "application/octet-stream") , ("emf", "application/x-msmetafile") , ("eml", "message/rfc822") , ("emma", "application/emma+xml") , ("emz", "application/x-msmetafile") , ("eol", "audio/vnd.digital-winds") , ("eot", "application/vnd.ms-fontobject") , ("eps", "application/postscript") , ("epub", "application/epub+zip") , ("es3", "application/vnd.eszigno3+xml") , ("esa", "application/vnd.osgi.subsystem") , ("esf", "application/vnd.epson.esf") , ("et3", "application/vnd.eszigno3+xml") , ("etx", "text/x-setext") , ("eva", "application/x-eva") , ("evy", "application/x-envoy") , ("exe", "application/x-msdownload") , ("exi", "application/exi") , ("ext", "application/vnd.novadigm.ext") , ("ez", "application/andrew-inset") , ("ez2", "application/vnd.ezpix-album") , ("ez3", "application/vnd.ezpix-package") , ("f", "text/x-fortran") , ("f4v", "video/x-f4v") , ("f77", "text/x-fortran") , ("f90", "text/x-fortran") , ("fbs", "image/vnd.fastbidsheet") , ("fcdt", "application/vnd.adobe.formscentral.fcdt") , ("fcs", "application/vnd.isac.fcs") , ("fdf", "application/vnd.fdf") , ("fe_launch", "application/vnd.denovo.fcselayout-link") , ("fg5", "application/vnd.fujitsu.oasysgp") , ("fgd", "application/x-director") , ("fh", "image/x-freehand") , ("fh4", "image/x-freehand") , ("fh5", "image/x-freehand") , ("fh7", "image/x-freehand") , ("fhc", "image/x-freehand") , ("fig", "application/x-xfig") , ("flac", "audio/x-flac") , ("fli", "video/x-fli") , ("flo", "application/vnd.micrografx.flo") , ("flv", "video/x-flv") , ("flw", "application/vnd.kde.kivio") , ("flx", "text/vnd.fmi.flexstor") , ("fly", "text/vnd.fly") , ("fm", "application/vnd.framemaker") , ("fnc", "application/vnd.frogans.fnc") , ("for", "text/x-fortran") , ("fpx", "image/vnd.fpx") , ("frame", "application/vnd.framemaker") , ("fsc", "application/vnd.fsc.weblaunch") , ("fst", "image/vnd.fst") , ("ftc", "application/vnd.fluxtime.clip") , ("fti", "application/vnd.anser-web-funds-transfer-initiation") , ("fvt", "video/vnd.fvt") , ("fxp", "application/vnd.adobe.fxp") , ("fxpl", "application/vnd.adobe.fxp") , ("fzs", "application/vnd.fuzzysheet") , ("g2w", "application/vnd.geoplan") , ("g3", "image/g3fax") , ("g3w", "application/vnd.geospace") , ("gac", "application/vnd.groove-account") , ("gam", "application/x-tads") , ("gbr", "application/rpki-ghostbusters") , ("gca", "application/x-gca-compressed") , ("gdl", "model/vnd.gdl") , ("geo", "application/vnd.dynageo") , ("gex", "application/vnd.geometry-explorer") , ("ggb", "application/vnd.geogebra.file") , ("ggt", "application/vnd.geogebra.tool") , ("ghf", "application/vnd.groove-help") , ("gif", "image/gif") , ("gim", "application/vnd.groove-identity-message") , ("gml", "application/gml+xml") , ("gmx", "application/vnd.gmx") , ("gnumeric", "application/x-gnumeric") , ("gph", "application/vnd.flographit") , ("gpx", "application/gpx+xml") , ("gqf", "application/vnd.grafeq") , ("gqs", "application/vnd.grafeq") , ("gram", "application/srgs") , ("gramps", "application/x-gramps-xml") , ("gre", "application/vnd.geometry-explorer") , ("grv", "application/vnd.groove-injector") , ("grxml", "application/srgs+xml") , ("gsf", "application/x-font-ghostscript") , ("gtar", "application/x-gtar") , ("gtm", "application/vnd.groove-tool-message") , ("gtw", "model/vnd.gtw") , ("gv", "text/vnd.graphviz") , ("gxf", "application/gxf") , ("gxt", "application/vnd.geonext") , ("gz", "application/x-gzip") , ("h", "text/x-c") , ("h261", "video/h261") , ("h263", "video/h263") , ("h264", "video/h264") , ("hal", "application/vnd.hal+xml") , ("hbci", "application/vnd.hbci") , ("hdf", "application/x-hdf") , ("hh", "text/x-c") , ("hlp", "application/winhlp") , ("hpgl", "application/vnd.hp-hpgl") , ("hpid", "application/vnd.hp-hpid") , ("hps", "application/vnd.hp-hps") , ("hqx", "application/mac-binhex40") , ("hs", "text/plain") , ("htc", "text/x-component") , ("htke", "application/vnd.kenameaapp") , ("htm", "text/html") , ("html", "text/html") , ("hvd", "application/vnd.yamaha.hv-dic") , ("hvp", "application/vnd.yamaha.hv-voice") , ("hvs", "application/vnd.yamaha.hv-script") , ("i2g", "application/vnd.intergeo") , ("icc", "application/vnd.iccprofile") , ("ice", "x-conference/x-cooltalk") , ("icm", "application/vnd.iccprofile") , ("ico", "image/vnd.microsoft.icon") , ("ics", "text/calendar") , ("ief", "image/ief") , ("ifb", "text/calendar") , ("ifm", "application/vnd.shana.informed.formdata") , ("iges", "model/iges") , ("igl", "application/vnd.igloader") , ("igm", "application/vnd.insors.igm") , ("igs", "model/iges") , ("igx", "application/vnd.micrografx.igx") , ("iif", "application/vnd.shana.informed.interchange") , ("img", "application/octet-stream") , ("imp", "application/vnd.accpac.simply.imp") , ("ims", "application/vnd.ms-ims") , ("in", "text/plain") , ("ink", "application/inkml+xml") , ("inkml", "application/inkml+xml") , ("install", "application/x-install-instructions") , ("iota", "application/vnd.astraea-software.iota") , ("ipfix", "application/ipfix") , ("ipk", "application/vnd.shana.informed.package") , ("irm", "application/vnd.ibm.rights-management") , ("irp", "application/vnd.irepository.package+xml") , ("iso", "application/x-iso9660-image") , ("itp", "application/vnd.shana.informed.formtemplate") , ("ivp", "application/vnd.immervision-ivp") , ("ivu", "application/vnd.immervision-ivu") , ("jad", "text/vnd.sun.j2me.app-descriptor") , ("jam", "application/vnd.jam") , ("jar", "application/java-archive") , ("jardiff", "application/x-java-archive-diff") , ("java", "text/x-java-source") , ("jisp", "application/vnd.jisp") , ("jlt", "application/vnd.hp-jlyt") , ("jng", "image/x-jng") , ("jnlp", "application/x-java-jnlp-file") , ("joda", "application/vnd.joost.joda-archive") , ("jpe", "image/jpeg") , ("jpeg", "image/jpeg") , ("jpg", "image/jpeg") , ("jpgm", "video/jpm") , ("jpgv", "video/jpeg") , ("jpm", "video/jpm") , ("js", "application/javascript") , ("json", "application/json") , ("jsonml", "application/jsonml+json") , ("kar", "audio/midi") , ("karbon", "application/vnd.kde.karbon") , ("kfo", "application/vnd.kde.kformula") , ("kia", "application/vnd.kidspiration") , ("kml", "application/vnd.google-earth.kml+xml") , ("kmz", "application/vnd.google-earth.kmz") , ("kne", "application/vnd.kinar") , ("knp", "application/vnd.kinar") , ("kon", "application/vnd.kde.kontour") , ("kpr", "application/vnd.kde.kpresenter") , ("kpt", "application/vnd.kde.kpresenter") , ("kpxx", "application/vnd.ds-keypoint") , ("ksp", "application/vnd.kde.kspread") , ("ktr", "application/vnd.kahootz") , ("ktx", "image/ktx") , ("ktz", "application/vnd.kahootz") , ("kwd", "application/vnd.kde.kword") , ("kwt", "application/vnd.kde.kword") , ("lasxml", "application/vnd.las.las+xml") , ("latex", "application/x-latex") , ("lbd", "application/vnd.llamagraphics.life-balance.desktop") , ("lbe", "application/vnd.llamagraphics.life-balance.exchange+xml") , ("les", "application/vnd.hhe.lesson-player") , ("lha", "application/x-lzh-compressed") , ("link66", "application/vnd.route66.link66+xml") , ("list", "text/plain") , ("list3820", "application/vnd.ibm.modcap") , ("listafp", "application/vnd.ibm.modcap") , ("lnk", "application/x-ms-shortcut") , ("log", "text/plain") , ("lostxml", "application/lost+xml") , ("lrf", "application/octet-stream") , ("lrm", "application/vnd.ms-lrm") , ("ltf", "application/vnd.frogans.ltf") , ("lvp", "audio/vnd.lucent.voice") , ("lwp", "application/vnd.lotus-wordpro") , ("lzh", "application/x-lzh-compressed") , ("m13", "application/x-msmediaview") , ("m14", "application/x-msmediaview") , ("m1v", "video/mpeg") , ("m21", "application/mp21") , ("m2a", "audio/mpeg") , ("m2v", "video/mpeg") , ("m3a", "audio/mpeg") , ("m3u", "audio/x-mpegurl") , ("m3u8", "application/vnd.apple.mpegurl") , ("m4a", "audio/x-m4a") , ("m4u", "video/vnd.mpegurl") , ("m4v", "video/x-m4v") , ("ma", "application/mathematica") , ("mads", "application/mads+xml") , ("mag", "application/vnd.ecowin.chart") , ("maker", "application/vnd.framemaker") , ("man", "text/troff") , ("manifest", "text/cache-manifest") , ("mar", "application/octet-stream") , ("mathml", "application/mathml+xml") , ("mb", "application/mathematica") , ("mbk", "application/vnd.mobius.mbk") , ("mbox", "application/mbox") , ("mc1", "application/vnd.medcalcdata") , ("mcd", "application/vnd.mcd") , ("mcurl", "text/vnd.curl.mcurl") , ("mdb", "application/x-msaccess") , ("mdi", "image/vnd.ms-modi") , ("me", "text/troff") , ("mesh", "model/mesh") , ("meta4", "application/metalink4+xml") , ("metalink", "application/metalink+xml") , ("mets", "application/mets+xml") , ("mfm", "application/vnd.mfmp") , ("mft", "application/rpki-manifest") , ("mgp", "application/vnd.osgeo.mapguide.package") , ("mgz", "application/vnd.proteus.magazine") , ("mid", "audio/midi") , ("midi", "audio/midi") , ("mie", "application/x-mie") , ("mif", "application/vnd.mif") , ("mime", "message/rfc822") , ("mj2", "video/mj2") , ("mjp2", "video/mj2") , ("mk3d", "video/x-matroska") , ("mka", "audio/x-matroska") , ("mks", "video/x-matroska") , ("mkv", "video/x-matroska") , ("mlp", "application/vnd.dolby.mlp") , ("mmd", "application/vnd.chipnuts.karaoke-mmd") , ("mmf", "application/vnd.smaf") , ("mml", "text/mathml") , ("mmr", "image/vnd.fujixerox.edmics-mmr") , ("mng", "video/x-mng") , ("mny", "application/x-msmoney") , ("mobi", "application/x-mobipocket-ebook") , ("mods", "application/mods+xml") , ("mov", "video/quicktime") , ("movie", "video/x-sgi-movie") , ("mp2", "audio/mpeg") , ("mp21", "application/mp21") , ("mp2a", "audio/mpeg") , ("mp3", "audio/mpeg") , ("mp4", "video/mp4") , ("mp4a", "audio/mp4") , ("mp4s", "application/mp4") , ("mp4v", "video/mp4") , ("mpc", "application/vnd.mophun.certificate") , ("mpe", "video/mpeg") , ("mpeg", "video/mpeg") , ("mpg", "video/mpeg") , ("mpg4", "video/mp4") , ("mpga", "audio/mpeg") , ("mpkg", "application/vnd.apple.installer+xml") , ("mpm", "application/vnd.blueice.multipass") , ("mpn", "application/vnd.mophun.application") , ("mpp", "application/vnd.ms-project") , ("mpt", "application/vnd.ms-project") , ("mpy", "application/vnd.ibm.minipay") , ("mqy", "application/vnd.mobius.mqy") , ("mrc", "application/marc") , ("mrcx", "application/marcxml+xml") , ("ms", "text/troff") , ("mscml", "application/mediaservercontrol+xml") , ("mseed", "application/vnd.fdsn.mseed") , ("mseq", "application/vnd.mseq") , ("msf", "application/vnd.epson.msf") , ("msh", "model/mesh") , ("msi", "application/x-msdownload") , ("msl", "application/vnd.mobius.msl") , ("msm", "application/octet-stream") , ("msp", "application/octet-stream") , ("msty", "application/vnd.muvee.style") , ("mts", "model/vnd.mts") , ("mus", "application/vnd.musician") , ("musicxml", "application/vnd.recordare.musicxml+xml") , ("mvb", "application/x-msmediaview") , ("mwf", "application/vnd.mfer") , ("mxf", "application/mxf") , ("mxl", "application/vnd.recordare.musicxml") , ("mxml", "application/xv+xml") , ("mxs", "application/vnd.triscape.mxs") , ("mxu", "video/vnd.mpegurl") , ("n-gage", "application/vnd.nokia.n-gage.symbian.install") , ("n3", "text/n3") , ("nb", "application/mathematica") , ("nbp", "application/vnd.wolfram.player") , ("nc", "application/x-netcdf") , ("ncx", "application/x-dtbncx+xml") , ("nfo", "text/x-nfo") , ("ngdat", "application/vnd.nokia.n-gage.data") , ("nitf", "application/vnd.nitf") , ("nlu", "application/vnd.neurolanguage.nlu") , ("nml", "application/vnd.enliven") , ("nnd", "application/vnd.noblenet-directory") , ("nns", "application/vnd.noblenet-sealer") , ("nnw", "application/vnd.noblenet-web") , ("npx", "image/vnd.net-fpx") , ("nsc", "application/x-conference") , ("nsf", "application/vnd.lotus-notes") , ("ntf", "application/vnd.nitf") , ("nzb", "application/x-nzb") , ("oa2", "application/vnd.fujitsu.oasys2") , ("oa3", "application/vnd.fujitsu.oasys3") , ("oas", "application/vnd.fujitsu.oasys") , ("obd", "application/x-msbinder") , ("obj", "application/x-tgif") , ("oda", "application/oda") , ("odb", "application/vnd.oasis.opendocument.database") , ("odc", "application/vnd.oasis.opendocument.chart") , ("odf", "application/vnd.oasis.opendocument.formula") , ("odft", "application/vnd.oasis.opendocument.formula-template") , ("odg", "application/vnd.oasis.opendocument.graphics") , ("odi", "application/vnd.oasis.opendocument.image") , ("odm", "application/vnd.oasis.opendocument.text-master") , ("odp", "application/vnd.oasis.opendocument.presentation") , ("ods", "application/vnd.oasis.opendocument.spreadsheet") , ("odt", "application/vnd.oasis.opendocument.text") , ("oga", "audio/ogg") , ("ogg", "audio/ogg") , ("ogv", "video/ogg") , ("ogx", "application/ogg") , ("omdoc", "application/omdoc+xml") , ("onepkg", "application/onenote") , ("onetmp", "application/onenote") , ("onetoc", "application/onenote") , ("onetoc2", "application/onenote") , ("opf", "application/oebps-package+xml") , ("opml", "text/x-opml") , ("oprc", "application/vnd.palm") , ("org", "application/vnd.lotus-organizer") , ("osf", "application/vnd.yamaha.openscoreformat") , ("osfpvg", "application/vnd.yamaha.openscoreformat.osfpvg+xml") , ("otc", "application/vnd.oasis.opendocument.chart-template") , ("otf", "application/x-font-otf") , ("otg", "application/vnd.oasis.opendocument.graphics-template") , ("oth", "application/vnd.oasis.opendocument.text-web") , ("oti", "application/vnd.oasis.opendocument.image-template") , ("otp", "application/vnd.oasis.opendocument.presentation-template") , ("ots", "application/vnd.oasis.opendocument.spreadsheet-template") , ("ott", "application/vnd.oasis.opendocument.text-template") , ("oxps", "application/oxps") , ("oxt", "application/vnd.openofficeorg.extension") , ("p", "text/x-pascal") , ("p10", "application/pkcs10") , ("p12", "application/x-pkcs12") , ("p7b", "application/x-pkcs7-certificates") , ("p7c", "application/pkcs7-mime") , ("p7m", "application/pkcs7-mime") , ("p7r", "application/x-pkcs7-certreqresp") , ("p7s", "application/pkcs7-signature") , ("p8", "application/pkcs8") , ("pac", "application/x-ns-proxy-autoconfig") , ("pas", "text/x-pascal") , ("paw", "application/vnd.pawaafile") , ("pbd", "application/vnd.powerbuilder6") , ("pbm", "image/x-portable-bitmap") , ("pcap", "application/vnd.tcpdump.pcap") , ("pcf", "application/x-font-pcf") , ("pcl", "application/vnd.hp-pcl") , ("pclxl", "application/vnd.hp-pclxl") , ("pct", "image/x-pict") , ("pcurl", "application/vnd.curl.pcurl") , ("pcx", "image/x-pcx") , ("pdb", "application/vnd.palm") , ("pdf", "application/pdf") , ("pem", "application/x-x509-ca-cert") , ("pfa", "application/x-font-type1") , ("pfb", "application/x-font-type1") , ("pfm", "application/x-font-type1") , ("pfr", "application/font-tdpfr") , ("pfx", "application/x-pkcs12") , ("pgm", "image/x-portable-graymap") , ("pgn", "application/x-chess-pgn") , ("pgp", "application/pgp-encrypted") , ("pic", "image/x-pict") , ("pkg", "application/octet-stream") , ("pki", "application/pkixcmp") , ("pkipath", "application/pkix-pkipath") , ("pl", "application/x-perl") , ("plb", "application/vnd.3gpp.pic-bw-large") , ("plc", "application/vnd.mobius.plc") , ("plf", "application/vnd.pocketlearn") , ("pls", "application/pls+xml") , ("pm", "application/x-perl") , ("pml", "application/vnd.ctc-posml") , ("png", "image/png") , ("pnm", "image/x-portable-anymap") , ("portpkg", "application/vnd.macports.portpkg") , ("pot", "application/vnd.ms-powerpoint") , ("potm", "application/vnd.ms-powerpoint.template.macroenabled.12") , ("potx", "application/vnd.openxmlformats-officedocument.presentationml.template") , ("ppam", "application/vnd.ms-powerpoint.addin.macroenabled.12") , ("ppd", "application/vnd.cups-ppd") , ("ppm", "image/x-portable-pixmap") , ("pps", "application/vnd.ms-powerpoint") , ("ppsm", "application/vnd.ms-powerpoint.slideshow.macroenabled.12") , ("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow") , ("ppt", "application/vnd.ms-powerpoint") , ("pptm", "application/vnd.ms-powerpoint.presentation.macroenabled.12") , ("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation") , ("pqa", "application/vnd.palm") , ("prc", "application/x-mobipocket-ebook") , ("pre", "application/vnd.lotus-freelance") , ("prf", "application/pics-rules") , ("ps", "application/postscript") , ("psb", "application/vnd.3gpp.pic-bw-small") , ("psd", "image/vnd.adobe.photoshop") , ("psf", "application/x-font-linux-psf") , ("pskcxml", "application/pskc+xml") , ("ptid", "application/vnd.pvi.ptid1") , ("pub", "application/x-mspublisher") , ("pvb", "application/vnd.3gpp.pic-bw-var") , ("pwn", "application/vnd.3m.post-it-notes") , ("pya", "audio/vnd.ms-playready.media.pya") , ("pyv", "video/vnd.ms-playready.media.pyv") , ("qam", "application/vnd.epson.quickanime") , ("qbo", "application/vnd.intu.qbo") , ("qfx", "application/vnd.intu.qfx") , ("qps", "application/vnd.publishare-delta-tree") , ("qt", "video/quicktime") , ("qwd", "application/vnd.quark.quarkxpress") , ("qwt", "application/vnd.quark.quarkxpress") , ("qxb", "application/vnd.quark.quarkxpress") , ("qxd", "application/vnd.quark.quarkxpress") , ("qxl", "application/vnd.quark.quarkxpress") , ("qxt", "application/vnd.quark.quarkxpress") , ("ra", "audio/x-pn-realaudio") , ("ram", "audio/x-pn-realaudio") , ("rar", "application/x-rar-compressed") , ("ras", "image/x-cmu-raster") , ("rcprofile", "application/vnd.ipunplugged.rcprofile") , ("rdf", "application/rdf+xml") , ("rdz", "application/vnd.data-vision.rdz") , ("rep", "application/vnd.businessobjects") , ("res", "application/x-dtbresource+xml") , ("rgb", "image/x-rgb") , ("rif", "application/reginfo+xml") , ("rip", "audio/vnd.rip") , ("ris", "application/x-research-info-systems") , ("rl", "application/resource-lists+xml") , ("rlc", "image/vnd.fujixerox.edmics-rlc") , ("rld", "application/resource-lists-diff+xml") , ("rm", "application/vnd.rn-realmedia") , ("rmi", "audio/midi") , ("rmp", "audio/x-pn-realaudio-plugin") , ("rms", "application/vnd.jcp.javame.midlet-rms") , ("rmvb", "application/vnd.rn-realmedia-vbr") , ("rnc", "application/relax-ng-compact-syntax") , ("roa", "application/rpki-roa") , ("roff", "text/troff") , ("rp9", "application/vnd.cloanto.rp9") , ("rpm", "application/x-redhat-package-manager") , ("rpss", "application/vnd.nokia.radio-presets") , ("rpst", "application/vnd.nokia.radio-preset") , ("rq", "application/sparql-query") , ("rs", "application/rls-services+xml") , ("rsd", "application/rsd+xml") , ("rss", "application/rss+xml") , ("rtf", "application/rtf") , ("rtx", "text/richtext") , ("run", "application/x-makeself") , ("s", "text/x-asm") , ("s3m", "audio/s3m") , ("saf", "application/vnd.yamaha.smaf-audio") , ("sbml", "application/sbml+xml") , ("sc", "application/vnd.ibm.secure-container") , ("scd", "application/x-msschedule") , ("scm", "application/vnd.lotus-screencam") , ("scq", "application/scvp-cv-request") , ("scs", "application/scvp-cv-response") , ("scurl", "text/vnd.curl.scurl") , ("sda", "application/vnd.stardivision.draw") , ("sdc", "application/vnd.stardivision.calc") , ("sdd", "application/vnd.stardivision.impress") , ("sdkd", "application/vnd.solent.sdkm+xml") , ("sdkm", "application/vnd.solent.sdkm+xml") , ("sdp", "application/sdp") , ("sdw", "application/vnd.stardivision.writer") , ("sea", "application/x-sea") , ("see", "application/vnd.seemail") , ("seed", "application/vnd.fdsn.seed") , ("sema", "application/vnd.sema") , ("semd", "application/vnd.semd") , ("semf", "application/vnd.semf") , ("ser", "application/java-serialized-object") , ("setpay", "application/set-payment-initiation") , ("setreg", "application/set-registration-initiation") , ("sfd-hdstx", "application/vnd.hydrostatix.sof-data") , ("sfs", "application/vnd.spotfire.sfs") , ("sfv", "text/x-sfv") , ("sgi", "image/sgi") , ("sgl", "application/vnd.stardivision.writer-global") , ("sgm", "text/sgml") , ("sgml", "text/sgml") , ("sh", "application/x-sh") , ("shar", "application/x-shar") , ("shf", "application/shf+xml") , ("shtml", "text/html") , ("sid", "image/x-mrsid-image") , ("sig", "application/pgp-signature") , ("sil", "audio/silk") , ("silo", "model/mesh") , ("sis", "application/vnd.symbian.install") , ("sisx", "application/vnd.symbian.install") , ("sit", "application/x-stuffit") , ("sitx", "application/x-stuffitx") , ("skd", "application/vnd.koan") , ("skm", "application/vnd.koan") , ("skp", "application/vnd.koan") , ("skt", "application/vnd.koan") , ("sldm", "application/vnd.ms-powerpoint.slide.macroenabled.12") , ("sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide") , ("slt", "application/vnd.epson.salt") , ("sm", "application/vnd.stepmania.stepchart") , ("smf", "application/vnd.stardivision.math") , ("smi", "application/smil+xml") , ("smil", "application/smil+xml") , ("smv", "video/x-smv") , ("smzip", "application/vnd.stepmania.package") , ("snd", "audio/basic") , ("snf", "application/x-font-snf") , ("so", "application/octet-stream") , ("spc", "application/x-pkcs7-certificates") , ("spf", "application/vnd.yamaha.smaf-phrase") , ("spl", "application/futuresplash") , ("spot", "text/vnd.in3d.spot") , ("spp", "application/scvp-vp-response") , ("spq", "application/scvp-vp-request") , ("spx", "audio/ogg") , ("sql", "application/x-sql") , ("src", "application/x-wais-source") , ("srt", "application/x-subrip") , ("sru", "application/sru+xml") , ("srx", "application/sparql-results+xml") , ("ssdl", "application/ssdl+xml") , ("sse", "application/vnd.kodak-descriptor") , ("ssf", "application/vnd.epson.ssf") , ("ssml", "application/ssml+xml") , ("st", "application/vnd.sailingtracker.track") , ("stc", "application/vnd.sun.xml.calc.template") , ("std", "application/vnd.sun.xml.draw.template") , ("stf", "application/vnd.wt.stf") , ("sti", "application/vnd.sun.xml.impress.template") , ("stk", "application/hyperstudio") , ("stl", "application/vnd.ms-pki.stl") , ("str", "application/vnd.pg.format") , ("stw", "application/vnd.sun.xml.writer.template") , ("sub", "text/vnd.dvb.subtitle") , ("sus", "application/vnd.sus-calendar") , ("susp", "application/vnd.sus-calendar") , ("sv4cpio", "application/x-sv4cpio") , ("sv4crc", "application/x-sv4crc") , ("svc", "application/vnd.dvb.service") , ("svd", "application/vnd.svd") , ("svg", "image/svg+xml") , ("svgz", "image/svg+xml") , ("swa", "application/x-director") , ("swf", "application/x-shockwave-flash") , ("swi", "application/vnd.aristanetworks.swi") , ("sxc", "application/vnd.sun.xml.calc") , ("sxd", "application/vnd.sun.xml.draw") , ("sxg", "application/vnd.sun.xml.writer.global") , ("sxi", "application/vnd.sun.xml.impress") , ("sxm", "application/vnd.sun.xml.math") , ("sxw", "application/vnd.sun.xml.writer") , ("t", "text/troff") , ("t3", "application/x-t3vm-image") , ("taglet", "application/vnd.mynfc") , ("tao", "application/vnd.tao.intent-module-archive") , ("tar", "application/x-tar") , ("tar.bz2", "application/x-bzip-compressed-tar") , ("tar.gz", "application/x-tgz") , ("tbz", "application/x-bzip-compressed-tar") , ("tcap", "application/vnd.3gpp2.tcap") , ("tcl", "application/x-tcl") , ("teacher", "application/vnd.smart.teacher") , ("tei", "application/tei+xml") , ("teicorpus", "application/tei+xml") , ("tex", "application/x-tex") , ("texi", "application/x-texinfo") , ("texinfo", "application/x-texinfo") , ("text", "text/plain") , ("tfi", "application/thraud+xml") , ("tfm", "application/x-tex-tfm") , ("tga", "image/x-tga") , ("tgz", "application/x-tgz") , ("thmx", "application/vnd.ms-officetheme") , ("tif", "image/tiff") , ("tiff", "image/tiff") , ("tk", "application/x-tcl") , ("tmo", "application/vnd.tmobile-livetv") , ("torrent", "application/x-bittorrent") , ("tpl", "application/vnd.groove-tool-template") , ("tpt", "application/vnd.trid.tpt") , ("tr", "text/troff") , ("tra", "application/vnd.trueapp") , ("trm", "application/x-msterminal") , ("tsd", "application/timestamped-data") , ("tsv", "text/tab-separated-values") , ("ttc", "application/x-font-ttf") , ("ttf", "application/x-font-ttf") , ("ttl", "text/turtle") , ("twd", "application/vnd.simtech-mindmapper") , ("twds", "application/vnd.simtech-mindmapper") , ("txd", "application/vnd.genomatix.tuxedo") , ("txf", "application/vnd.mobius.txf") , ("txt", "text/plain") , ("u32", "application/x-authorware-bin") , ("udeb", "application/x-debian-package") , ("ufd", "application/vnd.ufdl") , ("ufdl", "application/vnd.ufdl") , ("ulx", "application/x-glulx") , ("umj", "application/vnd.umajin") , ("unityweb", "application/vnd.unity") , ("uoml", "application/vnd.uoml+xml") , ("uri", "text/uri-list") , ("uris", "text/uri-list") , ("urls", "text/uri-list") , ("ustar", "application/x-ustar") , ("utz", "application/vnd.uiq.theme") , ("uu", "text/x-uuencode") , ("uva", "audio/vnd.dece.audio") , ("uvd", "application/vnd.dece.data") , ("uvf", "application/vnd.dece.data") , ("uvg", "image/vnd.dece.graphic") , ("uvh", "video/vnd.dece.hd") , ("uvi", "image/vnd.dece.graphic") , ("uvm", "video/vnd.dece.mobile") , ("uvp", "video/vnd.dece.pd") , ("uvs", "video/vnd.dece.sd") , ("uvt", "application/vnd.dece.ttml+xml") , ("uvu", "video/vnd.uvvu.mp4") , ("uvv", "video/vnd.dece.video") , ("uvva", "audio/vnd.dece.audio") , ("uvvd", "application/vnd.dece.data") , ("uvvf", "application/vnd.dece.data") , ("uvvg", "image/vnd.dece.graphic") , ("uvvh", "video/vnd.dece.hd") , ("uvvi", "image/vnd.dece.graphic") , ("uvvm", "video/vnd.dece.mobile") , ("uvvp", "video/vnd.dece.pd") , ("uvvs", "video/vnd.dece.sd") , ("uvvt", "application/vnd.dece.ttml+xml") , ("uvvu", "video/vnd.uvvu.mp4") , ("uvvv", "video/vnd.dece.video") , ("uvvx", "application/vnd.dece.unspecified") , ("uvvz", "application/vnd.dece.zip") , ("uvx", "application/vnd.dece.unspecified") , ("uvz", "application/vnd.dece.zip") , ("vcard", "text/vcard") , ("vcd", "application/x-cdlink") , ("vcf", "text/x-vcard") , ("vcg", "application/vnd.groove-vcard") , ("vcs", "text/x-vcalendar") , ("vcx", "application/vnd.vcx") , ("vis", "application/vnd.visionary") , ("viv", "video/vnd.vivo") , ("vob", "video/x-ms-vob") , ("vor", "application/vnd.stardivision.writer") , ("vox", "application/x-authorware-bin") , ("vrml", "model/vrml") , ("vsd", "application/vnd.visio") , ("vsf", "application/vnd.vsf") , ("vss", "application/vnd.visio") , ("vst", "application/vnd.visio") , ("vsw", "application/vnd.visio") , ("vtu", "model/vnd.vtu") , ("vxml", "application/voicexml+xml") , ("w3d", "application/x-director") , ("wad", "application/x-doom") , ("war", "application/java-archive") , ("wav", "audio/x-wav") , ("wax", "audio/x-ms-wax") , ("wbmp", "image/vnd.wap.wbmp") , ("wbs", "application/vnd.criticaltools.wbs+xml") , ("wbxml", "application/vnd.wap.wbxml") , ("wcm", "application/vnd.ms-works") , ("wdb", "application/vnd.ms-works") , ("wdp", "image/vnd.ms-photo") , ("weba", "audio/webm") , ("webm", "video/webm") , ("webp", "image/webp") , ("wg", "application/vnd.pmi.widget") , ("wgt", "application/widget") , ("wks", "application/vnd.ms-works") , ("wm", "video/x-ms-wm") , ("wma", "audio/x-ms-wma") , ("wmd", "application/x-ms-wmd") , ("wmf", "application/x-msmetafile") , ("wml", "text/vnd.wap.wml") , ("wmlc", "application/vnd.wap.wmlc") , ("wmls", "text/vnd.wap.wmlscript") , ("wmlsc", "application/vnd.wap.wmlscriptc") , ("wmv", "video/x-ms-wmv") , ("wmx", "video/x-ms-wmx") , ("wmz", "application/x-msmetafile") , ("woff", "application/font-woff") , ("wpd", "application/vnd.wordperfect") , ("wpl", "application/vnd.ms-wpl") , ("wps", "application/vnd.ms-works") , ("wqd", "application/vnd.wqd") , ("wri", "application/x-mswrite") , ("wrl", "model/vrml") , ("wsdl", "application/wsdl+xml") , ("wspolicy", "application/wspolicy+xml") , ("wtb", "application/vnd.webturbo") , ("wvx", "video/x-ms-wvx") , ("x32", "application/x-authorware-bin") , ("x3d", "model/x3d+xml") , ("x3db", "model/x3d+binary") , ("x3dbz", "model/x3d+binary") , ("x3dv", "model/x3d+vrml") , ("x3dvz", "model/x3d+vrml") , ("x3dz", "model/x3d+xml") , ("xaml", "application/xaml+xml") , ("xap", "application/x-silverlight-app") , ("xar", "application/vnd.xara") , ("xbap", "application/x-ms-xbap") , ("xbd", "application/vnd.fujixerox.docuworks.binder") , ("xbm", "image/x-xbitmap") , ("xdf", "application/xcap-diff+xml") , ("xdm", "application/vnd.syncml.dm+xml") , ("xdp", "application/vnd.adobe.xdp+xml") , ("xdssc", "application/dssc+xml") , ("xdw", "application/vnd.fujixerox.docuworks") , ("xenc", "application/xenc+xml") , ("xer", "application/patch-ops-error+xml") , ("xfdf", "application/vnd.adobe.xfdf") , ("xfdl", "application/vnd.xfdl") , ("xht", "application/xhtml+xml") , ("xhtml", "application/xhtml+xml") , ("xhvml", "application/xv+xml") , ("xif", "image/vnd.xiff") , ("xla", "application/vnd.ms-excel") , ("xlam", "application/vnd.ms-excel.addin.macroenabled.12") , ("xlc", "application/vnd.ms-excel") , ("xlf", "application/x-xliff+xml") , ("xlm", "application/vnd.ms-excel") , ("xls", "application/vnd.ms-excel") , ("xlsb", "application/vnd.ms-excel.sheet.binary.macroenabled.12") , ("xlsm", "application/vnd.ms-excel.sheet.macroenabled.12") , ("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") , ("xlt", "application/vnd.ms-excel") , ("xltm", "application/vnd.ms-excel.template.macroenabled.12") , ("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template") , ("xlw", "application/vnd.ms-excel") , ("xm", "audio/xm") , ("xml", "text/xml") , ("xo", "application/vnd.olpc-sugar") , ("xop", "application/xop+xml") , ("xpi", "application/x-xpinstall") , ("xpl", "application/xproc+xml") , ("xpm", "image/x-xpixmap") , ("xpr", "application/vnd.is-xpr") , ("xps", "application/vnd.ms-xpsdocument") , ("xpw", "application/vnd.intercon.formnet") , ("xpx", "application/vnd.intercon.formnet") , ("xsl", "application/xml") , ("xslt", "application/xslt+xml") , ("xsm", "application/vnd.syncml+xml") , ("xspf", "application/xspf+xml") , ("xul", "application/vnd.mozilla.xul+xml") , ("xvm", "application/xv+xml") , ("xvml", "application/xv+xml") , ("xwd", "image/x-xwindowdump") , ("xyz", "chemical/x-xyz") , ("xz", "application/x-xz") , ("yang", "application/yang") , ("yin", "application/yin+xml") , ("z1", "application/x-zmachine") , ("z2", "application/x-zmachine") , ("z3", "application/x-zmachine") , ("z4", "application/x-zmachine") , ("z5", "application/x-zmachine") , ("z6", "application/x-zmachine") , ("z7", "application/x-zmachine") , ("z8", "application/x-zmachine") , ("zaz", "application/vnd.zzazz.deck+xml") , ("zip", "application/zip") , ("zir", "application/vnd.zul") , ("zirz", "application/vnd.zul") , ("zmm", "application/vnd.handheld-entertainment+xml") ]