Make WordPress Core

Ticket #39963: mimes.diff

File mimes.diff, 145.2 KB (added by blobfolio, 8 years ago)

proof of concept

  • src/wp-includes/functions.php

    diff --git src/wp-includes/functions.php src/wp-includes/functions.php
    index ee214e9..2aa01e7 100644
    function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) { 
    22602260        $proper_filename = false;
    22612261
    22622262        // Do basic extension validation and MIME mapping
    2263         $wp_filetype = wp_check_filetype( $filename, $mimes );
     2263        $wp_filetype = wp_check_real_filetype( $file, $filename, $mimes );
    22642264        $ext = $wp_filetype['ext'];
    22652265        $type = $wp_filetype['type'];
    22662266
    2267         // We can't do any further validation without a file to work with
    2268         if ( ! file_exists( $file ) ) {
     2267        // We can't do any further validation without a valid file to work with
     2268        if ( ! file_exists( $file ) || false === $ext || false === $type ) {
    22692269                return compact( 'ext', 'type', 'proper_filename' );
    22702270        }
    22712271
    2272         $real_mime = false;
    2273 
    2274         // Validate image types.
    2275         if ( $type && 0 === strpos( $type, 'image/' ) ) {
    2276 
    2277                 // Attempt to figure out what type of image it actually is
    2278                 $real_mime = wp_get_image_mime( $file );
    2279 
    2280                 if ( $real_mime && $real_mime != $type ) {
    2281                         /**
    2282                          * Filters the list mapping image mime types to their respective extensions.
    2283                          *
    2284                          * @since 3.0.0
    2285                          *
    2286                          * @param  array $mime_to_ext Array of image mime types and their matching extensions.
    2287                          */
    2288                         $mime_to_ext = apply_filters( 'getimagesize_mimes_to_exts', array(
    2289                                 'image/jpeg' => 'jpg',
    2290                                 'image/png'  => 'png',
    2291                                 'image/gif'  => 'gif',
    2292                                 'image/bmp'  => 'bmp',
    2293                                 'image/tiff' => 'tif',
    2294                         ) );
    2295 
    2296                         // Replace whatever is after the last period in the filename with the correct extension
    2297                         if ( ! empty( $mime_to_ext[ $real_mime ] ) ) {
    2298                                 $filename_parts = explode( '.', $filename );
    2299                                 array_pop( $filename_parts );
    2300                                 $filename_parts[] = $mime_to_ext[ $real_mime ];
    2301                                 $new_filename = implode( '.', $filename_parts );
    2302 
    2303                                 if ( $new_filename != $filename ) {
    2304                                         $proper_filename = $new_filename; // Mark that it changed
    2305                                 }
    2306                                 // Redefine the extension / MIME
    2307                                 $wp_filetype = wp_check_filetype( $new_filename, $mimes );
    2308                                 $ext = $wp_filetype['ext'];
    2309                                 $type = $wp_filetype['type'];
    2310                         } else {
    2311                                 // Reset $real_mime and try validating again.
    2312                                 $real_mime = false;
    2313                         }
    2314                 }
    2315         }
    2316 
    2317         // Validate files that didn't get validated during previous checks.
    2318         if ( $type && ! $real_mime && extension_loaded( 'fileinfo' ) ) {
    2319                 $finfo = finfo_open( FILEINFO_MIME_TYPE );
    2320                 $real_mime = finfo_file( $finfo, $file );
    2321                 finfo_close( $finfo );
    2322 
    2323                 /*
    2324                  * If $real_mime doesn't match what we're expecting, we need to do some extra
    2325                  * vetting of application mime types to make sure this type of file is allowed.
    2326                  * Other mime types are assumed to be safe, but should be considered unverified.
    2327                  */
    2328                 if ( $real_mime && ( $real_mime !== $type ) && ( 0 === strpos( $real_mime, 'application' ) ) ) {
    2329                         $allowed = get_allowed_mime_types();
    2330 
    2331                         if ( ! in_array( $real_mime, $allowed ) ) {
    2332                                 $type = $ext = false;
    2333                         }
    2334                 }
     2272        // Did the extension change?
     2273        $filename_parts = explode( '.', $filename );
     2274        array_pop( $filename_parts );
     2275        $filename_parts[] = $ext;
     2276        $new_filename = implode( '.', $filename_parts );
     2277        if ( $filename !== $new_filename ) {
     2278                $proper_filename = implode( '.', $filename_parts );
    23352279        }
    23362280
    23372281        /**
    function get_allowed_mime_types( $user = null ) { 
    25692513}
    25702514
    25712515/**
     2516 * Check extension and MIME pairing.
     2517 *
     2518 * @since xxx
     2519 *
     2520 * @param string $ext File extension.
     2521 * @param string $mime MIME type.
     2522 * @return bool True/false.
     2523 */
     2524function wp_check_mime_alias( $ext = '', $mime = '' ) {
     2525        // Load MIME aliases.
     2526        require_once( ABSPATH . WPINC . '/media-mimes.php' );
     2527
     2528        // Standardize inputs.
     2529        $mime = strtolower( sanitize_mime_type( $mime ) );
     2530        $ext = trim( strtolower( $ext ) );
     2531        $ext = ltrim( $ext, '.' );
     2532
     2533        // Can't continue if the extension is not in the database.
     2534        if ( false === ( $mimes = wp_get_mime_aliases( $ext ) ) ) {
     2535                /**
     2536                 * Filters the extension/MIME check.
     2537                 *
     2538                 * @since xxx
     2539                 *
     2540                 * @param bool $match The result: True or false.
     2541                 * @param string $ext The file extension.
     2542                 * @param string $mime The MIME type.
     2543                 */
     2544                return apply_filters( 'wp_check_mime_alias', false, $ext, $mime );
     2545        }
     2546
     2547        if ( 'application/octet-stream' === $mime ) {
     2548                /**
     2549                 * Require Checks For application/octet-stream
     2550                 *
     2551                 * While application/octet-stream a valid media
     2552                 * type, it is also fileinfo's version of a shrug.
     2553                 * In general, it is not authoritative enough a
     2554                 * result from which to reject a file.
     2555                 *
     2556                 * @since xxx
     2557                 *
     2558                 * @param bool $enforce_checking Run checks.
     2559                 */
     2560                $validate = apply_filters( 'wp_check_application_octet_stream', false );
     2561                if ( false === $validate ) {
     2562                        return apply_filters( 'wp_check_mime_alias', true, $ext, $mime );
     2563                }
     2564        }
     2565
     2566        // We want to test for both x-subtype and subtype variants.
     2567        $parts = explode( '/', $mime );
     2568        $subtype = count( $parts ) - 1;
     2569        if ( preg_match( '/^x\-/', $parts[ $subtype ] ) ) {
     2570                $parts[ $subtype ] = preg_replace( '/^x\-/', '', $parts[ $subtype ] );
     2571        } else {
     2572                $parts[ $subtype ] = 'x-' . $parts[ $subtype ];
     2573        }
     2574
     2575        // We now have type/x-subtype and type/subtype.
     2576        $test = array(
     2577                $mime,
     2578                implode( '/', $parts ),
     2579        );
     2580
     2581        // Overlap is success!
     2582        $found = array_intersect( $test, $mimes );
     2583        $match = count( $found ) > 0;
     2584
     2585        return apply_filters( 'wp_check_mime_alias', $match, $ext, $mime );
     2586}
     2587
     2588/**
     2589 * Retrieve the "real" file type from the file.
     2590 *
     2591 * This extends `wp_check_filetype()` to additionally
     2592 * consider content-based indicators of a file's
     2593 * true type.
     2594 *
     2595 * The content-based type will override the name-based
     2596 * type if available and included in the $mimes list.
     2597 *
     2598 * A false response will be set if the extension is
     2599 * not allowed, or if a "real MIME" was found and
     2600 * that MIME is not allowed.
     2601 *
     2602 * @since xxx
     2603 *
     2604 * @see wp_check_filetype()
     2605 * @see wp_check_filetype_and_ext()
     2606 *
     2607 * @param string $file Full path to the file.
     2608 * @param string $filename The name of the file (may differ from $file due to $file being in a tmp directory).
     2609 * @param array  $mimes Optional. Key is the file extension with value as the mime type.
     2610 * @return array Values with extension first and mime type.
     2611 */
     2612function wp_check_real_filetype( $file, $filename = null, $mimes = null ) {
     2613        // Default filename.
     2614        if ( empty( $filename ) ) {
     2615                $filename = basename( $file );
     2616        }
     2617
     2618        // Default MIMEs.
     2619        if ( empty( $mimes ) ) {
     2620                $mimes = get_allowed_mime_types();
     2621        }
     2622
     2623        // Run a name-based check first.
     2624        $checked = wp_check_filetype( $filename, $mimes );
     2625
     2626        // Only dig deeper if we can.
     2627        if (
     2628                false !== $checked['ext'] &&
     2629                false !== $checked['type'] &&
     2630                file_exists( $file )
     2631        ) {
     2632                $real_mime = false;
     2633
     2634                try {
     2635                        // Try exif first. It is commonly applicable and
     2636                        // relatively low in overhead.
     2637                        // TODO requires patch #40017.
     2638                        // $real_mime = wp_get_image_mime( $file );
     2639
     2640                        // Fall back to fileinfo, if available.
     2641                        if (
     2642                                false === $real_mime &&
     2643                                extension_loaded( 'fileinfo' ) &&
     2644                                defined( 'FILEINFO_MIME_TYPE' )
     2645                        ) {
     2646                                $finfo = finfo_open( FILEINFO_MIME_TYPE );
     2647                                $real_mime = finfo_file( $finfo, $file );
     2648                                finfo_close( $finfo );
     2649
     2650                                // Account for inconsistent return values.
     2651                                if ( ! is_string( $real_mime ) || ! strlen( $real_mime ) ) {
     2652                                        $real_mime = false;
     2653                                }
     2654                        }
     2655                } catch ( Throwable $e ) {
     2656                        $real_mime = false;
     2657                } catch ( Exception $e ) {
     2658                        $real_mime = false;
     2659                }
     2660
     2661                // Evaluate our real MIME.
     2662                if ( false !== $real_mime ) {
     2663                        $real_mime = strtolower( sanitize_mime_type( $real_mime ) );
     2664                        if ( ! wp_check_mime_alias( $checked['ext'], $real_mime ) ) {
     2665                                // If the extension is incorrect but the type is otherwise
     2666                                // valid, update the extension.
     2667                                if ( false !== $extensions = array_search( $real_mime, $mimes, true ) ) {
     2668                                        $extensions = explode( '|', $extensions );
     2669                                        $checked['ext'] = $extensions[0];
     2670                                        $checked['type'] = $real_mime;
     2671                                } // Otherwise reject the results.
     2672                                else {
     2673                                        $checked['ext'] = false;
     2674                                        $checked['type'] = false;
     2675                                }
     2676                        }
     2677                }
     2678        }// End content-based type checking.
     2679
     2680        /**
     2681         * Filters the real check.
     2682         *
     2683         * @since xxx
     2684         *
     2685         * @param array Found values with extension first and mime type.
     2686         * @param string $file Full path to the file.
     2687         * @param string $filename The name of the file (may differ from $file due to $file being in a tmp directory).
     2688         * @param array $mimes Optional. Key is the file extension with value as the mime type.
     2689         */
     2690        return apply_filters( 'wp_check_real_filetype', $checked, $file, $filename, $mimes );
     2691}
     2692
     2693/**
    25722694 * Display "Are You Sure" message to confirm the action being taken.
    25732695 *
    25742696 * If the action has the nonce explain message, then it will be displayed
  • new file src/wp-includes/media-mimes.php

    diff --git src/wp-includes/media-mimes.php src/wp-includes/media-mimes.php
    new file mode 100644
    index 0000000..f4ffe08
    - +  
     1<?php
     2/**
     3 * WordPress media types.
     4 *
     5 * @package WordPress
     6 * @subpackage Media
     7 * @since xxx
     8 */
     9
     10/**
     11 * Return MIME aliases for a particular file extension.
     12 *
     13 * @since xxx
     14 *
     15 * @see {https://www.iana.org/assignments/media-types}
     16 * @see {https://raw.githubusercontent.com/apache/httpd/trunk/docs/conf/mime.types}
     17 * @see {http://hg.nginx.org/nginx/raw-file/default/conf/mime.types}
     18 * @see {https://cgit.freedesktop.org/xdg/shared-mime-info/plain/freedesktop.org.xml.in}
     19 * @see {https://raw.githubusercontent.com/apache/tika/master/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml}
     20 * @see {https://github.com/Blobfolio/blob-mimes}
     21 *
     22 * @param string $ext File extension.
     23 * @return array|bool MIME types. False on failure.
     24 */
     25function wp_get_mime_aliases( $ext = '' ) {
     26        $mimes = array(
     27                '32x' => array(
     28                        'application/x-genesis-32x-rom',
     29                ),
     30                '3dml' => array(
     31                        'text/vnd.in3d.3dml',
     32                ),
     33                '3ds' => array(
     34                        'image/x-3ds',
     35                ),
     36                '3fr' => array(
     37                        'image/x-raw-hasselblad',
     38                ),
     39                '3g2' => array(
     40                        'audio/3gpp2',
     41                        'video/3gpp2',
     42                        'video/mp4',
     43                ),
     44                '3ga' => array(
     45                        'audio/3gpp',
     46                        'audio/3gpp-encrypted',
     47                        'audio/x-rn-3gpp-amr',
     48                        'audio/x-rn-3gpp-amr-encrypted',
     49                        'audio/x-rn-3gpp-amr-wb',
     50                        'audio/x-rn-3gpp-amr-wb-encrypted',
     51                        'video/3gp',
     52                        'video/3gpp',
     53                        'video/3gpp-encrypted',
     54                        'video/mp4',
     55                ),
     56                '3gp' => array(
     57                        'audio/3gpp',
     58                        'audio/3gpp-encrypted',
     59                        'audio/x-rn-3gpp-amr',
     60                        'audio/x-rn-3gpp-amr-encrypted',
     61                        'audio/x-rn-3gpp-amr-wb',
     62                        'audio/x-rn-3gpp-amr-wb-encrypted',
     63                        'video/3gp',
     64                        'video/3gpp',
     65                        'video/3gpp-encrypted',
     66                        'video/mp4',
     67                ),
     68                '3gp2' => array(
     69                        'audio/3gpp2',
     70                        'video/3gpp2',
     71                        'video/mp4',
     72                ),
     73                '3gpp' => array(
     74                        'audio/3gpp',
     75                        'audio/3gpp-encrypted',
     76                        'audio/x-rn-3gpp-amr',
     77                        'audio/x-rn-3gpp-amr-encrypted',
     78                        'audio/x-rn-3gpp-amr-wb',
     79                        'audio/x-rn-3gpp-amr-wb-encrypted',
     80                        'video/3gp',
     81                        'video/3gpp',
     82                        'video/3gpp-encrypted',
     83                        'video/mp4',
     84                ),
     85                '3gpp2' => array(
     86                        'audio/3gpp2',
     87                        'video/3gpp2',
     88                        'video/mp4',
     89                ),
     90                '4th' => array(
     91                        'text/plain',
     92                        'text/x-forth',
     93                ),
     94                '7z' => array(
     95                        'application/x-7z-compressed',
     96                ),
     97                'a26' => array(
     98                        'application/x-atari-2600-rom',
     99                ),
     100                'a78' => array(
     101                        'application/x-atari-7800-rom',
     102                ),
     103                'aab' => array(
     104                        'application/x-authorware-bin',
     105                ),
     106                'aac' => array(
     107                        'audio/aac',
     108                        'audio/x-aac',
     109                ),
     110                'aam' => array(
     111                        'application/x-authorware-map',
     112                ),
     113                'aart' => array(
     114                        'text/plain',
     115                ),
     116                'aas' => array(
     117                        'application/x-authorware-seg',
     118                ),
     119                'abs-linkmap' => array(
     120                        'text/plain',
     121                ),
     122                'abs-menulinks' => array(
     123                        'text/plain',
     124                ),
     125                'abw' => array(
     126                        'application/x-abiword',
     127                        'application/xml',
     128                ),
     129                'ac' => array(
     130                        'application/pkix-attr-cert',
     131                        'text/plain',
     132                ),
     133                'ac3' => array(
     134                        'audio/ac3',
     135                ),
     136                'acc' => array(
     137                        'application/vnd.americandynamics.acc',
     138                ),
     139                'ace' => array(
     140                        'application/x-ace',
     141                        'application/x-ace-compressed',
     142                ),
     143                'acfm' => array(
     144                        'application/x-font-adobe-metric',
     145                ),
     146                'acu' => array(
     147                        'application/vnd.acucobol',
     148                ),
     149                'acutc' => array(
     150                        'application/vnd.acucorp',
     151                ),
     152                'ad' => array(
     153                        'text/plain',
     154                        'text/x-asciidoc',
     155                ),
     156                'ada' => array(
     157                        'text/plain',
     158                        'text/x-ada',
     159                ),
     160                'adb' => array(
     161                        'text/plain',
     162                        'text/x-ada',
     163                        'text/x-adasrc',
     164                ),
     165                'adf' => array(
     166                        'application/x-amiga-disk-format',
     167                ),
     168                'adoc' => array(
     169                        'text/plain',
     170                        'text/x-asciidoc',
     171                ),
     172                'adp' => array(
     173                        'audio/adpcm',
     174                ),
     175                'ads' => array(
     176                        'text/plain',
     177                        'text/x-ada',
     178                        'text/x-adasrc',
     179                ),
     180                'aep' => array(
     181                        'application/vnd.adobe.aftereffects.project',
     182                        'application/vnd.audiograph',
     183                ),
     184                'aet' => array(
     185                        'application/vnd.adobe.aftereffects.template',
     186                ),
     187                'afm' => array(
     188                        'application/x-font-adobe-metric',
     189                        'application/x-font-afm',
     190                        'application/x-font-type1',
     191                ),
     192                'afp' => array(
     193                        'application/vnd.ibm.modcap',
     194                ),
     195                'ag' => array(
     196                        'image/x-applix-graphics',
     197                ),
     198                'agb' => array(
     199                        'application/x-gba-rom',
     200                ),
     201                'ahead' => array(
     202                        'application/vnd.ahead.space',
     203                ),
     204                'ai' => array(
     205                        'application/illustrator',
     206                        'application/postscript',
     207                ),
     208                'aif' => array(
     209                        'application/x-iff',
     210                        'audio/aiff',
     211                        'audio/x-aiff',
     212                ),
     213                'aifc' => array(
     214                        'application/x-iff',
     215                        'audio/aiff',
     216                        'audio/x-aifc',
     217                        'audio/x-aiff',
     218                        'audio/x-aiffc',
     219                ),
     220                'aiff' => array(
     221                        'application/x-iff',
     222                        'audio/aiff',
     223                        'audio/x-aiff',
     224                ),
     225                'aiffc' => array(
     226                        'application/x-iff',
     227                        'audio/x-aifc',
     228                        'audio/x-aiffc',
     229                ),
     230                'air' => array(
     231                        'application/vnd.adobe.air-application-installer-package+zip',
     232                ),
     233                'ait' => array(
     234                        'application/vnd.dvb.ait',
     235                ),
     236                'aj' => array(
     237                        'text/plain',
     238                        'text/x-aspectj',
     239                ),
     240                'al' => array(
     241                        'application/x-executable',
     242                        'application/x-perl',
     243                        'text/plain',
     244                        'text/x-perl',
     245                ),
     246                'alz' => array(
     247                        'application/x-alz',
     248                ),
     249                'am' => array(
     250                        'text/plain',
     251                ),
     252                'amfm' => array(
     253                        'application/x-font-adobe-metric',
     254                ),
     255                'ami' => array(
     256                        'application/vnd.amiga.ami',
     257                ),
     258                'amr' => array(
     259                        'audio/amr',
     260                        'audio/amr-encrypted',
     261                ),
     262                'amz' => array(
     263                        'audio/x-amzxml',
     264                ),
     265                'ani' => array(
     266                        'application/x-navi-animation',
     267                ),
     268                'anpa' => array(
     269                        'text/vnd.iptc.anpa',
     270                ),
     271                'anx' => array(
     272                        'application/annodex',
     273                        'application/x-annodex',
     274                ),
     275                'any' => array(
     276                        'application/vnd.mitsubishi.misty-guard.trustweb',
     277                ),
     278                'ape' => array(
     279                        'audio/x-ape',
     280                ),
     281                'apk' => array(
     282                        'application/java-archive',
     283                        'application/vnd.android.package-archive',
     284                        'application/x-java-archive',
     285                ),
     286                'appcache' => array(
     287                        'text/cache-manifest',
     288                ),
     289                'appimage' => array(
     290                        'application/x-executable',
     291                        'application/x-iso9660-appimage',
     292                ),
     293                'applescript' => array(
     294                        'text/plain',
     295                        'text/x-applescript',
     296                ),
     297                'application' => array(
     298                        'application/x-ms-application',
     299                ),
     300                'apr' => array(
     301                        'application/vnd.lotus-approach',
     302                ),
     303                'apxml' => array(
     304                        'application/auth-policy+xml',
     305                ),
     306                'ar' => array(
     307                        'application/x-archive',
     308                        'application/x-unix-archive',
     309                ),
     310                'arc' => array(
     311                        'application/x-freearc',
     312                ),
     313                'arj' => array(
     314                        'application/x-arj',
     315                        'application/x-arj-compressed',
     316                ),
     317                'arw' => array(
     318                        'image/x-dcraw',
     319                        'image/x-raw-sony',
     320                        'image/x-sony-arw',
     321                ),
     322                'as' => array(
     323                        'application/x-applix-spreadsheet',
     324                        'text/plain',
     325                        'text/x-actionscript',
     326                ),
     327                'asc' => array(
     328                        'application/pgp',
     329                        'application/pgp-encrypted',
     330                        'application/pgp-keys',
     331                        'application/pgp-signature',
     332                        'text/plain',
     333                ),
     334                'ascii' => array(
     335                        'text/vnd.ascii-art',
     336                ),
     337                'asciidoc' => array(
     338                        'text/plain',
     339                        'text/x-asciidoc',
     340                ),
     341                'asf' => array(
     342                        'application/vnd.ms-asf',
     343                        'video/x-ms-asf',
     344                        'video/x-ms-asf-plugin',
     345                        'video/x-ms-wm',
     346                ),
     347                'asice' => array(
     348                        'application/vnd.etsi.asic-e+zip',
     349                        'application/zip',
     350                ),
     351                'asics' => array(
     352                        'application/vnd.etsi.asic-s+zip',
     353                        'application/zip',
     354                ),
     355                'asm' => array(
     356                        'text/plain',
     357                        'text/x-asm',
     358                        'text/x-assembly',
     359                ),
     360                'asnd' => array(
     361                        'audio/vnd.adobe.soundbooth',
     362                ),
     363                'aso' => array(
     364                        'application/vnd.accpac.simply.aso',
     365                ),
     366                'asp' => array(
     367                        'application/x-asp',
     368                        'text/asp',
     369                        'text/plain',
     370                ),
     371                'aspx' => array(
     372                        'text/aspdotnet',
     373                        'text/plain',
     374                ),
     375                'ass' => array(
     376                        'text/plain',
     377                        'text/x-ssa',
     378                ),
     379                'asx' => array(
     380                        'application/x-ms-asx',
     381                        'application/xml',
     382                        'audio/x-ms-asx',
     383                        'video/x-ms-asf',
     384                        'video/x-ms-wax',
     385                        'video/x-ms-wmx',
     386                        'video/x-ms-wvx',
     387                ),
     388                'atc' => array(
     389                        'application/vnd.acucorp',
     390                ),
     391                'atom' => array(
     392                        'application/atom+xml',
     393                        'application/xml',
     394                ),
     395                'atomcat' => array(
     396                        'application/atomcat+xml',
     397                ),
     398                'atomdeleted' => array(
     399                        'application/atomdeleted+xml',
     400                ),
     401                'atomsvc' => array(
     402                        'application/atomsvc+xml',
     403                ),
     404                'atx' => array(
     405                        'application/vnd.antix.game-component',
     406                ),
     407                'au' => array(
     408                        'audio/basic',
     409                ),
     410                'auc' => array(
     411                        'application/tamp-apex-update-confirm',
     412                ),
     413                'automount' => array(
     414                        'text/plain',
     415                        'text/x-systemd-unit',
     416                ),
     417                'avf' => array(
     418                        'video/avi',
     419                        'video/divx',
     420                        'video/msvideo',
     421                        'video/vnd.divx',
     422                        'video/x-avi',
     423                        'video/x-msvideo',
     424                ),
     425                'avi' => array(
     426                        'video/avi',
     427                        'video/divx',
     428                        'video/msvideo',
     429                        'video/vnd.divx',
     430                        'video/x-avi',
     431                        'video/x-msvideo',
     432                ),
     433                'aw' => array(
     434                        'application/applixware',
     435                        'application/x-applix-word',
     436                ),
     437                'awb' => array(
     438                        'audio/amr-wb',
     439                        'audio/amr-wb-encrypted',
     440                ),
     441                'awk' => array(
     442                        'application/x-awk',
     443                        'application/x-executable',
     444                        'text/plain',
     445                        'text/x-awk',
     446                ),
     447                'axa' => array(
     448                        'application/annodex',
     449                        'audio/annodex',
     450                        'audio/x-annodex',
     451                ),
     452                'axv' => array(
     453                        'application/annodex',
     454                        'video/annodex',
     455                        'video/x-annodex',
     456                ),
     457                'axx' => array(
     458                        'application/x-axcrypt',
     459                ),
     460                'azf' => array(
     461                        'application/vnd.airzip.filesecure.azf',
     462                ),
     463                'azs' => array(
     464                        'application/vnd.airzip.filesecure.azs',
     465                ),
     466                'azw' => array(
     467                        'application/vnd.amazon.ebook',
     468                ),
     469                'azw3' => array(
     470                        'application/vnd.amazon.mobi8-ebook',
     471                ),
     472                'bak' => array(
     473                        'application/x-trash',
     474                ),
     475                'bas' => array(
     476                        'text/plain',
     477                        'text/x-basic',
     478                ),
     479                'bash' => array(
     480                        'application/x-sh',
     481                        'text/plain',
     482                ),
     483                'bat' => array(
     484                        'application/x-msdownload',
     485                ),
     486                'bay' => array(
     487                        'image/x-raw-casio',
     488                ),
     489                'bcpio' => array(
     490                        'application/x-bcpio',
     491                ),
     492                'bdf' => array(
     493                        'application/x-font-bdf',
     494                ),
     495                'bdm' => array(
     496                        'application/vnd.syncml.dm+wbxml',
     497                        'video/mp2t',
     498                ),
     499                'bdmv' => array(
     500                        'video/mp2t',
     501                ),
     502                'bed' => array(
     503                        'application/vnd.realvnc.bed',
     504                ),
     505                'bh2' => array(
     506                        'application/vnd.fujitsu.oasysprs',
     507                ),
     508                'bib' => array(
     509                        'application/x-bibtex-text-file',
     510                        'text/plain',
     511                        'text/x-bibtex',
     512                ),
     513                'bibtex' => array(
     514                        'application/x-bibtex-text-file',
     515                        'text/plain',
     516                ),
     517                'bin' => array(
     518                        'application/octet-stream',
     519                        'application/x-saturn-rom',
     520                        'application/x-sega-cd-rom',
     521                ),
     522                'blb' => array(
     523                        'application/x-blorb',
     524                ),
     525                'blend' => array(
     526                        'application/x-blender',
     527                ),
     528                'blender' => array(
     529                        'application/x-blender',
     530                ),
     531                'blorb' => array(
     532                        'application/x-blorb',
     533                ),
     534                'bmi' => array(
     535                        'application/vnd.bmi',
     536                ),
     537                'bmp' => array(
     538                        'image/bmp',
     539                        'image/x-bmp',
     540                        'image/x-ms-bmp',
     541                ),
     542                'book' => array(
     543                        'application/vnd.framemaker',
     544                ),
     545                'box' => array(
     546                        'application/vnd.previewsystems.box',
     547                ),
     548                'boz' => array(
     549                        'application/x-bzip',
     550                        'application/x-bzip2',
     551                ),
     552                'bpg' => array(
     553                        'image/x-bpg',
     554                ),
     555                'bpk' => array(
     556                        'application/octet-stream',
     557                ),
     558                'bpm' => array(
     559                        'application/bizagi-modeler',
     560                        'application/zip',
     561                ),
     562                'bsdiff' => array(
     563                        'application/x-bsdiff',
     564                ),
     565                'btf' => array(
     566                        'image/prs.btif',
     567                ),
     568                'btif' => array(
     569                        'image/prs.btif',
     570                ),
     571                'bz' => array(
     572                        'application/x-bzip',
     573                        'application/x-bzip2',
     574                ),
     575                'bz2' => array(
     576                        'application/x-bzip',
     577                        'application/x-bzip2',
     578                ),
     579                'c' => array(
     580                        'text/x-c',
     581                ),
     582                'c11amc' => array(
     583                        'application/vnd.cluetrust.cartomobile-config',
     584                ),
     585                'c11amz' => array(
     586                        'application/vnd.cluetrust.cartomobile-config-pkg',
     587                ),
     588                'c4d' => array(
     589                        'application/vnd.clonk.c4group',
     590                ),
     591                'c4f' => array(
     592                        'application/vnd.clonk.c4group',
     593                ),
     594                'c4g' => array(
     595                        'application/vnd.clonk.c4group',
     596                ),
     597                'c4p' => array(
     598                        'application/vnd.clonk.c4group',
     599                ),
     600                'c4u' => array(
     601                        'application/vnd.clonk.c4group',
     602                ),
     603                'cab' => array(
     604                        'application/vnd.ms-cab-compressed',
     605                        'zz-application/zz-winassoc-cab',
     606                ),
     607                'cacerts' => array(
     608                        'application/x-java-keystore',
     609                ),
     610                'caf' => array(
     611                        'audio/x-caf',
     612                ),
     613                'cap' => array(
     614                        'application/pcap',
     615                        'application/vnd.tcpdump.pcap',
     616                        'application/x-pcap',
     617                ),
     618                'car' => array(
     619                        'application/vnd.curl.car',
     620                ),
     621                'cat' => array(
     622                        'application/vnd.ms-pki.seccat',
     623                ),
     624                'cb7' => array(
     625                        'application/x-7z-compressed',
     626                        'application/x-cb7',
     627                        'application/x-cbr',
     628                ),
     629                'cba' => array(
     630                        'application/x-cbr',
     631                ),
     632                'cbl' => array(
     633                        'text/plain',
     634                        'text/x-cobol',
     635                ),
     636                'cbor' => array(
     637                        'application/cbor',
     638                        'application/cose',
     639                        'application/cose-key',
     640                        'application/cose-key-set',
     641                ),
     642                'cbr' => array(
     643                        'application/vnd.rar',
     644                        'application/x-cbr',
     645                ),
     646                'cbt' => array(
     647                        'application/x-cbr',
     648                        'application/x-cbt',
     649                        'application/x-tar',
     650                ),
     651                'cbz' => array(
     652                        'application/vnd.comicbook+zip',
     653                        'application/x-cbr',
     654                        'application/x-cbz',
     655                        'application/zip',
     656                ),
     657                'cc' => array(
     658                        'text/plain',
     659                        'text/x-c',
     660                        'text/x-c++src',
     661                        'text/x-csrc',
     662                ),
     663                'ccc' => array(
     664                        'text/vnd.net2phone.commcenter.command',
     665                ),
     666                'ccmp' => array(
     667                        'application/ccmp+xml',
     668                ),
     669                'ccmx' => array(
     670                        'application/x-ccmx',
     671                        'text/plain',
     672                ),
     673                'cco' => array(
     674                        'application/x-cocoa',
     675                ),
     676                'cct' => array(
     677                        'application/x-director',
     678                ),
     679                'ccxml' => array(
     680                        'application/ccxml+xml',
     681                ),
     682                'cdbcmsg' => array(
     683                        'application/vnd.contact.cmsg',
     684                ),
     685                'cdf' => array(
     686                        'application/x-netcdf',
     687                ),
     688                'cdkey' => array(
     689                        'application/vnd.mediastation.cdkey',
     690                ),
     691                'cdmia' => array(
     692                        'application/cdmi-capability',
     693                ),
     694                'cdmic' => array(
     695                        'application/cdmi-container',
     696                ),
     697                'cdmid' => array(
     698                        'application/cdmi-domain',
     699                ),
     700                'cdmio' => array(
     701                        'application/cdmi-object',
     702                ),
     703                'cdmiq' => array(
     704                        'application/cdmi-queue',
     705                ),
     706                'cdr' => array(
     707                        'application/cdr',
     708                        'application/coreldraw',
     709                        'application/vnd.corel-draw',
     710                        'application/x-cdr',
     711                        'application/x-coreldraw',
     712                        'image/cdr',
     713                        'image/x-cdr',
     714                        'zz-application/zz-winassoc-cdr',
     715                ),
     716                'cdx' => array(
     717                        'chemical/x-cdx',
     718                ),
     719                'cdxml' => array(
     720                        'application/vnd.chemdraw+xml',
     721                ),
     722                'cdy' => array(
     723                        'application/vnd.cinderella',
     724                ),
     725                'cer' => array(
     726                        'application/pkix-cert',
     727                ),
     728                'cert' => array(
     729                        'application/x-x509-ca-cert',
     730                ),
     731                'cfc' => array(
     732                        'text/plain',
     733                        'text/x-coldfusion',
     734                ),
     735                'cfg' => array(
     736                        'text/plain',
     737                ),
     738                'cfm' => array(
     739                        'text/plain',
     740                        'text/x-coldfusion',
     741                ),
     742                'cfml' => array(
     743                        'text/plain',
     744                        'text/x-coldfusion',
     745                ),
     746                'cfs' => array(
     747                        'application/x-cfs-compressed',
     748                ),
     749                'cgb' => array(
     750                        'application/x-gameboy-color-rom',
     751                ),
     752                'cgi' => array(
     753                        'text/plain',
     754                        'text/x-cgi',
     755                ),
     756                'cgm' => array(
     757                        'image/cgm',
     758                ),
     759                'chat' => array(
     760                        'application/x-chat',
     761                ),
     762                'chm' => array(
     763                        'application/vnd.ms-htmlhelp',
     764                        'application/x-chm',
     765                ),
     766                'chrt' => array(
     767                        'application/vnd.kde.kchart',
     768                        'application/x-kchart',
     769                ),
     770                'cif' => array(
     771                        'chemical/x-cif',
     772                ),
     773                'cii' => array(
     774                        'application/vnd.anser-web-certificate-issue-initiation',
     775                ),
     776                'cil' => array(
     777                        'application/vnd.ms-artgalry',
     778                ),
     779                'cl' => array(
     780                        'application/simple-filter+xml',
     781                        'message/imdn+xml',
     782                        'text/plain',
     783                        'text/x-common-lisp',
     784                        'text/x-csrc',
     785                        'text/x-opencl-src',
     786                ),
     787                'cla' => array(
     788                        'application/vnd.claymore',
     789                ),
     790                'class' => array(
     791                        'application/java',
     792                        'application/java-byte-code',
     793                        'application/java-vm',
     794                        'application/x-java',
     795                        'application/x-java-class',
     796                        'application/x-java-vm',
     797                ),
     798                'classpath' => array(
     799                        'text/plain',
     800                ),
     801                'clj' => array(
     802                        'text/plain',
     803                        'text/x-clojure',
     804                ),
     805                'clkk' => array(
     806                        'application/vnd.crick.clicker.keyboard',
     807                ),
     808                'clkp' => array(
     809                        'application/vnd.crick.clicker.palette',
     810                ),
     811                'clkt' => array(
     812                        'application/vnd.crick.clicker.template',
     813                ),
     814                'clkw' => array(
     815                        'application/vnd.crick.clicker.wordbank',
     816                ),
     817                'clkx' => array(
     818                        'application/vnd.crick.clicker',
     819                ),
     820                'clp' => array(
     821                        'application/x-msclip',
     822                ),
     823                'clpi' => array(
     824                        'video/mp2t',
     825                ),
     826                'cls' => array(
     827                        'application/x-tex',
     828                        'text/plain',
     829                        'text/x-basic',
     830                        'text/x-tex',
     831                        'text/x-vbasic',
     832                ),
     833                'clue' => array(
     834                        'application/clueinfo+xml',
     835                ),
     836                'cmake' => array(
     837                        'text/plain',
     838                        'text/x-cmake',
     839                ),
     840                'cmc' => array(
     841                        'application/vnd.cosmocaller',
     842                ),
     843                'cmd' => array(
     844                        'text/plain',
     845                ),
     846                'cmdf' => array(
     847                        'chemical/x-cmdf',
     848                ),
     849                'cml' => array(
     850                        'chemical/x-cml',
     851                ),
     852                'cmp' => array(
     853                        'application/vnd.yellowriver-custom-menu',
     854                ),
     855                'cmsc' => array(
     856                        'application/cms',
     857                ),
     858                'cmx' => array(
     859                        'image/x-cmx',
     860                ),
     861                'cnd' => array(
     862                        'text/jcr-cnd',
     863                ),
     864                'cob' => array(
     865                        'text/plain',
     866                        'text/x-cobol',
     867                ),
     868                'cod' => array(
     869                        'application/vnd.rim.cod',
     870                ),
     871                'coffee' => array(
     872                        'application/vnd.coffeescript',
     873                        'text/plain',
     874                        'text/x-coffeescript',
     875                ),
     876                'com' => array(
     877                        'application/x-msdownload',
     878                ),
     879                'conf' => array(
     880                        'text/plain',
     881                ),
     882                'config' => array(
     883                        'text/plain',
     884                ),
     885                'core' => array(
     886                        'application/x-core',
     887                ),
     888                'cpi' => array(
     889                        'video/mp2t',
     890                ),
     891                'cpio' => array(
     892                        'application/x-cpio',
     893                ),
     894                'cpl' => array(
     895                        'application/cpl+xml',
     896                ),
     897                'cpp' => array(
     898                        'text/plain',
     899                        'text/x-c',
     900                        'text/x-c++src',
     901                        'text/x-csrc',
     902                ),
     903                'cpt' => array(
     904                        'application/mac-compactpro',
     905                ),
     906                'cr2' => array(
     907                        'image/x-canon-cr2',
     908                        'image/x-dcraw',
     909                        'image/x-raw-canon',
     910                ),
     911                'crd' => array(
     912                        'application/x-mscardfile',
     913                ),
     914                'crdownload' => array(
     915                        'application/x-partial-download',
     916                ),
     917                'crl' => array(
     918                        'application/pkix-crl',
     919                ),
     920                'crt' => array(
     921                        'application/x-x509-ca-cert',
     922                ),
     923                'crw' => array(
     924                        'image/x-canon-crw',
     925                        'image/x-dcraw',
     926                        'image/x-raw-canon',
     927                ),
     928                'crx' => array(
     929                        'application/x-chrome-package',
     930                ),
     931                'cryptonote' => array(
     932                        'application/vnd.rig.cryptonote',
     933                ),
     934                'cs' => array(
     935                        'text/plain',
     936                        'text/x-csharp',
     937                        'text/x-csrc',
     938                ),
     939                'csh' => array(
     940                        'application/x-csh',
     941                        'application/x-shellscript',
     942                ),
     943                'csml' => array(
     944                        'chemical/x-csml',
     945                ),
     946                'csp' => array(
     947                        'application/vnd.commonspace',
     948                ),
     949                'csrattrs' => array(
     950                        'application/csrattrs',
     951                ),
     952                'css' => array(
     953                        'text/css',
     954                        'text/plain',
     955                ),
     956                'cst' => array(
     957                        'application/x-director',
     958                ),
     959                'csv' => array(
     960                        'text/csv',
     961                        'text/plain',
     962                        'text/x-comma-separated-values',
     963                        'text/x-csv',
     964                ),
     965                'csvs' => array(
     966                        'text/csv-schema',
     967                        'text/plain',
     968                ),
     969                'cu' => array(
     970                        'application/cu-seeme',
     971                ),
     972                'cuc' => array(
     973                        'application/tamp-community-update-confirm',
     974                ),
     975                'cue' => array(
     976                        'application/x-cue',
     977                        'text/plain',
     978                ),
     979                'cur' => array(
     980                        'image/x-win-bitmap',
     981                ),
     982                'curl' => array(
     983                        'text/vnd.curl',
     984                ),
     985                'cw' => array(
     986                        'application/prs.cww',
     987                ),
     988                'cwiki' => array(
     989                        'text/plain',
     990                ),
     991                'cwk' => array(
     992                        'application/x-appleworks',
     993                ),
     994                'cww' => array(
     995                        'application/prs.cww',
     996                ),
     997                'cxt' => array(
     998                        'application/x-director',
     999                ),
     1000                'cxx' => array(
     1001                        'text/plain',
     1002                        'text/x-c',
     1003                        'text/x-c++src',
     1004                        'text/x-csrc',
     1005                ),
     1006                'dae' => array(
     1007                        'model/vnd.collada+xml',
     1008                ),
     1009                'daf' => array(
     1010                        'application/vnd.mobius.daf',
     1011                ),
     1012                'dar' => array(
     1013                        'application/x-dar',
     1014                ),
     1015                'dart' => array(
     1016                        'application/vnd.dart',
     1017                ),
     1018                'data' => array(
     1019                        'text/plain',
     1020                ),
     1021                'dataless' => array(
     1022                        'application/vnd.fdsn.seed',
     1023                ),
     1024                'davmount' => array(
     1025                        'application/davmount+xml',
     1026                ),
     1027                'dbase' => array(
     1028                        'application/x-dbf',
     1029                ),
     1030                'dbase3' => array(
     1031                        'application/x-dbf',
     1032                ),
     1033                'dbf' => array(
     1034                        'application/dbase',
     1035                        'application/dbf',
     1036                        'application/x-dbase',
     1037                        'application/x-dbf',
     1038                ),
     1039                'dbk' => array(
     1040                        'application/docbook+xml',
     1041                        'application/vnd.oasis.docbook+xml',
     1042                        'application/x-docbook+xml',
     1043                        'application/xml',
     1044                ),
     1045                'dc' => array(
     1046                        'application/x-dc-rom',
     1047                ),
     1048                'dcl' => array(
     1049                        'text/plain',
     1050                        'text/x-dcl',
     1051                ),
     1052                'dcm' => array(
     1053                        'application/dicom',
     1054                ),
     1055                'dcr' => array(
     1056                        'application/x-director',
     1057                        'image/x-dcraw',
     1058                        'image/x-kodak-dcr',
     1059                ),
     1060                'dcs' => array(
     1061                        'image/x-raw-kodak',
     1062                ),
     1063                'dcurl' => array(
     1064                        'text/vnd.curl.dcurl',
     1065                ),
     1066                'dd2' => array(
     1067                        'application/vnd.oma.dd2+xml',
     1068                ),
     1069                'ddd' => array(
     1070                        'application/vnd.fujixerox.ddd',
     1071                ),
     1072                'ddf' => array(
     1073                        'application/vnd.syncml.dmddf+wbxml',
     1074                        'application/vnd.syncml.dmddf+xml',
     1075                ),
     1076                'dds' => array(
     1077                        'image/x-dds',
     1078                ),
     1079                'deb' => array(
     1080                        'application/octet-stream',
     1081                        'application/vnd.debian.binary-package',
     1082                        'application/x-archive',
     1083                        'application/x-deb',
     1084                        'application/x-debian-package',
     1085                ),
     1086                'def' => array(
     1087                        'text/plain',
     1088                ),
     1089                'deploy' => array(
     1090                        'application/octet-stream',
     1091                ),
     1092                'der' => array(
     1093                        'application/x-x509-ca-cert',
     1094                ),
     1095                'desktop' => array(
     1096                        'application/x-desktop',
     1097                        'application/x-gnome-app-info',
     1098                        'text/plain',
     1099                ),
     1100                'device' => array(
     1101                        'text/plain',
     1102                        'text/x-systemd-unit',
     1103                ),
     1104                'dex' => array(
     1105                        'application/x-dex',
     1106                ),
     1107                'dfac' => array(
     1108                        'application/vnd.dreamfactory',
     1109                ),
     1110                'dgc' => array(
     1111                        'application/x-dgc-compressed',
     1112                ),
     1113                'di' => array(
     1114                        'text/x-csrc',
     1115                        'text/x-dsrc',
     1116                ),
     1117                'dia' => array(
     1118                        'application/x-dia-diagram',
     1119                        'application/xml',
     1120                ),
     1121                'dib' => array(
     1122                        'image/bmp',
     1123                        'image/x-bmp',
     1124                        'image/x-ms-bmp',
     1125                ),
     1126                'dic' => array(
     1127                        'text/x-c',
     1128                ),
     1129                'dicomdir' => array(
     1130                        'application/dicom',
     1131                ),
     1132                'dif' => array(
     1133                        'application/dif+xml',
     1134                        'application/xml',
     1135                ),
     1136                'diff' => array(
     1137                        'text/plain',
     1138                        'text/x-diff',
     1139                        'text/x-patch',
     1140                ),
     1141                'dir' => array(
     1142                        'application/x-director',
     1143                ),
     1144                'dis' => array(
     1145                        'application/vnd.mobius.dis',
     1146                ),
     1147                'disposition-notification' => array(
     1148                        'message/disposition-notification',
     1149                ),
     1150                'dist' => array(
     1151                        'application/octet-stream',
     1152                ),
     1153                'distz' => array(
     1154                        'application/octet-stream',
     1155                ),
     1156                'dita' => array(
     1157                        'application/dita+xml',
     1158                        'application/dita+xmlformattopic',
     1159                ),
     1160                'ditamap' => array(
     1161                        'application/dita+xml',
     1162                        'application/dita+xmlformatmap',
     1163                ),
     1164                'ditaval' => array(
     1165                        'application/dita+xml',
     1166                        'application/dita+xmlformatval',
     1167                ),
     1168                'divx' => array(
     1169                        'video/avi',
     1170                        'video/divx',
     1171                        'video/msvideo',
     1172                        'video/vnd.divx',
     1173                        'video/x-avi',
     1174                        'video/x-msvideo',
     1175                ),
     1176                'djv' => array(
     1177                        'image/vnd.djvu',
     1178                        'image/vnd.djvu+multipage',
     1179                        'image/x-djvu',
     1180                        'image/x.djvu',
     1181                ),
     1182                'djvu' => array(
     1183                        'image/vnd.djvu',
     1184                        'image/vnd.djvu+multipage',
     1185                        'image/x-djvu',
     1186                        'image/x.djvu',
     1187                ),
     1188                'dll' => array(
     1189                        'application/octet-stream',
     1190                        'application/x-msdownload',
     1191                ),
     1192                'dmg' => array(
     1193                        'application/octet-stream',
     1194                        'application/x-apple-diskimage',
     1195                ),
     1196                'dmp' => array(
     1197                        'application/pcap',
     1198                        'application/vnd.tcpdump.pcap',
     1199                        'application/x-pcap',
     1200                ),
     1201                'dms' => array(
     1202                        'application/octet-stream',
     1203                ),
     1204                'dna' => array(
     1205                        'application/vnd.dna',
     1206                ),
     1207                'dng' => array(
     1208                        'image/x-adobe-dng',
     1209                        'image/x-dcraw',
     1210                        'image/x-raw-adobe',
     1211                ),
     1212                'do' => array(
     1213                        'application/x-stata-do',
     1214                ),
     1215                'doc' => array(
     1216                        'application/ms-office',
     1217                        'application/msword',
     1218                        'application/vnd.ms-word',
     1219                        'application/x-msword',
     1220                        'application/x-ole-storage',
     1221                        'application/xml',
     1222                        'zz-application/zz-winassoc-doc',
     1223                ),
     1224                'docbook' => array(
     1225                        'application/docbook+xml',
     1226                        'application/vnd.oasis.docbook+xml',
     1227                        'application/x-docbook+xml',
     1228                        'application/xml',
     1229                ),
     1230                'docm' => array(
     1231                        'application/vnd.ms-word.document.macroenabled.12',
     1232                        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
     1233                ),
     1234                'docx' => array(
     1235                        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
     1236                        'application/zip',
     1237                ),
     1238                'dot' => array(
     1239                        'application/ms-office',
     1240                        'application/msword',
     1241                        'application/msword-template',
     1242                        'application/vnd.ms-word',
     1243                        'application/xml',
     1244                        'text/vnd.graphviz',
     1245                ),
     1246                'dotm' => array(
     1247                        'application/vnd.ms-word.template.macroenabled.12',
     1248                        'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
     1249                ),
     1250                'dotx' => array(
     1251                        'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
     1252                        'application/zip',
     1253                ),
     1254                'dp' => array(
     1255                        'application/vnd.osgi.dp',
     1256                ),
     1257                'dpg' => array(
     1258                        'application/vnd.dpgraph',
     1259                ),
     1260                'dpr' => array(
     1261                        'text/plain',
     1262                        'text/x-pascal',
     1263                ),
     1264                'dra' => array(
     1265                        'audio/vnd.dra',
     1266                ),
     1267                'drc' => array(
     1268                        'video/ogg',
     1269                        'video/x-dirac',
     1270                ),
     1271                'drf' => array(
     1272                        'image/x-raw-kodak',
     1273                ),
     1274                'drle' => array(
     1275                        'image/dicom-rle',
     1276                ),
     1277                'dsc' => array(
     1278                        'text/prs.lines.tag',
     1279                ),
     1280                'dsl' => array(
     1281                        'text/plain',
     1282                        'text/x-dsl',
     1283                ),
     1284                'dssc' => array(
     1285                        'application/dssc+der',
     1286                ),
     1287                'dta' => array(
     1288                        'application/x-stata-dta',
     1289                ),
     1290                'dtb' => array(
     1291                        'application/x-dtbook+xml',
     1292                ),
     1293                'dtd' => array(
     1294                        'application/xml-dtd',
     1295                        'text/plain',
     1296                        'text/x-dtd',
     1297                ),
     1298                'dts' => array(
     1299                        'audio/vnd.dts',
     1300                        'audio/x-dts',
     1301                ),
     1302                'dtshd' => array(
     1303                        'audio/vnd.dts',
     1304                        'audio/vnd.dts.hd',
     1305                        'audio/x-dtshd',
     1306                ),
     1307                'dtx' => array(
     1308                        'application/x-tex',
     1309                        'text/plain',
     1310                        'text/x-tex',
     1311                ),
     1312                'dump' => array(
     1313                        'application/octet-stream',
     1314                ),
     1315                'dv' => array(
     1316                        'video/dv',
     1317                ),
     1318                'dvb' => array(
     1319                        'video/vnd.dvb.file',
     1320                ),
     1321                'dvc' => array(
     1322                        'application/dvcs',
     1323                ),
     1324                'dvi' => array(
     1325                        'application/x-dvi',
     1326                ),
     1327                'dwf' => array(
     1328                        'drawing/x-dwf',
     1329                        'model/vnd.dwf',
     1330                ),
     1331                'dwfx' => array(
     1332                        'model/vnd.dwfx+xps',
     1333                ),
     1334                'dwg' => array(
     1335                        'application/acad',
     1336                        'application/autocaddwg',
     1337                        'application/dwg',
     1338                        'application/x-acad',
     1339                        'application/x-autocad',
     1340                        'application/x-dwg',
     1341                        'drawing/dwg',
     1342                        'image/vnd.dwg',
     1343                        'image/x-dwg',
     1344                ),
     1345                'dxb' => array(
     1346                        'image/vnd.dxb',
     1347                ),
     1348                'dxf' => array(
     1349                        'image/vnd.dxf',
     1350                ),
     1351                'dxp' => array(
     1352                        'application/vnd.spotfire.dxp',
     1353                ),
     1354                'dxr' => array(
     1355                        'application/x-director',
     1356                ),
     1357                'ear' => array(
     1358                        'application/java-archive',
     1359                        'application/x-tika-java-enterprise-archive',
     1360                ),
     1361                'ecelp4800' => array(
     1362                        'audio/vnd.nuera.ecelp4800',
     1363                ),
     1364                'ecelp7470' => array(
     1365                        'audio/vnd.nuera.ecelp7470',
     1366                ),
     1367                'ecelp9600' => array(
     1368                        'audio/vnd.nuera.ecelp9600',
     1369                ),
     1370                'ecma' => array(
     1371                        'application/ecmascript',
     1372                ),
     1373                'edm' => array(
     1374                        'application/vnd.novadigm.edm',
     1375                ),
     1376                'edx' => array(
     1377                        'application/vnd.novadigm.edx',
     1378                ),
     1379                'efif' => array(
     1380                        'application/vnd.picsel',
     1381                ),
     1382                'egon' => array(
     1383                        'application/x-egon',
     1384                ),
     1385                'egrm' => array(
     1386                        'text/plain',
     1387                ),
     1388                'ei6' => array(
     1389                        'application/vnd.pg.osasli',
     1390                ),
     1391                'eif' => array(
     1392                        'text/plain',
     1393                        'text/x-eiffel',
     1394                ),
     1395                'el' => array(
     1396                        'text/plain',
     1397                        'text/x-emacs-lisp',
     1398                ),
     1399                'elc' => array(
     1400                        'application/octet-stream',
     1401                        'application/x-elc',
     1402                ),
     1403                'emf' => array(
     1404                        'application/emf',
     1405                        'application/x-emf',
     1406                        'application/x-msmetafile',
     1407                        'image/emf',
     1408                        'image/x-emf',
     1409                ),
     1410                'eml' => array(
     1411                        'message/rfc822',
     1412                        'text/plain',
     1413                ),
     1414                'emlx' => array(
     1415                        'message/x-emlx',
     1416                ),
     1417                'emm' => array(
     1418                        'application/vnd.ibm.electronic-media',
     1419                ),
     1420                'emma' => array(
     1421                        'application/emma+xml',
     1422                ),
     1423                'emp' => array(
     1424                        'application/vnd.emusic-emusicpackage',
     1425                ),
     1426                'emz' => array(
     1427                        'application/gzip',
     1428                        'application/gzip-compressed',
     1429                        'application/gzipped',
     1430                        'application/x-gunzip',
     1431                        'application/x-gzip',
     1432                        'application/x-gzip-compressed',
     1433                        'application/x-msmetafile',
     1434                        'gzip/document',
     1435                ),
     1436                'enr' => array(
     1437                        'application/x-endnote-refer',
     1438                ),
     1439                'ent' => array(
     1440                        'application/xml',
     1441                        'application/xml-external-parsed-entity',
     1442                        'text/plain',
     1443                        'text/xml-external-parsed-entity',
     1444                ),
     1445                'enw' => array(
     1446                        'application/x-endnote-refer',
     1447                ),
     1448                'eol' => array(
     1449                        'audio/vnd.digital-winds',
     1450                ),
     1451                'eot' => array(
     1452                        'application/vnd.ms-fontobject',
     1453                ),
     1454                'eps' => array(
     1455                        'application/postscript',
     1456                        'image/x-eps',
     1457                ),
     1458                'epsf' => array(
     1459                        'application/postscript',
     1460                        'image/x-eps',
     1461                ),
     1462                'epsi' => array(
     1463                        'application/postscript',
     1464                        'image/x-eps',
     1465                ),
     1466                'epub' => array(
     1467                        'application/epub+zip',
     1468                        'application/zip',
     1469                ),
     1470                'erf' => array(
     1471                        'image/x-raw-epson',
     1472                ),
     1473                'erl' => array(
     1474                        'text/plain',
     1475                        'text/x-erlang',
     1476                ),
     1477                'es' => array(
     1478                        'application/ecmascript',
     1479                        'application/x-executable',
     1480                        'text/ecmascript',
     1481                ),
     1482                'es3' => array(
     1483                        'application/vnd.eszigno3+xml',
     1484                ),
     1485                'esa' => array(
     1486                        'application/vnd.osgi.subsystem',
     1487                ),
     1488                'esf' => array(
     1489                        'application/vnd.epson.esf',
     1490                ),
     1491                'espass' => array(
     1492                        'application/vnd.espass-espass+zip',
     1493                ),
     1494                'et3' => array(
     1495                        'application/vnd.eszigno3+xml',
     1496                ),
     1497                'etheme' => array(
     1498                        'application/x-e-theme',
     1499                ),
     1500                'etx' => array(
     1501                        'text/plain',
     1502                        'text/x-setext',
     1503                ),
     1504                'eva' => array(
     1505                        'application/x-eva',
     1506                ),
     1507                'evy' => array(
     1508                        'application/x-envoy',
     1509                ),
     1510                'exe' => array(
     1511                        'application/octet-stream',
     1512                        'application/x-dosexec',
     1513                        'application/x-ms-dos-executable',
     1514                        'application/x-msdownload',
     1515                ),
     1516                'exi' => array(
     1517                        'application/exi',
     1518                ),
     1519                'exp' => array(
     1520                        'text/plain',
     1521                        'text/x-expect',
     1522                ),
     1523                'exr' => array(
     1524                        'image/x-exr',
     1525                ),
     1526                'ext' => array(
     1527                        'application/vnd.novadigm.ext',
     1528                ),
     1529                'ez' => array(
     1530                        'application/andrew-inset',
     1531                ),
     1532                'ez2' => array(
     1533                        'application/vnd.ezpix-album',
     1534                ),
     1535                'ez3' => array(
     1536                        'application/vnd.ezpix-package',
     1537                ),
     1538                'f' => array(
     1539                        'text/x-fortran',
     1540                ),
     1541                'f4a' => array(
     1542                        'audio/m4a',
     1543                        'audio/mp4',
     1544                        'audio/x-m4a',
     1545                ),
     1546                'f4b' => array(
     1547                        'audio/mp4',
     1548                        'audio/x-m4b',
     1549                ),
     1550                'f4v' => array(
     1551                        'video/mp4',
     1552                        'video/mp4v-es',
     1553                        'video/x-f4v',
     1554                        'video/x-m4v',
     1555                ),
     1556                'f77' => array(
     1557                        'text/plain',
     1558                        'text/x-fortran',
     1559                ),
     1560                'f90' => array(
     1561                        'text/plain',
     1562                        'text/x-fortran',
     1563                ),
     1564                'f95' => array(
     1565                        'text/plain',
     1566                        'text/x-fortran',
     1567                ),
     1568                'fb2' => array(
     1569                        'application/x-fictionbook',
     1570                        'application/x-fictionbook+xml',
     1571                        'application/xml',
     1572                ),
     1573                'fbs' => array(
     1574                        'image/vnd.fastbidsheet',
     1575                ),
     1576                'fcdt' => array(
     1577                        'application/vnd.adobe.formscentral.fcdt',
     1578                ),
     1579                'fcs' => array(
     1580                        'application/vnd.isac.fcs',
     1581                ),
     1582                'fdf' => array(
     1583                        'application/vnd.fdf',
     1584                ),
     1585                'fds' => array(
     1586                        'application/x-fds-disk',
     1587                ),
     1588                'fe_launch' => array(
     1589                        'application/vnd.denovo.fcselayout-link',
     1590                ),
     1591                'feature' => array(
     1592                        'text/plain',
     1593                        'text/x-gherkin',
     1594                ),
     1595                'fff' => array(
     1596                        'image/x-raw-imacon',
     1597                ),
     1598                'fg5' => array(
     1599                        'application/vnd.fujitsu.oasysgp',
     1600                ),
     1601                'fgd' => array(
     1602                        'application/x-director',
     1603                ),
     1604                'fh' => array(
     1605                        'image/x-freehand',
     1606                ),
     1607                'fh10' => array(
     1608                        'image/x-freehand',
     1609                ),
     1610                'fh11' => array(
     1611                        'image/x-freehand',
     1612                ),
     1613                'fh12' => array(
     1614                        'image/x-freehand',
     1615                ),
     1616                'fh4' => array(
     1617                        'image/x-freehand',
     1618                ),
     1619                'fh40' => array(
     1620                        'image/x-freehand',
     1621                ),
     1622                'fh5' => array(
     1623                        'image/x-freehand',
     1624                ),
     1625                'fh50' => array(
     1626                        'image/x-freehand',
     1627                ),
     1628                'fh7' => array(
     1629                        'image/x-freehand',
     1630                ),
     1631                'fh8' => array(
     1632                        'image/x-freehand',
     1633                ),
     1634                'fh9' => array(
     1635                        'image/x-freehand',
     1636                ),
     1637                'fhc' => array(
     1638                        'image/x-freehand',
     1639                ),
     1640                'fig' => array(
     1641                        'application/x-xfig',
     1642                        'image/x-xfig',
     1643                ),
     1644                'fit' => array(
     1645                        'application/fits',
     1646                ),
     1647                'fits' => array(
     1648                        'application/fits',
     1649                        'image/fits',
     1650                        'image/x-fits',
     1651                ),
     1652                'fl' => array(
     1653                        'application/x-fluid',
     1654                        'text/plain',
     1655                ),
     1656                'flac' => array(
     1657                        'audio/flac',
     1658                        'audio/x-flac',
     1659                ),
     1660                'flatpak' => array(
     1661                        'application/vnd.flatpak',
     1662                        'application/vnd.xdgapp',
     1663                ),
     1664                'flatpakref' => array(
     1665                        'application/vnd.flatpak.ref',
     1666                        'text/plain',
     1667                ),
     1668                'flatpakrepo' => array(
     1669                        'application/vnd.flatpak.repo',
     1670                        'text/plain',
     1671                ),
     1672                'flc' => array(
     1673                        'video/fli',
     1674                        'video/x-flc',
     1675                        'video/x-fli',
     1676                        'video/x-flic',
     1677                ),
     1678                'fli' => array(
     1679                        'video/fli',
     1680                        'video/x-fli',
     1681                        'video/x-flic',
     1682                ),
     1683                'flo' => array(
     1684                        'application/vnd.micrografx.flo',
     1685                ),
     1686                'flv' => array(
     1687                        'application/x-flash-video',
     1688                        'flv-application/octet-stream',
     1689                        'video/flv',
     1690                        'video/x-flv',
     1691                ),
     1692                'flw' => array(
     1693                        'application/vnd.kde.kivio',
     1694                        'application/x-kivio',
     1695                ),
     1696                'flx' => array(
     1697                        'text/vnd.fmi.flexstor',
     1698                ),
     1699                'fly' => array(
     1700                        'text/vnd.fly',
     1701                ),
     1702                'fm' => array(
     1703                        'application/vnd.framemaker',
     1704                        'application/x-frame',
     1705                ),
     1706                'fn' => array(
     1707                        'text/plain',
     1708                ),
     1709                'fnc' => array(
     1710                        'application/vnd.frogans.fnc',
     1711                ),
     1712                'fo' => array(
     1713                        'application/vnd.software602.filler.form+xml',
     1714                        'application/xml',
     1715                        'application/xslfo+xml',
     1716                        'text/x-xslfo',
     1717                        'text/xsl',
     1718                ),
     1719                'fodg' => array(
     1720                        'application/vnd.oasis.opendocument.graphics-flat-xml',
     1721                        'application/xml',
     1722                ),
     1723                'fodp' => array(
     1724                        'application/vnd.oasis.opendocument.presentation-flat-xml',
     1725                        'application/xml',
     1726                ),
     1727                'fods' => array(
     1728                        'application/vnd.oasis.opendocument.spreadsheet-flat-xml',
     1729                        'application/xml',
     1730                ),
     1731                'fodt' => array(
     1732                        'application/vnd.oasis.opendocument.text-flat-xml',
     1733                        'application/xml',
     1734                ),
     1735                'for' => array(
     1736                        'text/plain',
     1737                        'text/x-fortran',
     1738                ),
     1739                'fp7' => array(
     1740                        'application/x-filemaker',
     1741                ),
     1742                'fpx' => array(
     1743                        'image/vnd.fpx',
     1744                ),
     1745                'frame' => array(
     1746                        'application/vnd.framemaker',
     1747                ),
     1748                'frm' => array(
     1749                        'text/x-basic',
     1750                        'text/x-vbasic',
     1751                ),
     1752                'fsc' => array(
     1753                        'application/vnd.fsc.weblaunch',
     1754                ),
     1755                'fst' => array(
     1756                        'image/vnd.fst',
     1757                ),
     1758                'ft' => array(
     1759                        'text/plain',
     1760                ),
     1761                'ft10' => array(
     1762                        'image/x-freehand',
     1763                ),
     1764                'ft11' => array(
     1765                        'image/x-freehand',
     1766                ),
     1767                'ft12' => array(
     1768                        'image/x-freehand',
     1769                ),
     1770                'ft7' => array(
     1771                        'image/x-freehand',
     1772                ),
     1773                'ft8' => array(
     1774                        'image/x-freehand',
     1775                ),
     1776                'ft9' => array(
     1777                        'image/x-freehand',
     1778                ),
     1779                'ftc' => array(
     1780                        'application/vnd.fluxtime.clip',
     1781                ),
     1782                'fti' => array(
     1783                        'application/vnd.anser-web-funds-transfer-initiation',
     1784                ),
     1785                'fts' => array(
     1786                        'application/fits',
     1787                ),
     1788                'fv' => array(
     1789                        'text/plain',
     1790                ),
     1791                'fvt' => array(
     1792                        'video/vnd.fvt',
     1793                ),
     1794                'fxm' => array(
     1795                        'video/x-flv',
     1796                        'video/x-javafx',
     1797                ),
     1798                'fxp' => array(
     1799                        'application/vnd.adobe.fxp',
     1800                ),
     1801                'fxpl' => array(
     1802                        'application/vnd.adobe.fxp',
     1803                ),
     1804                'fzs' => array(
     1805                        'application/vnd.fuzzysheet',
     1806                ),
     1807                'g2w' => array(
     1808                        'application/vnd.geoplan',
     1809                ),
     1810                'g3' => array(
     1811                        'image/fax-g3',
     1812                        'image/g3fax',
     1813                ),
     1814                'g3w' => array(
     1815                        'application/vnd.geospace',
     1816                ),
     1817                'gac' => array(
     1818                        'application/vnd.groove-account',
     1819                ),
     1820                'gam' => array(
     1821                        'application/x-tads',
     1822                ),
     1823                'gb' => array(
     1824                        'application/x-gameboy-rom',
     1825                ),
     1826                'gba' => array(
     1827                        'application/x-gba-rom',
     1828                ),
     1829                'gbc' => array(
     1830                        'application/x-gameboy-color-rom',
     1831                ),
     1832                'gbr' => array(
     1833                        'application/rpki-ghostbusters',
     1834                ),
     1835                'gca' => array(
     1836                        'application/x-gca-compressed',
     1837                ),
     1838                'gcode' => array(
     1839                        'text/plain',
     1840                        'text/x.gcode',
     1841                ),
     1842                'gcrd' => array(
     1843                        'text/directory',
     1844                        'text/plain',
     1845                        'text/vcard',
     1846                        'text/x-vcard',
     1847                ),
     1848                'gdl' => array(
     1849                        'model/vnd.gdl',
     1850                ),
     1851                'ged' => array(
     1852                        'application/x-gedcom',
     1853                        'text/gedcom',
     1854                ),
     1855                'gedcom' => array(
     1856                        'application/x-gedcom',
     1857                        'text/gedcom',
     1858                ),
     1859                'gem' => array(
     1860                        'application/x-gtar',
     1861                        'application/x-tar',
     1862                ),
     1863                'gen' => array(
     1864                        'application/x-genesis-rom',
     1865                ),
     1866                'generally' => array(
     1867                        'text/vnd.fmi.flexstor',
     1868                ),
     1869                'geo' => array(
     1870                        'application/vnd.dynageo',
     1871                ),
     1872                'geojson' => array(
     1873                        'application/geo+json',
     1874                        'application/json',
     1875                        'application/vnd.geo+json',
     1876                ),
     1877                'gex' => array(
     1878                        'application/vnd.geometry-explorer',
     1879                ),
     1880                'gf' => array(
     1881                        'application/x-tex-gf',
     1882                ),
     1883                'gg' => array(
     1884                        'application/x-gamegear-rom',
     1885                ),
     1886                'ggb' => array(
     1887                        'application/vnd.geogebra.file',
     1888                ),
     1889                'ggt' => array(
     1890                        'application/vnd.geogebra.tool',
     1891                ),
     1892                'ghf' => array(
     1893                        'application/vnd.groove-help',
     1894                ),
     1895                'gif' => array(
     1896                        'image/gif',
     1897                ),
     1898                'gim' => array(
     1899                        'application/vnd.groove-identity-message',
     1900                ),
     1901                'glade' => array(
     1902                        'application/x-glade',
     1903                        'application/xml',
     1904                ),
     1905                'gltf' => array(
     1906                        'model/gltf+json',
     1907                ),
     1908                'gml' => array(
     1909                        'application/gml+xml',
     1910                        'application/xml',
     1911                ),
     1912                'gmo' => array(
     1913                        'application/x-gettext-translation',
     1914                ),
     1915                'gmx' => array(
     1916                        'application/vnd.gmx',
     1917                ),
     1918                'gnc' => array(
     1919                        'application/x-gnucash',
     1920                ),
     1921                'gnd' => array(
     1922                        'application/gnunet-directory',
     1923                ),
     1924                'gnucash' => array(
     1925                        'application/x-gnucash',
     1926                ),
     1927                'gnumeric' => array(
     1928                        'application/x-gnumeric',
     1929                        'application/x-gnumeric-spreadsheet',
     1930                ),
     1931                'gnuplot' => array(
     1932                        'application/x-gnuplot',
     1933                        'text/plain',
     1934                ),
     1935                'go' => array(
     1936                        'text/plain',
     1937                        'text/x-go',
     1938                ),
     1939                'gp' => array(
     1940                        'application/x-gnuplot',
     1941                        'text/plain',
     1942                ),
     1943                'gpg' => array(
     1944                        'application/pgp',
     1945                        'application/pgp-encrypted',
     1946                        'application/pgp-keys',
     1947                        'application/pgp-signature',
     1948                        'text/plain',
     1949                ),
     1950                'gph' => array(
     1951                        'application/vnd.flographit',
     1952                ),
     1953                'gplt' => array(
     1954                        'application/x-gnuplot',
     1955                        'text/plain',
     1956                ),
     1957                'gpx' => array(
     1958                        'application/gpx',
     1959                        'application/gpx+xml',
     1960                        'application/x-gpx',
     1961                        'application/x-gpx+xml',
     1962                        'application/xml',
     1963                ),
     1964                'gqf' => array(
     1965                        'application/vnd.grafeq',
     1966                ),
     1967                'gqs' => array(
     1968                        'application/vnd.grafeq',
     1969                ),
     1970                'gra' => array(
     1971                        'application/x-graphite',
     1972                ),
     1973                'gram' => array(
     1974                        'application/srgs',
     1975                ),
     1976                'gramps' => array(
     1977                        'application/x-gramps-xml',
     1978                ),
     1979                'grb' => array(
     1980                        'application/x-grib',
     1981                ),
     1982                'grb1' => array(
     1983                        'application/x-grib',
     1984                ),
     1985                'grb2' => array(
     1986                        'application/x-grib',
     1987                ),
     1988                'gre' => array(
     1989                        'application/vnd.geometry-explorer',
     1990                ),
     1991                'grm' => array(
     1992                        'text/plain',
     1993                ),
     1994                'groovy' => array(
     1995                        'text/plain',
     1996                        'text/x-groovy',
     1997                ),
     1998                'grv' => array(
     1999                        'application/vnd.groove-injector',
     2000                ),
     2001                'grxml' => array(
     2002                        'application/srgs+xml',
     2003                ),
     2004                'gs' => array(
     2005                        'text/plain',
     2006                        'text/x-genie',
     2007                ),
     2008                'gsf' => array(
     2009                        'application/postscript',
     2010                        'application/x-font-ghostscript',
     2011                        'application/x-font-type1',
     2012                ),
     2013                'gsm' => array(
     2014                        'audio/x-gsm',
     2015                ),
     2016                'gtar' => array(
     2017                        'application/x-gtar',
     2018                        'application/x-tar',
     2019                ),
     2020                'gtm' => array(
     2021                        'application/vnd.groove-tool-message',
     2022                ),
     2023                'gtw' => array(
     2024                        'model/vnd.gtw',
     2025                ),
     2026                'gv' => array(
     2027                        'text/vnd.graphviz',
     2028                ),
     2029                'gvp' => array(
     2030                        'text/google-video-pointer',
     2031                        'text/x-google-video-pointer',
     2032                ),
     2033                'gxf' => array(
     2034                        'application/gxf',
     2035                ),
     2036                'gxt' => array(
     2037                        'application/vnd.geonext',
     2038                ),
     2039                'gz' => array(
     2040                        'application/gzip',
     2041                        'application/gzip-compressed',
     2042                        'application/gzipped',
     2043                        'application/x-gunzip',
     2044                        'application/x-gzip',
     2045                        'application/x-gzip-compressed',
     2046                        'gzip/document',
     2047                ),
     2048                'h' => array(
     2049                        'text/x-c',
     2050                ),
     2051                'h261' => array(
     2052                        'video/h261',
     2053                ),
     2054                'h263' => array(
     2055                        'video/h263',
     2056                ),
     2057                'h264' => array(
     2058                        'video/h264',
     2059                ),
     2060                'h4' => array(
     2061                        'application/x-hdf',
     2062                ),
     2063                'h5' => array(
     2064                        'application/x-hdf',
     2065                ),
     2066                'hal' => array(
     2067                        'application/vnd.hal+xml',
     2068                ),
     2069                'haml' => array(
     2070                        'text/plain',
     2071                        'text/x-haml',
     2072                ),
     2073                'hbci' => array(
     2074                        'application/vnd.hbci',
     2075                ),
     2076                'hdf' => array(
     2077                        'application/x-hdf',
     2078                ),
     2079                'hdf4' => array(
     2080                        'application/x-hdf',
     2081                ),
     2082                'hdf5' => array(
     2083                        'application/x-hdf',
     2084                ),
     2085                'hdr' => array(
     2086                        'image/vnd.radiance',
     2087                ),
     2088                'hdt' => array(
     2089                        'application/vnd.hdt',
     2090                ),
     2091                'he5' => array(
     2092                        'application/x-hdf',
     2093                ),
     2094                'heldxml' => array(
     2095                        'application/held+xml',
     2096                ),
     2097                'hfa' => array(
     2098                        'application/x-erdas-hfa',
     2099                ),
     2100                'hfe' => array(
     2101                        'application/x-hfe-floppy-image',
     2102                ),
     2103                'hh' => array(
     2104                        'text/plain',
     2105                        'text/x-c',
     2106                        'text/x-c++hdr',
     2107                        'text/x-chdr',
     2108                ),
     2109                'hlp' => array(
     2110                        'application/winhlp',
     2111                        'zz-application/zz-winassoc-hlp',
     2112                ),
     2113                'hp' => array(
     2114                        'text/plain',
     2115                        'text/x-c++hdr',
     2116                        'text/x-chdr',
     2117                ),
     2118                'hpgl' => array(
     2119                        'application/vnd.hp-hpgl',
     2120                ),
     2121                'hpi' => array(
     2122                        'application/vnd.hp-hpid',
     2123                ),
     2124                'hpid' => array(
     2125                        'application/vnd.hp-hpid',
     2126                ),
     2127                'hpp' => array(
     2128                        'text/plain',
     2129                        'text/x-c++hdr',
     2130                        'text/x-chdr',
     2131                ),
     2132                'hps' => array(
     2133                        'application/vnd.hp-hps',
     2134                ),
     2135                'hpub' => array(
     2136                        'application/prs.hpub+zip',
     2137                ),
     2138                'hqx' => array(
     2139                        'application/binhex',
     2140                        'application/mac-binhex',
     2141                        'application/mac-binhex40',
     2142                ),
     2143                'hs' => array(
     2144                        'text/plain',
     2145                        'text/x-haskell',
     2146                ),
     2147                'htaccess' => array(
     2148                        'text/plain',
     2149                ),
     2150                'htc' => array(
     2151                        'text/x-component',
     2152                ),
     2153                'htke' => array(
     2154                        'application/vnd.kenameaapp',
     2155                ),
     2156                'htm' => array(
     2157                        'text/html',
     2158                        'text/plain',
     2159                ),
     2160                'html' => array(
     2161                        'text/html',
     2162                        'text/plain',
     2163                ),
     2164                'hvd' => array(
     2165                        'application/vnd.yamaha.hv-dic',
     2166                ),
     2167                'hvp' => array(
     2168                        'application/vnd.yamaha.hv-voice',
     2169                ),
     2170                'hvs' => array(
     2171                        'application/vnd.yamaha.hv-script',
     2172                ),
     2173                'hwp' => array(
     2174                        'application/vnd.haansoft-hwp',
     2175                        'application/x-hwp',
     2176                ),
     2177                'hwt' => array(
     2178                        'application/vnd.haansoft-hwt',
     2179                        'application/x-hwt',
     2180                ),
     2181                'hx' => array(
     2182                        'text/plain',
     2183                        'text/x-haxe',
     2184                ),
     2185                'hxx' => array(
     2186                        'text/plain',
     2187                        'text/x-c++hdr',
     2188                        'text/x-chdr',
     2189                ),
     2190                'i2g' => array(
     2191                        'application/vnd.intergeo',
     2192                ),
     2193                'i3' => array(
     2194                        'text/plain',
     2195                        'text/x-modula',
     2196                ),
     2197                'ibooks' => array(
     2198                        'application/epub+zip',
     2199                        'application/x-ibooks+zip',
     2200                ),
     2201                'ica' => array(
     2202                        'application/x-ica',
     2203                        'text/plain',
     2204                ),
     2205                'icb' => array(
     2206                        'image/x-icb',
     2207                        'image/x-tga',
     2208                ),
     2209                'icc' => array(
     2210                        'application/vnd.iccprofile',
     2211                ),
     2212                'ice' => array(
     2213                        'x-conference/x-cooltalk',
     2214                ),
     2215                'icm' => array(
     2216                        'application/vnd.iccprofile',
     2217                ),
     2218                'icns' => array(
     2219                        'image/icns',
     2220                        'image/x-icns',
     2221                ),
     2222                'ico' => array(
     2223                        'application/ico',
     2224                        'image/ico',
     2225                        'image/icon',
     2226                        'image/vnd.microsoft.icon',
     2227                        'image/x-ico',
     2228                        'image/x-icon',
     2229                        'text/ico',
     2230                ),
     2231                'ics' => array(
     2232                        'application/ics',
     2233                        'text/calendar',
     2234                        'text/plain',
     2235                        'text/x-vcalendar',
     2236                ),
     2237                'idl' => array(
     2238                        'text/plain',
     2239                        'text/x-idl',
     2240                ),
     2241                'ief' => array(
     2242                        'image/ief',
     2243                ),
     2244                'ifb' => array(
     2245                        'text/calendar',
     2246                        'text/plain',
     2247                ),
     2248                'iff' => array(
     2249                        'application/x-iff',
     2250                        'image/x-iff',
     2251                        'image/x-ilbm',
     2252                ),
     2253                'ifm' => array(
     2254                        'application/vnd.shana.informed.formdata',
     2255                ),
     2256                'ig' => array(
     2257                        'text/plain',
     2258                        'text/x-modula',
     2259                ),
     2260                'iges' => array(
     2261                        'model/iges',
     2262                        'text/plain',
     2263                ),
     2264                'igl' => array(
     2265                        'application/vnd.igloader',
     2266                ),
     2267                'igm' => array(
     2268                        'application/vnd.insors.igm',
     2269                ),
     2270                'ign' => array(
     2271                        'application/vnd.coreos.ignition+json',
     2272                ),
     2273                'ignition' => array(
     2274                        'application/vnd.coreos.ignition+json',
     2275                ),
     2276                'igs' => array(
     2277                        'model/iges',
     2278                        'text/plain',
     2279                ),
     2280                'igx' => array(
     2281                        'application/vnd.micrografx.igx',
     2282                ),
     2283                'ihtml' => array(
     2284                        'text/plain',
     2285                ),
     2286                'iif' => array(
     2287                        'application/vnd.shana.informed.interchange',
     2288                ),
     2289                'iiq' => array(
     2290                        'image/x-raw-phaseone',
     2291                ),
     2292                'ilbm' => array(
     2293                        'application/x-iff',
     2294                        'image/x-iff',
     2295                        'image/x-ilbm',
     2296                ),
     2297                'ime' => array(
     2298                        'audio/imelody',
     2299                        'audio/x-imelody',
     2300                        'text/x-imelody',
     2301                ),
     2302                'img' => array(
     2303                        'application/octet-stream',
     2304                        'application/x-raw-disk-image',
     2305                ),
     2306                'imgcal' => array(
     2307                        'application/vnd.3lightssoftware.imagescal',
     2308                ),
     2309                'imi' => array(
     2310                        'application/vnd.imagemeter.image+zip',
     2311                ),
     2312                'imp' => array(
     2313                        'application/vnd.accpac.simply.imp',
     2314                ),
     2315                'ims' => array(
     2316                        'application/vnd.ms-ims',
     2317                ),
     2318                'imy' => array(
     2319                        'audio/imelody',
     2320                        'audio/x-imelody',
     2321                        'text/x-imelody',
     2322                ),
     2323                'in' => array(
     2324                        'text/plain',
     2325                ),
     2326                'indd' => array(
     2327                        'application/x-adobe-indesign',
     2328                ),
     2329                'ini' => array(
     2330                        'text/plain',
     2331                        'text/x-ini',
     2332                ),
     2333                'ink' => array(
     2334                        'application/inkml+xml',
     2335                ),
     2336                'inkml' => array(
     2337                        'application/inkml+xml',
     2338                ),
     2339                'ins' => array(
     2340                        'application/x-tex',
     2341                        'text/plain',
     2342                        'text/x-tex',
     2343                ),
     2344                'install' => array(
     2345                        'application/x-install-instructions',
     2346                ),
     2347                'inx' => array(
     2348                        'application/x-adobe-indesign-interchange',
     2349                        'application/xml',
     2350                ),
     2351                'iota' => array(
     2352                        'application/vnd.astraea-software.iota',
     2353                ),
     2354                'ipa' => array(
     2355                        'application/x-itunes-ipa',
     2356                        'application/zip',
     2357                ),
     2358                'ipfix' => array(
     2359                        'application/ipfix',
     2360                ),
     2361                'ipk' => array(
     2362                        'application/vnd.shana.informed.package',
     2363                ),
     2364                'iptables' => array(
     2365                        'text/plain',
     2366                        'text/x-iptables',
     2367                ),
     2368                'ipynb' => array(
     2369                        'application/json',
     2370                        'application/x-ipynb+json',
     2371                ),
     2372                'irm' => array(
     2373                        'application/vnd.ibm.rights-management',
     2374                ),
     2375                'irp' => array(
     2376                        'application/vnd.irepository.package+xml',
     2377                ),
     2378                'iso' => array(
     2379                        'application/octet-stream',
     2380                        'application/x-cd-image',
     2381                        'application/x-gamecube-iso-image',
     2382                        'application/x-gamecube-rom',
     2383                        'application/x-iso9660-image',
     2384                        'application/x-raw-disk-image',
     2385                        'application/x-saturn-rom',
     2386                        'application/x-sega-cd-rom',
     2387                        'application/x-wbfs',
     2388                        'application/x-wia',
     2389                        'application/x-wii-iso-image',
     2390                        'application/x-wii-rom',
     2391                ),
     2392                'iso19139' => array(
     2393                        'application/xml',
     2394                        'text/iso19139+xml',
     2395                ),
     2396                'iso9660' => array(
     2397                        'application/x-cd-image',
     2398                        'application/x-iso9660-image',
     2399                        'application/x-raw-disk-image',
     2400                ),
     2401                'it' => array(
     2402                        'audio/x-it',
     2403                ),
     2404                'it87' => array(
     2405                        'application/x-it87',
     2406                        'text/plain',
     2407                ),
     2408                'itk' => array(
     2409                        'application/x-tcl',
     2410                        'text/plain',
     2411                        'text/x-tcl',
     2412                ),
     2413                'itp' => array(
     2414                        'application/vnd.shana.informed.formtemplate',
     2415                ),
     2416                'ivp' => array(
     2417                        'application/vnd.immervision-ivp',
     2418                ),
     2419                'ivu' => array(
     2420                        'application/vnd.immervision-ivu',
     2421                ),
     2422                'j2c' => array(
     2423                        'image/x-jp2-codestream',
     2424                ),
     2425                'jad' => array(
     2426                        'text/vnd.sun.j2me.app-descriptor',
     2427                ),
     2428                'jam' => array(
     2429                        'application/vnd.jam',
     2430                ),
     2431                'jar' => array(
     2432                        'application/java-archive',
     2433                        'application/x-jar',
     2434                        'application/x-java-archive',
     2435                        'application/zip',
     2436                ),
     2437                'jardiff' => array(
     2438                        'application/x-java-archive-diff',
     2439                ),
     2440                'java' => array(
     2441                        'text/plain',
     2442                        'text/x-csrc',
     2443                        'text/x-java',
     2444                        'text/x-java-source',
     2445                ),
     2446                'jb2' => array(
     2447                        'image/x-jb2',
     2448                        'image/x-jbig2',
     2449                ),
     2450                'jbig2' => array(
     2451                        'image/x-jb2',
     2452                        'image/x-jbig2',
     2453                ),
     2454                'jceks' => array(
     2455                        'application/x-java-jce-keystore',
     2456                ),
     2457                'jfi' => array(
     2458                        'image/jpeg',
     2459                ),
     2460                'jfif' => array(
     2461                        'image/jpeg',
     2462                ),
     2463                'jif' => array(
     2464                        'image/jpeg',
     2465                ),
     2466                'jisp' => array(
     2467                        'application/vnd.jisp',
     2468                ),
     2469                'jks' => array(
     2470                        'application/x-java-keystore',
     2471                ),
     2472                'jl' => array(
     2473                        'text/plain',
     2474                        'text/x-common-lisp',
     2475                ),
     2476                'jls' => array(
     2477                        'image/jls',
     2478                ),
     2479                'jlt' => array(
     2480                        'application/vnd.hp-jlyt',
     2481                ),
     2482                'jmx' => array(
     2483                        'text/plain',
     2484                ),
     2485                'jng' => array(
     2486                        'image/x-jng',
     2487                        'video/x-jng',
     2488                ),
     2489                'jnilib' => array(
     2490                        'application/x-java-jnilib',
     2491                ),
     2492                'jnlp' => array(
     2493                        'application/x-java-jnlp-file',
     2494                        'application/xml',
     2495                ),
     2496                'joda' => array(
     2497                        'application/vnd.joost.joda-archive',
     2498                ),
     2499                'jp2' => array(
     2500                        'image/jp2',
     2501                        'image/jpeg2000',
     2502                        'image/jpeg2000-image',
     2503                        'image/jpx',
     2504                        'image/x-jp2-container',
     2505                        'image/x-jpeg2000-image',
     2506                ),
     2507                'jpe' => array(
     2508                        'image/jpeg',
     2509                        'image/pjpeg',
     2510                ),
     2511                'jpeg' => array(
     2512                        'image/jpeg',
     2513                        'image/pjpeg',
     2514                ),
     2515                'jpf' => array(
     2516                        'image/jp2',
     2517                        'image/jpeg2000',
     2518                        'image/jpeg2000-image',
     2519                        'image/jpx',
     2520                        'image/x-jp2-container',
     2521                        'image/x-jpeg2000-image',
     2522                ),
     2523                'jpg' => array(
     2524                        'image/jpeg',
     2525                        'image/pjpeg',
     2526                ),
     2527                'jpgm' => array(
     2528                        'image/jpm',
     2529                        'image/x-jp2-container',
     2530                        'video/jpm',
     2531                ),
     2532                'jpgv' => array(
     2533                        'video/jpeg',
     2534                ),
     2535                'jpm' => array(
     2536                        'image/jpm',
     2537                        'image/x-jp2-container',
     2538                        'video/jpm',
     2539                ),
     2540                'jpr' => array(
     2541                        'application/x-jbuilder-project',
     2542                ),
     2543                'jpx' => array(
     2544                        'application/x-jbuilder-project',
     2545                        'image/jp2',
     2546                        'image/jpeg2000',
     2547                        'image/jpeg2000-image',
     2548                        'image/jpx',
     2549                        'image/x-jpeg2000-image',
     2550                ),
     2551                'jrd' => array(
     2552                        'application/jrd+json',
     2553                        'application/json',
     2554                ),
     2555                'js' => array(
     2556                        'application/ecmascript',
     2557                        'application/javascript',
     2558                        'application/x-javascript',
     2559                        'text/javascript',
     2560                        'text/plain',
     2561                ),
     2562                'jsm' => array(
     2563                        'application/ecmascript',
     2564                        'application/javascript',
     2565                        'application/x-javascript',
     2566                        'text/javascript',
     2567                ),
     2568                'json' => array(
     2569                        'application/dicom+json',
     2570                        'application/geo+json',
     2571                        'application/javascript',
     2572                        'application/json',
     2573                        'application/vnd.dataresource+json',
     2574                        'application/vnd.hc+json',
     2575                        'application/vnd.nearst.inv+json',
     2576                        'application/vnd.oftn.l10n+json',
     2577                        'application/vnd.tableschema+json',
     2578                        'application/vnd.vel+json',
     2579                ),
     2580                'json-patch' => array(
     2581                        'application/json',
     2582                        'application/json-patch+json',
     2583                ),
     2584                'jsonld' => array(
     2585                        'application/json',
     2586                        'application/ld+json',
     2587                ),
     2588                'jsonml' => array(
     2589                        'application/jsonml+json',
     2590                ),
     2591                'jsp' => array(
     2592                        'application/x-httpd-jsp',
     2593                        'text/plain',
     2594                        'text/x-jsp',
     2595                ),
     2596                'junit' => array(
     2597                        'text/plain',
     2598                ),
     2599                'jx' => array(
     2600                        'text/plain',
     2601                ),
     2602                'k25' => array(
     2603                        'image/x-dcraw',
     2604                        'image/x-kodak-k25',
     2605                        'image/x-raw-kodak',
     2606                ),
     2607                'k7' => array(
     2608                        'application/x-thomson-cassette',
     2609                ),
     2610                'kar' => array(
     2611                        'audio/midi',
     2612                        'audio/x-midi',
     2613                ),
     2614                'karbon' => array(
     2615                        'application/vnd.kde.karbon',
     2616                        'application/x-karbon',
     2617                ),
     2618                'kdc' => array(
     2619                        'image/x-dcraw',
     2620                        'image/x-kodak-kdc',
     2621                        'image/x-raw-kodak',
     2622                ),
     2623                'kdelnk' => array(
     2624                        'application/x-desktop',
     2625                        'application/x-gnome-app-info',
     2626                        'text/plain',
     2627                ),
     2628                'kexi' => array(
     2629                        'application/x-kexiproject-sqlite',
     2630                        'application/x-kexiproject-sqlite2',
     2631                        'application/x-kexiproject-sqlite3',
     2632                        'application/x-sqlite2',
     2633                        'application/x-sqlite3',
     2634                        'application/x-vnd.kde.kexi',
     2635                ),
     2636                'kexic' => array(
     2637                        'application/x-kexi-connectiondata',
     2638                ),
     2639                'kexis' => array(
     2640                        'application/x-kexiproject-shortcut',
     2641                ),
     2642                'key' => array(
     2643                        'application/vnd.apple.iwork',
     2644                        'application/vnd.apple.keynote',
     2645                        'application/x-iwork-keynote-sffkey',
     2646                        'application/zip',
     2647                ),
     2648                'kfo' => array(
     2649                        'application/vnd.kde.kformula',
     2650                        'application/x-kformula',
     2651                ),
     2652                'kia' => array(
     2653                        'application/vnd.kidspiration',
     2654                ),
     2655                'kil' => array(
     2656                        'application/x-killustrator',
     2657                ),
     2658                'kino' => array(
     2659                        'application/smil',
     2660                        'application/smil+xml',
     2661                        'application/xml',
     2662                ),
     2663                'kml' => array(
     2664                        'application/vnd.google-earth.kml+xml',
     2665                        'application/xml',
     2666                ),
     2667                'kmz' => array(
     2668                        'application/vnd.google-earth.kmz',
     2669                        'application/zip',
     2670                ),
     2671                'kne' => array(
     2672                        'application/vnd.kinar',
     2673                ),
     2674                'knp' => array(
     2675                        'application/vnd.kinar',
     2676                ),
     2677                'kon' => array(
     2678                        'application/vnd.kde.kontour',
     2679                        'application/x-kontour',
     2680                ),
     2681                'kpm' => array(
     2682                        'application/x-kpovmodeler',
     2683                ),
     2684                'kpr' => array(
     2685                        'application/vnd.kde.kpresenter',
     2686                        'application/x-kpresenter',
     2687                ),
     2688                'kpt' => array(
     2689                        'application/vnd.kde.kpresenter',
     2690                        'application/x-kpresenter',
     2691                ),
     2692                'kpxx' => array(
     2693                        'application/vnd.ds-keypoint',
     2694                ),
     2695                'kra' => array(
     2696                        'application/x-krita',
     2697                ),
     2698                'ks' => array(
     2699                        'application/x-java-keystore',
     2700                ),
     2701                'ksp' => array(
     2702                        'application/vnd.kde.kspread',
     2703                        'application/x-kspread',
     2704                ),
     2705                'ktr' => array(
     2706                        'application/vnd.kahootz',
     2707                ),
     2708                'ktx' => array(
     2709                        'image/ktx',
     2710                ),
     2711                'ktz' => array(
     2712                        'application/vnd.kahootz',
     2713                ),
     2714                'kud' => array(
     2715                        'application/x-kugar',
     2716                ),
     2717                'kwd' => array(
     2718                        'application/vnd.kde.kword',
     2719                        'application/x-kword',
     2720                ),
     2721                'kwt' => array(
     2722                        'application/vnd.kde.kword',
     2723                        'application/x-kword',
     2724                ),
     2725                'la' => array(
     2726                        'application/x-shared-library-la',
     2727                        'text/plain',
     2728                ),
     2729                'lasjson' => array(
     2730                        'application/vnd.las.las+json',
     2731                ),
     2732                'lasxml' => array(
     2733                        'application/vnd.las.las+xml',
     2734                ),
     2735                'latex' => array(
     2736                        'application/x-latex',
     2737                        'application/x-tex',
     2738                        'text/plain',
     2739                        'text/x-tex',
     2740                ),
     2741                'lbd' => array(
     2742                        'application/vnd.llamagraphics.life-balance.desktop',
     2743                ),
     2744                'lbe' => array(
     2745                        'application/vnd.llamagraphics.life-balance.exchange+xml',
     2746                ),
     2747                'lbm' => array(
     2748                        'application/x-iff',
     2749                        'image/x-iff',
     2750                        'image/x-ilbm',
     2751                ),
     2752                'ldif' => array(
     2753                        'text/plain',
     2754                        'text/x-ldif',
     2755                ),
     2756                'les' => array(
     2757                        'application/vnd.hhe.lesson-player',
     2758                ),
     2759                'less' => array(
     2760                        'text/plain',
     2761                        'text/x-less',
     2762                ),
     2763                'lgr' => array(
     2764                        'application/lgr+xml',
     2765                ),
     2766                'lha' => array(
     2767                        'application/octet-stream',
     2768                        'application/x-lha',
     2769                        'application/x-lzh-compressed',
     2770                ),
     2771                'lhs' => array(
     2772                        'text/plain',
     2773                        'text/x-haskell',
     2774                        'text/x-literate-haskell',
     2775                ),
     2776                'lhz' => array(
     2777                        'application/x-lhz',
     2778                ),
     2779                'link66' => array(
     2780                        'application/vnd.route66.link66+xml',
     2781                ),
     2782                'lisp' => array(
     2783                        'text/plain',
     2784                        'text/x-common-lisp',
     2785                ),
     2786                'list' => array(
     2787                        'text/plain',
     2788                ),
     2789                'list3820' => array(
     2790                        'application/vnd.ibm.modcap',
     2791                ),
     2792                'listafp' => array(
     2793                        'application/vnd.ibm.modcap',
     2794                ),
     2795                'lnk' => array(
     2796                        'application/x-ms-shortcut',
     2797                ),
     2798                'log' => array(
     2799                        'text/plain',
     2800                        'text/x-log',
     2801                ),
     2802                'lostsyncxml' => array(
     2803                        'application/lostsync+xml',
     2804                ),
     2805                'lostxml' => array(
     2806                        'application/lost+xml',
     2807                ),
     2808                'lrf' => array(
     2809                        'application/octet-stream',
     2810                ),
     2811                'lrm' => array(
     2812                        'application/vnd.ms-lrm',
     2813                ),
     2814                'lrv' => array(
     2815                        'video/mp4',
     2816                        'video/mp4v-es',
     2817                        'video/x-m4v',
     2818                ),
     2819                'lrz' => array(
     2820                        'application/x-lrzip',
     2821                ),
     2822                'lsp' => array(
     2823                        'text/plain',
     2824                        'text/x-common-lisp',
     2825                ),
     2826                'ltf' => array(
     2827                        'application/vnd.frogans.ltf',
     2828                ),
     2829                'ltx' => array(
     2830                        'application/x-tex',
     2831                        'text/plain',
     2832                        'text/x-tex',
     2833                ),
     2834                'lua' => array(
     2835                        'application/x-executable',
     2836                        'text/plain',
     2837                        'text/x-lua',
     2838                ),
     2839                'lvp' => array(
     2840                        'audio/vnd.lucent.voice',
     2841                ),
     2842                'lwo' => array(
     2843                        'image/x-lwo',
     2844                ),
     2845                'lwob' => array(
     2846                        'image/x-lwo',
     2847                ),
     2848                'lwp' => array(
     2849                        'application/vnd.lotus-wordpro',
     2850                ),
     2851                'lws' => array(
     2852                        'image/x-lws',
     2853                ),
     2854                'ly' => array(
     2855                        'text/plain',
     2856                        'text/x-lilypond',
     2857                ),
     2858                'lyx' => array(
     2859                        'application/x-lyx',
     2860                        'text/plain',
     2861                        'text/x-lyx',
     2862                ),
     2863                'lz' => array(
     2864                        'application/x-lzip',
     2865                ),
     2866                'lz4' => array(
     2867                        'application/x-lz4',
     2868                ),
     2869                'lzh' => array(
     2870                        'application/octet-stream',
     2871                        'application/x-lha',
     2872                        'application/x-lzh-compressed',
     2873                ),
     2874                'lzma' => array(
     2875                        'application/x-lzma',
     2876                ),
     2877                'lzo' => array(
     2878                        'application/x-lzop',
     2879                ),
     2880                'm13' => array(
     2881                        'application/x-msmediaview',
     2882                ),
     2883                'm14' => array(
     2884                        'application/x-msmediaview',
     2885                ),
     2886                'm15' => array(
     2887                        'audio/x-mod',
     2888                ),
     2889                'm1u' => array(
     2890                        'text/plain',
     2891                        'video/vnd.mpegurl',
     2892                        'video/x-mpegurl',
     2893                ),
     2894                'm1v' => array(
     2895                        'video/mpeg',
     2896                ),
     2897                'm21' => array(
     2898                        'application/mp21',
     2899                ),
     2900                'm2a' => array(
     2901                        'audio/mpeg',
     2902                        'audio/x-mpeg',
     2903                ),
     2904                'm2t' => array(
     2905                        'video/mp2t',
     2906                ),
     2907                'm2ts' => array(
     2908                        'video/mp2t',
     2909                ),
     2910                'm2v' => array(
     2911                        'video/mpeg',
     2912                ),
     2913                'm3' => array(
     2914                        'text/plain',
     2915                        'text/x-modula',
     2916                ),
     2917                'm3a' => array(
     2918                        'audio/mpeg',
     2919                        'audio/x-mpeg',
     2920                ),
     2921                'm3u' => array(
     2922                        'application/m3u',
     2923                        'application/vnd.apple.mpegurl',
     2924                        'audio/m3u',
     2925                        'audio/mpegurl',
     2926                        'audio/x-m3u',
     2927                        'audio/x-mp3-playlist',
     2928                        'audio/x-mpegurl',
     2929                        'text/plain',
     2930                ),
     2931                'm3u8' => array(
     2932                        'application/m3u',
     2933                        'application/vnd.apple.mpegurl',
     2934                        'audio/m3u',
     2935                        'audio/mpegurl',
     2936                        'audio/x-m3u',
     2937                        'audio/x-mp3-playlist',
     2938                        'audio/x-mpegurl',
     2939                        'text/plain',
     2940                ),
     2941                'm4' => array(
     2942                        'application/x-m4',
     2943                        'text/plain',
     2944                ),
     2945                'm4a' => array(
     2946                        'application/quicktime',
     2947                        'audio/m4a',
     2948                        'audio/mp4',
     2949                        'audio/x-m4a',
     2950                        'audio/x-mp4a',
     2951                ),
     2952                'm4b' => array(
     2953                        'application/quicktime',
     2954                        'audio/mp4',
     2955                        'audio/x-m4a',
     2956                        'audio/x-m4b',
     2957                        'audio/x-mp4a',
     2958                ),
     2959                'm4s' => array(
     2960                        'video/iso.segment',
     2961                ),
     2962                'm4u' => array(
     2963                        'text/plain',
     2964                        'video/vnd.mpegurl',
     2965                        'video/x-mpegurl',
     2966                ),
     2967                'm4v' => array(
     2968                        'video/mp4',
     2969                        'video/mp4v-es',
     2970                        'video/x-m4v',
     2971                ),
     2972                'm7' => array(
     2973                        'application/x-thomson-cartridge-memo7',
     2974                ),
     2975                'ma' => array(
     2976                        'application/mathematica',
     2977                ),
     2978                'mab' => array(
     2979                        'application/x-markaby',
     2980                        'application/x-ruby',
     2981                ),
     2982                'mads' => array(
     2983                        'application/mads+xml',
     2984                ),
     2985                'mag' => array(
     2986                        'application/vnd.ecowin.chart',
     2987                ),
     2988                'mak' => array(
     2989                        'text/plain',
     2990                        'text/x-makefile',
     2991                ),
     2992                'makefile' => array(
     2993                        'text/plain',
     2994                        'text/x-makefile',
     2995                ),
     2996                'maker' => array(
     2997                        'application/vnd.framemaker',
     2998                ),
     2999                'man' => array(
     3000                        'application/x-troff',
     3001                        'application/x-troff-man',
     3002                        'application/x-troff-me',
     3003                        'application/x-troff-ms',
     3004                        'text/plain',
     3005                        'text/troff',
     3006                ),
     3007                'manifest' => array(
     3008                        'text/cache-manifest',
     3009                        'text/plain',
     3010                ),
     3011                'mar' => array(
     3012                        'application/octet-stream',
     3013                ),
     3014                'markdown' => array(
     3015                        'text/markdown',
     3016                        'text/plain',
     3017                        'text/x-markdown',
     3018                        'text/x-web-markdown',
     3019                ),
     3020                'mat' => array(
     3021                        'application/matlab-mat',
     3022                        'application/x-matlab-data',
     3023                ),
     3024                'mathml' => array(
     3025                        'application/mathml+xml',
     3026                ),
     3027                'mb' => array(
     3028                        'application/mathematica',
     3029                ),
     3030                'mbk' => array(
     3031                        'application/vnd.mobius.mbk',
     3032                ),
     3033                'mbox' => array(
     3034                        'application/mbox',
     3035                        'text/plain',
     3036                ),
     3037                'mc1' => array(
     3038                        'application/vnd.medcalcdata',
     3039                ),
     3040                'mcd' => array(
     3041                        'application/vnd.mcd',
     3042                        'application/vnd.vectorworks',
     3043                ),
     3044                'mcurl' => array(
     3045                        'text/vnd.curl.mcurl',
     3046                ),
     3047                'md' => array(
     3048                        'text/markdown',
     3049                        'text/plain',
     3050                        'text/x-markdown',
     3051                        'text/x-web-markdown',
     3052                ),
     3053                'mdb' => array(
     3054                        'application/mdb',
     3055                        'application/msaccess',
     3056                        'application/vnd.ms-access',
     3057                        'application/vnd.msaccess',
     3058                        'application/x-mdb',
     3059                        'application/x-msaccess',
     3060                        'zz-application/zz-winassoc-mdb',
     3061                ),
     3062                'mdi' => array(
     3063                        'image/vnd.ms-modi',
     3064                ),
     3065                'mdtext' => array(
     3066                        'text/plain',
     3067                        'text/x-web-markdown',
     3068                ),
     3069                'mdx' => array(
     3070                        'application/x-genesis-32x-rom',
     3071                ),
     3072                'me' => array(
     3073                        'application/x-troff',
     3074                        'application/x-troff-man',
     3075                        'application/x-troff-me',
     3076                        'application/x-troff-ms',
     3077                        'text/plain',
     3078                        'text/troff',
     3079                        'text/x-troff-me',
     3080                ),
     3081                'med' => array(
     3082                        'audio/x-mod',
     3083                ),
     3084                'mef' => array(
     3085                        'image/x-raw-mamiya',
     3086                ),
     3087                'mesh' => array(
     3088                        'model/mesh',
     3089                ),
     3090                'meta' => array(
     3091                        'text/plain',
     3092                ),
     3093                'meta4' => array(
     3094                        'application/metalink4+xml',
     3095                        'application/xml',
     3096                ),
     3097                'metalink' => array(
     3098                        'application/metalink+xml',
     3099                        'application/xml',
     3100                ),
     3101                'mets' => array(
     3102                        'application/mets+xml',
     3103                ),
     3104                'mf' => array(
     3105                        'text/plain',
     3106                ),
     3107                'mfm' => array(
     3108                        'application/vnd.mfmp',
     3109                ),
     3110                'mft' => array(
     3111                        'application/rpki-manifest',
     3112                ),
     3113                'mg' => array(
     3114                        'text/plain',
     3115                        'text/x-modula',
     3116                ),
     3117                'mgp' => array(
     3118                        'application/vnd.osgeo.mapguide.package',
     3119                        'application/x-magicpoint',
     3120                        'text/plain',
     3121                ),
     3122                'mgz' => array(
     3123                        'application/vnd.proteus.magazine',
     3124                ),
     3125                'mht' => array(
     3126                        'application/x-mimearchive',
     3127                        'message/rfc822',
     3128                        'multipart/related',
     3129                ),
     3130                'mhtml' => array(
     3131                        'application/x-mimearchive',
     3132                        'message/rfc822',
     3133                        'multipart/related',
     3134                ),
     3135                'mid' => array(
     3136                        'audio/midi',
     3137                        'audio/sp-midi',
     3138                        'audio/x-midi',
     3139                ),
     3140                'midi' => array(
     3141                        'audio/midi',
     3142                        'audio/x-midi',
     3143                ),
     3144                'mie' => array(
     3145                        'application/x-mie',
     3146                ),
     3147                'mif' => array(
     3148                        'application/vnd.mif',
     3149                        'application/x-frame',
     3150                        'application/x-mif',
     3151                ),
     3152                'mime' => array(
     3153                        'message/rfc822',
     3154                ),
     3155                'minipsf' => array(
     3156                        'audio/x-minipsf',
     3157                        'audio/x-psf',
     3158                ),
     3159                'mj2' => array(
     3160                        'image/x-jp2-container',
     3161                        'video/mj2',
     3162                ),
     3163                'mjp2' => array(
     3164                        'image/x-jp2-container',
     3165                        'video/mj2',
     3166                ),
     3167                'mk' => array(
     3168                        'text/plain',
     3169                        'text/x-makefile',
     3170                ),
     3171                'mk3d' => array(
     3172                        'application/x-matroska',
     3173                        'video/x-matroska',
     3174                        'video/x-matroska-3d',
     3175                ),
     3176                'mka' => array(
     3177                        'application/x-matroska',
     3178                        'audio/x-matroska',
     3179                ),
     3180                'mkd' => array(
     3181                        'text/markdown',
     3182                        'text/plain',
     3183                        'text/x-markdown',
     3184                        'text/x-web-markdown',
     3185                ),
     3186                'mks' => array(
     3187                        'video/x-matroska',
     3188                ),
     3189                'mkv' => array(
     3190                        'application/x-matroska',
     3191                        'video/x-matroska',
     3192                ),
     3193                'ml' => array(
     3194                        'text/plain',
     3195                        'text/x-ml',
     3196                        'text/x-ocaml',
     3197                ),
     3198                'mli' => array(
     3199                        'text/plain',
     3200                        'text/x-ocaml',
     3201                ),
     3202                'mlp' => array(
     3203                        'application/vnd.dolby.mlp',
     3204                ),
     3205                'mm' => array(
     3206                        'text/plain',
     3207                        'text/x-troff-mm',
     3208                ),
     3209                'mmap' => array(
     3210                        'application/vnd.mindjet.mindmanager',
     3211                        'application/zip',
     3212                ),
     3213                'mmas' => array(
     3214                        'application/vnd.mindjet.mindmanager',
     3215                        'application/zip',
     3216                ),
     3217                'mmat' => array(
     3218                        'application/vnd.mindjet.mindmanager',
     3219                        'application/zip',
     3220                ),
     3221                'mmd' => array(
     3222                        'application/vnd.chipnuts.karaoke-mmd',
     3223                ),
     3224                'mmf' => array(
     3225                        'application/vnd.smaf',
     3226                        'application/x-smaf',
     3227                ),
     3228                'mml' => array(
     3229                        'application/mathml+xml',
     3230                        'application/xml',
     3231                        'text/mathml',
     3232                ),
     3233                'mmmp' => array(
     3234                        'application/vnd.mindjet.mindmanager',
     3235                        'application/zip',
     3236                ),
     3237                'mmp' => array(
     3238                        'application/vnd.mindjet.mindmanager',
     3239                        'application/zip',
     3240                ),
     3241                'mmpt' => array(
     3242                        'application/vnd.mindjet.mindmanager',
     3243                        'application/zip',
     3244                ),
     3245                'mmr' => array(
     3246                        'image/vnd.fujixerox.edmics-mmr',
     3247                ),
     3248                'mng' => array(
     3249                        'video/x-mng',
     3250                ),
     3251                'mny' => array(
     3252                        'application/x-msmoney',
     3253                ),
     3254                'mo' => array(
     3255                        'application/x-gettext-translation',
     3256                        'text/plain',
     3257                        'text/x-modelica',
     3258                ),
     3259                'mo3' => array(
     3260                        'audio/x-mo3',
     3261                ),
     3262                'mobi' => array(
     3263                        'application/vnd.palm',
     3264                        'application/x-mobipocket-ebook',
     3265                ),
     3266                'moc' => array(
     3267                        'text/plain',
     3268                        'text/x-moc',
     3269                ),
     3270                'mod' => array(
     3271                        'application/xml-dtd',
     3272                        'audio/x-mod',
     3273                ),
     3274                'mods' => array(
     3275                        'application/mods+xml',
     3276                ),
     3277                'mof' => array(
     3278                        'text/x-csrc',
     3279                        'text/x-mof',
     3280                ),
     3281                'moov' => array(
     3282                        'video/quicktime',
     3283                ),
     3284                'mos' => array(
     3285                        'image/x-raw-leaf',
     3286                ),
     3287                'mount' => array(
     3288                        'text/plain',
     3289                        'text/x-systemd-unit',
     3290                ),
     3291                'mov' => array(
     3292                        'application/quicktime',
     3293                        'video/quicktime',
     3294                ),
     3295                'movie' => array(
     3296                        'video/x-sgi-movie',
     3297                ),
     3298                'mp1' => array(
     3299                        'audio/mpeg',
     3300                ),
     3301                'mp2' => array(
     3302                        'audio/mp2',
     3303                        'audio/mpeg',
     3304                        'audio/x-mp2',
     3305                        'audio/x-mpeg',
     3306                        'video/mpeg',
     3307                        'video/mpeg-system',
     3308                        'video/x-mpeg',
     3309                        'video/x-mpeg-system',
     3310                        'video/x-mpeg2',
     3311                ),
     3312                'mp21' => array(
     3313                        'application/mp21',
     3314                ),
     3315                'mp2a' => array(
     3316                        'audio/mpeg',
     3317                        'audio/x-mpeg',
     3318                ),
     3319                'mp3' => array(
     3320                        'audio/mp3',
     3321                        'audio/mpeg',
     3322                        'audio/x-mp3',
     3323                        'audio/x-mpeg',
     3324                        'audio/x-mpg',
     3325                ),
     3326                'mp4' => array(
     3327                        'video/mp4',
     3328                        'video/mp4v-es',
     3329                        'video/quicktime',
     3330                        'video/x-m4v',
     3331                ),
     3332                'mp4a' => array(
     3333                        'application/quicktime',
     3334                        'audio/mp4',
     3335                        'audio/x-m4a',
     3336                        'audio/x-mp4a',
     3337                ),
     3338                'mp4s' => array(
     3339                        'application/mp4',
     3340                        'application/quicktime',
     3341                ),
     3342                'mp4v' => array(
     3343                        'video/mp4',
     3344                        'video/quicktime',
     3345                ),
     3346                'mpc' => array(
     3347                        'application/vnd.mophun.certificate',
     3348                        'audio/x-musepack',
     3349                ),
     3350                'mpe' => array(
     3351                        'video/mpeg',
     3352                        'video/mpeg-system',
     3353                        'video/x-mpeg',
     3354                        'video/x-mpeg-system',
     3355                        'video/x-mpeg2',
     3356                ),
     3357                'mpeg' => array(
     3358                        'video/mpeg',
     3359                        'video/mpeg-system',
     3360                        'video/x-mpeg',
     3361                        'video/x-mpeg-system',
     3362                        'video/x-mpeg2',
     3363                ),
     3364                'mpf' => array(
     3365                        'application/media-policy-dataset+xml',
     3366                        'text/vnd.ms-mediapackage',
     3367                ),
     3368                'mpg' => array(
     3369                        'video/mpeg',
     3370                        'video/mpeg-system',
     3371                        'video/x-mpeg',
     3372                        'video/x-mpeg-system',
     3373                        'video/x-mpeg2',
     3374                ),
     3375                'mpg4' => array(
     3376                        'video/mp4',
     3377                        'video/quicktime',
     3378                ),
     3379                'mpga' => array(
     3380                        'audio/mp3',
     3381                        'audio/mpeg',
     3382                        'audio/x-mp3',
     3383                        'audio/x-mpeg',
     3384                        'audio/x-mpg',
     3385                ),
     3386                'mpkg' => array(
     3387                        'application/vnd.apple.installer+xml',
     3388                ),
     3389                'mpl' => array(
     3390                        'video/mp2t',
     3391                ),
     3392                'mpls' => array(
     3393                        'video/mp2t',
     3394                ),
     3395                'mpm' => array(
     3396                        'application/vnd.blueice.multipass',
     3397                ),
     3398                'mpn' => array(
     3399                        'application/vnd.mophun.application',
     3400                ),
     3401                'mpp' => array(
     3402                        'application/vnd.ms-project',
     3403                        'audio/x-musepack',
     3404                ),
     3405                'mpt' => array(
     3406                        'application/vnd.ms-project',
     3407                ),
     3408                'mpx' => array(
     3409                        'application/x-project',
     3410                        'text/plain',
     3411                ),
     3412                'mpy' => array(
     3413                        'application/vnd.ibm.minipay',
     3414                ),
     3415                'mqy' => array(
     3416                        'application/vnd.mobius.mqy',
     3417                ),
     3418                'mrc' => array(
     3419                        'application/marc',
     3420                ),
     3421                'mrcx' => array(
     3422                        'application/marcxml+xml',
     3423                ),
     3424                'mrl' => array(
     3425                        'text/x-mrml',
     3426                ),
     3427                'mrml' => array(
     3428                        'text/x-mrml',
     3429                ),
     3430                'mrw' => array(
     3431                        'image/x-dcraw',
     3432                        'image/x-minolta-mrw',
     3433                        'image/x-raw-minolta',
     3434                ),
     3435                'ms' => array(
     3436                        'application/x-troff',
     3437                        'application/x-troff-man',
     3438                        'application/x-troff-me',
     3439                        'application/x-troff-ms',
     3440                        'text/plain',
     3441                        'text/troff',
     3442                        'text/x-troff-ms',
     3443                ),
     3444                'mscml' => array(
     3445                        'application/mediaservercontrol+xml',
     3446                ),
     3447                'mseed' => array(
     3448                        'application/vnd.fdsn.mseed',
     3449                ),
     3450                'mseq' => array(
     3451                        'application/vnd.mseq',
     3452                ),
     3453                'msf' => array(
     3454                        'application/vnd.epson.msf',
     3455                ),
     3456                'msg' => array(
     3457                        'application/vnd.ms-outlook',
     3458                ),
     3459                'msh' => array(
     3460                        'model/mesh',
     3461                ),
     3462                'msi' => array(
     3463                        'application/octet-stream',
     3464                        'application/x-ms-installer',
     3465                        'application/x-msdownload',
     3466                        'application/x-msi',
     3467                        'application/x-ole-storage',
     3468                        'application/x-windows-installer',
     3469                ),
     3470                'msl' => array(
     3471                        'application/vnd.mobius.msl',
     3472                ),
     3473                'msm' => array(
     3474                        'application/octet-stream',
     3475                ),
     3476                'msod' => array(
     3477                        'image/x-msod',
     3478                ),
     3479                'msp' => array(
     3480                        'application/octet-stream',
     3481                        'application/x-ms-installer',
     3482                        'application/x-msi',
     3483                        'application/x-windows-installer',
     3484                ),
     3485                'mst' => array(
     3486                        'application/x-ms-installer',
     3487                        'application/x-msi',
     3488                        'application/x-windows-installer',
     3489                ),
     3490                'msty' => array(
     3491                        'application/vnd.muvee.style',
     3492                ),
     3493                'msx' => array(
     3494                        'application/x-msx-rom',
     3495                ),
     3496                'mtm' => array(
     3497                        'audio/x-mod',
     3498                ),
     3499                'mts' => array(
     3500                        'model/vnd.mts',
     3501                        'video/mp2t',
     3502                ),
     3503                'mup' => array(
     3504                        'text/plain',
     3505                        'text/x-mup',
     3506                ),
     3507                'mus' => array(
     3508                        'application/vnd.musician',
     3509                ),
     3510                'musicxml' => array(
     3511                        'application/vnd.recordare.musicxml+xml',
     3512                ),
     3513                'mvb' => array(
     3514                        'application/x-msmediaview',
     3515                ),
     3516                'mvt' => array(
     3517                        'application/vnd.mapbox-vector-tile',
     3518                ),
     3519                'mwf' => array(
     3520                        'application/vnd.mfer',
     3521                ),
     3522                'mxf' => array(
     3523                        'application/mxf',
     3524                ),
     3525                'mxl' => array(
     3526                        'application/vnd.recordare.musicxml',
     3527                ),
     3528                'mxmf' => array(
     3529                        'audio/mobile-xmf',
     3530                        'audio/vnd.nokia.mobile-xmf',
     3531                ),
     3532                'mxml' => array(
     3533                        'application/xv+xml',
     3534                ),
     3535                'mxs' => array(
     3536                        'application/vnd.triscape.mxs',
     3537                ),
     3538                'mxu' => array(
     3539                        'text/plain',
     3540                        'video/vnd.mpegurl',
     3541                        'video/x-mpegurl',
     3542                ),
     3543                'n-gage' => array(
     3544                        'application/vnd.nokia.n-gage.symbian.install',
     3545                ),
     3546                'n3' => array(
     3547                        'text/n3',
     3548                        'text/plain',
     3549                ),
     3550                'n64' => array(
     3551                        'application/x-n64-rom',
     3552                ),
     3553                'nb' => array(
     3554                        'application/mathematica',
     3555                        'application/x-mathematica',
     3556                        'text/plain',
     3557                ),
     3558                'nbp' => array(
     3559                        'application/vnd.wolfram.player',
     3560                ),
     3561                'nc' => array(
     3562                        'application/x-netcdf',
     3563                ),
     3564                'ncx' => array(
     3565                        'application/x-dtbncx+xml',
     3566                ),
     3567                'nds' => array(
     3568                        'application/x-nintendo-ds-rom',
     3569                ),
     3570                'nef' => array(
     3571                        'image/x-dcraw',
     3572                        'image/x-nikon-nef',
     3573                        'image/x-raw-nikon',
     3574                ),
     3575                'nes' => array(
     3576                        'application/x-nes-rom',
     3577                ),
     3578                'nez' => array(
     3579                        'application/x-nes-rom',
     3580                ),
     3581                'nfo' => array(
     3582                        'text/x-nfo',
     3583                        'text/x-readme',
     3584                ),
     3585                'ngdat' => array(
     3586                        'application/vnd.nokia.n-gage.data',
     3587                ),
     3588                'ngp' => array(
     3589                        'application/x-neo-geo-pocket-rom',
     3590                ),
     3591                'nitf' => array(
     3592                        'application/vnd.nitf',
     3593                        'image/nitf',
     3594                        'image/ntf',
     3595                ),
     3596                'nlu' => array(
     3597                        'application/vnd.neurolanguage.nlu',
     3598                ),
     3599                'nml' => array(
     3600                        'application/vnd.enliven',
     3601                ),
     3602                'nnd' => array(
     3603                        'application/vnd.noblenet-directory',
     3604                ),
     3605                'nns' => array(
     3606                        'application/vnd.noblenet-sealer',
     3607                ),
     3608                'nnw' => array(
     3609                        'application/vnd.noblenet-web',
     3610                ),
     3611                'not' => array(
     3612                        'text/plain',
     3613                        'text/x-mup',
     3614                ),
     3615                'npx' => array(
     3616                        'image/vnd.net-fpx',
     3617                ),
     3618                'nrw' => array(
     3619                        'image/x-raw-nikon',
     3620                ),
     3621                'nsc' => array(
     3622                        'application/vnd.ms-asf',
     3623                        'application/x-conference',
     3624                        'application/x-netshow-channel',
     3625                ),
     3626                'nsf' => array(
     3627                        'application/vnd.lotus-notes',
     3628                ),
     3629                'nsv' => array(
     3630                        'video/x-nsv',
     3631                ),
     3632                'ntf' => array(
     3633                        'application/vnd.nitf',
     3634                        'image/nitf',
     3635                        'image/ntf',
     3636                ),
     3637                'numbers' => array(
     3638                        'application/vnd.apple.iwork',
     3639                        'application/vnd.apple.numbers',
     3640                ),
     3641                'nzb' => array(
     3642                        'application/x-nzb',
     3643                        'application/xml',
     3644                ),
     3645                'oa2' => array(
     3646                        'application/vnd.fujitsu.oasys2',
     3647                ),
     3648                'oa3' => array(
     3649                        'application/vnd.fujitsu.oasys3',
     3650                ),
     3651                'oas' => array(
     3652                        'application/vnd.fujitsu.oasys',
     3653                ),
     3654                'obd' => array(
     3655                        'application/x-msbinder',
     3656                ),
     3657                'obj' => array(
     3658                        'application/x-tgif',
     3659                ),
     3660                'ocaml' => array(
     3661                        'text/plain',
     3662                        'text/x-ocaml',
     3663                ),
     3664                'ocl' => array(
     3665                        'text/plain',
     3666                        'text/x-ocl',
     3667                ),
     3668                'oda' => array(
     3669                        'application/oda',
     3670                ),
     3671                'odb' => array(
     3672                        'application/vnd.oasis.opendocument.database',
     3673                        'application/vnd.sun.xml.base',
     3674                        'application/zip',
     3675                ),
     3676                'odc' => array(
     3677                        'application/vnd.oasis.opendocument.chart',
     3678                        'application/x-vnd.oasis.opendocument.chart',
     3679                        'application/zip',
     3680                ),
     3681                'odf' => array(
     3682                        'application/vnd.oasis.opendocument.formula',
     3683                        'application/x-vnd.oasis.opendocument.formula',
     3684                        'application/zip',
     3685                ),
     3686                'odft' => array(
     3687                        'application/vnd.oasis.opendocument.formula-template',
     3688                        'application/x-vnd.oasis.opendocument.formula-template',
     3689                ),
     3690                'odg' => array(
     3691                        'application/vnd.oasis.opendocument.graphics',
     3692                        'application/x-vnd.oasis.opendocument.graphics',
     3693                        'application/zip',
     3694                ),
     3695                'odi' => array(
     3696                        'application/vnd.oasis.opendocument.image',
     3697                        'application/x-vnd.oasis.opendocument.image',
     3698                        'application/zip',
     3699                ),
     3700                'odm' => array(
     3701                        'application/vnd.oasis.opendocument.text-master',
     3702                        'application/zip',
     3703                ),
     3704                'odp' => array(
     3705                        'application/vnd.oasis.opendocument.presentation',
     3706                        'application/x-vnd.oasis.opendocument.presentation',
     3707                        'application/zip',
     3708                ),
     3709                'ods' => array(
     3710                        'application/vnd.oasis.opendocument.spreadsheet',
     3711                        'application/x-vnd.oasis.opendocument.spreadsheet',
     3712                        'application/zip',
     3713                ),
     3714                'odt' => array(
     3715                        'application/vnd.oasis.opendocument.text',
     3716                        'application/x-vnd.oasis.opendocument.text',
     3717                        'application/zip',
     3718                ),
     3719                'oga' => array(
     3720                        'application/ogg',
     3721                        'audio/ogg',
     3722                        'audio/vorbis',
     3723                        'audio/x-flac+ogg',
     3724                        'audio/x-ogg',
     3725                        'audio/x-oggflac',
     3726                        'audio/x-speex+ogg',
     3727                        'audio/x-vorbis',
     3728                        'audio/x-vorbis+ogg',
     3729                ),
     3730                'ogg' => array(
     3731                        'application/ogg',
     3732                        'application/x-ogg',
     3733                        'audio/ogg',
     3734                        'audio/vorbis',
     3735                        'audio/x-flac+ogg',
     3736                        'audio/x-ogg',
     3737                        'audio/x-oggflac',
     3738                        'audio/x-speex+ogg',
     3739                        'audio/x-vorbis',
     3740                        'audio/x-vorbis+ogg',
     3741                        'video/ogg',
     3742                        'video/x-ogg',
     3743                        'video/x-theora',
     3744                        'video/x-theora+ogg',
     3745                ),
     3746                'ogm' => array(
     3747                        'video/ogg',
     3748                        'video/x-ogm',
     3749                        'video/x-ogm+ogg',
     3750                ),
     3751                'ogv' => array(
     3752                        'application/ogg',
     3753                        'video/ogg',
     3754                        'video/x-ogg',
     3755                ),
     3756                'ogx' => array(
     3757                        'application/ogg',
     3758                        'application/x-ogg',
     3759                ),
     3760                'old' => array(
     3761                        'application/x-trash',
     3762                ),
     3763                'oleo' => array(
     3764                        'application/x-oleo',
     3765                ),
     3766                'omdoc' => array(
     3767                        'application/omdoc+xml',
     3768                ),
     3769                'one' => array(
     3770                        'application/onenote',
     3771                        'application/onenoteformatone',
     3772                ),
     3773                'onepkg' => array(
     3774                        'application/onenote',
     3775                        'application/onenoteformatpackage',
     3776                        'application/vnd.ms-cab-compressed',
     3777                ),
     3778                'onetmp' => array(
     3779                        'application/msonenote',
     3780                        'application/onenote',
     3781                ),
     3782                'onetoc' => array(
     3783                        'application/onenote',
     3784                        'application/onenoteformatonetoc2',
     3785                ),
     3786                'onetoc2' => array(
     3787                        'application/onenote',
     3788                        'application/onenoteformatonetoc2',
     3789                ),
     3790                'ooc' => array(
     3791                        'text/x-csrc',
     3792                        'text/x-ooc',
     3793                ),
     3794                'opf' => array(
     3795                        'application/oebps-package+xml',
     3796                ),
     3797                'opml' => array(
     3798                        'application/xml',
     3799                        'text/x-opml',
     3800                        'text/x-opml+xml',
     3801                ),
     3802                'oprc' => array(
     3803                        'application/vnd.palm',
     3804                        'application/x-palm-database',
     3805                ),
     3806                'opus' => array(
     3807                        'application/ogg',
     3808                        'audio/ogg',
     3809                        'audio/opus',
     3810                        'audio/x-ogg',
     3811                        'audio/x-opus+ogg',
     3812                ),
     3813                'or3' => array(
     3814                        'application/vnd.lotus-organizer',
     3815                ),
     3816                'ora' => array(
     3817                        'application/zip',
     3818                        'image/openraster',
     3819                ),
     3820                'orf' => array(
     3821                        'image/x-dcraw',
     3822                        'image/x-olympus-orf',
     3823                        'image/x-raw-olympus',
     3824                ),
     3825                'org' => array(
     3826                        'application/vnd.lotus-organizer',
     3827                ),
     3828                'orq' => array(
     3829                        'application/ocsp-request',
     3830                ),
     3831                'ors' => array(
     3832                        'application/ocsp-response',
     3833                ),
     3834                'osf' => array(
     3835                        'application/vnd.yamaha.openscoreformat',
     3836                ),
     3837                'osfpvg' => array(
     3838                        'application/vnd.yamaha.openscoreformat.osfpvg+xml',
     3839                ),
     3840                'osm' => array(
     3841                        'application/vnd.openstreetmap.data+xml',
     3842                ),
     3843                'ost' => array(
     3844                        'application/vnd.ms-outlook-pst',
     3845                ),
     3846                'otc' => array(
     3847                        'application/vnd.oasis.opendocument.chart-template',
     3848                        'application/x-vnd.oasis.opendocument.chart-template',
     3849                        'application/zip',
     3850                ),
     3851                'otf' => array(
     3852                        'application/vnd.oasis.opendocument.formula-template',
     3853                        'application/x-font-otf',
     3854                        'application/zip',
     3855                        'font/otf',
     3856                        'font/ttf',
     3857                ),
     3858                'otg' => array(
     3859                        'application/vnd.oasis.opendocument.graphics-template',
     3860                        'application/x-vnd.oasis.opendocument.graphics-template',
     3861                        'application/zip',
     3862                ),
     3863                'oth' => array(
     3864                        'application/vnd.oasis.opendocument.text-web',
     3865                        'application/x-vnd.oasis.opendocument.text-web',
     3866                        'application/zip',
     3867                ),
     3868                'oti' => array(
     3869                        'application/vnd.oasis.opendocument.image-template',
     3870                        'application/x-vnd.oasis.opendocument.image-template',
     3871                ),
     3872                'otm' => array(
     3873                        'application/vnd.oasis.opendocument.text-master',
     3874                        'application/x-vnd.oasis.opendocument.text-master',
     3875                ),
     3876                'otp' => array(
     3877                        'application/vnd.oasis.opendocument.presentation-template',
     3878                        'application/x-vnd.oasis.opendocument.presentation-template',
     3879                        'application/zip',
     3880                ),
     3881                'ots' => array(
     3882                        'application/vnd.oasis.opendocument.spreadsheet-template',
     3883                        'application/x-vnd.oasis.opendocument.spreadsheet-template',
     3884                        'application/zip',
     3885                ),
     3886                'ott' => array(
     3887                        'application/vnd.oasis.opendocument.text-template',
     3888                        'application/x-vnd.oasis.opendocument.text-template',
     3889                        'application/zip',
     3890                ),
     3891                'owl' => array(
     3892                        'application/rdf+xml',
     3893                        'application/xml',
     3894                        'text/rdf',
     3895                ),
     3896                'owx' => array(
     3897                        'application/owl+xml',
     3898                        'application/xml',
     3899                ),
     3900                'oxps' => array(
     3901                        'application/oxps',
     3902                        'application/vnd.ms-xpsdocument',
     3903                        'application/zip',
     3904                ),
     3905                'oxt' => array(
     3906                        'application/vnd.openofficeorg.extension',
     3907                        'application/zip',
     3908                ),
     3909                'p' => array(
     3910                        'text/x-pascal',
     3911                ),
     3912                'p10' => array(
     3913                        'application/pkcs10',
     3914                ),
     3915                'p12' => array(
     3916                        'application/pkcs12',
     3917                        'application/x-pkcs12',
     3918                ),
     3919                'p65' => array(
     3920                        'application/x-ole-storage',
     3921                        'application/x-pagemaker',
     3922                ),
     3923                'p7b' => array(
     3924                        'application/x-pkcs7-certificates',
     3925                ),
     3926                'p7c' => array(
     3927                        'application/pkcs7-mime',
     3928                ),
     3929                'p7m' => array(
     3930                        'application/pkcs7-mime',
     3931                ),
     3932                'p7r' => array(
     3933                        'application/x-pkcs7-certreqresp',
     3934                ),
     3935                'p7s' => array(
     3936                        'application/pkcs7-signature',
     3937                        'text/plain',
     3938                ),
     3939                'p8' => array(
     3940                        'application/pkcs8',
     3941                ),
     3942                'pack' => array(
     3943                        'application/x-java-pack200',
     3944                ),
     3945                'pages' => array(
     3946                        'application/vnd.apple.iwork',
     3947                        'application/vnd.apple.pages',
     3948                ),
     3949                'pak' => array(
     3950                        'application/x-pak',
     3951                ),
     3952                'par2' => array(
     3953                        'application/x-par2',
     3954                ),
     3955                'part' => array(
     3956                        'application/x-partial-download',
     3957                ),
     3958                'pas' => array(
     3959                        'text/plain',
     3960                        'text/x-pascal',
     3961                ),
     3962                'patch' => array(
     3963                        'text/plain',
     3964                        'text/x-diff',
     3965                        'text/x-patch',
     3966                ),
     3967                'path' => array(
     3968                        'text/plain',
     3969                        'text/x-systemd-unit',
     3970                ),
     3971                'paw' => array(
     3972                        'application/vnd.pawaafile',
     3973                ),
     3974                'pbd' => array(
     3975                        'application/vnd.powerbuilder6',
     3976                ),
     3977                'pbm' => array(
     3978                        'image/x-portable-anymap',
     3979                        'image/x-portable-bitmap',
     3980                ),
     3981                'pcap' => array(
     3982                        'application/pcap',
     3983                        'application/vnd.tcpdump.pcap',
     3984                        'application/x-pcap',
     3985                ),
     3986                'pcd' => array(
     3987                        'image/x-photo-cd',
     3988                ),
     3989                'pce' => array(
     3990                        'application/x-pc-engine-rom',
     3991                ),
     3992                'pcf' => array(
     3993                        'application/x-cisco-vpn-settings',
     3994                        'application/x-font-pcf',
     3995                ),
     3996                'pcl' => array(
     3997                        'application/vnd.hp-pcl',
     3998                ),
     3999                'pclxl' => array(
     4000                        'application/vnd.hp-pclxl',
     4001                ),
     4002                'pct' => array(
     4003                        'image/x-pict',
     4004                ),
     4005                'pcurl' => array(
     4006                        'application/vnd.curl.pcurl',
     4007                ),
     4008                'pcx' => array(
     4009                        'image/vnd.zbrush.pcx',
     4010                        'image/x-pcx',
     4011                ),
     4012                'pdb' => array(
     4013                        'application/vnd.palm',
     4014                        'application/x-aportisdoc',
     4015                        'application/x-palm-database',
     4016                        'application/x-pilot',
     4017                        'chemical/x-pdb',
     4018                ),
     4019                'pdc' => array(
     4020                        'application/vnd.palm',
     4021                        'application/x-aportisdoc',
     4022                ),
     4023                'pdf' => array(
     4024                        'application/acrobat',
     4025                        'application/nappdf',
     4026                        'application/pdf',
     4027                        'application/x-pdf',
     4028                        'image/pdf',
     4029                ),
     4030                'pef' => array(
     4031                        'image/x-dcraw',
     4032                        'image/x-pentax-pef',
     4033                        'image/x-raw-pentax',
     4034                ),
     4035                'pem' => array(
     4036                        'application/x-x509-ca-cert',
     4037                ),
     4038                'pen' => array(
     4039                        'text/plain',
     4040                ),
     4041                'perl' => array(
     4042                        'application/x-executable',
     4043                        'application/x-perl',
     4044                        'text/plain',
     4045                        'text/x-perl',
     4046                ),
     4047                'pfa' => array(
     4048                        'application/postscript',
     4049                        'application/x-font-type1',
     4050                ),
     4051                'pfb' => array(
     4052                        'application/postscript',
     4053                        'application/x-font-type1',
     4054                ),
     4055                'pfm' => array(
     4056                        'application/x-font-printer-metric',
     4057                        'application/x-font-type1',
     4058                ),
     4059                'pfr' => array(
     4060                        'application/font-tdpfr',
     4061                ),
     4062                'pfx' => array(
     4063                        'application/pkcs12',
     4064                        'application/x-pkcs12',
     4065                ),
     4066                'pgm' => array(
     4067                        'image/x-portable-anymap',
     4068                        'image/x-portable-graymap',
     4069                ),
     4070                'pgn' => array(
     4071                        'application/vnd.chess-pgn',
     4072                        'application/x-chess-pgn',
     4073                        'text/plain',
     4074                ),
     4075                'pgp' => array(
     4076                        'application/pgp',
     4077                        'application/pgp-encrypted',
     4078                        'application/pgp-keys',
     4079                        'application/pgp-signature',
     4080                        'text/plain',
     4081                ),
     4082                'php' => array(
     4083                        'application/x-php',
     4084                        'text/plain',
     4085                        'text/x-php',
     4086                ),
     4087                'php3' => array(
     4088                        'application/x-php',
     4089                        'text/plain',
     4090                        'text/x-php',
     4091                ),
     4092                'php4' => array(
     4093                        'application/x-php',
     4094                        'text/plain',
     4095                        'text/x-php',
     4096                ),
     4097                'php5' => array(
     4098                        'application/x-php',
     4099                        'text/plain',
     4100                ),
     4101                'phps' => array(
     4102                        'application/x-php',
     4103                        'text/plain',
     4104                ),
     4105                'pic' => array(
     4106                        'image/vnd.radiance',
     4107                        'image/x-pict',
     4108                ),
     4109                'pict' => array(
     4110                        'image/x-pict',
     4111                ),
     4112                'pict1' => array(
     4113                        'image/x-pict',
     4114                ),
     4115                'pict2' => array(
     4116                        'image/x-pict',
     4117                ),
     4118                'pk' => array(
     4119                        'application/x-tex-pk',
     4120                ),
     4121                'pkg' => array(
     4122                        'application/octet-stream',
     4123                        'application/x-xar',
     4124                ),
     4125                'pki' => array(
     4126                        'application/pkixcmp',
     4127                ),
     4128                'pkipath' => array(
     4129                        'application/pkix-pkipath',
     4130                ),
     4131                'pkr' => array(
     4132                        'application/pgp-keys',
     4133                        'text/plain',
     4134                ),
     4135                'pl' => array(
     4136                        'application/x-executable',
     4137                        'application/x-perl',
     4138                        'text/plain',
     4139                        'text/x-perl',
     4140                ),
     4141                'pla' => array(
     4142                        'audio/x-iriver-pla',
     4143                ),
     4144                'plb' => array(
     4145                        'application/vnd.3gpp.pic-bw-large',
     4146                ),
     4147                'plc' => array(
     4148                        'application/vnd.mobius.plc',
     4149                ),
     4150                'plf' => array(
     4151                        'application/vnd.pocketlearn',
     4152                ),
     4153                'pln' => array(
     4154                        'application/x-planperfect',
     4155                ),
     4156                'pls' => array(
     4157                        'application/pls',
     4158                        'application/pls+xml',
     4159                        'audio/scpls',
     4160                        'audio/x-scpls',
     4161                ),
     4162                'pm' => array(
     4163                        'application/x-executable',
     4164                        'application/x-ole-storage',
     4165                        'application/x-pagemaker',
     4166                        'application/x-perl',
     4167                        'text/plain',
     4168                        'text/x-perl',
     4169                ),
     4170                'pm6' => array(
     4171                        'application/x-ole-storage',
     4172                        'application/x-pagemaker',
     4173                ),
     4174                'pmd' => array(
     4175                        'application/x-ole-storage',
     4176                        'application/x-pagemaker',
     4177                ),
     4178                'pml' => array(
     4179                        'application/vnd.ctc-posml',
     4180                ),
     4181                'png' => array(
     4182                        'image/png',
     4183                ),
     4184                'pnm' => array(
     4185                        'image/x-portable-anymap',
     4186                ),
     4187                'pntg' => array(
     4188                        'image/x-macpaint',
     4189                ),
     4190                'po' => array(
     4191                        'application/x-gettext',
     4192                        'text/plain',
     4193                        'text/x-gettext-translation',
     4194                        'text/x-po',
     4195                ),
     4196                'pod' => array(
     4197                        'application/x-executable',
     4198                        'application/x-perl',
     4199                        'text/plain',
     4200                ),
     4201                'pom' => array(
     4202                        'text/plain',
     4203                ),
     4204                'por' => array(
     4205                        'application/x-spss-por',
     4206                ),
     4207                'portpkg' => array(
     4208                        'application/vnd.macports.portpkg',
     4209                ),
     4210                'pot' => array(
     4211                        'application/ms-office',
     4212                        'application/mspowerpoint',
     4213                        'application/powerpoint',
     4214                        'application/vnd.ms-powerpoint',
     4215                        'application/x-mspowerpoint',
     4216                        'text/plain',
     4217                        'text/x-gettext-translation-template',
     4218                        'text/x-pot',
     4219                ),
     4220                'potm' => array(
     4221                        'application/vnd.ms-powerpoint.template.macroenabled.12',
     4222                        'application/vnd.openxmlformats-officedocument.presentationml.template',
     4223                ),
     4224                'potx' => array(
     4225                        'application/vnd.openxmlformats-officedocument.presentationml.template',
     4226                        'application/zip',
     4227                ),
     4228                'pp' => array(
     4229                        'text/plain',
     4230                        'text/x-pascal',
     4231                ),
     4232                'ppa' => array(
     4233                        'application/ms-office',
     4234                        'application/mspowerpoint',
     4235                        'application/vnd.ms-powerpoint',
     4236                ),
     4237                'ppam' => array(
     4238                        'application/vnd.ms-powerpoint.addin.macroenabled.12',
     4239                ),
     4240                'ppd' => array(
     4241                        'application/vnd.cups-ppd',
     4242                ),
     4243                'ppj' => array(
     4244                        'application/xml',
     4245                        'image/vnd.adobe.premiere',
     4246                ),
     4247                'ppm' => array(
     4248                        'image/x-portable-anymap',
     4249                        'image/x-portable-pixmap',
     4250                ),
     4251                'pps' => array(
     4252                        'application/ms-office',
     4253                        'application/mspowerpoint',
     4254                        'application/powerpoint',
     4255                        'application/vnd.ms-powerpoint',
     4256                        'application/x-mspowerpoint',
     4257                ),
     4258                'ppsm' => array(
     4259                        'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
     4260                        'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
     4261                ),
     4262                'ppsx' => array(
     4263                        'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
     4264                        'application/zip',
     4265                ),
     4266                'ppt' => array(
     4267                        'application/ms-office',
     4268                        'application/mspowerpoint',
     4269                        'application/powerpoint',
     4270                        'application/vnd.ms-powerpoint',
     4271                        'application/x-mspowerpoint',
     4272                ),
     4273                'pptm' => array(
     4274                        'application/vnd.ms-powerpoint.presentation.macroenabled.12',
     4275                        'application/vnd.openxmlformats-officedocument.presentationml.presentation',
     4276                ),
     4277                'pptx' => array(
     4278                        'application/vnd.openxmlformats-officedocument.presentationml.presentation',
     4279                        'application/zip',
     4280                ),
     4281                'ppz' => array(
     4282                        'application/ms-office',
     4283                        'application/mspowerpoint',
     4284                        'application/powerpoint',
     4285                        'application/vnd.ms-powerpoint',
     4286                        'application/x-mspowerpoint',
     4287                ),
     4288                'pqa' => array(
     4289                        'application/vnd.palm',
     4290                        'application/x-palm-database',
     4291                ),
     4292                'prc' => array(
     4293                        'application/vnd.palm',
     4294                        'application/x-mobipocket-ebook',
     4295                        'application/x-palm-database',
     4296                        'application/x-pilot',
     4297                ),
     4298                'pre' => array(
     4299                        'application/vnd.lotus-freelance',
     4300                ),
     4301                'prf' => array(
     4302                        'application/pics-rules',
     4303                ),
     4304                'pro' => array(
     4305                        'text/plain',
     4306                        'text/x-prolog',
     4307                ),
     4308                'project' => array(
     4309                        'text/plain',
     4310                ),
     4311                'properties' => array(
     4312                        'text/plain',
     4313                        'text/properties',
     4314                        'text/x-java-properties',
     4315                        'text/x-properties',
     4316                ),
     4317                'provx' => array(
     4318                        'application/provenance+xml',
     4319                ),
     4320                'prt' => array(
     4321                        'application/x-prt',
     4322                ),
     4323                'prz' => array(
     4324                        'application/vnd.lotus-freelance',
     4325                ),
     4326                'ps' => array(
     4327                        'application/postscript',
     4328                        'text/plain',
     4329                ),
     4330                'psb' => array(
     4331                        'application/vnd.3gpp.pic-bw-small',
     4332                ),
     4333                'psd' => array(
     4334                        'application/photoshop',
     4335                        'application/x-photoshop',
     4336                        'image/photoshop',
     4337                        'image/psd',
     4338                        'image/vnd.adobe.photoshop',
     4339                        'image/x-photoshop',
     4340                        'image/x-psd',
     4341                ),
     4342                'pseg3820' => array(
     4343                        'application/vnd.ibm.modcap',
     4344                ),
     4345                'psf' => array(
     4346                        'application/x-font-linux-psf',
     4347                        'audio/x-psf',
     4348                ),
     4349                'psflib' => array(
     4350                        'audio/x-psf',
     4351                        'audio/x-psflib',
     4352                ),
     4353                'psid' => array(
     4354                        'audio/prs.sid',
     4355                ),
     4356                'pskcxml' => array(
     4357                        'application/pskc+xml',
     4358                ),
     4359                'pst' => array(
     4360                        'application/vnd.ms-outlook-pst',
     4361                ),
     4362                'psw' => array(
     4363                        'application/x-pocket-word',
     4364                ),
     4365                'ptid' => array(
     4366                        'application/vnd.pvi.ptid1',
     4367                ),
     4368                'ptx' => array(
     4369                        'image/x-raw-pentax',
     4370                ),
     4371                'pub' => array(
     4372                        'application/vnd.ms-publisher',
     4373                        'application/x-mspublisher',
     4374                        'application/x-ole-storage',
     4375                ),
     4376                'pvb' => array(
     4377                        'application/vnd.3gpp.pic-bw-var',
     4378                ),
     4379                'pw' => array(
     4380                        'application/x-pw',
     4381                ),
     4382                'pwn' => array(
     4383                        'application/vnd.3m.post-it-notes',
     4384                ),
     4385                'pxn' => array(
     4386                        'image/x-raw-logitech',
     4387                ),
     4388                'py' => array(
     4389                        'application/x-executable',
     4390                        'text/plain',
     4391                        'text/x-python',
     4392                        'text/x-python3',
     4393                ),
     4394                'py3' => array(
     4395                        'text/x-python',
     4396                        'text/x-python3',
     4397                ),
     4398                'py3x' => array(
     4399                        'text/x-python',
     4400                        'text/x-python3',
     4401                ),
     4402                'pya' => array(
     4403                        'audio/vnd.ms-playready.media.pya',
     4404                ),
     4405                'pyc' => array(
     4406                        'application/x-python-bytecode',
     4407                ),
     4408                'pyo' => array(
     4409                        'application/x-python-bytecode',
     4410                ),
     4411                'pyv' => array(
     4412                        'video/vnd.ms-playready.media.pyv',
     4413                ),
     4414                'pyx' => array(
     4415                        'application/x-executable',
     4416                        'text/x-python',
     4417                ),
     4418                'qam' => array(
     4419                        'application/vnd.epson.quickanime',
     4420                ),
     4421                'qbo' => array(
     4422                        'application/vnd.intu.qbo',
     4423                ),
     4424                'qca' => array(
     4425                        'application/vnd.ericsson.quickcall',
     4426                ),
     4427                'qcall' => array(
     4428                        'application/vnd.ericsson.quickcall',
     4429                ),
     4430                'qfx' => array(
     4431                        'application/vnd.intu.qfx',
     4432                ),
     4433                'qif' => array(
     4434                        'application/x-qw',
     4435                        'image/x-quicktime',
     4436                ),
     4437                'qml' => array(
     4438                        'text/x-qml',
     4439                ),
     4440                'qmlproject' => array(
     4441                        'text/x-qml',
     4442                ),
     4443                'qmltypes' => array(
     4444                        'text/x-qml',
     4445                ),
     4446                'qp' => array(
     4447                        'application/x-qpress',
     4448                ),
     4449                'qps' => array(
     4450                        'application/vnd.publishare-delta-tree',
     4451                ),
     4452                'qpw' => array(
     4453                        'application/x-quattro-pro',
     4454                ),
     4455                'qt' => array(
     4456                        'application/quicktime',
     4457                        'video/quicktime',
     4458                ),
     4459                'qti' => array(
     4460                        'application/x-qtiplot',
     4461                        'text/plain',
     4462                ),
     4463                'qtif' => array(
     4464                        'image/x-quicktime',
     4465                ),
     4466                'qtl' => array(
     4467                        'application/x-quicktime-media-link',
     4468                        'application/x-quicktimeplayer',
     4469                        'video/quicktime',
     4470                ),
     4471                'qtvr' => array(
     4472                        'video/quicktime',
     4473                ),
     4474                'qwd' => array(
     4475                        'application/vnd.quark.quarkxpress',
     4476                ),
     4477                'qwt' => array(
     4478                        'application/vnd.quark.quarkxpress',
     4479                ),
     4480                'qxb' => array(
     4481                        'application/vnd.quark.quarkxpress',
     4482                ),
     4483                'qxd' => array(
     4484                        'application/vnd.quark.quarkxpress',
     4485                ),
     4486                'qxl' => array(
     4487                        'application/vnd.quark.quarkxpress',
     4488                ),
     4489                'qxt' => array(
     4490                        'application/vnd.quark.quarkxpress',
     4491                ),
     4492                'r3d' => array(
     4493                        'image/x-raw-red',
     4494                ),
     4495                'ra' => array(
     4496                        'audio/vnd.m-realaudio',
     4497                        'audio/vnd.rn-realaudio',
     4498                        'audio/x-pn-realaudio',
     4499                        'audio/x-realaudio',
     4500                ),
     4501                'raf' => array(
     4502                        'image/x-dcraw',
     4503                        'image/x-fuji-raf',
     4504                        'image/x-raw-fuji',
     4505                ),
     4506                'ram' => array(
     4507                        'application/ram',
     4508                        'audio/x-pn-realaudio',
     4509                        'audio/x-realaudio',
     4510                ),
     4511                'raml' => array(
     4512                        'application/raml+yaml',
     4513                        'application/x-yaml',
     4514                ),
     4515                'rar' => array(
     4516                        'application/vnd.rar',
     4517                        'application/x-rar',
     4518                        'application/x-rar-compressed',
     4519                ),
     4520                'ras' => array(
     4521                        'image/x-cmu-raster',
     4522                ),
     4523                'raw' => array(
     4524                        'image/x-dcraw',
     4525                        'image/x-panasonic-raw',
     4526                        'image/x-panasonic-rw',
     4527                        'image/x-raw-panasonic',
     4528                ),
     4529                'raw-disk-image' => array(
     4530                        'application/x-raw-disk-image',
     4531                ),
     4532                'rax' => array(
     4533                        'audio/vnd.m-realaudio',
     4534                        'audio/vnd.rn-realaudio',
     4535                        'audio/x-pn-realaudio',
     4536                ),
     4537                'rb' => array(
     4538                        'application/x-executable',
     4539                        'application/x-ruby',
     4540                        'text/plain',
     4541                        'text/x-ruby',
     4542                ),
     4543                'rcprofile' => array(
     4544                        'application/vnd.ipunplugged.rcprofile',
     4545                ),
     4546                'rdf' => array(
     4547                        'application/rdf+xml',
     4548                        'application/xml',
     4549                        'text/rdf',
     4550                ),
     4551                'rdfs' => array(
     4552                        'application/rdf+xml',
     4553                        'application/xml',
     4554                        'text/rdf',
     4555                ),
     4556                'rdz' => array(
     4557                        'application/vnd.data-vision.rdz',
     4558                ),
     4559                'reg' => array(
     4560                        'text/plain',
     4561                        'text/x-ms-regedit',
     4562                ),
     4563                'rej' => array(
     4564                        'application/x-reject',
     4565                        'text/plain',
     4566                        'text/x-reject',
     4567                ),
     4568                'relo' => array(
     4569                        'application/p2p-overlay+xml',
     4570                ),
     4571                'rep' => array(
     4572                        'application/vnd.businessobjects',
     4573                ),
     4574                'res' => array(
     4575                        'application/x-dtbresource+xml',
     4576                ),
     4577                'rest' => array(
     4578                        'text/plain',
     4579                        'text/x-rst',
     4580                ),
     4581                'restx' => array(
     4582                        'text/plain',
     4583                        'text/x-rst',
     4584                ),
     4585                'rexx' => array(
     4586                        'text/plain',
     4587                        'text/x-rexx',
     4588                ),
     4589                'rgb' => array(
     4590                        'image/x-rgb',
     4591                ),
     4592                'rgbe' => array(
     4593                        'image/vnd.radiance',
     4594                ),
     4595                'rif' => array(
     4596                        'application/reginfo+xml',
     4597                ),
     4598                'rip' => array(
     4599                        'audio/vnd.rip',
     4600                ),
     4601                'ris' => array(
     4602                        'application/x-research-info-systems',
     4603                ),
     4604                'rl' => array(
     4605                        'application/resource-lists+xml',
     4606                ),
     4607                'rlc' => array(
     4608                        'image/vnd.fujixerox.edmics-rlc',
     4609                ),
     4610                'rld' => array(
     4611                        'application/resource-lists-diff+xml',
     4612                ),
     4613                'rle' => array(
     4614                        'image/rle',
     4615                ),
     4616                'rm' => array(
     4617                        'application/vnd.rn-realmedia',
     4618                        'application/vnd.rn-realmedia-vbr',
     4619                ),
     4620                'rmi' => array(
     4621                        'audio/midi',
     4622                ),
     4623                'rmj' => array(
     4624                        'application/vnd.rn-realmedia',
     4625                        'application/vnd.rn-realmedia-vbr',
     4626                ),
     4627                'rmm' => array(
     4628                        'application/vnd.rn-realmedia',
     4629                        'application/vnd.rn-realmedia-vbr',
     4630                ),
     4631                'rmp' => array(
     4632                        'audio/x-pn-realaudio-plugin',
     4633                ),
     4634                'rms' => array(
     4635                        'application/vnd.jcp.javame.mi