+mimetype.assign = (
+ # Archives
+
+ ".7z" => "application/x-7z-compressed",
+ ".bz2" => "application/x-bzip2",
+ ".cpio" => "application/x-cpio",
+ ".deb" => "application/vnd.debian.binary-package",
+ ".gz" => "application/gzip",
+ ".jar" => "application/x-java-archive",
+ ".lz" => "application/lzip",
+ ".par2" => "application/x-par2",
+ ".rar" => "application/vnd.rar",
+ ".rpm" => "application/x-rpm",
+ ".tbz" => "application/x-bzip2",
+ ".tgz" => "application/gzip",
+ ".txz" => "application/x-xz",
+ ".tzst" => "application/zstd",
+ ".warc" => "application/warc",
+ ".xz" => "application/x-xz",
+ ".zip" => "application/zip",
+ ".zst" => "application/zstd",
+
+ # Text files
+
+ ".asc" => "text/plain",
+ ".csv" => "text/csv",
+ ".cue" => "text/plain",
+ ".icf" => "text/calendar; charset=utf-8",
+ ".info" => "text/info; charset=utf-8",
+ ".json" => "application/json; charset=utf-8",
+ ".ldif" => "text/plain; charset=utf-8",
+ ".log" => "text/plain; charset=utf-8",
+ ".md" => "text/markdown; charset=utf-8",
+ ".rec" => "text/plain; charset=utf-8",
+ ".sql" => "text/plain; charset=utf-8",
+ ".txt" => "text/plain; charset=utf-8",
+ ".url" => "text/uri-list; charset=utf-8",
+ ".vcf" => "text/vcard; charset=utf-8",
+ ".zone" => "text/dns; charset=utf-8",
+ "ls-lR" => "text/plain; charset=utf-8",
+ "README" => "text/plain; charset=utf-8",
+
+ # XMLs
+
+ ".atom" => "application/atom+xml",
+ ".dbk" => "application/docbook+xml",
+ ".opml" => "application/xml",
+ ".rss" => "application/rss+xml",
+ ".xbel" => "application/xml",
+ ".xml" => "application/xml",
+
+ # Web
+
+ ".css" => "text/css; charset=utf-8",
+ ".dtd" => "application/xml-dtd",
+ ".htm" => "text/html",
+ ".html" => "text/html",
+ ".js" => "application/javascript; charset=utf-8",
+ ".wasm" => "application/wasm",
+ ".xhtml" => "application/xhtml+xml",
+
+ # Fonts
+
+ ".otf" => "font/otf",
+ ".ttf" => "font/ttf",
+ ".woff" => "font/woff",
+ ".woff2" => "font/woff2",
+
+ # Documents
+
+ ".cbr" => "application/vnd.comicbook+rar",
+ ".cbz" => "application/vnd.comicbook+zip",
+ ".chm" => "application/vnd.ms-htmlhelp",
+ ".djvu" => "image/vnd.djvu",
+ ".dvi" => "application/x-dvi",
+ ".eps" => "application/postscript",
+ ".epub" => "application/epub+zip",
+ ".fb2" => "application/x-fictionbook+xml",
+ ".pdf" => "application/pdf",
+ ".ps" => "application/postscript",
+
+ # OpenDocument
+
+ ".odb" => "application/vnd.oasis.opendocument.database",
+ ".odc" => "application/vnd.oasis.opendocument.chart",
+ ".odf" => "application/vnd.oasis.opendocument.formula",
+ ".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",
+ ".otc" => "application/vnd.oasis.opendocument.chart-template",
+ ".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",
+
+ # Microsoft formats
+
+ ".doc" => "application/msword",
+ ".docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+ ".dotx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
+ ".potx" => "application/vnd.openxmlformats-officedocument.presentationml.template",
+ ".ppsx" => "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
+ ".ppt" => "application/vnd.ms-powerpoint",
+ ".pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
+ ".rtf" => "application/rtf",
+ ".sldx" => "application/vnd.openxmlformats-officedocument.presentationml.slide",
+ ".xls" => "application/vnd.ms-excel",
+ ".xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ ".xltx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
+
+ # Interactive fiction
+
+ ".blb" => "application/x-blorb",
+ ".blorb" => "application/x-blorb",
+ ".gblorb" => "application/x-blorb",
+ ".glb" => "application/x-blorb",
+ ".ifm" => "text/plain",
+ ".ulx" => "application/x-glulx",
+ ".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",
+ ".zblorb" => "application/x-blorb",
+ ".zlb" => "application/x-blorb",
+
+ # Cryptography
+
+ ".cer" => "application/pkix-cert",
+ ".crl" => "application/pkix-crl",
+ ".gpg" => "application/pgp-encrypted",
+ ".p10" => "application/pkcs10",
+ ".p12" => "application/pkcs12",
+ ".p7c" => "application/pkcs7-mime",
+ ".p7m" => "application/pkcs7-mime",
+ ".p7s" => "application/pkcs7-signature",
+ ".p8" => "application/pkcs8",
+ ".p8e" => "application/pkcs8-encrypted",
+ ".pem" => "application/pem-certificate-chain",
+ ".pfx" => "application/pkcs12",
+ ".sig" => "application/pgp-signature",
+
+ # Images
+
+ ".apng" => "image/vnd.mozilla.apng",
+ ".avif" => "image/avif",
+ ".gif" => "image/gif",
+ ".heic" => "image/heic",
+ ".heif" => "image/heif",
+ ".jp2" => "image/jp2",
+ ".jpeg" => "image/jpeg",
+ ".jpg" => "image/jpeg",
+ ".mng" => "video/x-mng",
+ ".pbm" => "image/x-portable-bitmap",
+ ".pgm" => "image/x-portable-graymap",
+ ".png" => "image/png",
+ ".pnm" => "image/x-portable-anymap",
+ ".ppm" => "image/x-portable-pixmap",
+ ".svg" => "image/svg+xml",
+ ".tif" => "image/tiff",
+ ".tiff" => "image/tiff",
+ ".webp" => "image/webp",
+
+ # Audio
+
+ ".aac" => "audio/aac",
+ ".ac3" => "audio/ac3",
+ ".aif" => "audio/aiff",
+ ".aiff" => "audio/aiff",
+ ".flac" => "audio/flac",
+ ".m4a" => "audio/mp4",
+ ".mka" => "audio/x-matroska",
+ ".mp2" => "audio/mpeg",
+ ".mp3" => "audio/mpeg",
+ ".oga" => "audio/ogg",
+ ".ogg" => "audio/ogg",
+ ".opus" => "audio/ogg",
+ ".spx" => "audio/ogg",
+ ".wav" => "audio/wav",
+ ".weba" => "audio/webm",
+ ".wv" => "audio/x-wavpack",
+
+ # Video
+
+ ".avi" => "video/x-msvideo",
+ ".m4v" => "video/mp4",
+ ".mj2" => "video/mj2",
+ ".mkv" => "video/x-matroska",
+ ".mov" => "video/quicktime",
+ ".mp4" => "video/mp4",
+ ".mpg" => "video/mpeg",
+ ".ogv" => "video/ogg",
+ ".ts" => "video/MP2T",
+ ".webm" => "video/webm",
+
+ # Playlist
+
+ ".m3u" => "application/vnd.apple.mpegurl",
+ ".m3u8" => "application/vnd.apple.mpegurl",
+ ".xspf" => "application/xspf+xml",
+
+ # Subtitles
+
+ ".ass" => "text/x-ssa",
+ ".srt" => "application/x-subrip",
+ ".ssa" => "text/x-ssa",
+
+ # Mail
+
+ ".eml" => "message/rfc822",
+ ".mbox" => "application/mbox",
+ ".mht" => "message/rfc822",
+
+ # File sharing
+
+ ".iso" => "application/x-iso9660-image",
+ ".meta4" => "application/metalink4+xml",
+ ".metalink" => "application/metalink+xml",
+ ".torrent" => "application/x-bittorrent",
+
+ "" => "application/octet-stream"
+)