001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.util;
018
019import java.util.StringJoiner;
020
021public class MimeTypeHelper {
022
023    /**
024     * Sanitizes the mime types after URL encoding to convert space into plus sign.
025     *
026     * @param  types mime types such as from HTTP Accept header
027     * @return       the sanitized mime types
028     */
029    public static String sanitizeMimeType(String types) {
030        if (types != null) {
031            StringJoiner sj = new StringJoiner(",");
032            for (String part : types.split(",")) {
033                sj.add(part.trim().replace(' ', '+'));
034            }
035            types = sj.toString();
036        }
037        return types;
038    }
039
040    /**
041     * Probes the file name to determine the mime type (such as application/xml, text/plain).
042     *
043     * @param  fileName the file name, such as order.xml
044     * @return          the mime type, or <tt>null</tt> if not possible to determine.
045     */
046    public static String probeMimeType(String fileName) {
047        String answer = null;
048        String ext = FileUtil.onlyExt(fileName, true);
049        if (ext == null) {
050            ext = fileName;
051        }
052        if (ext != null) {
053            answer = mimeType(ext.toLowerCase());
054        }
055        return answer;
056    }
057
058    private static String mimeType(String ext) {
059        return switch (ext) {
060            // MIME-TYPES: START
061            case "123" -> "application/vnd.lotus-1-2-3";
062            case "3dml" -> "text/vnd.in3d.3dml";
063            case "3ds" -> "image/x-3ds";
064            case "3g2" -> "video/3gpp2";
065            case "3gp" -> "video/3gpp";
066            case "7z" -> "application/x-7z-compressed";
067            case "aab" -> "application/x-authorware-bin";
068            case "aac" -> "audio/x-aac";
069            case "aam" -> "application/x-authorware-map";
070            case "aas" -> "application/x-authorware-seg";
071            case "abw" -> "application/x-abiword";
072            case "ac" -> "application/pkix-attr-cert";
073            case "acc" -> "application/vnd.americandynamics.acc";
074            case "ace" -> "application/x-ace-compressed";
075            case "acu" -> "application/vnd.acucobol";
076            case "acutc" -> "application/vnd.acucorp";
077            case "adp" -> "audio/adpcm";
078            case "aep" -> "application/vnd.audiograph";
079            case "afm" -> "application/x-font-type1";
080            case "afp" -> "application/vnd.ibm.modcap";
081            case "ahead" -> "application/vnd.ahead.space";
082            case "ai" -> "application/postscript";
083            case "aif" -> "audio/x-aiff";
084            case "aifc" -> "audio/x-aiff";
085            case "aiff" -> "audio/x-aiff";
086            case "air" -> "application/vnd.adobe.air-application-installer-package+zip";
087            case "ait" -> "application/vnd.dvb.ait";
088            case "ami" -> "application/vnd.amiga.ami";
089            case "apk" -> "application/vnd.android.package-archive";
090            case "appcache" -> "text/cache-manifest";
091            case "application" -> "application/x-ms-application";
092            case "apr" -> "application/vnd.lotus-approach";
093            case "arc" -> "application/x-freearc";
094            case "asc" -> "application/pgp-signature";
095            case "asf" -> "video/x-ms-asf";
096            case "asm" -> "text/x-asm";
097            case "aso" -> "application/vnd.accpac.simply.aso";
098            case "asx" -> "video/x-ms-asf";
099            case "atc" -> "application/vnd.acucorp";
100            case "atom" -> "application/atom+xml";
101            case "atomcat" -> "application/atomcat+xml";
102            case "atomsvc" -> "application/atomsvc+xml";
103            case "atx" -> "application/vnd.antix.game-component";
104            case "au" -> "audio/basic";
105            case "avi" -> "video/x-msvideo";
106            case "avif" -> "image/avif";
107            case "aw" -> "application/applixware";
108            case "azf" -> "application/vnd.airzip.filesecure.azf";
109            case "azs" -> "application/vnd.airzip.filesecure.azs";
110            case "azw" -> "application/vnd.amazon.ebook";
111            case "bat" -> "application/x-msdownload";
112            case "bcpio" -> "application/x-bcpio";
113            case "bdf" -> "application/x-font-bdf";
114            case "bdm" -> "application/vnd.syncml.dm+wbxml";
115            case "bed" -> "application/vnd.realvnc.bed";
116            case "bh2" -> "application/vnd.fujitsu.oasysprs";
117            case "bin" -> "application/octet-stream";
118            case "blb" -> "application/x-blorb";
119            case "blorb" -> "application/x-blorb";
120            case "bmi" -> "application/vnd.bmi";
121            case "bmp" -> "image/bmp";
122            case "book" -> "application/vnd.framemaker";
123            case "box" -> "application/vnd.previewsystems.box";
124            case "boz" -> "application/x-bzip2";
125            case "bpk" -> "application/octet-stream";
126            case "btif" -> "image/prs.btif";
127            case "bz" -> "application/x-bzip";
128            case "bz2" -> "application/x-bzip2";
129            case "c" -> "text/x-c";
130            case "c11amc" -> "application/vnd.cluetrust.cartomobile-config";
131            case "c11amz" -> "application/vnd.cluetrust.cartomobile-config-pkg";
132            case "c4d" -> "application/vnd.clonk.c4group";
133            case "c4f" -> "application/vnd.clonk.c4group";
134            case "c4g" -> "application/vnd.clonk.c4group";
135            case "c4p" -> "application/vnd.clonk.c4group";
136            case "c4u" -> "application/vnd.clonk.c4group";
137            case "cab" -> "application/vnd.ms-cab-compressed";
138            case "caf" -> "audio/x-caf";
139            case "cap" -> "application/vnd.tcpdump.pcap";
140            case "car" -> "application/vnd.curl.car";
141            case "cat" -> "application/vnd.ms-pki.seccat";
142            case "cb7" -> "application/x-cbr";
143            case "cba" -> "application/x-cbr";
144            case "cbr" -> "application/x-cbr";
145            case "cbt" -> "application/x-cbr";
146            case "cbz" -> "application/x-cbr";
147            case "cc" -> "text/x-c";
148            case "cct" -> "application/x-director";
149            case "ccxml" -> "application/ccxml+xml";
150            case "cdbcmsg" -> "application/vnd.contact.cmsg";
151            case "cdf" -> "application/x-netcdf";
152            case "cdkey" -> "application/vnd.mediastation.cdkey";
153            case "cdmia" -> "application/cdmi-capability";
154            case "cdmic" -> "application/cdmi-container";
155            case "cdmid" -> "application/cdmi-domain";
156            case "cdmio" -> "application/cdmi-object";
157            case "cdmiq" -> "application/cdmi-queue";
158            case "cdx" -> "chemical/x-cdx";
159            case "cdxml" -> "application/vnd.chemdraw+xml";
160            case "cdy" -> "application/vnd.cinderella";
161            case "cer" -> "application/pkix-cert";
162            case "cfs" -> "application/x-cfs-compressed";
163            case "cgm" -> "image/cgm";
164            case "chat" -> "application/x-chat";
165            case "chm" -> "application/vnd.ms-htmlhelp";
166            case "chrt" -> "application/vnd.kde.kchart";
167            case "cif" -> "chemical/x-cif";
168            case "cii" -> "application/vnd.anser-web-certificate-issue-initiation";
169            case "cil" -> "application/vnd.ms-artgalry";
170            case "cla" -> "application/vnd.claymore";
171            case "class" -> "application/java-vm";
172            case "clkk" -> "application/vnd.crick.clicker.keyboard";
173            case "clkp" -> "application/vnd.crick.clicker.palette";
174            case "clkt" -> "application/vnd.crick.clicker.template";
175            case "clkw" -> "application/vnd.crick.clicker.wordbank";
176            case "clkx" -> "application/vnd.crick.clicker";
177            case "clp" -> "application/x-msclip";
178            case "cmc" -> "application/vnd.cosmocaller";
179            case "cmdf" -> "chemical/x-cmdf";
180            case "cml" -> "chemical/x-cml";
181            case "cmp" -> "application/vnd.yellowriver-custom-menu";
182            case "cmx" -> "image/x-cmx";
183            case "cod" -> "application/vnd.rim.cod";
184            case "com" -> "application/x-msdownload";
185            case "conf" -> "text/plain";
186            case "cpio" -> "application/x-cpio";
187            case "cpp" -> "text/x-c";
188            case "cpt" -> "application/mac-compactpro";
189            case "crd" -> "application/x-mscardfile";
190            case "crl" -> "application/pkix-crl";
191            case "crt" -> "application/x-x509-ca-cert";
192            case "cryptonote" -> "application/vnd.rig.cryptonote";
193            case "csh" -> "application/x-csh";
194            case "csml" -> "chemical/x-csml";
195            case "csp" -> "application/vnd.commonspace";
196            case "css" -> "text/css";
197            case "cst" -> "application/x-director";
198            case "csv" -> "text/csv";
199            case "cu" -> "application/cu-seeme";
200            case "curl" -> "text/vnd.curl";
201            case "cww" -> "application/prs.cww";
202            case "cxt" -> "application/x-director";
203            case "cxx" -> "text/x-c";
204            case "dae" -> "model/vnd.collada+xml";
205            case "daf" -> "application/vnd.mobius.daf";
206            case "dart" -> "application/vnd.dart";
207            case "dataless" -> "application/vnd.fdsn.seed";
208            case "davmount" -> "application/davmount+xml";
209            case "dbk" -> "application/docbook+xml";
210            case "dcr" -> "application/x-director";
211            case "dcurl" -> "text/vnd.curl.dcurl";
212            case "dd2" -> "application/vnd.oma.dd2+xml";
213            case "ddd" -> "application/vnd.fujixerox.ddd";
214            case "deb" -> "application/x-debian-package";
215            case "def" -> "text/plain";
216            case "deploy" -> "application/octet-stream";
217            case "der" -> "application/x-x509-ca-cert";
218            case "dfac" -> "application/vnd.dreamfactory";
219            case "dgc" -> "application/x-dgc-compressed";
220            case "dic" -> "text/x-c";
221            case "dir" -> "application/x-director";
222            case "dis" -> "application/vnd.mobius.dis";
223            case "dist" -> "application/octet-stream";
224            case "distz" -> "application/octet-stream";
225            case "djv" -> "image/vnd.djvu";
226            case "djvu" -> "image/vnd.djvu";
227            case "dll" -> "application/x-msdownload";
228            case "dmg" -> "application/x-apple-diskimage";
229            case "dmp" -> "application/vnd.tcpdump.pcap";
230            case "dms" -> "application/octet-stream";
231            case "dna" -> "application/vnd.dna";
232            case "doc" -> "application/msword";
233            case "docm" -> "application/vnd.ms-word.document.macroenabled.12";
234            case "docx" -> "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
235            case "dot" -> "application/msword";
236            case "dotm" -> "application/vnd.ms-word.template.macroenabled.12";
237            case "dotx" -> "application/vnd.openxmlformats-officedocument.wordprocessingml.template";
238            case "dp" -> "application/vnd.osgi.dp";
239            case "dpg" -> "application/vnd.dpgraph";
240            case "dra" -> "audio/vnd.dra";
241            case "dsc" -> "text/prs.lines.tag";
242            case "dssc" -> "application/dssc+der";
243            case "dtb" -> "application/x-dtbook+xml";
244            case "dtd" -> "application/xml-dtd";
245            case "dts" -> "audio/vnd.dts";
246            case "dtshd" -> "audio/vnd.dts.hd";
247            case "dump" -> "application/octet-stream";
248            case "dvb" -> "video/vnd.dvb.file";
249            case "dvi" -> "application/x-dvi";
250            case "dwf" -> "model/vnd.dwf";
251            case "dwg" -> "image/vnd.dwg";
252            case "dxf" -> "image/vnd.dxf";
253            case "dxp" -> "application/vnd.spotfire.dxp";
254            case "dxr" -> "application/x-director";
255            case "ecelp4800" -> "audio/vnd.nuera.ecelp4800";
256            case "ecelp7470" -> "audio/vnd.nuera.ecelp7470";
257            case "ecelp9600" -> "audio/vnd.nuera.ecelp9600";
258            case "ecma" -> "application/ecmascript";
259            case "edm" -> "application/vnd.novadigm.edm";
260            case "edx" -> "application/vnd.novadigm.edx";
261            case "efif" -> "application/vnd.picsel";
262            case "ei6" -> "application/vnd.pg.osasli";
263            case "elc" -> "application/octet-stream";
264            case "emf" -> "application/x-msmetafile";
265            case "eml" -> "message/rfc822";
266            case "emma" -> "application/emma+xml";
267            case "emz" -> "application/x-msmetafile";
268            case "eol" -> "audio/vnd.digital-winds";
269            case "eot" -> "application/vnd.ms-fontobject";
270            case "eps" -> "application/postscript";
271            case "epub" -> "application/epub+zip";
272            case "es3" -> "application/vnd.eszigno3+xml";
273            case "esa" -> "application/vnd.osgi.subsystem";
274            case "esf" -> "application/vnd.epson.esf";
275            case "et3" -> "application/vnd.eszigno3+xml";
276            case "etx" -> "text/x-setext";
277            case "eva" -> "application/x-eva";
278            case "evy" -> "application/x-envoy";
279            case "exe" -> "application/x-msdownload";
280            case "exi" -> "application/exi";
281            case "ext" -> "application/vnd.novadigm.ext";
282            case "ez" -> "application/andrew-inset";
283            case "ez2" -> "application/vnd.ezpix-album";
284            case "ez3" -> "application/vnd.ezpix-package";
285            case "f" -> "text/x-fortran";
286            case "f4v" -> "video/x-f4v";
287            case "f77" -> "text/x-fortran";
288            case "f90" -> "text/x-fortran";
289            case "fbs" -> "image/vnd.fastbidsheet";
290            case "fcdt" -> "application/vnd.adobe.formscentral.fcdt";
291            case "fcs" -> "application/vnd.isac.fcs";
292            case "fdf" -> "application/vnd.fdf";
293            case "fe_launch" -> "application/vnd.denovo.fcselayout-link";
294            case "fg5" -> "application/vnd.fujitsu.oasysgp";
295            case "fgd" -> "application/x-director";
296            case "fh" -> "image/x-freehand";
297            case "fh4" -> "image/x-freehand";
298            case "fh5" -> "image/x-freehand";
299            case "fh7" -> "image/x-freehand";
300            case "fhc" -> "image/x-freehand";
301            case "fig" -> "application/x-xfig";
302            case "flac" -> "audio/x-flac";
303            case "fli" -> "video/x-fli";
304            case "flo" -> "application/vnd.micrografx.flo";
305            case "flv" -> "video/x-flv";
306            case "flw" -> "application/vnd.kde.kivio";
307            case "flx" -> "text/vnd.fmi.flexstor";
308            case "fly" -> "text/vnd.fly";
309            case "fm" -> "application/vnd.framemaker";
310            case "fnc" -> "application/vnd.frogans.fnc";
311            case "for" -> "text/x-fortran";
312            case "fpx" -> "image/vnd.fpx";
313            case "frame" -> "application/vnd.framemaker";
314            case "fsc" -> "application/vnd.fsc.weblaunch";
315            case "fst" -> "image/vnd.fst";
316            case "ftc" -> "application/vnd.fluxtime.clip";
317            case "fti" -> "application/vnd.anser-web-funds-transfer-initiation";
318            case "fvt" -> "video/vnd.fvt";
319            case "fxp" -> "application/vnd.adobe.fxp";
320            case "fxpl" -> "application/vnd.adobe.fxp";
321            case "fzs" -> "application/vnd.fuzzysheet";
322            case "g2w" -> "application/vnd.geoplan";
323            case "g3" -> "image/g3fax";
324            case "g3w" -> "application/vnd.geospace";
325            case "gac" -> "application/vnd.groove-account";
326            case "gam" -> "application/x-tads";
327            case "gbr" -> "application/rpki-ghostbusters";
328            case "gca" -> "application/x-gca-compressed";
329            case "gdl" -> "model/vnd.gdl";
330            case "geo" -> "application/vnd.dynageo";
331            case "gex" -> "application/vnd.geometry-explorer";
332            case "ggb" -> "application/vnd.geogebra.file";
333            case "ggs" -> "application/vnd.geogebra.slides";
334            case "ggt" -> "application/vnd.geogebra.tool";
335            case "ghf" -> "application/vnd.groove-help";
336            case "gif" -> "image/gif";
337            case "gim" -> "application/vnd.groove-identity-message";
338            case "gml" -> "application/gml+xml";
339            case "gmx" -> "application/vnd.gmx";
340            case "gnumeric" -> "application/x-gnumeric";
341            case "gph" -> "application/vnd.flographit";
342            case "gpx" -> "application/gpx+xml";
343            case "gqf" -> "application/vnd.grafeq";
344            case "gqs" -> "application/vnd.grafeq";
345            case "gram" -> "application/srgs";
346            case "gramps" -> "application/x-gramps-xml";
347            case "gre" -> "application/vnd.geometry-explorer";
348            case "grv" -> "application/vnd.groove-injector";
349            case "grxml" -> "application/srgs+xml";
350            case "gsf" -> "application/x-font-ghostscript";
351            case "gtar" -> "application/x-gtar";
352            case "gtm" -> "application/vnd.groove-tool-message";
353            case "gtw" -> "model/vnd.gtw";
354            case "gv" -> "text/vnd.graphviz";
355            case "gxf" -> "application/gxf";
356            case "gxt" -> "application/vnd.geonext";
357            case "h" -> "text/x-c";
358            case "h261" -> "video/h261";
359            case "h263" -> "video/h263";
360            case "h264" -> "video/h264";
361            case "hal" -> "application/vnd.hal+xml";
362            case "hbci" -> "application/vnd.hbci";
363            case "hdf" -> "application/x-hdf";
364            case "hh" -> "text/x-c";
365            case "hlp" -> "application/winhlp";
366            case "hpgl" -> "application/vnd.hp-hpgl";
367            case "hpid" -> "application/vnd.hp-hpid";
368            case "hps" -> "application/vnd.hp-hps";
369            case "hqx" -> "application/mac-binhex40";
370            case "htke" -> "application/vnd.kenameaapp";
371            case "htm" -> "text/html";
372            case "html" -> "text/html";
373            case "hvd" -> "application/vnd.yamaha.hv-dic";
374            case "hvp" -> "application/vnd.yamaha.hv-voice";
375            case "hvs" -> "application/vnd.yamaha.hv-script";
376            case "i2g" -> "application/vnd.intergeo";
377            case "icc" -> "application/vnd.iccprofile";
378            case "ice" -> "x-conference/x-cooltalk";
379            case "icm" -> "application/vnd.iccprofile";
380            case "ico" -> "image/x-icon";
381            case "ics" -> "text/calendar";
382            case "ief" -> "image/ief";
383            case "ifb" -> "text/calendar";
384            case "ifm" -> "application/vnd.shana.informed.formdata";
385            case "iges" -> "model/iges";
386            case "igl" -> "application/vnd.igloader";
387            case "igm" -> "application/vnd.insors.igm";
388            case "igs" -> "model/iges";
389            case "igx" -> "application/vnd.micrografx.igx";
390            case "iif" -> "application/vnd.shana.informed.interchange";
391            case "imp" -> "application/vnd.accpac.simply.imp";
392            case "ims" -> "application/vnd.ms-ims";
393            case "in" -> "text/plain";
394            case "ink" -> "application/inkml+xml";
395            case "inkml" -> "application/inkml+xml";
396            case "install" -> "application/x-install-instructions";
397            case "iota" -> "application/vnd.astraea-software.iota";
398            case "ipfix" -> "application/ipfix";
399            case "ipk" -> "application/vnd.shana.informed.package";
400            case "irm" -> "application/vnd.ibm.rights-management";
401            case "irp" -> "application/vnd.irepository.package+xml";
402            case "iso" -> "application/x-iso9660-image";
403            case "itp" -> "application/vnd.shana.informed.formtemplate";
404            case "ivp" -> "application/vnd.immervision-ivp";
405            case "ivu" -> "application/vnd.immervision-ivu";
406            case "jad" -> "text/vnd.sun.j2me.app-descriptor";
407            case "jam" -> "application/vnd.jam";
408            case "jar" -> "application/java-archive";
409            case "java" -> "text/x-java-source";
410            case "jisp" -> "application/vnd.jisp";
411            case "jlt" -> "application/vnd.hp-jlyt";
412            case "jnlp" -> "application/x-java-jnlp-file";
413            case "joda" -> "application/vnd.joost.joda-archive";
414            case "jpe" -> "image/jpeg";
415            case "jpeg" -> "image/jpeg";
416            case "jpg" -> "image/jpeg";
417            case "jpgm" -> "video/jpm";
418            case "jpgv" -> "video/jpeg";
419            case "jpm" -> "video/jpm";
420            case "js" -> "text/javascript";
421            case "json" -> "application/json";
422            case "jsonml" -> "application/jsonml+json";
423            case "jxl" -> "image/jxl";
424            case "kar" -> "audio/midi";
425            case "karbon" -> "application/vnd.kde.karbon";
426            case "kfo" -> "application/vnd.kde.kformula";
427            case "kia" -> "application/vnd.kidspiration";
428            case "kml" -> "application/vnd.google-earth.kml+xml";
429            case "kmz" -> "application/vnd.google-earth.kmz";
430            case "kne" -> "application/vnd.kinar";
431            case "knp" -> "application/vnd.kinar";
432            case "kon" -> "application/vnd.kde.kontour";
433            case "kpr" -> "application/vnd.kde.kpresenter";
434            case "kpt" -> "application/vnd.kde.kpresenter";
435            case "kpxx" -> "application/vnd.ds-keypoint";
436            case "ksp" -> "application/vnd.kde.kspread";
437            case "ktr" -> "application/vnd.kahootz";
438            case "ktx" -> "image/ktx";
439            case "ktz" -> "application/vnd.kahootz";
440            case "kwd" -> "application/vnd.kde.kword";
441            case "kwt" -> "application/vnd.kde.kword";
442            case "lasxml" -> "application/vnd.las.las+xml";
443            case "latex" -> "application/x-latex";
444            case "lbd" -> "application/vnd.llamagraphics.life-balance.desktop";
445            case "lbe" -> "application/vnd.llamagraphics.life-balance.exchange+xml";
446            case "les" -> "application/vnd.hhe.lesson-player";
447            case "lha" -> "application/x-lzh-compressed";
448            case "link66" -> "application/vnd.route66.link66+xml";
449            case "list" -> "text/plain";
450            case "list3820" -> "application/vnd.ibm.modcap";
451            case "listafp" -> "application/vnd.ibm.modcap";
452            case "lnk" -> "application/x-ms-shortcut";
453            case "log" -> "text/plain";
454            case "lostxml" -> "application/lost+xml";
455            case "lrf" -> "application/octet-stream";
456            case "lrm" -> "application/vnd.ms-lrm";
457            case "ltf" -> "application/vnd.frogans.ltf";
458            case "lvp" -> "audio/vnd.lucent.voice";
459            case "lwp" -> "application/vnd.lotus-wordpro";
460            case "lzh" -> "application/x-lzh-compressed";
461            case "m13" -> "application/x-msmediaview";
462            case "m14" -> "application/x-msmediaview";
463            case "m1v" -> "video/mpeg";
464            case "m21" -> "application/mp21";
465            case "m2a" -> "audio/mpeg";
466            case "m2t" -> "video/mp2t";
467            case "m2ts" -> "video/mp2t";
468            case "m2v" -> "video/mpeg";
469            case "m3a" -> "audio/mpeg";
470            case "m3u" -> "audio/x-mpegurl";
471            case "m3u8" -> "application/vnd.apple.mpegurl";
472            case "m4a" -> "audio/mp4";
473            case "m4u" -> "video/vnd.mpegurl";
474            case "m4v" -> "video/x-m4v";
475            case "ma" -> "application/mathematica";
476            case "mads" -> "application/mads+xml";
477            case "mag" -> "application/vnd.ecowin.chart";
478            case "maker" -> "application/vnd.framemaker";
479            case "man" -> "text/troff";
480            case "mar" -> "application/octet-stream";
481            case "mathml" -> "application/mathml+xml";
482            case "mb" -> "application/mathematica";
483            case "mbk" -> "application/vnd.mobius.mbk";
484            case "mbox" -> "application/mbox";
485            case "mc1" -> "application/vnd.medcalcdata";
486            case "mcd" -> "application/vnd.mcd";
487            case "mcurl" -> "text/vnd.curl.mcurl";
488            case "mdb" -> "application/x-msaccess";
489            case "mdi" -> "image/vnd.ms-modi";
490            case "me" -> "text/troff";
491            case "mesh" -> "model/mesh";
492            case "meta4" -> "application/metalink4+xml";
493            case "metalink" -> "application/metalink+xml";
494            case "mets" -> "application/mets+xml";
495            case "mfm" -> "application/vnd.mfmp";
496            case "mft" -> "application/rpki-manifest";
497            case "mgp" -> "application/vnd.osgeo.mapguide.package";
498            case "mgz" -> "application/vnd.proteus.magazine";
499            case "mid" -> "audio/midi";
500            case "midi" -> "audio/midi";
501            case "mie" -> "application/x-mie";
502            case "mif" -> "application/vnd.mif";
503            case "mime" -> "message/rfc822";
504            case "mj2" -> "video/mj2";
505            case "mjp2" -> "video/mj2";
506            case "mjs" -> "text/javascript";
507            case "mk3d" -> "video/x-matroska";
508            case "mka" -> "audio/x-matroska";
509            case "mks" -> "video/x-matroska";
510            case "mkv" -> "video/x-matroska";
511            case "mlp" -> "application/vnd.dolby.mlp";
512            case "mmd" -> "application/vnd.chipnuts.karaoke-mmd";
513            case "mmf" -> "application/vnd.smaf";
514            case "mmr" -> "image/vnd.fujixerox.edmics-mmr";
515            case "mng" -> "video/x-mng";
516            case "mny" -> "application/x-msmoney";
517            case "mobi" -> "application/x-mobipocket-ebook";
518            case "mods" -> "application/mods+xml";
519            case "mov" -> "video/quicktime";
520            case "movie" -> "video/x-sgi-movie";
521            case "mp2" -> "audio/mpeg";
522            case "mp21" -> "application/mp21";
523            case "mp2a" -> "audio/mpeg";
524            case "mp3" -> "audio/mpeg";
525            case "mp4" -> "video/mp4";
526            case "mp4a" -> "audio/mp4";
527            case "mp4s" -> "application/mp4";
528            case "mp4v" -> "video/mp4";
529            case "mpc" -> "application/vnd.mophun.certificate";
530            case "mpe" -> "video/mpeg";
531            case "mpeg" -> "video/mpeg";
532            case "mpg" -> "video/mpeg";
533            case "mpg4" -> "video/mp4";
534            case "mpga" -> "audio/mpeg";
535            case "mpkg" -> "application/vnd.apple.installer+xml";
536            case "mpm" -> "application/vnd.blueice.multipass";
537            case "mpn" -> "application/vnd.mophun.application";
538            case "mpp" -> "application/vnd.ms-project";
539            case "mpt" -> "application/vnd.ms-project";
540            case "mpy" -> "application/vnd.ibm.minipay";
541            case "mqy" -> "application/vnd.mobius.mqy";
542            case "mrc" -> "application/marc";
543            case "mrcx" -> "application/marcxml+xml";
544            case "ms" -> "text/troff";
545            case "mscml" -> "application/mediaservercontrol+xml";
546            case "mseed" -> "application/vnd.fdsn.mseed";
547            case "mseq" -> "application/vnd.mseq";
548            case "msf" -> "application/vnd.epson.msf";
549            case "msh" -> "model/mesh";
550            case "msi" -> "application/x-msdownload";
551            case "msl" -> "application/vnd.mobius.msl";
552            case "msty" -> "application/vnd.muvee.style";
553            case "mts" -> "video/mp2t";
554            case "mus" -> "application/vnd.musician";
555            case "musicxml" -> "application/vnd.recordare.musicxml+xml";
556            case "mvb" -> "application/x-msmediaview";
557            case "mwf" -> "application/vnd.mfer";
558            case "mxf" -> "application/mxf";
559            case "mxl" -> "application/vnd.recordare.musicxml";
560            case "mxml" -> "application/xv+xml";
561            case "mxs" -> "application/vnd.triscape.mxs";
562            case "mxu" -> "video/vnd.mpegurl";
563            case "n-gage" -> "application/vnd.nokia.n-gage.symbian.install";
564            case "n3" -> "text/n3";
565            case "nb" -> "application/mathematica";
566            case "nbp" -> "application/vnd.wolfram.player";
567            case "nc" -> "application/x-netcdf";
568            case "ncx" -> "application/x-dtbncx+xml";
569            case "nfo" -> "text/x-nfo";
570            case "ngdat" -> "application/vnd.nokia.n-gage.data";
571            case "nitf" -> "application/vnd.nitf";
572            case "nlu" -> "application/vnd.neurolanguage.nlu";
573            case "nml" -> "application/vnd.enliven";
574            case "nnd" -> "application/vnd.noblenet-directory";
575            case "nns" -> "application/vnd.noblenet-sealer";
576            case "nnw" -> "application/vnd.noblenet-web";
577            case "npx" -> "image/vnd.net-fpx";
578            case "nsc" -> "application/x-conference";
579            case "nsf" -> "application/vnd.lotus-notes";
580            case "ntf" -> "application/vnd.nitf";
581            case "nzb" -> "application/x-nzb";
582            case "oa2" -> "application/vnd.fujitsu.oasys2";
583            case "oa3" -> "application/vnd.fujitsu.oasys3";
584            case "oas" -> "application/vnd.fujitsu.oasys";
585            case "obd" -> "application/x-msbinder";
586            case "obj" -> "application/x-tgif";
587            case "oda" -> "application/oda";
588            case "odb" -> "application/vnd.oasis.opendocument.database";
589            case "odc" -> "application/vnd.oasis.opendocument.chart";
590            case "odf" -> "application/vnd.oasis.opendocument.formula";
591            case "odft" -> "application/vnd.oasis.opendocument.formula-template";
592            case "odg" -> "application/vnd.oasis.opendocument.graphics";
593            case "odi" -> "application/vnd.oasis.opendocument.image";
594            case "odm" -> "application/vnd.oasis.opendocument.text-master";
595            case "odp" -> "application/vnd.oasis.opendocument.presentation";
596            case "ods" -> "application/vnd.oasis.opendocument.spreadsheet";
597            case "odt" -> "application/vnd.oasis.opendocument.text";
598            case "oga" -> "audio/ogg";
599            case "ogg" -> "audio/ogg";
600            case "ogv" -> "video/ogg";
601            case "ogx" -> "application/ogg";
602            case "omdoc" -> "application/omdoc+xml";
603            case "onepkg" -> "application/onenote";
604            case "onetmp" -> "application/onenote";
605            case "onetoc" -> "application/onenote";
606            case "onetoc2" -> "application/onenote";
607            case "opf" -> "application/oebps-package+xml";
608            case "opml" -> "text/x-opml";
609            case "oprc" -> "application/vnd.palm";
610            case "opus" -> "audio/ogg";
611            case "org" -> "application/vnd.lotus-organizer";
612            case "osf" -> "application/vnd.yamaha.openscoreformat";
613            case "osfpvg" -> "application/vnd.yamaha.openscoreformat.osfpvg+xml";
614            case "otc" -> "application/vnd.oasis.opendocument.chart-template";
615            case "otf" -> "font/otf";
616            case "otg" -> "application/vnd.oasis.opendocument.graphics-template";
617            case "oth" -> "application/vnd.oasis.opendocument.text-web";
618            case "oti" -> "application/vnd.oasis.opendocument.image-template";
619            case "otp" -> "application/vnd.oasis.opendocument.presentation-template";
620            case "ots" -> "application/vnd.oasis.opendocument.spreadsheet-template";
621            case "ott" -> "application/vnd.oasis.opendocument.text-template";
622            case "oxps" -> "application/oxps";
623            case "oxt" -> "application/vnd.openofficeorg.extension";
624            case "p" -> "text/x-pascal";
625            case "p10" -> "application/pkcs10";
626            case "p12" -> "application/x-pkcs12";
627            case "p7b" -> "application/x-pkcs7-certificates";
628            case "p7c" -> "application/pkcs7-mime";
629            case "p7m" -> "application/pkcs7-mime";
630            case "p7r" -> "application/x-pkcs7-certreqresp";
631            case "p7s" -> "application/pkcs7-signature";
632            case "p8" -> "application/pkcs8";
633            case "pas" -> "text/x-pascal";
634            case "paw" -> "application/vnd.pawaafile";
635            case "pbd" -> "application/vnd.powerbuilder6";
636            case "pbm" -> "image/x-portable-bitmap";
637            case "pcap" -> "application/vnd.tcpdump.pcap";
638            case "pcf" -> "application/x-font-pcf";
639            case "pcl" -> "application/vnd.hp-pcl";
640            case "pclxl" -> "application/vnd.hp-pclxl";
641            case "pct" -> "image/x-pict";
642            case "pcurl" -> "application/vnd.curl.pcurl";
643            case "pcx" -> "image/x-pcx";
644            case "pdb" -> "application/vnd.palm";
645            case "pdf" -> "application/pdf";
646            case "pfa" -> "application/x-font-type1";
647            case "pfb" -> "application/x-font-type1";
648            case "pfm" -> "application/x-font-type1";
649            case "pfr" -> "application/font-tdpfr";
650            case "pfx" -> "application/x-pkcs12";
651            case "pgm" -> "image/x-portable-graymap";
652            case "pgn" -> "application/x-chess-pgn";
653            case "pgp" -> "application/pgp-encrypted";
654            case "pic" -> "image/x-pict";
655            case "pkg" -> "application/octet-stream";
656            case "pki" -> "application/pkixcmp";
657            case "pkipath" -> "application/pkix-pkipath";
658            case "plb" -> "application/vnd.3gpp.pic-bw-large";
659            case "plc" -> "application/vnd.mobius.plc";
660            case "plf" -> "application/vnd.pocketlearn";
661            case "pls" -> "application/pls+xml";
662            case "pml" -> "application/vnd.ctc-posml";
663            case "png" -> "image/png";
664            case "pnm" -> "image/x-portable-anymap";
665            case "portpkg" -> "application/vnd.macports.portpkg";
666            case "pot" -> "application/vnd.ms-powerpoint";
667            case "potm" -> "application/vnd.ms-powerpoint.template.macroenabled.12";
668            case "potx" -> "application/vnd.openxmlformats-officedocument.presentationml.template";
669            case "ppam" -> "application/vnd.ms-powerpoint.addin.macroenabled.12";
670            case "ppd" -> "application/vnd.cups-ppd";
671            case "ppm" -> "image/x-portable-pixmap";
672            case "pps" -> "application/vnd.ms-powerpoint";
673            case "ppsm" -> "application/vnd.ms-powerpoint.slideshow.macroenabled.12";
674            case "ppsx" -> "application/vnd.openxmlformats-officedocument.presentationml.slideshow";
675            case "ppt" -> "application/vnd.ms-powerpoint";
676            case "pptm" -> "application/vnd.ms-powerpoint.presentation.macroenabled.12";
677            case "pptx" -> "application/vnd.openxmlformats-officedocument.presentationml.presentation";
678            case "pqa" -> "application/vnd.palm";
679            case "prc" -> "application/x-mobipocket-ebook";
680            case "pre" -> "application/vnd.lotus-freelance";
681            case "prf" -> "application/pics-rules";
682            case "ps" -> "application/postscript";
683            case "psb" -> "application/vnd.3gpp.pic-bw-small";
684            case "psd" -> "image/vnd.adobe.photoshop";
685            case "psf" -> "application/x-font-linux-psf";
686            case "pskcxml" -> "application/pskc+xml";
687            case "ptid" -> "application/vnd.pvi.ptid1";
688            case "pub" -> "application/x-mspublisher";
689            case "pvb" -> "application/vnd.3gpp.pic-bw-var";
690            case "pwn" -> "application/vnd.3m.post-it-notes";
691            case "pya" -> "audio/vnd.ms-playready.media.pya";
692            case "pyv" -> "video/vnd.ms-playready.media.pyv";
693            case "qam" -> "application/vnd.epson.quickanime";
694            case "qbo" -> "application/vnd.intu.qbo";
695            case "qfx" -> "application/vnd.intu.qfx";
696            case "qps" -> "application/vnd.publishare-delta-tree";
697            case "qt" -> "video/quicktime";
698            case "qwd" -> "application/vnd.quark.quarkxpress";
699            case "qwt" -> "application/vnd.quark.quarkxpress";
700            case "qxb" -> "application/vnd.quark.quarkxpress";
701            case "qxd" -> "application/vnd.quark.quarkxpress";
702            case "qxl" -> "application/vnd.quark.quarkxpress";
703            case "qxt" -> "application/vnd.quark.quarkxpress";
704            case "ra" -> "audio/x-pn-realaudio";
705            case "ram" -> "audio/x-pn-realaudio";
706            case "rar" -> "application/x-rar-compressed";
707            case "ras" -> "image/x-cmu-raster";
708            case "rcprofile" -> "application/vnd.ipunplugged.rcprofile";
709            case "rdf" -> "application/rdf+xml";
710            case "rdz" -> "application/vnd.data-vision.rdz";
711            case "rep" -> "application/vnd.businessobjects";
712            case "res" -> "application/x-dtbresource+xml";
713            case "rgb" -> "image/x-rgb";
714            case "rif" -> "application/reginfo+xml";
715            case "rip" -> "audio/vnd.rip";
716            case "ris" -> "application/x-research-info-systems";
717            case "rl" -> "application/resource-lists+xml";
718            case "rlc" -> "image/vnd.fujixerox.edmics-rlc";
719            case "rld" -> "application/resource-lists-diff+xml";
720            case "rm" -> "application/vnd.rn-realmedia";
721            case "rmi" -> "audio/midi";
722            case "rmp" -> "audio/x-pn-realaudio-plugin";
723            case "rms" -> "application/vnd.jcp.javame.midlet-rms";
724            case "rmvb" -> "application/vnd.rn-realmedia-vbr";
725            case "rnc" -> "application/relax-ng-compact-syntax";
726            case "roa" -> "application/rpki-roa";
727            case "roff" -> "text/troff";
728            case "rp9" -> "application/vnd.cloanto.rp9";
729            case "rpss" -> "application/vnd.nokia.radio-presets";
730            case "rpst" -> "application/vnd.nokia.radio-preset";
731            case "rq" -> "application/sparql-query";
732            case "rs" -> "application/rls-services+xml";
733            case "rsd" -> "application/rsd+xml";
734            case "rss" -> "application/rss+xml";
735            case "rtf" -> "application/rtf";
736            case "rtx" -> "text/richtext";
737            case "s" -> "text/x-asm";
738            case "s3m" -> "audio/s3m";
739            case "saf" -> "application/vnd.yamaha.smaf-audio";
740            case "sbml" -> "application/sbml+xml";
741            case "sc" -> "application/vnd.ibm.secure-container";
742            case "scd" -> "application/x-msschedule";
743            case "scm" -> "application/vnd.lotus-screencam";
744            case "scq" -> "application/scvp-cv-request";
745            case "scs" -> "application/scvp-cv-response";
746            case "scurl" -> "text/vnd.curl.scurl";
747            case "sda" -> "application/vnd.stardivision.draw";
748            case "sdc" -> "application/vnd.stardivision.calc";
749            case "sdd" -> "application/vnd.stardivision.impress";
750            case "sdkd" -> "application/vnd.solent.sdkm+xml";
751            case "sdkm" -> "application/vnd.solent.sdkm+xml";
752            case "sdp" -> "application/sdp";
753            case "sdw" -> "application/vnd.stardivision.writer";
754            case "see" -> "application/vnd.seemail";
755            case "seed" -> "application/vnd.fdsn.seed";
756            case "sema" -> "application/vnd.sema";
757            case "semd" -> "application/vnd.semd";
758            case "semf" -> "application/vnd.semf";
759            case "ser" -> "application/java-serialized-object";
760            case "setpay" -> "application/set-payment-initiation";
761            case "setreg" -> "application/set-registration-initiation";
762            case "sfd-hdstx" -> "application/vnd.hydrostatix.sof-data";
763            case "sfs" -> "application/vnd.spotfire.sfs";
764            case "sfv" -> "text/x-sfv";
765            case "sgi" -> "image/sgi";
766            case "sgl" -> "application/vnd.stardivision.writer-global";
767            case "sgm" -> "text/sgml";
768            case "sgml" -> "text/sgml";
769            case "sh" -> "application/x-sh";
770            case "shar" -> "application/x-shar";
771            case "shf" -> "application/shf+xml";
772            case "sid" -> "image/x-mrsid-image";
773            case "sig" -> "application/pgp-signature";
774            case "sil" -> "audio/silk";
775            case "silo" -> "model/mesh";
776            case "sis" -> "application/vnd.symbian.install";
777            case "sisx" -> "application/vnd.symbian.install";
778            case "sit" -> "application/x-stuffit";
779            case "sitx" -> "application/x-stuffitx";
780            case "skd" -> "application/vnd.koan";
781            case "skm" -> "application/vnd.koan";
782            case "skp" -> "application/vnd.koan";
783            case "skt" -> "application/vnd.koan";
784            case "sldm" -> "application/vnd.ms-powerpoint.slide.macroenabled.12";
785            case "sldx" -> "application/vnd.openxmlformats-officedocument.presentationml.slide";
786            case "slt" -> "application/vnd.epson.salt";
787            case "sm" -> "application/vnd.stepmania.stepchart";
788            case "smf" -> "application/vnd.stardivision.math";
789            case "smi" -> "application/smil+xml";
790            case "smil" -> "application/smil+xml";
791            case "smv" -> "video/x-smv";
792            case "smzip" -> "application/vnd.stepmania.package";
793            case "snd" -> "audio/basic";
794            case "snf" -> "application/x-font-snf";
795            case "so" -> "application/octet-stream";
796            case "spc" -> "application/x-pkcs7-certificates";
797            case "spf" -> "application/vnd.yamaha.smaf-phrase";
798            case "spl" -> "application/x-futuresplash";
799            case "spot" -> "text/vnd.in3d.spot";
800            case "spp" -> "application/scvp-vp-response";
801            case "spq" -> "application/scvp-vp-request";
802            case "spx" -> "audio/ogg";
803            case "sql" -> "application/x-sql";
804            case "src" -> "application/x-wais-source";
805            case "srt" -> "application/x-subrip";
806            case "sru" -> "application/sru+xml";
807            case "srx" -> "application/sparql-results+xml";
808            case "ssdl" -> "application/ssdl+xml";
809            case "sse" -> "application/vnd.kodak-descriptor";
810            case "ssf" -> "application/vnd.epson.ssf";
811            case "ssml" -> "application/ssml+xml";
812            case "st" -> "application/vnd.sailingtracker.track";
813            case "stc" -> "application/vnd.sun.xml.calc.template";
814            case "std" -> "application/vnd.sun.xml.draw.template";
815            case "stf" -> "application/vnd.wt.stf";
816            case "sti" -> "application/vnd.sun.xml.impress.template";
817            case "stk" -> "application/hyperstudio";
818            case "stl" -> "application/vnd.ms-pki.stl";
819            case "str" -> "application/vnd.pg.format";
820            case "stw" -> "application/vnd.sun.xml.writer.template";
821            case "sub" -> "text/vnd.dvb.subtitle";
822            case "sus" -> "application/vnd.sus-calendar";
823            case "susp" -> "application/vnd.sus-calendar";
824            case "sv4cpio" -> "application/x-sv4cpio";
825            case "sv4crc" -> "application/x-sv4crc";
826            case "svc" -> "application/vnd.dvb.service";
827            case "svd" -> "application/vnd.svd";
828            case "svg" -> "image/svg+xml";
829            case "svgz" -> "image/svg+xml";
830            case "swa" -> "application/x-director";
831            case "swf" -> "application/x-shockwave-flash";
832            case "swi" -> "application/vnd.aristanetworks.swi";
833            case "sxc" -> "application/vnd.sun.xml.calc";
834            case "sxd" -> "application/vnd.sun.xml.draw";
835            case "sxg" -> "application/vnd.sun.xml.writer.global";
836            case "sxi" -> "application/vnd.sun.xml.impress";
837            case "sxm" -> "application/vnd.sun.xml.math";
838            case "sxw" -> "application/vnd.sun.xml.writer";
839            case "t" -> "text/troff";
840            case "t3" -> "application/x-t3vm-image";
841            case "taglet" -> "application/vnd.mynfc";
842            case "tao" -> "application/vnd.tao.intent-module-archive";
843            case "tar" -> "application/x-tar";
844            case "tcap" -> "application/vnd.3gpp2.tcap";
845            case "tcl" -> "application/x-tcl";
846            case "teacher" -> "application/vnd.smart.teacher";
847            case "tei" -> "application/tei+xml";
848            case "teicorpus" -> "application/tei+xml";
849            case "tex" -> "application/x-tex";
850            case "texi" -> "application/x-texinfo";
851            case "texinfo" -> "application/x-texinfo";
852            case "text" -> "text/plain";
853            case "tfi" -> "application/thraud+xml";
854            case "tfm" -> "application/x-tex-tfm";
855            case "tga" -> "image/x-tga";
856            case "thmx" -> "application/vnd.ms-officetheme";
857            case "tif" -> "image/tiff";
858            case "tiff" -> "image/tiff";
859            case "tmo" -> "application/vnd.tmobile-livetv";
860            case "torrent" -> "application/x-bittorrent";
861            case "tpl" -> "application/vnd.groove-tool-template";
862            case "tpt" -> "application/vnd.trid.tpt";
863            case "tr" -> "text/troff";
864            case "tra" -> "application/vnd.trueapp";
865            case "trm" -> "application/x-msterminal";
866            case "ts" -> "video/mp2t";
867            case "tsd" -> "application/timestamped-data";
868            case "tsv" -> "text/tab-separated-values";
869            case "ttc" -> "font/collection";
870            case "ttf" -> "font/ttf";
871            case "ttl" -> "text/turtle";
872            case "twd" -> "application/vnd.simtech-mindmapper";
873            case "twds" -> "application/vnd.simtech-mindmapper";
874            case "txd" -> "application/vnd.genomatix.tuxedo";
875            case "txf" -> "application/vnd.mobius.txf";
876            case "txt" -> "text/plain";
877            case "u32" -> "application/x-authorware-bin";
878            case "udeb" -> "application/x-debian-package";
879            case "ufd" -> "application/vnd.ufdl";
880            case "ufdl" -> "application/vnd.ufdl";
881            case "ulx" -> "application/x-glulx";
882            case "umj" -> "application/vnd.umajin";
883            case "unityweb" -> "application/vnd.unity";
884            case "uoml" -> "application/vnd.uoml+xml";
885            case "uri" -> "text/uri-list";
886            case "uris" -> "text/uri-list";
887            case "urls" -> "text/uri-list";
888            case "ustar" -> "application/x-ustar";
889            case "utz" -> "application/vnd.uiq.theme";
890            case "uu" -> "text/x-uuencode";
891            case "uva" -> "audio/vnd.dece.audio";
892            case "uvd" -> "application/vnd.dece.data";
893            case "uvf" -> "application/vnd.dece.data";
894            case "uvg" -> "image/vnd.dece.graphic";
895            case "uvh" -> "video/vnd.dece.hd";
896            case "uvi" -> "image/vnd.dece.graphic";
897            case "uvm" -> "video/vnd.dece.mobile";
898            case "uvp" -> "video/vnd.dece.pd";
899            case "uvs" -> "video/vnd.dece.sd";
900            case "uvt" -> "application/vnd.dece.ttml+xml";
901            case "uvu" -> "video/vnd.uvvu.mp4";
902            case "uvv" -> "video/vnd.dece.video";
903            case "uvva" -> "audio/vnd.dece.audio";
904            case "uvvd" -> "application/vnd.dece.data";
905            case "uvvf" -> "application/vnd.dece.data";
906            case "uvvg" -> "image/vnd.dece.graphic";
907            case "uvvh" -> "video/vnd.dece.hd";
908            case "uvvi" -> "image/vnd.dece.graphic";
909            case "uvvm" -> "video/vnd.dece.mobile";
910            case "uvvp" -> "video/vnd.dece.pd";
911            case "uvvs" -> "video/vnd.dece.sd";
912            case "uvvt" -> "application/vnd.dece.ttml+xml";
913            case "uvvu" -> "video/vnd.uvvu.mp4";
914            case "uvvv" -> "video/vnd.dece.video";
915            case "uvvx" -> "application/vnd.dece.unspecified";
916            case "uvvz" -> "application/vnd.dece.zip";
917            case "uvx" -> "application/vnd.dece.unspecified";
918            case "uvz" -> "application/vnd.dece.zip";
919            case "vcard" -> "text/vcard";
920            case "vcd" -> "application/x-cdlink";
921            case "vcf" -> "text/x-vcard";
922            case "vcg" -> "application/vnd.groove-vcard";
923            case "vcs" -> "text/x-vcalendar";
924            case "vcx" -> "application/vnd.vcx";
925            case "vis" -> "application/vnd.visionary";
926            case "viv" -> "video/vnd.vivo";
927            case "vob" -> "video/x-ms-vob";
928            case "vor" -> "application/vnd.stardivision.writer";
929            case "vox" -> "application/x-authorware-bin";
930            case "vrml" -> "model/vrml";
931            case "vsd" -> "application/vnd.visio";
932            case "vsf" -> "application/vnd.vsf";
933            case "vss" -> "application/vnd.visio";
934            case "vst" -> "application/vnd.visio";
935            case "vsw" -> "application/vnd.visio";
936            case "vtu" -> "model/vnd.vtu";
937            case "vxml" -> "application/voicexml+xml";
938            case "w3d" -> "application/x-director";
939            case "wad" -> "application/x-doom";
940            case "wasm" -> "application/wasm";
941            case "wav" -> "audio/x-wav";
942            case "wax" -> "audio/x-ms-wax";
943            case "wbmp" -> "image/vnd.wap.wbmp";
944            case "wbs" -> "application/vnd.criticaltools.wbs+xml";
945            case "wbxml" -> "application/vnd.wap.wbxml";
946            case "wcm" -> "application/vnd.ms-works";
947            case "wdb" -> "application/vnd.ms-works";
948            case "wdp" -> "image/vnd.ms-photo";
949            case "weba" -> "audio/webm";
950            case "webm" -> "video/webm";
951            case "webp" -> "image/webp";
952            case "wg" -> "application/vnd.pmi.widget";
953            case "wgt" -> "application/widget";
954            case "wks" -> "application/vnd.ms-works";
955            case "wm" -> "video/x-ms-wm";
956            case "wma" -> "audio/x-ms-wma";
957            case "wmd" -> "application/x-ms-wmd";
958            case "wmf" -> "application/x-msmetafile";
959            case "wml" -> "text/vnd.wap.wml";
960            case "wmlc" -> "application/vnd.wap.wmlc";
961            case "wmls" -> "text/vnd.wap.wmlscript";
962            case "wmlsc" -> "application/vnd.wap.wmlscriptc";
963            case "wmv" -> "video/x-ms-wmv";
964            case "wmx" -> "video/x-ms-wmx";
965            case "wmz" -> "application/x-msmetafile";
966            case "woff" -> "font/woff";
967            case "woff2" -> "font/woff2";
968            case "wpd" -> "application/vnd.wordperfect";
969            case "wpl" -> "application/vnd.ms-wpl";
970            case "wps" -> "application/vnd.ms-works";
971            case "wqd" -> "application/vnd.wqd";
972            case "wri" -> "application/x-mswrite";
973            case "wrl" -> "model/vrml";
974            case "wsdl" -> "application/wsdl+xml";
975            case "wspolicy" -> "application/wspolicy+xml";
976            case "wtb" -> "application/vnd.webturbo";
977            case "wvx" -> "video/x-ms-wvx";
978            case "x32" -> "application/x-authorware-bin";
979            case "x3d" -> "model/x3d+xml";
980            case "x3db" -> "model/x3d+binary";
981            case "x3dbz" -> "model/x3d+binary";
982            case "x3dv" -> "model/x3d+vrml";
983            case "x3dvz" -> "model/x3d+vrml";
984            case "x3dz" -> "model/x3d+xml";
985            case "xaml" -> "application/xaml+xml";
986            case "xap" -> "application/x-silverlight-app";
987            case "xar" -> "application/vnd.xara";
988            case "xbap" -> "application/x-ms-xbap";
989            case "xbd" -> "application/vnd.fujixerox.docuworks.binder";
990            case "xbm" -> "image/x-xbitmap";
991            case "xdf" -> "application/xcap-diff+xml";
992            case "xdm" -> "application/vnd.syncml.dm+xml";
993            case "xdp" -> "application/vnd.adobe.xdp+xml";
994            case "xdssc" -> "application/dssc+xml";
995            case "xdw" -> "application/vnd.fujixerox.docuworks";
996            case "xenc" -> "application/xenc+xml";
997            case "xer" -> "application/patch-ops-error+xml";
998            case "xfdf" -> "application/vnd.adobe.xfdf";
999            case "xfdl" -> "application/vnd.xfdl";
1000            case "xht" -> "application/xhtml+xml";
1001            case "xhtml" -> "application/xhtml+xml";
1002            case "xhvml" -> "application/xv+xml";
1003            case "xif" -> "image/vnd.xiff";
1004            case "xla" -> "application/vnd.ms-excel";
1005            case "xlam" -> "application/vnd.ms-excel.addin.macroenabled.12";
1006            case "xlc" -> "application/vnd.ms-excel";
1007            case "xlf" -> "application/x-xliff+xml";
1008            case "xlm" -> "application/vnd.ms-excel";
1009            case "xls" -> "application/vnd.ms-excel";
1010            case "xlsb" -> "application/vnd.ms-excel.sheet.binary.macroenabled.12";
1011            case "xlsm" -> "application/vnd.ms-excel.sheet.macroenabled.12";
1012            case "xlsx" -> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
1013            case "xlt" -> "application/vnd.ms-excel";
1014            case "xltm" -> "application/vnd.ms-excel.template.macroenabled.12";
1015            case "xltx" -> "application/vnd.openxmlformats-officedocument.spreadsheetml.template";
1016            case "xlw" -> "application/vnd.ms-excel";
1017            case "xm" -> "audio/xm";
1018            case "xml" -> "application/xml";
1019            case "xo" -> "application/vnd.olpc-sugar";
1020            case "xop" -> "application/xop+xml";
1021            case "xpi" -> "application/x-xpinstall";
1022            case "xpl" -> "application/xproc+xml";
1023            case "xpm" -> "image/x-xpixmap";
1024            case "xpr" -> "application/vnd.is-xpr";
1025            case "xps" -> "application/vnd.ms-xpsdocument";
1026            case "xpw" -> "application/vnd.intercon.formnet";
1027            case "xpx" -> "application/vnd.intercon.formnet";
1028            case "xsl" -> "application/xml";
1029            case "xslt" -> "application/xslt+xml";
1030            case "xsm" -> "application/vnd.syncml+xml";
1031            case "xspf" -> "application/xspf+xml";
1032            case "xul" -> "application/vnd.mozilla.xul+xml";
1033            case "xvm" -> "application/xv+xml";
1034            case "xvml" -> "application/xv+xml";
1035            case "xwd" -> "image/x-xwindowdump";
1036            case "xyz" -> "chemical/x-xyz";
1037            case "xz" -> "application/x-xz";
1038            case "yaml" -> "text/yaml";
1039            case "yang" -> "application/yang";
1040            case "yin" -> "application/yin+xml";
1041            case "yml" -> "text/yaml";
1042            case "z1" -> "application/x-zmachine";
1043            case "z2" -> "application/x-zmachine";
1044            case "z3" -> "application/x-zmachine";
1045            case "z4" -> "application/x-zmachine";
1046            case "z5" -> "application/x-zmachine";
1047            case "z6" -> "application/x-zmachine";
1048            case "z7" -> "application/x-zmachine";
1049            case "z8" -> "application/x-zmachine";
1050            case "zaz" -> "application/vnd.zzazz.deck+xml";
1051            case "zip" -> "application/zip";
1052            case "zir" -> "application/vnd.zul";
1053            case "zirz" -> "application/vnd.zul";
1054            case "zmm" -> "application/vnd.handheld-entertainment+xml";
1055            // MIME-TYPES: END
1056            default -> null;
1057        };
1058    }
1059}