marcel 0.3.2 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/lib/marcel.rb +3 -2
  3. data/lib/marcel/magic.rb +147 -0
  4. data/lib/marcel/mime_type.rb +68 -67
  5. data/lib/marcel/mime_type/definitions.rb +8 -3
  6. data/lib/marcel/tables.rb +2515 -0
  7. data/lib/marcel/version.rb +1 -1
  8. metadata +42 -235
  9. data/.gitignore +0 -1
  10. data/.travis.yml +0 -7
  11. data/Gemfile +0 -4
  12. data/Gemfile.lock +0 -26
  13. data/README.md +0 -50
  14. data/Rakefile +0 -33
  15. data/marcel.gemspec +0 -28
  16. data/test/declared_type_test.rb +0 -17
  17. data/test/extension_test.rb +0 -25
  18. data/test/fixtures/image.gif +0 -0
  19. data/test/fixtures/magic/application/msword/msword.doc +0 -0
  20. data/test/fixtures/magic/application/pdf/illustrator-seen-as-pdf.ai +22 -6302
  21. data/test/fixtures/magic/application/pdf/pdf.pdf +0 -0
  22. data/test/fixtures/magic/application/rtf/rtf.rtf +0 -1
  23. data/test/fixtures/magic/application/vnd.adobe.flash.movie/flash.swf +0 -0
  24. data/test/fixtures/magic/application/vnd.openxmlformats-officedocument.presentationml.presentation/vnd.openxmlformats-officedocument.presentationml.presentation.pptx +0 -0
  25. data/test/fixtures/magic/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xlsx +0 -0
  26. data/test/fixtures/magic/application/vnd.openxmlformats-officedocument.wordprocessingml.document/vnd.openxmlformats-officedocument.wordprocessingml.document.docx +0 -0
  27. data/test/fixtures/magic/application/x-font-ttf.ttf +0 -0
  28. data/test/fixtures/magic/application/xml/xml.xml +0 -1
  29. data/test/fixtures/magic/application/zip/sketch.sketch +0 -0
  30. data/test/fixtures/magic/application/zip/zip.zip +0 -0
  31. data/test/fixtures/magic/audio/flac/flac.flac +0 -0
  32. data/test/fixtures/magic/audio/mp4/m4a.m4a +0 -0
  33. data/test/fixtures/magic/audio/mp4/mp4.m4a +0 -0
  34. data/test/fixtures/magic/audio/mpeg/mpeg.mp3 +0 -0
  35. data/test/fixtures/magic/audio/x-wav/wav.wav +0 -0
  36. data/test/fixtures/magic/audio/x-wav/x-wav.wav +0 -0
  37. data/test/fixtures/magic/image/bmp/bmp.bmp +0 -0
  38. data/test/fixtures/magic/image/gif/gif.gif +0 -0
  39. data/test/fixtures/magic/image/jpeg/jpeg.jpg +0 -0
  40. data/test/fixtures/magic/image/png/png.png +0 -0
  41. data/test/fixtures/magic/image/svg+xml/svg.svg +0 -1
  42. data/test/fixtures/magic/image/tiff/tiff.tif +0 -0
  43. data/test/fixtures/magic/image/vnd.adobe.photoshop/photoshop-large-document-format.psb +0 -0
  44. data/test/fixtures/magic/image/vnd.adobe.photoshop/vnd.adobe.photoshop.psd +0 -0
  45. data/test/fixtures/magic/image/vnd.dwg/x-dwg.dwg +0 -0
  46. data/test/fixtures/magic/image/vnd.microsoft.icon/ico.ico +0 -0
  47. data/test/fixtures/magic/image/webp/webp.webp +0 -0
  48. data/test/fixtures/magic/image/x-eps/postscript/postscript.eps +0 -0
  49. data/test/fixtures/magic/image/x-eps/x-eps.eps +0 -0
  50. data/test/fixtures/magic/text/html/html.html +0 -3
  51. data/test/fixtures/magic/video/mp4/m4v.m4v +0 -0
  52. data/test/fixtures/magic/video/mp4/mp4.mp4 +0 -0
  53. data/test/fixtures/magic/video/quicktime/quicktime.mov +0 -0
  54. data/test/fixtures/magic/video/webm/webm.mkv +0 -0
  55. data/test/fixtures/name/application/illustrator/illustrator.ai +27 -6301
  56. data/test/fixtures/name/application/javascript/javascript.js +0 -3
  57. data/test/fixtures/name/application/json/json.json +0 -3
  58. data/test/fixtures/name/application/msword/msword.doc +0 -0
  59. data/test/fixtures/name/application/pdf/pdf.pdf +0 -0
  60. data/test/fixtures/name/application/rtf/rtf.rtf +0 -1
  61. data/test/fixtures/name/application/sql/sql.sql +0 -0
  62. data/test/fixtures/name/application/vnd.adobe.flash.movie/flash.swf +0 -0
  63. data/test/fixtures/name/application/vnd.android.package-archive/vnd.android.package-archive.apk +0 -0
  64. data/test/fixtures/name/application/vnd.apple.keynote/vnd.apple.keynote.key +0 -0
  65. data/test/fixtures/name/application/vnd.apple.numbers/vnd.apple.numbers.numbers +0 -0
  66. data/test/fixtures/name/application/vnd.apple.pages/vnd.apple.pages.pages +0 -0
  67. data/test/fixtures/name/application/vnd.ms-excel.sheet.binary.macroenabled.12/vnd.ms-excel.sheet.binary.macroenabled.12.xlsb +0 -0
  68. data/test/fixtures/name/application/vnd.ms-excel.sheet.macroenabled.12/vnd.ms-excel.sheet.macroenabled.12.xlsm +0 -0
  69. data/test/fixtures/name/application/vnd.ms-excel.template.macroenabled.12/vnd.ms-excel.template.macroenabled.12.xltm +0 -0
  70. data/test/fixtures/name/application/vnd.ms-excel/vnd.ms-excel.xls +0 -0
  71. data/test/fixtures/name/application/vnd.ms-powerpoint.presentation.macroenabled.12/vnd.ms-powerpoint.presentation.macroenabled.12.pptm +0 -0
  72. data/test/fixtures/name/application/vnd.ms-powerpoint.slideshow.macroenabled.12/vnd.ms-powerpoint.slideshow.macroenabled.12.ppsm +0 -0
  73. data/test/fixtures/name/application/vnd.ms-powerpoint.template.macroenabled.12/vnd.ms-powerpoint.template.macroenabled.12.potm +0 -0
  74. data/test/fixtures/name/application/vnd.ms-powerpoint/vnd.ms-powerpoint.ppt +0 -0
  75. data/test/fixtures/name/application/vnd.ms-word.document.macroenabled.12/vnd.ms-word.document.macroenabled.12.docm +0 -0
  76. data/test/fixtures/name/application/vnd.ms-word.template.macroenabled.12/vnd.ms-word.template.macroenabled.12.dotm +0 -0
  77. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.presentationml.presentation/vnd.openxmlformats-officedocument.presentationml.presentation.pptx +0 -0
  78. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.presentationml.slideshow/vnd.openxmlformats-officedocument.presentationml.slideshow.ppsx +0 -0
  79. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.presentationml.template/vnd.openxmlformats-officedocument.presentationml.template.potx +0 -0
  80. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/downloaded-from-google-docs.xlsx +0 -0
  81. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.spreadsheetml.sheet/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xlsx +0 -0
  82. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.wordprocessingml.document/vnd.openxmlformats-officedocument.wordprocessingml.document.docx +0 -0
  83. data/test/fixtures/name/application/vnd.openxmlformats-officedocument.wordprocessingml.template/vnd.openxmlformats-officedocument.wordprocessingml.template.dotx +0 -0
  84. data/test/fixtures/name/application/x-font-ttf.ttf +0 -0
  85. data/test/fixtures/name/application/zip/zip.zip +0 -0
  86. data/test/fixtures/name/audio/flac/flac.flac +0 -0
  87. data/test/fixtures/name/audio/mp4/mp4.m4a +0 -0
  88. data/test/fixtures/name/audio/mpeg/mpeg.mp3 +0 -0
  89. data/test/fixtures/name/audio/x-wav/x-wav.wav +0 -0
  90. data/test/fixtures/name/image/bmp/bmp.bmp +0 -0
  91. data/test/fixtures/name/image/gif/gif.gif +0 -0
  92. data/test/fixtures/name/image/heic.heic +0 -0
  93. data/test/fixtures/name/image/heif.heif +0 -0
  94. data/test/fixtures/name/image/jpeg/jpeg.jpg +0 -0
  95. data/test/fixtures/name/image/png/png.png +0 -0
  96. data/test/fixtures/name/image/svg+xml/svg.svg +0 -1
  97. data/test/fixtures/name/image/tiff/tiff.tif +0 -0
  98. data/test/fixtures/name/image/tiff/tiff.tiff +0 -0
  99. data/test/fixtures/name/image/vnd.adobe.photoshop/saved-as-large-document-format.psb +0 -0
  100. data/test/fixtures/name/image/vnd.adobe.photoshop/vnd.adobe.photoshop.psd +0 -0
  101. data/test/fixtures/name/image/x-eps/postscript/postscript.eps +0 -0
  102. data/test/fixtures/name/image/x-eps/x-eps.eps +0 -0
  103. data/test/fixtures/name/message/rfc822/rfc822.eml +0 -34
  104. data/test/fixtures/name/text/csv/csv.csv +0 -2
  105. data/test/fixtures/name/text/html/html.html +0 -3
  106. data/test/fixtures/name/text/plain/plain.asc +0 -1
  107. data/test/fixtures/name/text/plain/plain.txt +0 -1
  108. data/test/fixtures/name/text/x-log/x-log.log +0 -1
  109. data/test/fixtures/name/video/mp4/mp4.mp4 +0 -0
  110. data/test/fixtures/name/video/quicktime/quicktime.mov +0 -0
  111. data/test/magic_and_declared_type_test.rb +0 -10
  112. data/test/magic_and_name_test.rb +0 -13
  113. data/test/magic_test.rb +0 -13
  114. data/test/mime_type_test.rb +0 -47
  115. data/test/name_test.rb +0 -10
  116. data/test/test_helper.rb +0 -49
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57f17eae54469b574b2c7ce541bf2c6cf82f180456f6d1f133dd99c13585fbb0
4
- data.tar.gz: b73e492f9d3b2b58abc751ea29a9c5da7fe5c7ef372da6c472c16c3708edd579
3
+ metadata.gz: bc7fbdfb0773a80f6826742b37b9cda29b8052b0bfd150db03b6ba032bac9c1c
4
+ data.tar.gz: c69cee83d060a359318b4302703d276e1ad24aaa73f9c42b4e5af5870a96420e
5
5
  SHA512:
6
- metadata.gz: 140466ed263e260c2936d619d27b584af4b377f02c05acb508a0246cc55730a371023ebc93a183152b593529aac6071a374def41b686d523b85f37818c26b6b9
7
- data.tar.gz: 95f8f724211e266bf3a3ccedfed7c78fd7e35376d74d28e63ceabf538a5945fc01319115391f060bc84cd91ec18e7ed64aa0f607edff83a1026c2fe48a5bfbb5
6
+ metadata.gz: 67ba30b3d8d1f0955397411e478b03844fb53219ceb557411a3059523f21c72fcb5379ae7d9095de1f3053e9c12c3751052db74b27d47a102a78080bb9083776
7
+ data.tar.gz: 7a3178742ed80dcc0f04781baba63dc8758b979d46c11a4ad9f0a365f334cd5ebd9a54ddd39da40f0f9583221bb50e157deee766a67a86fb2525cd19235a8194
data/lib/marcel.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module Marcel
2
- autoload :VERSION, 'marcel/version'
3
- autoload :MimeType, 'marcel/mime_type'
2
+ require "marcel/version"
3
+ require "marcel/magic"
4
+ require "marcel/mime_type"
4
5
  end
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Code in this file adapted from the mimemagic gem, released under the MIT License.
4
+ # Copyright (c) 2011 Daniel Mendler. Available at https://github.com/mimemagicrb/mimemagic.
5
+
6
+ require 'marcel/tables'
7
+
8
+ require 'stringio'
9
+
10
+ module Marcel
11
+ # Mime type detection
12
+ class Magic
13
+ attr_reader :type, :mediatype, :subtype
14
+
15
+ # Mime type by type string
16
+ def initialize(type)
17
+ @type = type
18
+ @mediatype, @subtype = type.split('/', 2)
19
+ end
20
+
21
+ # Add custom mime type. Arguments:
22
+ # * <i>type</i>: Mime type
23
+ # * <i>options</i>: Options hash
24
+ #
25
+ # Option keys:
26
+ # * <i>:extensions</i>: String list or single string of file extensions
27
+ # * <i>:parents</i>: String list or single string of parent mime types
28
+ # * <i>:magic</i>: Mime magic specification
29
+ # * <i>:comment</i>: Comment string
30
+ def self.add(type, options)
31
+ extensions = [options[:extensions]].flatten.compact
32
+ TYPES[type] = [extensions,
33
+ [options[:parents]].flatten.compact,
34
+ options[:comment]]
35
+ extensions.each {|ext| EXTENSIONS[ext] = type }
36
+ MAGIC.unshift [type, options[:magic]] if options[:magic]
37
+ end
38
+
39
+ # Removes a mime type from the dictionary. You might want to do this if
40
+ # you're seeing impossible conflicts (for instance, application/x-gmc-link).
41
+ # * <i>type</i>: The mime type to remove. All associated extensions and magic are removed too.
42
+ def self.remove(type)
43
+ EXTENSIONS.delete_if {|ext, t| t == type }
44
+ MAGIC.delete_if {|t, m| t == type }
45
+ TYPES.delete(type)
46
+ end
47
+
48
+ # Returns true if type is a text format
49
+ def text?; mediatype == 'text' || child_of?('text/plain'); end
50
+
51
+ # Mediatype shortcuts
52
+ def image?; mediatype == 'image'; end
53
+ def audio?; mediatype == 'audio'; end
54
+ def video?; mediatype == 'video'; end
55
+
56
+ # Returns true if type is child of parent type
57
+ def child_of?(parent)
58
+ self.class.child?(type, parent)
59
+ end
60
+
61
+ # Get string list of file extensions
62
+ def extensions
63
+ TYPES.key?(type) ? TYPES[type][0] : []
64
+ end
65
+
66
+ # Get mime comment
67
+ def comment
68
+ (TYPES.key?(type) ? TYPES[type][2] : nil).to_s
69
+ end
70
+
71
+ # Lookup mime type by file extension
72
+ def self.by_extension(ext)
73
+ ext = ext.to_s.downcase
74
+ mime = ext[0..0] == '.' ? EXTENSIONS[ext[1..-1]] : EXTENSIONS[ext]
75
+ mime && new(mime)
76
+ end
77
+
78
+ # Lookup mime type by filename
79
+ def self.by_path(path)
80
+ by_extension(File.extname(path))
81
+ end
82
+
83
+ # Lookup mime type by magic content analysis.
84
+ # This is a slow operation.
85
+ def self.by_magic(io)
86
+ mime = magic_match(io, :find)
87
+ mime && new(mime[0])
88
+ end
89
+
90
+ # Lookup all mime types by magic content analysis.
91
+ # This is a slower operation.
92
+ def self.all_by_magic(io)
93
+ magic_match(io, :select).map { |mime| new(mime[0]) }
94
+ end
95
+
96
+ # Return type as string
97
+ def to_s
98
+ type
99
+ end
100
+
101
+ # Allow comparison with string
102
+ def eql?(other)
103
+ type == other.to_s
104
+ end
105
+
106
+ def hash
107
+ type.hash
108
+ end
109
+
110
+ alias == eql?
111
+
112
+ def self.child?(child, parent)
113
+ child == parent || TYPES.key?(child) && TYPES[child][1].any? {|p| child?(p, parent) }
114
+ end
115
+
116
+ def self.magic_match(io, method)
117
+ return magic_match(StringIO.new(io.to_s), method) unless io.respond_to?(:read)
118
+
119
+ io.binmode if io.respond_to?(:binmode)
120
+ io.set_encoding(Encoding::BINARY) if io.respond_to?(:set_encoding)
121
+ buffer = "".encode(Encoding::BINARY)
122
+
123
+ MAGIC.send(method) { |type, matches| magic_match_io(io, matches, buffer) }
124
+ end
125
+
126
+ def self.magic_match_io(io, matches, buffer)
127
+ matches.any? do |offset, value, children|
128
+ match =
129
+ if value
130
+ if Range === offset
131
+ io.read(offset.begin, buffer)
132
+ x = io.read(offset.end - offset.begin + value.bytesize, buffer)
133
+ x && x.include?(value)
134
+ else
135
+ io.read(offset, buffer)
136
+ io.read(value.bytesize, buffer) == value
137
+ end
138
+ end
139
+
140
+ io.rewind
141
+ match && (!children || magic_match_io(io, children, buffer))
142
+ end
143
+ end
144
+
145
+ private_class_method :magic_match, :magic_match_io
146
+ end
147
+ end
@@ -1,97 +1,98 @@
1
- class Marcel::MimeType
2
- BINARY = "application/octet-stream"
1
+ module Marcel
2
+ class MimeType
3
+ BINARY = "application/octet-stream"
3
4
 
4
- class << self
5
- def extend(type, extensions: [], parents: [], magic: nil)
6
- existing = MimeMagic::TYPES[type] || [[], [], ""]
5
+ class << self
6
+ def extend(type, extensions: [], parents: [], magic: nil)
7
+ existing = Marcel::TYPES[type] || [[], [], ""]
7
8
 
8
- extensions = (Array(extensions) + existing[0]).uniq
9
- parents = (Array(parents) + existing[1]).uniq
10
- comment = existing[2]
9
+ extensions = (Array(extensions) + existing[0]).uniq
10
+ parents = (Array(parents) + existing[1]).uniq
11
+ comment = existing[2]
11
12
 
12
- MimeMagic.add(type, extensions: extensions, magic: magic, parents: parents, comment: comment)
13
- end
13
+ Magic.add(type, extensions: extensions, magic: magic, parents: parents, comment: comment)
14
+ end
14
15
 
15
- def for(pathname_or_io = nil, name: nil, extension: nil, declared_type: nil)
16
- type_from_data = for_data(pathname_or_io)
17
- fallback_type = for_declared_type(declared_type) || for_name(name) || for_extension(extension) || BINARY
16
+ def for(pathname_or_io = nil, name: nil, extension: nil, declared_type: nil)
17
+ type_from_data = for_data(pathname_or_io)
18
+ fallback_type = for_declared_type(declared_type) || for_name(name) || for_extension(extension) || BINARY
18
19
 
19
- if type_from_data
20
- most_specific_type type_from_data, fallback_type
21
- else
22
- fallback_type
20
+ if type_from_data
21
+ most_specific_type type_from_data, fallback_type
22
+ else
23
+ fallback_type
24
+ end
23
25
  end
24
- end
25
26
 
26
- private
27
- def for_data(pathname_or_io)
28
- if pathname_or_io
29
- with_io(pathname_or_io) do |io|
30
- if magic = MimeMagic.by_magic(io)
31
- magic.type.downcase
27
+ private
28
+ def for_data(pathname_or_io)
29
+ if pathname_or_io
30
+ with_io(pathname_or_io) do |io|
31
+ if magic = Marcel::Magic.by_magic(io)
32
+ magic.type.downcase
33
+ end
32
34
  end
33
35
  end
34
36
  end
35
- end
36
37
 
37
- def for_name(name)
38
- if name
39
- if magic = MimeMagic.by_path(name)
40
- magic.type.downcase
38
+ def for_name(name)
39
+ if name
40
+ if magic = Marcel::Magic.by_path(name)
41
+ magic.type.downcase
42
+ end
41
43
  end
42
44
  end
43
- end
44
45
 
45
- def for_extension(extension)
46
- if extension
47
- if magic = MimeMagic.by_extension(extension)
48
- magic.type.downcase
46
+ def for_extension(extension)
47
+ if extension
48
+ if magic = Marcel::Magic.by_extension(extension)
49
+ magic.type.downcase
50
+ end
49
51
  end
50
52
  end
51
- end
52
53
 
53
- def for_declared_type(declared_type)
54
- type = parse_media_type(declared_type)
54
+ def for_declared_type(declared_type)
55
+ type = parse_media_type(declared_type)
55
56
 
56
- if type != BINARY && !type.nil?
57
- type.downcase
57
+ if type != BINARY && !type.nil?
58
+ type.downcase
59
+ end
58
60
  end
59
- end
60
61
 
61
- def with_io(pathname_or_io, &block)
62
- case pathname_or_io
63
- when Pathname
64
- pathname_or_io.open &block
65
- else
66
- yield pathname_or_io
62
+ def with_io(pathname_or_io, &block)
63
+ if defined?(Pathname) && pathname_or_io.is_a?(Pathname)
64
+ pathname_or_io.open(&block)
65
+ else
66
+ yield pathname_or_io
67
+ end
67
68
  end
68
- end
69
69
 
70
- def parse_media_type(content_type)
71
- if content_type
72
- result = content_type.downcase.split(/[;,\s]/, 2).first
73
- result if result && result.index("/")
70
+ def parse_media_type(content_type)
71
+ if content_type
72
+ result = content_type.downcase.split(/[;,\s]/, 2).first
73
+ result if result && result.index("/")
74
+ end
74
75
  end
75
- end
76
76
 
77
- # For some document types (notably Microsoft Office) we recognise the main content
78
- # type with magic, but not the specific subclass. In this situation, if we can get a more
79
- # specific class using either the name or declared_type, we should use that in preference
80
- def most_specific_type(from_magic_type, fallback_type)
81
- if (root_types(from_magic_type) & root_types(fallback_type)).any?
82
- fallback_type
83
- else
84
- from_magic_type
77
+ # For some document types (notably Microsoft Office) we recognise the main content
78
+ # type with magic, but not the specific subclass. In this situation, if we can get a more
79
+ # specific class using either the name or declared_type, we should use that in preference
80
+ def most_specific_type(from_magic_type, fallback_type)
81
+ if (root_types(from_magic_type) & root_types(fallback_type)).any?
82
+ fallback_type
83
+ else
84
+ from_magic_type
85
+ end
85
86
  end
86
- end
87
87
 
88
- def root_types(type)
89
- if MimeMagic::TYPES[type].nil? || MimeMagic::TYPES[type][1].empty?
90
- [ type ]
91
- else
92
- MimeMagic::TYPES[type][1].map {|t| root_types t }.flatten
88
+ def root_types(type)
89
+ if TYPES[type].nil? || TYPES[type][1].empty?
90
+ [ type ]
91
+ else
92
+ TYPES[type][1].map {|t| root_types t }.flatten
93
+ end
93
94
  end
94
- end
95
+ end
95
96
  end
96
97
  end
97
98
 
@@ -1,6 +1,3 @@
1
- require 'mimemagic'
2
- require 'mimemagic/overlay'
3
-
4
1
  Marcel::MimeType.extend "text/plain", extensions: %w( txt asc )
5
2
 
6
3
  Marcel::MimeType.extend "application/illustrator", parents: "application/pdf"
@@ -37,3 +34,11 @@ Marcel::MimeType.extend "image/vnd.dwg", magic: [[0, "AC10"]]
37
34
 
38
35
  Marcel::MimeType.extend "image/heif", magic: [[4, "ftypmif1"]], extensions: %w( heif )
39
36
  Marcel::MimeType.extend "image/heic", magic: [[4, "ftypheic"]], extensions: %w( heic )
37
+
38
+ Marcel::MimeType.extend "video/mp4", magic: [[4, "ftypisom"], [4, "ftypM4V "]], extensions: %w( mp4 m4v )
39
+
40
+ Marcel::MimeType.extend "font/ttf", magic: [[0, "\x00\x01\x00\x00"]], extensions: %w( ttf ttc )
41
+ Marcel::MimeType.extend "font/otf", magic: [[0, "OTTO"]], extensions: %w( otf ), parents: "font/ttf"
42
+ Marcel::MimeType.extend "application/vnd.adobe.flash.movie", magic: [[0, "FWS"], [0, "CWS"]], extensions: %w( swf )
43
+ Marcel::MimeType.extend "application/sql", extensions: %w( sql )
44
+ Marcel::MimeType.extend "text/vcard", magic: [[0, "BEGIN:VCARD"]], extensions: %w( vcf ), parents: "text/plain"
@@ -0,0 +1,2515 @@
1
+ # -*- coding: binary -*-
2
+ # frozen_string_literal: true
3
+ module Marcel
4
+ # @private
5
+ # :nodoc:
6
+ EXTENSIONS = {
7
+ '123' => 'application/vnd.lotus-1-2-3',
8
+ '3dml' => 'text/vnd.in3d.3dml',
9
+ '3fr' => 'image/x-raw-hasselblad',
10
+ '3g2' => 'video/3gpp2',
11
+ '3gp' => 'video/3gpp',
12
+ '4th' => 'text/x-forth',
13
+ '7z' => 'application/x-7z-compressed',
14
+ 'a' => 'application/x-archive',
15
+ 'aab' => 'application/x-authorware-bin',
16
+ 'aac' => 'audio/x-aac',
17
+ 'aam' => 'application/x-authorware-map',
18
+ 'aart' => 'text/plain',
19
+ 'aas' => 'application/x-authorware-seg',
20
+ 'abw' => 'application/x-abiword',
21
+ 'ac' => 'text/plain',
22
+ 'ac3' => 'audio/ac3',
23
+ 'acc' => 'application/vnd.americandynamics.acc',
24
+ 'ace' => 'application/x-ace-compressed',
25
+ 'acfm' => 'application/x-font-adobe-metric',
26
+ 'acu' => 'application/vnd.acucobol',
27
+ 'acutc' => 'application/vnd.acucorp',
28
+ 'ad' => 'text/x-asciidoc',
29
+ 'ad.txt' => 'text/x-asciidoc',
30
+ 'ada' => 'text/x-ada',
31
+ 'adb' => 'text/x-ada',
32
+ 'adoc' => 'text/x-asciidoc',
33
+ 'adoc.txt' => 'text/x-asciidoc',
34
+ 'adp' => 'audio/adpcm',
35
+ 'ads' => 'text/x-ada',
36
+ 'aep' => 'application/vnd.adobe.aftereffects.project',
37
+ 'aet' => 'application/vnd.adobe.aftereffects.template',
38
+ 'afm' => 'application/x-font-adobe-metric',
39
+ 'afp' => 'application/vnd.ibm.modcap',
40
+ 'ai' => 'application/illustrator',
41
+ 'aif' => 'audio/x-aiff',
42
+ 'aifc' => 'audio/x-aiff',
43
+ 'aiff' => 'audio/x-aiff',
44
+ 'air' => 'application/vnd.adobe.air-application-installer-package+zip',
45
+ 'aj' => 'text/x-aspectj',
46
+ 'al' => 'text/x-perl',
47
+ 'am' => 'text/plain',
48
+ 'amfm' => 'application/x-font-adobe-metric',
49
+ 'ami' => 'application/vnd.amiga.ami',
50
+ 'amr' => 'audio/amr',
51
+ 'anpa' => 'text/vnd.iptc.anpa',
52
+ 'apk' => 'application/vnd.android.package-archive',
53
+ 'applescript' => 'text/x-applescript',
54
+ 'application' => 'application/x-ms-application',
55
+ 'apr' => 'application/vnd.lotus-approach',
56
+ 'apt' => 'text/plain',
57
+ 'ar' => 'application/x-archive',
58
+ 'arc' => 'application/x-internet-archive',
59
+ 'arj' => 'application/x-arj',
60
+ 'arw' => 'image/x-raw-sony',
61
+ 'as' => 'text/x-actionscript',
62
+ 'asc' => 'application/pgp-signature',
63
+ 'asciidoc' => 'text/x-asciidoc',
64
+ 'asf' => 'video/x-ms-asf',
65
+ 'asice' => 'application/vnd.etsi.asic-e+zip',
66
+ 'asics' => 'application/vnd.etsi.asic-s+zip',
67
+ 'asm' => 'text/x-assembly',
68
+ 'asnd' => 'audio/vnd.adobe.soundbooth',
69
+ 'aso' => 'application/vnd.accpac.simply.aso',
70
+ 'asp' => 'text/asp',
71
+ 'aspx' => 'text/aspdotnet',
72
+ 'asx' => 'application/x-ms-asx',
73
+ 'atc' => 'application/vnd.acucorp',
74
+ 'atom' => 'application/atom+xml',
75
+ 'atomcat' => 'application/atomcat+xml',
76
+ 'atomsvc' => 'application/atomsvc+xml',
77
+ 'atx' => 'application/vnd.antix.game-component',
78
+ 'au' => 'audio/basic',
79
+ 'avi' => 'video/x-msvideo',
80
+ 'avif' => 'image/avif',
81
+ 'aw' => 'application/applixware',
82
+ 'awk' => 'text/x-awk',
83
+ 'axx' => 'application/x-axcrypt',
84
+ 'azf' => 'application/vnd.airzip.filesecure.azf',
85
+ 'azs' => 'application/vnd.airzip.filesecure.azs',
86
+ 'azw' => 'application/vnd.amazon.ebook',
87
+ 'bas' => 'text/x-basic',
88
+ 'bash' => 'application/x-sh',
89
+ 'bat' => 'application/x-bat',
90
+ 'bau' => 'application/vnd.openofficeorg.autotext',
91
+ 'bay' => 'image/x-raw-casio',
92
+ 'bcpio' => 'application/x-bcpio',
93
+ 'bdf' => 'application/x-font-bdf',
94
+ 'bdm' => 'application/vnd.syncml.dm+wbxml',
95
+ 'bh2' => 'application/vnd.fujitsu.oasysprs',
96
+ 'bib' => 'application/x-bibtex-text-file',
97
+ 'bibtex' => 'application/x-bibtex-text-file',
98
+ 'bin' => 'application/octet-stream',
99
+ 'bmi' => 'application/vnd.bmi',
100
+ 'bmp' => 'image/bmp',
101
+ 'book' => 'application/vnd.framemaker',
102
+ 'box' => 'application/vnd.previewsystems.box',
103
+ 'boz' => 'application/x-bzip2',
104
+ 'bpg' => 'image/x-bpg',
105
+ 'bpk' => 'application/octet-stream',
106
+ 'bpm' => 'application/bizagi-modeler',
107
+ 'br' => 'application/x-brotli',
108
+ 'brotli' => 'application/x-brotli',
109
+ 'bsh' => 'text/plain',
110
+ 'btif' => 'image/prs.btif',
111
+ 'bz' => 'application/x-bzip',
112
+ 'bz2' => 'application/x-bzip2',
113
+ 'c' => 'text/x-c++src',
114
+ 'c++' => 'text/x-c++src',
115
+ 'c4d' => 'application/vnd.clonk.c4group',
116
+ 'c4f' => 'application/vnd.clonk.c4group',
117
+ 'c4g' => 'application/vnd.clonk.c4group',
118
+ 'c4p' => 'application/vnd.clonk.c4group',
119
+ 'c4u' => 'application/vnd.clonk.c4group',
120
+ 'cab' => 'application/vnd.ms-cab-compressed',
121
+ 'caf' => 'audio/x-caf',
122
+ 'cap' => 'application/vnd.tcpdump.pcap',
123
+ 'car' => 'application/vnd.curl.car',
124
+ 'cat' => 'application/vnd.ms-pki.seccat',
125
+ 'cbl' => 'text/x-cobol',
126
+ 'cbor' => 'application/cbor',
127
+ 'cc' => 'text/x-c++src',
128
+ 'cct' => 'application/x-director',
129
+ 'ccxml' => 'application/ccxml+xml',
130
+ 'cdbcmsg' => 'application/vnd.contact.cmsg',
131
+ 'cdf' => 'application/x-netcdf',
132
+ 'cdkey' => 'application/vnd.mediastation.cdkey',
133
+ 'cdr' => 'application/coreldraw',
134
+ 'cdx' => 'chemical/x-cdx',
135
+ 'cdxml' => 'application/vnd.chemdraw+xml',
136
+ 'cdy' => 'application/vnd.cinderella',
137
+ 'cer' => 'application/pkix-cert',
138
+ 'cfc' => 'text/x-coldfusion',
139
+ 'cfg' => 'text/x-config',
140
+ 'cfm' => 'text/x-coldfusion',
141
+ 'cfml' => 'text/x-coldfusion',
142
+ 'cgi' => 'text/x-cgi',
143
+ 'cgm' => 'image/cgm',
144
+ 'chat' => 'application/x-chat',
145
+ 'chm' => 'application/vnd.ms-htmlhelp',
146
+ 'chrt' => 'application/vnd.kde.kchart',
147
+ 'cif' => 'chemical/x-cif',
148
+ 'cii' => 'application/vnd.anser-web-certificate-issue-initiation',
149
+ 'cil' => 'application/vnd.ms-artgalry',
150
+ 'cl' => 'text/x-common-lisp',
151
+ 'cla' => 'application/vnd.claymore',
152
+ 'class' => 'application/java-vm',
153
+ 'classpath' => 'text/plain',
154
+ 'clj' => 'text/x-clojure',
155
+ 'clkk' => 'application/vnd.crick.clicker.keyboard',
156
+ 'clkp' => 'application/vnd.crick.clicker.palette',
157
+ 'clkt' => 'application/vnd.crick.clicker.template',
158
+ 'clkw' => 'application/vnd.crick.clicker.wordbank',
159
+ 'clkx' => 'application/vnd.crick.clicker',
160
+ 'clp' => 'application/x-msclip',
161
+ 'cls' => 'text/x-vbasic',
162
+ 'cmc' => 'application/vnd.cosmocaller',
163
+ 'cmd' => 'application/x-bat',
164
+ 'cmdf' => 'chemical/x-cmdf',
165
+ 'cml' => 'chemical/x-cml',
166
+ 'cmp' => 'application/vnd.yellowriver-custom-menu',
167
+ 'cmx' => 'image/x-cmx',
168
+ 'cnd' => 'text/plain',
169
+ 'cob' => 'text/x-cobol',
170
+ 'cod' => 'application/vnd.rim.cod',
171
+ 'coffee' => 'text/x-coffeescript',
172
+ 'com' => 'application/x-msdownload',
173
+ 'conf' => 'text/x-config',
174
+ 'config' => 'text/x-config',
175
+ 'cpio' => 'application/x-cpio',
176
+ 'cpp' => 'text/x-c++src',
177
+ 'cpt' => 'application/mac-compactpro',
178
+ 'cr2' => 'image/x-raw-canon',
179
+ 'crd' => 'application/x-mscardfile',
180
+ 'crl' => 'application/pkix-crl',
181
+ 'crt' => 'application/x-x509-cert',
182
+ 'crw' => 'image/x-raw-canon',
183
+ 'crx' => 'application/x-chrome-package',
184
+ 'cs' => 'text/x-csharp',
185
+ 'csh' => 'application/x-csh',
186
+ 'csml' => 'chemical/x-csml',
187
+ 'csp' => 'application/vnd.commonspace',
188
+ 'css' => 'text/css',
189
+ 'cst' => 'application/x-director',
190
+ 'csv' => 'text/csv',
191
+ 'cu' => 'application/cu-seeme',
192
+ 'curl' => 'text/vnd.curl',
193
+ 'cwiki' => 'text/plain',
194
+ 'cwk' => 'application/x-appleworks',
195
+ 'cww' => 'application/prs.cww',
196
+ 'cxt' => 'application/x-director',
197
+ 'cxx' => 'text/x-c++src',
198
+ 'd' => 'text/x-d',
199
+ 'daf' => 'application/vnd.mobius.daf',
200
+ 'data' => 'text/plain',
201
+ 'dataless' => 'application/vnd.fdsn.seed',
202
+ 'davmount' => 'application/davmount+xml',
203
+ 'dbase' => 'application/x-dbf',
204
+ 'dbase3' => 'application/x-dbf',
205
+ 'dbf' => 'application/x-dbf',
206
+ 'dcl' => 'text/plain',
207
+ 'dcr' => 'application/x-director',
208
+ 'dcs' => 'image/x-raw-kodak',
209
+ 'dcurl' => 'text/vnd.curl.dcurl',
210
+ 'dcx' => 'image/vnd.zbrush.dcx',
211
+ 'dd2' => 'application/vnd.oma.dd2+xml',
212
+ 'ddd' => 'application/vnd.fujixerox.ddd',
213
+ 'deb' => 'application/x-debian-package',
214
+ 'def' => 'text/plain',
215
+ 'deploy' => 'application/octet-stream',
216
+ 'der' => 'application/x-x509-cert;format=der',
217
+ 'dex' => 'application/x-dex',
218
+ 'dfac' => 'application/vnd.dreamfactory',
219
+ 'dib' => 'image/bmp',
220
+ 'dif' => 'application/dif+xml',
221
+ 'diff' => 'text/x-diff',
222
+ 'dir' => 'application/x-director',
223
+ 'dis' => 'application/vnd.mobius.dis',
224
+ 'dist' => 'application/octet-stream',
225
+ 'distz' => 'application/octet-stream',
226
+ 'dita' => 'application/dita+xml;format=topic',
227
+ 'ditamap' => 'application/dita+xml;format=map',
228
+ 'ditaval' => 'application/dita+xml;format=val',
229
+ 'djv' => 'image/vnd.djvu',
230
+ 'djvu' => 'image/vnd.djvu',
231
+ 'dll' => 'application/x-msdownload',
232
+ 'dmg' => 'application/x-apple-diskimage',
233
+ 'dmp' => 'application/vnd.tcpdump.pcap',
234
+ 'dms' => 'application/octet-stream',
235
+ 'dna' => 'application/vnd.dna',
236
+ 'dng' => 'image/x-raw-adobe',
237
+ 'do' => 'application/x-stata-do',
238
+ 'doc' => 'application/msword',
239
+ 'docm' => 'application/vnd.ms-word.document.macroenabled.12',
240
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
241
+ 'dot' => 'application/msword',
242
+ 'dotm' => 'application/vnd.ms-word.template.macroenabled.12',
243
+ 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
244
+ 'dp' => 'application/vnd.osgi.dp',
245
+ 'dpg' => 'application/vnd.dpgraph',
246
+ 'dpr' => 'text/x-pascal',
247
+ 'dpx' => 'image/x-dpx',
248
+ 'drc' => 'video/x-dirac',
249
+ 'drf' => 'image/x-raw-kodak',
250
+ 'dsc' => 'text/prs.lines.tag',
251
+ 'dsp' => 'text/plain',
252
+ 'dsw' => 'text/plain',
253
+ 'dta' => 'application/x-stata-dta',
254
+ 'dtb' => 'application/x-dtbook+xml',
255
+ 'dtd' => 'application/xml-dtd',
256
+ 'dts' => 'audio/vnd.dts',
257
+ 'dtshd' => 'audio/vnd.dts.hd',
258
+ 'dump' => 'application/octet-stream',
259
+ 'dvi' => 'application/x-dvi',
260
+ 'dwf' => 'model/vnd.dwf',
261
+ 'dwfx' => 'model/vnd.dwfx+xps',
262
+ 'dwg' => 'image/vnd.dwg',
263
+ 'dxb' => 'image/vnd.dxb',
264
+ 'dxf' => 'image/vnd.dxf',
265
+ 'dxp' => 'application/vnd.spotfire.dxp',
266
+ 'dxr' => 'application/x-director',
267
+ 'e' => 'text/x-eiffel',
268
+ 'ear' => 'application/x-tika-java-enterprise-archive',
269
+ 'ecelp4800' => 'audio/vnd.nuera.ecelp4800',
270
+ 'ecelp7470' => 'audio/vnd.nuera.ecelp7470',
271
+ 'ecelp9600' => 'audio/vnd.nuera.ecelp9600',
272
+ 'ecma' => 'application/ecmascript',
273
+ 'edm' => 'application/vnd.novadigm.edm',
274
+ 'edx' => 'application/vnd.novadigm.edx',
275
+ 'efif' => 'application/vnd.picsel',
276
+ 'egrm' => 'text/plain',
277
+ 'ei6' => 'application/vnd.pg.osasli',
278
+ 'el' => 'text/x-emacs-lisp',
279
+ 'elc' => 'application/octet-stream',
280
+ 'emf' => 'image/emf',
281
+ 'eml' => 'message/rfc822',
282
+ 'emlx' => 'message/x-emlx',
283
+ 'emma' => 'application/emma+xml',
284
+ 'emz' => 'image/x-emf-compressed',
285
+ 'enr' => 'application/x-endnote-refer',
286
+ 'ent' => 'text/plain',
287
+ 'enw' => 'application/x-endnote-refer',
288
+ 'eol' => 'audio/vnd.digital-winds',
289
+ 'eot' => 'application/vnd.ms-fontobject',
290
+ 'eps' => 'application/postscript',
291
+ 'epsf' => 'application/postscript',
292
+ 'epsi' => 'application/postscript',
293
+ 'epub' => 'application/epub+zip',
294
+ 'erf' => 'image/x-raw-epson',
295
+ 'erl' => 'text/x-erlang',
296
+ 'es3' => 'application/vnd.eszigno3+xml',
297
+ 'esf' => 'application/vnd.epson.esf',
298
+ 'et3' => 'application/vnd.eszigno3+xml',
299
+ 'etx' => 'text/x-setext',
300
+ 'exe' => 'application/x-dosexec',
301
+ 'exp' => 'text/x-expect',
302
+ 'exr' => 'image/aces',
303
+ 'ext' => 'application/vnd.novadigm.ext',
304
+ 'ez' => 'application/andrew-inset',
305
+ 'ez2' => 'application/vnd.ezpix-album',
306
+ 'ez3' => 'application/vnd.ezpix-package',
307
+ 'f' => 'text/x-fortran',
308
+ 'f4v' => 'video/x-f4v',
309
+ 'f77' => 'text/x-fortran',
310
+ 'f90' => 'text/x-fortran',
311
+ 'fb2' => 'application/x-fictionbook+xml',
312
+ 'fbs' => 'image/vnd.fastbidsheet',
313
+ 'fdf' => 'application/vnd.fdf',
314
+ 'fe_launch' => 'application/vnd.denovo.fcselayout-link',
315
+ 'fff' => 'image/x-raw-imacon',
316
+ 'fg5' => 'application/vnd.fujitsu.oasysgp',
317
+ 'fgd' => 'application/x-director',
318
+ 'fh' => 'image/x-freehand',
319
+ 'fh10' => 'image/x-freehand',
320
+ 'fh11' => 'image/x-freehand',
321
+ 'fh12' => 'image/x-freehand',
322
+ 'fh4' => 'image/x-freehand',
323
+ 'fh40' => 'image/x-freehand',
324
+ 'fh5' => 'image/x-freehand',
325
+ 'fh50' => 'image/x-freehand',
326
+ 'fh7' => 'image/x-freehand',
327
+ 'fh8' => 'image/x-freehand',
328
+ 'fh9' => 'image/x-freehand',
329
+ 'fhc' => 'image/x-freehand',
330
+ 'fig' => 'application/x-xfig',
331
+ 'fit' => 'application/fits',
332
+ 'fits' => 'application/fits',
333
+ 'flac' => 'audio/x-flac',
334
+ 'flc' => 'video/x-flc',
335
+ 'fli' => 'video/x-fli',
336
+ 'flo' => 'application/vnd.micrografx.flo',
337
+ 'flv' => 'video/x-flv',
338
+ 'flw' => 'application/vnd.kde.kivio',
339
+ 'flx' => 'text/vnd.fmi.flexstor',
340
+ 'fly' => 'text/vnd.fly',
341
+ 'fm' => 'application/vnd.framemaker',
342
+ 'fn' => 'text/plain',
343
+ 'fnc' => 'application/vnd.frogans.fnc',
344
+ 'fo' => 'application/xslfo+xml',
345
+ 'fodp' => 'application/vnd.oasis.opendocument.flat.presentation',
346
+ 'fods' => 'application/vnd.oasis.opendocument.flat.spreadsheet',
347
+ 'fodt' => 'application/vnd.oasis.opendocument.flat.text',
348
+ 'for' => 'text/x-fortran',
349
+ 'fp7' => 'application/x-filemaker',
350
+ 'fpx' => 'image/vnd.fpx',
351
+ 'frame' => 'application/vnd.framemaker',
352
+ 'frm' => 'text/x-vbasic',
353
+ 'fsc' => 'application/vnd.fsc.weblaunch',
354
+ 'fst' => 'image/vnd.fst',
355
+ 'ft' => 'text/plain',
356
+ 'ft10' => 'image/x-freehand',
357
+ 'ft11' => 'image/x-freehand',
358
+ 'ft12' => 'image/x-freehand',
359
+ 'ft7' => 'image/x-freehand',
360
+ 'ft8' => 'image/x-freehand',
361
+ 'ft9' => 'image/x-freehand',
362
+ 'ftc' => 'application/vnd.fluxtime.clip',
363
+ 'fti' => 'application/vnd.anser-web-funds-transfer-initiation',
364
+ 'fts' => 'application/fits',
365
+ 'fv' => 'text/plain',
366
+ 'fvt' => 'video/vnd.fvt',
367
+ 'fzs' => 'application/vnd.fuzzysheet',
368
+ 'g' => 'text/plain',
369
+ 'g3' => 'image/g3fax',
370
+ 'gac' => 'application/vnd.groove-account',
371
+ 'gdl' => 'model/vnd.gdl',
372
+ 'geo' => 'application/vnd.dynageo',
373
+ 'gex' => 'application/vnd.geometry-explorer',
374
+ 'ggb' => 'application/vnd.geogebra.file',
375
+ 'ggt' => 'application/vnd.geogebra.tool',
376
+ 'ghf' => 'application/vnd.groove-help',
377
+ 'gif' => 'image/gif',
378
+ 'gim' => 'application/vnd.groove-identity-message',
379
+ 'gmx' => 'application/vnd.gmx',
380
+ 'gnucash' => 'application/x-gnucash',
381
+ 'gnumeric' => 'application/x-gnumeric',
382
+ 'go' => 'text/x-go',
383
+ 'gph' => 'application/vnd.flographit',
384
+ 'gqf' => 'application/vnd.grafeq',
385
+ 'gqs' => 'application/vnd.grafeq',
386
+ 'gram' => 'application/srgs',
387
+ 'grb' => 'application/x-grib',
388
+ 'grb1' => 'application/x-grib',
389
+ 'grb2' => 'application/x-grib',
390
+ 'gre' => 'application/vnd.geometry-explorer',
391
+ 'grm' => 'text/plain',
392
+ 'groovy' => 'text/x-groovy',
393
+ 'grv' => 'application/vnd.groove-injector',
394
+ 'grxml' => 'application/srgs+xml',
395
+ 'gsf' => 'application/x-font-ghostscript',
396
+ 'gtar' => 'application/x-gtar',
397
+ 'gtm' => 'application/vnd.groove-tool-message',
398
+ 'gtw' => 'model/vnd.gtw',
399
+ 'gv' => 'text/vnd.graphviz',
400
+ 'gz' => 'application/gzip',
401
+ 'h' => 'text/x-c++hdr',
402
+ 'h++' => 'text/x-c++hdr',
403
+ 'h261' => 'video/h261',
404
+ 'h263' => 'video/h263',
405
+ 'h264' => 'video/h264',
406
+ 'h5' => 'application/x-hdf',
407
+ 'haml' => 'text/x-haml',
408
+ 'handlers' => 'text/plain',
409
+ 'hbci' => 'application/vnd.hbci',
410
+ 'hdf' => 'application/x-hdf',
411
+ 'hdr' => 'application/envi.hdr',
412
+ 'he5' => 'application/x-hdf',
413
+ 'heic' => 'image/heic',
414
+ 'heif' => 'image/heif',
415
+ 'hfa' => 'application/x-erdas-hfa',
416
+ 'hh' => 'text/x-c++hdr',
417
+ 'hlp' => 'application/winhlp',
418
+ 'hp' => 'text/x-c++hdr',
419
+ 'hpgl' => 'application/vnd.hp-hpgl',
420
+ 'hpid' => 'application/vnd.hp-hpid',
421
+ 'hpp' => 'text/x-c++hdr',
422
+ 'hprof' => 'application/vnd.java.hprof ',
423
+ 'hprof.txt' => 'application/vnd.java.hprof.text',
424
+ 'hps' => 'application/vnd.hp-hps',
425
+ 'hqx' => 'application/mac-binhex40',
426
+ 'hs' => 'text/x-haskell',
427
+ 'htc' => 'text/plain',
428
+ 'htke' => 'application/vnd.kenameaapp',
429
+ 'htm' => 'text/html',
430
+ 'html' => 'text/html',
431
+ 'hvd' => 'application/vnd.yamaha.hv-dic',
432
+ 'hvp' => 'application/vnd.yamaha.hv-voice',
433
+ 'hvs' => 'application/vnd.yamaha.hv-script',
434
+ 'hx' => 'text/x-haxe',
435
+ 'hxx' => 'text/x-c++hdr',
436
+ 'i3' => 'text/x-modula',
437
+ 'ibooks' => 'application/x-ibooks+zip',
438
+ 'icb' => 'image/x-tga',
439
+ 'icc' => 'application/vnd.iccprofile',
440
+ 'ice' => 'x-conference/x-cooltalk',
441
+ 'icm' => 'application/vnd.iccprofile',
442
+ 'icns' => 'image/icns',
443
+ 'ico' => 'image/vnd.microsoft.icon',
444
+ 'ics' => 'text/calendar',
445
+ 'idl' => 'text/x-idl',
446
+ 'ief' => 'image/ief',
447
+ 'ifb' => 'text/calendar',
448
+ 'ifm' => 'application/vnd.shana.informed.formdata',
449
+ 'ig' => 'text/x-modula',
450
+ 'iges' => 'model/iges',
451
+ 'igl' => 'application/vnd.igloader',
452
+ 'igs' => 'model/iges',
453
+ 'igx' => 'application/vnd.micrografx.igx',
454
+ 'ihtml' => 'text/plain',
455
+ 'iif' => 'application/vnd.shana.informed.interchange',
456
+ 'iiq' => 'image/x-raw-phaseone',
457
+ 'imp' => 'application/vnd.accpac.simply.imp',
458
+ 'ims' => 'application/vnd.ms-ims',
459
+ 'in' => 'text/plain',
460
+ 'indd' => 'application/x-adobe-indesign',
461
+ 'ini' => 'text/x-ini',
462
+ 'inx' => 'application/x-adobe-indesign-interchange',
463
+ 'ipa' => 'application/x-itunes-ipa',
464
+ 'ipk' => 'application/vnd.shana.informed.package',
465
+ 'irm' => 'application/vnd.ibm.rights-management',
466
+ 'irp' => 'application/vnd.irepository.package+xml',
467
+ 'iso' => 'application/x-iso9660-image',
468
+ 'iso19139' => 'text/iso19139+xml',
469
+ 'itk' => 'text/x-tcl',
470
+ 'itp' => 'application/vnd.shana.informed.formtemplate',
471
+ 'ivp' => 'application/vnd.immervision-ivp',
472
+ 'ivu' => 'application/vnd.immervision-ivu',
473
+ 'j2c' => 'image/x-jp2-codestream',
474
+ 'jad' => 'text/vnd.sun.j2me.app-descriptor',
475
+ 'jam' => 'application/vnd.jam',
476
+ 'jar' => 'application/java-archive',
477
+ 'java' => 'text/x-java-source',
478
+ 'jb2' => 'image/x-jbig2',
479
+ 'jbig2' => 'image/x-jbig2',
480
+ 'jfi' => 'image/jpeg',
481
+ 'jfif' => 'image/jpeg',
482
+ 'jif' => 'image/jpeg',
483
+ 'jisp' => 'application/vnd.jisp',
484
+ 'jl' => 'text/x-common-lisp',
485
+ 'jlt' => 'application/vnd.hp-jlyt',
486
+ 'jmx' => 'text/plain',
487
+ 'jng' => 'video/x-jng',
488
+ 'jnilib' => 'application/x-java-jnilib',
489
+ 'jnlp' => 'application/x-java-jnlp-file',
490
+ 'joda' => 'application/vnd.joost.joda-archive',
491
+ 'jp2' => 'image/jp2',
492
+ 'jpe' => 'image/jpeg',
493
+ 'jpeg' => 'image/jpeg',
494
+ 'jpf' => 'image/jpx',
495
+ 'jpg' => 'image/jpeg',
496
+ 'jpgm' => 'image/jpm',
497
+ 'jpgv' => 'video/jpeg',
498
+ 'jpm' => 'image/jpm',
499
+ 'js' => 'application/javascript',
500
+ 'json' => 'application/json',
501
+ 'jsp' => 'text/x-jsp',
502
+ 'junit' => 'text/plain',
503
+ 'jx' => 'text/plain',
504
+ 'k25' => 'image/x-raw-kodak',
505
+ 'kar' => 'audio/midi',
506
+ 'karbon' => 'application/vnd.kde.karbon',
507
+ 'kdc' => 'image/x-raw-kodak',
508
+ 'key' => 'application/vnd.apple.keynote',
509
+ 'kfo' => 'application/vnd.kde.kformula',
510
+ 'kia' => 'application/vnd.kidspiration',
511
+ 'kil' => 'application/x-killustrator',
512
+ 'kml' => 'application/vnd.google-earth.kml+xml',
513
+ 'kmz' => 'application/vnd.google-earth.kmz',
514
+ 'kne' => 'application/vnd.kinar',
515
+ 'knp' => 'application/vnd.kinar',
516
+ 'kon' => 'application/vnd.kde.kontour',
517
+ 'kpr' => 'application/vnd.kde.kpresenter',
518
+ 'kpt' => 'application/vnd.kde.kpresenter',
519
+ 'ksp' => 'application/vnd.kde.kspread',
520
+ 'ktr' => 'application/vnd.kahootz',
521
+ 'ktz' => 'application/vnd.kahootz',
522
+ 'kwd' => 'application/vnd.kde.kword',
523
+ 'kwt' => 'application/vnd.kde.kword',
524
+ 'l' => 'text/x-lex',
525
+ 'latex' => 'application/x-latex',
526
+ 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop',
527
+ 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml',
528
+ 'les' => 'application/vnd.hhe.lesson-player',
529
+ 'less' => 'text/x-less',
530
+ 'lha' => 'application/octet-stream',
531
+ 'lhs' => 'text/x-haskell',
532
+ 'link66' => 'application/vnd.route66.link66+xml',
533
+ 'lisp' => 'text/x-common-lisp',
534
+ 'list' => 'text/plain',
535
+ 'list3820' => 'application/vnd.ibm.modcap',
536
+ 'listafp' => 'application/vnd.ibm.modcap',
537
+ 'log' => 'text/x-log',
538
+ 'lostxml' => 'application/lost+xml',
539
+ 'lrf' => 'application/octet-stream',
540
+ 'lrm' => 'application/vnd.ms-lrm',
541
+ 'lsp' => 'text/x-common-lisp',
542
+ 'ltf' => 'application/vnd.frogans.ltf',
543
+ 'lua' => 'text/x-lua',
544
+ 'lvp' => 'audio/vnd.lucent.voice',
545
+ 'lwp' => 'application/vnd.lotus-wordpro',
546
+ 'lz' => 'application/x-lzip',
547
+ 'lz4' => 'application/x-lz4',
548
+ 'lzh' => 'application/octet-stream',
549
+ 'lzma' => 'application/x-lzma',
550
+ 'm' => 'text/x-objcsrc',
551
+ 'm13' => 'application/x-msmediaview',
552
+ 'm14' => 'application/x-msmediaview',
553
+ 'm1v' => 'video/mpeg',
554
+ 'm2a' => 'audio/mpeg',
555
+ 'm2v' => 'video/mpeg',
556
+ 'm3' => 'text/x-modula',
557
+ 'm3a' => 'audio/mpeg',
558
+ 'm3u' => 'audio/x-mpegurl',
559
+ 'm3u8' => 'application/vnd.apple.mpegurl',
560
+ 'm4' => 'text/plain',
561
+ 'm4a' => 'audio/mp4',
562
+ 'm4b' => 'audio/mp4',
563
+ 'm4s' => 'video/iso.segment',
564
+ 'm4u' => 'video/vnd.mpegurl',
565
+ 'm4v' => 'video/x-m4v',
566
+ 'ma' => 'application/mathematica',
567
+ 'mag' => 'application/vnd.ecowin.chart',
568
+ 'maker' => 'application/vnd.framemaker',
569
+ 'man' => 'text/troff',
570
+ 'manifest' => 'text/plain',
571
+ 'markdown' => 'text/x-web-markdown',
572
+ 'mat' => 'application/x-matlab-data',
573
+ 'mathml' => 'application/mathml+xml',
574
+ 'mb' => 'application/mathematica',
575
+ 'mbk' => 'application/vnd.mobius.mbk',
576
+ 'mbox' => 'application/mbox',
577
+ 'mc1' => 'application/vnd.medcalcdata',
578
+ 'mcd' => 'application/vnd.mcd',
579
+ 'mcurl' => 'text/vnd.curl.mcurl',
580
+ 'md' => 'text/x-web-markdown',
581
+ 'mdb' => 'application/x-msaccess',
582
+ 'mdi' => 'image/vnd.ms-modi',
583
+ 'mdo' => 'text/plain',
584
+ 'mdtext' => 'text/x-web-markdown',
585
+ 'me' => 'text/troff',
586
+ 'mef' => 'image/x-raw-mamiya',
587
+ 'memgraph' => 'application/x-memgraph',
588
+ 'mesh' => 'model/mesh',
589
+ 'meta' => 'text/plain',
590
+ 'mf' => 'text/plain',
591
+ 'mfm' => 'application/vnd.mfmp',
592
+ 'mg' => 'text/x-modula',
593
+ 'mgz' => 'application/vnd.proteus.magazine',
594
+ 'mht' => 'multipart/related',
595
+ 'mhtml' => 'multipart/related',
596
+ 'mid' => 'audio/midi',
597
+ 'midi' => 'audio/midi',
598
+ 'mif' => 'application/vnd.mif',
599
+ 'mime' => 'message/rfc822',
600
+ 'mj2' => 'video/mj2',
601
+ 'mjp2' => 'video/mj2',
602
+ 'mka' => 'audio/x-matroska',
603
+ 'mkd' => 'text/x-web-markdown',
604
+ 'mkv' => 'video/x-matroska',
605
+ 'ml' => 'text/x-ml',
606
+ 'mli' => 'text/x-ocaml',
607
+ 'mlp' => 'application/vnd.dolby.mlp',
608
+ 'mmap' => 'application/vnd.mindjet.mindmanager',
609
+ 'mmas' => 'application/vnd.mindjet.mindmanager',
610
+ 'mmat' => 'application/vnd.mindjet.mindmanager',
611
+ 'mmd' => 'application/vnd.chipnuts.karaoke-mmd',
612
+ 'mmf' => 'application/vnd.smaf',
613
+ 'mmmp' => 'application/vnd.mindjet.mindmanager',
614
+ 'mmp' => 'application/vnd.mindjet.mindmanager',
615
+ 'mmpt' => 'application/vnd.mindjet.mindmanager',
616
+ 'mmr' => 'image/vnd.fujixerox.edmics-mmr',
617
+ 'mng' => 'video/x-mng',
618
+ 'mny' => 'application/x-msmoney',
619
+ 'mobi' => 'application/x-mobipocket-ebook',
620
+ 'mod' => 'audio/x-mod',
621
+ 'mos' => 'image/x-raw-leaf',
622
+ 'mov' => 'video/quicktime',
623
+ 'movie' => 'video/x-sgi-movie',
624
+ 'mp2' => 'audio/mpeg',
625
+ 'mp2a' => 'audio/mpeg',
626
+ 'mp3' => 'audio/mpeg',
627
+ 'mp4' => 'video/mp4',
628
+ 'mp4a' => 'audio/mp4',
629
+ 'mp4s' => 'application/mp4',
630
+ 'mp4v' => 'video/mp4',
631
+ 'mpc' => 'application/vnd.mophun.certificate',
632
+ 'mpd' => 'application/dash+xml',
633
+ 'mpe' => 'video/mpeg',
634
+ 'mpeg' => 'video/mpeg',
635
+ 'mpg' => 'video/mpeg',
636
+ 'mpg4' => 'video/mp4',
637
+ 'mpga' => 'audio/mpeg',
638
+ 'mpkg' => 'application/vnd.apple.installer+xml',
639
+ 'mpm' => 'application/vnd.blueice.multipass',
640
+ 'mpn' => 'application/vnd.mophun.application',
641
+ 'mpp' => 'application/vnd.ms-project',
642
+ 'mpt' => 'application/vnd.ms-project',
643
+ 'mpx' => 'application/x-project',
644
+ 'mpy' => 'application/vnd.ibm.minipay',
645
+ 'mqy' => 'application/vnd.mobius.mqy',
646
+ 'mrc' => 'application/marc',
647
+ 'mrw' => 'image/x-raw-minolta',
648
+ 'ms' => 'text/troff',
649
+ 'mscml' => 'application/mediaservercontrol+xml',
650
+ 'mseed' => 'application/vnd.fdsn.mseed',
651
+ 'mseq' => 'application/vnd.mseq',
652
+ 'msf' => 'application/vnd.epson.msf',
653
+ 'msg' => 'application/vnd.ms-outlook',
654
+ 'msh' => 'model/mesh',
655
+ 'msi' => 'application/x-ms-installer',
656
+ 'msl' => 'application/vnd.mobius.msl',
657
+ 'msp' => 'application/x-ms-installer',
658
+ 'mst' => 'application/x-ms-installer',
659
+ 'msty' => 'application/vnd.muvee.style',
660
+ 'mts' => 'model/vnd.mts',
661
+ 'mus' => 'application/vnd.musician',
662
+ 'musicxml' => 'application/vnd.recordare.musicxml+xml',
663
+ 'mvb' => 'application/x-msmediaview',
664
+ 'mwf' => 'application/vnd.mfer',
665
+ 'mxf' => 'application/mxf',
666
+ 'mxl' => 'application/vnd.recordare.musicxml',
667
+ 'mxml' => 'application/xv+xml',
668
+ 'mxs' => 'application/vnd.triscape.mxs',
669
+ 'mxu' => 'video/vnd.mpegurl',
670
+ 'myd' => 'application/x-mysql-misam-data',
671
+ 'myi' => 'application/x-mysql-misam-compressed-index',
672
+ 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install',
673
+ 'n3' => 'text/plain',
674
+ 'nar' => 'application/vnd.iptc.g2.newsmessage+xml',
675
+ 'nb' => 'application/mathematica',
676
+ 'nc' => 'application/x-netcdf',
677
+ 'ncx' => 'application/x-dtbncx+xml',
678
+ 'nef' => 'image/x-raw-nikon',
679
+ 'ngdat' => 'application/vnd.nokia.n-gage.data',
680
+ 'nitf' => 'image/nitf',
681
+ 'nlu' => 'application/vnd.neurolanguage.nlu',
682
+ 'nml' => 'application/vnd.enliven',
683
+ 'nnd' => 'application/vnd.noblenet-directory',
684
+ 'nns' => 'application/vnd.noblenet-sealer',
685
+ 'nnw' => 'application/vnd.noblenet-web',
686
+ 'npx' => 'image/vnd.net-fpx',
687
+ 'nroff' => 'text/troff',
688
+ 'nrw' => 'image/x-raw-nikon',
689
+ 'nsf' => 'application/vnd.lotus-notes',
690
+ 'ntf' => 'image/nitf',
691
+ 'numbers' => 'application/vnd.apple.numbers',
692
+ 'oa2' => 'application/vnd.fujitsu.oasys2',
693
+ 'oa3' => 'application/vnd.fujitsu.oasys3',
694
+ 'oas' => 'application/vnd.fujitsu.oasys',
695
+ 'obd' => 'application/x-msbinder',
696
+ 'ocaml' => 'text/x-ocaml',
697
+ 'oda' => 'application/oda',
698
+ 'odb' => 'application/vnd.oasis.opendocument.base',
699
+ 'odc' => 'application/vnd.oasis.opendocument.chart',
700
+ 'odf' => 'application/vnd.oasis.opendocument.formula',
701
+ 'odft' => 'application/vnd.oasis.opendocument.formula-template',
702
+ 'odg' => 'application/vnd.oasis.opendocument.graphics',
703
+ 'odi' => 'application/vnd.oasis.opendocument.image',
704
+ 'odp' => 'application/vnd.oasis.opendocument.presentation',
705
+ 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
706
+ 'odt' => 'application/vnd.oasis.opendocument.text',
707
+ 'oga' => 'audio/ogg',
708
+ 'ogg' => 'audio/vorbis',
709
+ 'ogm' => 'video/x-ogm',
710
+ 'ogv' => 'video/ogg',
711
+ 'ogx' => 'application/ogg',
712
+ 'one' => 'application/onenote;format=one',
713
+ 'onepkg' => 'application/onenote; format=package',
714
+ 'onetmp' => 'application/onenote',
715
+ 'onetoc' => 'application/onenote;format=onetoc2',
716
+ 'onetoc2' => 'application/onenote;format=onetoc2',
717
+ 'opf' => 'application/oebps-package+xml',
718
+ 'oprc' => 'application/vnd.palm',
719
+ 'opus' => 'audio/opus',
720
+ 'orf' => 'image/x-raw-olympus',
721
+ 'org' => 'application/vnd.lotus-organizer',
722
+ 'osf' => 'application/vnd.yamaha.openscoreformat',
723
+ 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
724
+ 'ost' => 'application/vnd.ms-outlook-pst',
725
+ 'otc' => 'application/vnd.oasis.opendocument.chart-template',
726
+ 'otf' => 'application/x-font-otf',
727
+ 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
728
+ 'oth' => 'application/vnd.oasis.opendocument.text-web',
729
+ 'oti' => 'application/vnd.oasis.opendocument.image-template',
730
+ 'otm' => 'application/vnd.oasis.opendocument.text-master',
731
+ 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
732
+ 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
733
+ 'ott' => 'application/vnd.oasis.opendocument.text-template',
734
+ 'owl' => 'application/rdf+xml',
735
+ 'oxps' => 'application/vnd.ms-xpsdocument',
736
+ 'oxt' => 'application/vnd.openofficeorg.extension',
737
+ 'p' => 'text/x-pascal',
738
+ 'p10' => 'application/pkcs10',
739
+ 'p12' => 'application/x-pkcs12',
740
+ 'p7b' => 'application/x-pkcs7-certificates',
741
+ 'p7c' => 'application/pkcs7-mime',
742
+ 'p7m' => 'application/pkcs7-mime',
743
+ 'p7r' => 'application/x-pkcs7-certreqresp',
744
+ 'p7s' => 'application/pkcs7-signature',
745
+ 'pack' => 'application/x-java-pack200',
746
+ 'pages' => 'application/vnd.apple.pages',
747
+ 'parquet' => 'application/x-parquet',
748
+ 'pas' => 'text/x-pascal',
749
+ 'patch' => 'text/x-diff',
750
+ 'pbd' => 'application/vnd.powerbuilder6',
751
+ 'pbm' => 'image/x-portable-bitmap',
752
+ 'pcap' => 'application/vnd.tcpdump.pcap',
753
+ 'pcf' => 'application/x-font-pcf',
754
+ 'pcl' => 'application/vnd.hp-pcl',
755
+ 'pclxl' => 'application/vnd.hp-pclxl',
756
+ 'pct' => 'image/x-pict',
757
+ 'pcurl' => 'application/vnd.curl.pcurl',
758
+ 'pcx' => 'image/vnd.zbrush.pcx',
759
+ 'pdb' => 'chemical/x-pdb',
760
+ 'pdf' => 'application/pdf',
761
+ 'pef' => 'image/x-raw-pentax',
762
+ 'pem' => 'application/x-x509-cert;format=pem',
763
+ 'pen' => 'text/plain',
764
+ 'perl' => 'text/x-perl',
765
+ 'pfa' => 'application/x-font-type1',
766
+ 'pfb' => 'application/x-font-type1',
767
+ 'pfm' => 'application/x-font-printer-metric',
768
+ 'pfr' => 'application/font-tdpfr',
769
+ 'pfx' => 'application/x-pkcs12',
770
+ 'pgm' => 'image/x-portable-graymap',
771
+ 'pgn' => 'application/x-chess-pgn',
772
+ 'pgp' => 'application/pgp-encrypted',
773
+ 'php' => 'text/x-php',
774
+ 'php3' => 'text/x-php',
775
+ 'php4' => 'text/x-php',
776
+ 'pic' => 'image/x-pict',
777
+ 'pict' => 'image/x-pict',
778
+ 'pkg' => 'application/octet-stream',
779
+ 'pki' => 'application/pkixcmp',
780
+ 'pkipath' => 'application/pkix-pkipath',
781
+ 'pl' => 'text/x-perl',
782
+ 'plb' => 'application/vnd.3gpp.pic-bw-large',
783
+ 'plc' => 'application/vnd.mobius.plc',
784
+ 'plf' => 'application/vnd.pocketlearn',
785
+ 'pls' => 'application/pls+xml',
786
+ 'pm' => 'text/x-perl',
787
+ 'pml' => 'application/vnd.ctc-posml',
788
+ 'png' => 'image/png',
789
+ 'pnm' => 'image/x-portable-anymap',
790
+ 'pod' => 'text/plain',
791
+ 'pom' => 'text/plain',
792
+ 'portpkg' => 'application/vnd.macports.portpkg',
793
+ 'pot' => 'application/vnd.ms-powerpoint',
794
+ 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12',
795
+ 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
796
+ 'pp' => 'text/x-pascal',
797
+ 'ppa' => 'application/vnd.ms-powerpoint',
798
+ 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12',
799
+ 'ppd' => 'application/vnd.cups-ppd',
800
+ 'ppj' => 'image/vnd.adobe.premiere',
801
+ 'ppm' => 'image/x-portable-pixmap',
802
+ 'pps' => 'application/vnd.ms-powerpoint',
803
+ 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
804
+ 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
805
+ 'ppt' => 'application/vnd.ms-powerpoint',
806
+ 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
807
+ 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
808
+ 'ppz' => 'application/vnd.ms-powerpoint',
809
+ 'pqa' => 'application/vnd.palm',
810
+ 'prc' => 'application/x-mobipocket-ebook',
811
+ 'pre' => 'application/vnd.lotus-freelance',
812
+ 'prf' => 'application/pics-rules',
813
+ 'pro' => 'text/x-prolog',
814
+ 'project' => 'text/plain',
815
+ 'properties' => 'text/x-java-properties',
816
+ 'prt' => 'application/x-prt',
817
+ 'ps' => 'application/postscript',
818
+ 'psb' => 'application/vnd.3gpp.pic-bw-small',
819
+ 'psd' => 'image/vnd.adobe.photoshop',
820
+ 'psf' => 'application/x-font-linux-psf',
821
+ 'pst' => 'application/vnd.ms-outlook-pst',
822
+ 'ptid' => 'application/vnd.pvi.ptid1',
823
+ 'ptx' => 'image/x-raw-pentax',
824
+ 'pub' => 'application/x-mspublisher',
825
+ 'pvb' => 'application/vnd.3gpp.pic-bw-var',
826
+ 'pwn' => 'application/vnd.3m.post-it-notes',
827
+ 'pxn' => 'image/x-raw-logitech',
828
+ 'py' => 'text/x-python',
829
+ 'pya' => 'audio/vnd.ms-playready.media.pya',
830
+ 'pyv' => 'video/vnd.ms-playready.media.pyv',
831
+ 'qam' => 'application/vnd.epson.quickanime',
832
+ 'qbo' => 'application/vnd.intu.qbo',
833
+ 'qfx' => 'application/vnd.intu.qfx',
834
+ 'qps' => 'application/vnd.publishare-delta-tree',
835
+ 'qpw' => 'application/x-quattro-pro',
836
+ 'qt' => 'video/quicktime',
837
+ 'qwd' => 'application/vnd.quark.quarkxpress',
838
+ 'qwt' => 'application/vnd.quark.quarkxpress',
839
+ 'qxb' => 'application/vnd.quark.quarkxpress',
840
+ 'qxd' => 'application/vnd.quark.quarkxpress',
841
+ 'qxl' => 'application/vnd.quark.quarkxpress',
842
+ 'qxt' => 'application/vnd.quark.quarkxpress',
843
+ 'r' => 'text/x-rsrc',
844
+ 'r3d' => 'image/x-raw-red',
845
+ 'ra' => 'audio/x-pn-realaudio',
846
+ 'raf' => 'image/x-raw-fuji',
847
+ 'ram' => 'audio/x-pn-realaudio',
848
+ 'rar' => 'application/x-rar-compressed',
849
+ 'ras' => 'image/x-cmu-raster',
850
+ 'raw' => 'image/x-raw-panasonic',
851
+ 'rb' => 'text/x-ruby',
852
+ 'rcprofile' => 'application/vnd.ipunplugged.rcprofile',
853
+ 'rdf' => 'application/rdf+xml',
854
+ 'rdz' => 'application/vnd.data-vision.rdz',
855
+ 'rep' => 'application/vnd.businessobjects',
856
+ 'res' => 'application/x-dtbresource+xml',
857
+ 'rest' => 'text/x-rst',
858
+ 'restx' => 'text/x-rst',
859
+ 'rexx' => 'text/x-rexx',
860
+ 'rgb' => 'image/x-rgb',
861
+ 'rif' => 'application/reginfo+xml',
862
+ 'rl' => 'application/resource-lists+xml',
863
+ 'rlc' => 'image/vnd.fujixerox.edmics-rlc',
864
+ 'rld' => 'application/resource-lists-diff+xml',
865
+ 'rm' => 'application/vnd.rn-realmedia',
866
+ 'rmi' => 'audio/midi',
867
+ 'rmp' => 'audio/x-pn-realaudio-plugin',
868
+ 'rms' => 'application/vnd.jcp.javame.midlet-rms',
869
+ 'rnc' => 'application/relax-ng-compact-syntax',
870
+ 'rng' => 'text/plain',
871
+ 'rnx' => 'text/plain',
872
+ 'roff' => 'text/troff',
873
+ 'roles' => 'text/plain',
874
+ 'rpm' => 'application/x-rpm',
875
+ 'rpss' => 'application/vnd.nokia.radio-presets',
876
+ 'rpst' => 'application/vnd.nokia.radio-preset',
877
+ 'rq' => 'application/sparql-query',
878
+ 'rs' => 'application/rls-services+xml',
879
+ 'rsd' => 'application/rsd+xml',
880
+ 'rss' => 'application/rss+xml',
881
+ 'rst' => 'text/x-rst',
882
+ 'rtf' => 'application/rtf',
883
+ 'rtx' => 'text/richtext',
884
+ 'rw2' => 'image/x-raw-panasonic',
885
+ 'rwz' => 'image/x-raw-rawzor',
886
+ 's' => 'text/x-assembly',
887
+ 's7m' => 'application/x-sas-dmdb',
888
+ 'sa7' => 'application/x-sas-access',
889
+ 'saf' => 'application/vnd.yamaha.smaf-audio',
890
+ 'sas' => 'application/x-sas',
891
+ 'sas7bacs' => 'application/x-sas-access',
892
+ 'sas7baud' => 'application/x-sas-audit',
893
+ 'sas7bbak' => 'application/x-sas-backup',
894
+ 'sas7bcat' => 'application/x-sas-catalog',
895
+ 'sas7bdat' => 'application/x-sas-data',
896
+ 'sas7bdmd' => 'application/x-sas-dmdb',
897
+ 'sas7bfdb' => 'application/x-sas-fdb',
898
+ 'sas7bitm' => 'application/x-sas-itemstor',
899
+ 'sas7bmdb' => 'application/x-sas-mddb',
900
+ 'sas7bndx' => 'application/x-sas-data-index',
901
+ 'sas7bpgm' => 'application/x-sas-program-data',
902
+ 'sas7bput' => 'application/x-sas-putility',
903
+ 'sas7butl' => 'application/x-sas-utility',
904
+ 'sas7bvew' => 'application/x-sas-view',
905
+ 'sbml' => 'application/sbml+xml',
906
+ 'sc' => 'application/vnd.ibm.secure-container',
907
+ 'sc7' => 'application/x-sas-catalog',
908
+ 'scala' => 'text/x-scala',
909
+ 'scd' => 'application/x-msschedule',
910
+ 'schemas' => 'text/plain',
911
+ 'scm' => 'text/x-scheme',
912
+ 'scq' => 'application/scvp-cv-request',
913
+ 'scs' => 'application/scvp-cv-response',
914
+ 'scurl' => 'text/vnd.curl.scurl',
915
+ 'sd2' => 'application/x-sas-data-v6',
916
+ 'sd7' => 'application/x-sas-data',
917
+ 'sda' => 'application/vnd.stardivision.draw',
918
+ 'sdc' => 'application/vnd.stardivision.calc',
919
+ 'sdd' => 'application/vnd.stardivision.impress',
920
+ 'sdkd' => 'application/vnd.solent.sdkm+xml',
921
+ 'sdkm' => 'application/vnd.solent.sdkm+xml',
922
+ 'sdp' => 'application/sdp',
923
+ 'sdw' => 'application/vnd.stardivision.writer',
924
+ 'sed' => 'text/x-sed',
925
+ 'see' => 'application/vnd.seemail',
926
+ 'seed' => 'application/vnd.fdsn.seed',
927
+ 'sema' => 'application/vnd.sema',
928
+ 'semd' => 'application/vnd.semd',
929
+ 'semf' => 'application/vnd.semf',
930
+ 'ser' => 'application/java-serialized-object',
931
+ 'setpay' => 'application/set-payment-initiation',
932
+ 'setreg' => 'application/set-registration-initiation',
933
+ 'sf7' => 'application/x-sas-fdb',
934
+ 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data',
935
+ 'sfdu' => 'application/x-sfdu',
936
+ 'sfs' => 'application/vnd.spotfire.sfs',
937
+ 'sgl' => 'application/vnd.stardivision.writer-global',
938
+ 'sgm' => 'text/sgml',
939
+ 'sgml' => 'text/sgml',
940
+ 'sh' => 'application/x-sh',
941
+ 'shar' => 'application/x-shar',
942
+ 'shf' => 'application/shf+xml',
943
+ 'shp' => 'application/x-shapefile',
944
+ 'shw' => 'application/x-corelpresentations',
945
+ 'si7' => 'application/x-sas-data-index',
946
+ 'sig' => 'application/pgp-signature',
947
+ 'silo' => 'model/mesh',
948
+ 'sis' => 'application/vnd.symbian.install',
949
+ 'sisx' => 'application/vnd.symbian.install',
950
+ 'sit' => 'application/x-stuffit',
951
+ 'sitx' => 'application/x-stuffitx',
952
+ 'skd' => 'application/vnd.koan',
953
+ 'skm' => 'application/vnd.koan',
954
+ 'skp' => 'application/vnd.koan',
955
+ 'skt' => 'application/vnd.koan',
956
+ 'sldasm' => 'application/sldworks',
957
+ 'slddrw' => 'application/sldworks',
958
+ 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12',
959
+ 'sldprt' => 'application/sldworks',
960
+ 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
961
+ 'slt' => 'application/vnd.epson.salt',
962
+ 'sm7' => 'application/x-sas-mddb',
963
+ 'smf' => 'application/vnd.stardivision.math',
964
+ 'smi' => 'application/smil+xml',
965
+ 'smil' => 'application/smil+xml',
966
+ 'sml' => 'application/smil+xml',
967
+ 'snd' => 'audio/basic',
968
+ 'snf' => 'application/x-font-snf',
969
+ 'so' => 'application/octet-stream',
970
+ 'sp7' => 'application/x-sas-putility',
971
+ 'spc' => 'application/x-pkcs7-certificates',
972
+ 'spf' => 'application/vnd.yamaha.smaf-phrase',
973
+ 'spl' => 'application/x-futuresplash',
974
+ 'spot' => 'text/vnd.in3d.spot',
975
+ 'spp' => 'application/scvp-vp-response',
976
+ 'spq' => 'application/scvp-vp-request',
977
+ 'spx' => 'audio/speex',
978
+ 'sql' => 'text/x-sql',
979
+ 'sr2' => 'image/x-raw-sony',
980
+ 'sr7' => 'application/x-sas-itemstor',
981
+ 'src' => 'application/x-wais-source',
982
+ 'srf' => 'image/x-raw-sony',
983
+ 'srl' => 'application/sereal',
984
+ 'srx' => 'application/sparql-results+xml',
985
+ 'ss7' => 'application/x-sas-program-data',
986
+ 'sse' => 'application/vnd.kodak-descriptor',
987
+ 'ssf' => 'application/vnd.epson.ssf',
988
+ 'ssml' => 'application/ssml+xml',
989
+ 'st' => 'text/x-stsrc',
990
+ 'st7' => 'application/x-sas-audit',
991
+ 'stc' => 'application/vnd.sun.xml.calc.template',
992
+ 'std' => 'application/vnd.sun.xml.draw.template',
993
+ 'stf' => 'application/vnd.wt.stf',
994
+ 'sti' => 'application/vnd.sun.xml.impress.template',
995
+ 'stk' => 'application/hyperstudio',
996
+ 'stl' => 'application/vnd.ms-pki.stl',
997
+ 'str' => 'application/vnd.pg.format',
998
+ 'stw' => 'application/vnd.sun.xml.writer.template',
999
+ 'stx' => 'application/x-sas-transport',
1000
+ 'su7' => 'application/x-sas-utility',
1001
+ 'sus' => 'application/vnd.sus-calendar',
1002
+ 'susp' => 'application/vnd.sus-calendar',
1003
+ 'sv4cpio' => 'application/x-sv4cpio',
1004
+ 'sv4crc' => 'application/x-sv4crc',
1005
+ 'sv7' => 'application/x-sas-view',
1006
+ 'svd' => 'application/vnd.svd',
1007
+ 'svg' => 'image/svg+xml',
1008
+ 'svgz' => 'image/svg+xml',
1009
+ 'swa' => 'application/x-director',
1010
+ 'swf' => 'application/x-shockwave-flash',
1011
+ 'swi' => 'application/vnd.arastra.swi',
1012
+ 'sxc' => 'application/vnd.sun.xml.calc',
1013
+ 'sxd' => 'application/vnd.sun.xml.draw',
1014
+ 'sxg' => 'application/vnd.sun.xml.writer.global',
1015
+ 'sxi' => 'application/vnd.sun.xml.impress',
1016
+ 'sxm' => 'application/vnd.sun.xml.math',
1017
+ 'sxw' => 'application/vnd.sun.xml.writer',
1018
+ 'sz' => 'application/x-snappy-framed',
1019
+ 't' => 'text/troff',
1020
+ 'tao' => 'application/vnd.tao.intent-module-archive',
1021
+ 'tar' => 'application/x-tar',
1022
+ 'tbz' => 'application/x-bzip',
1023
+ 'tbz2' => 'application/x-bzip2',
1024
+ 'tcap' => 'application/vnd.3gpp2.tcap',
1025
+ 'tcl' => 'text/x-tcl',
1026
+ 'tcsh' => 'application/x-csh',
1027
+ 'teacher' => 'application/vnd.smart.teacher',
1028
+ 'tex' => 'application/x-tex',
1029
+ 'texi' => 'application/x-texinfo',
1030
+ 'texinfo' => 'application/x-texinfo',
1031
+ 'text' => 'text/plain',
1032
+ 'tfm' => 'application/x-tex-tfm',
1033
+ 'tga' => 'image/x-tga',
1034
+ 'tgz' => 'application/gzip',
1035
+ 'thmx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
1036
+ 'tif' => 'image/tiff',
1037
+ 'tiff' => 'image/tiff',
1038
+ 'tk' => 'text/x-tcl',
1039
+ 'tld' => 'text/plain',
1040
+ 'tmo' => 'application/vnd.tmobile-livetv',
1041
+ 'toast' => 'application/x-roxio-toast',
1042
+ 'torrent' => 'application/x-bittorrent',
1043
+ 'tpl' => 'application/vnd.groove-tool-template',
1044
+ 'tpt' => 'application/vnd.trid.tpt',
1045
+ 'tr' => 'text/troff',
1046
+ 'tra' => 'application/vnd.trueapp',
1047
+ 'trm' => 'application/x-msterminal',
1048
+ 'tsd' => 'application/timestamped-data',
1049
+ 'tsv' => 'text/tab-separated-values',
1050
+ 'ttc' => 'application/x-font-ttf',
1051
+ 'ttf' => 'application/x-font-ttf',
1052
+ 'twd' => 'application/vnd.simtech-mindmapper',
1053
+ 'twds' => 'application/vnd.simtech-mindmapper',
1054
+ 'txd' => 'application/vnd.genomatix.tuxedo',
1055
+ 'txf' => 'application/vnd.mobius.txf',
1056
+ 'txt' => 'text/plain',
1057
+ 'types' => 'text/plain',
1058
+ 'u32' => 'application/x-authorware-bin',
1059
+ 'uc2' => 'application/x-uc2-compressed',
1060
+ 'udeb' => 'application/x-debian-package',
1061
+ 'ufd' => 'application/vnd.ufdl',
1062
+ 'ufdl' => 'application/vnd.ufdl',
1063
+ 'umj' => 'application/vnd.umajin',
1064
+ 'unityweb' => 'application/vnd.unity',
1065
+ 'uoml' => 'application/vnd.uoml+xml',
1066
+ 'uri' => 'text/uri-list',
1067
+ 'uris' => 'text/uri-list',
1068
+ 'urls' => 'text/uri-list',
1069
+ 'ustar' => 'application/x-ustar',
1070
+ 'utz' => 'application/vnd.uiq.theme',
1071
+ 'uu' => 'text/x-uuencode',
1072
+ 'v' => 'text/x-verilog',
1073
+ 'vb' => 'text/x-vbdotnet',
1074
+ 'vbs' => 'text/x-vbscript',
1075
+ 'vcd' => 'application/x-cdlink',
1076
+ 'vcf' => 'text/x-vcard',
1077
+ 'vcg' => 'application/vnd.groove-vcard',
1078
+ 'vcs' => 'text/x-vcalendar',
1079
+ 'vcx' => 'application/vnd.vcx',
1080
+ 'vda' => 'image/x-tga',
1081
+ 'vhd' => 'text/x-vhdl',
1082
+ 'vhdl' => 'text/x-vhdl',
1083
+ 'vis' => 'application/vnd.visionary',
1084
+ 'viv' => 'video/vnd.vivo',
1085
+ 'vm' => 'text/plain',
1086
+ 'vmdk' => 'application/x-vmdk',
1087
+ 'vor' => 'application/x-staroffice-template',
1088
+ 'vox' => 'application/x-authorware-bin',
1089
+ 'vrml' => 'model/vrml',
1090
+ 'vsd' => 'application/vnd.visio',
1091
+ 'vsdm' => 'application/vnd.ms-visio.drawing.macroEnabled.12',
1092
+ 'vsdx' => 'application/vnd.ms-visio.drawing',
1093
+ 'vsf' => 'application/vnd.vsf',
1094
+ 'vsl' => 'text/plain',
1095
+ 'vss' => 'application/vnd.visio',
1096
+ 'vssm' => 'application/vnd.ms-visio.stencil.macroEnabled.12',
1097
+ 'vssx' => 'application/vnd.ms-visio.stencil',
1098
+ 'vst' => 'application/vnd.visio',
1099
+ 'vstm' => 'application/vnd.ms-visio.template.macroEnabled.12',
1100
+ 'vstx' => 'application/vnd.ms-visio.template',
1101
+ 'vsw' => 'application/vnd.visio',
1102
+ 'vtt' => 'text/vtt',
1103
+ 'vtu' => 'model/vnd.vtu',
1104
+ 'vxml' => 'application/voicexml+xml',
1105
+ 'w3d' => 'application/x-director',
1106
+ 'w60' => 'application/vnd.wordperfect',
1107
+ 'wad' => 'application/x-doom',
1108
+ 'war' => 'application/x-tika-java-web-archive',
1109
+ 'warc' => 'application/warc',
1110
+ 'wasm' => 'application/wasm',
1111
+ 'wav' => 'audio/vnd.wave',
1112
+ 'wax' => 'audio/x-ms-wax',
1113
+ 'wb1' => 'application/x-quattro-pro',
1114
+ 'wb2' => 'application/x-quattro-pro',
1115
+ 'wb3' => 'application/x-quattro-pro',
1116
+ 'wbmp' => 'image/vnd.wap.wbmp',
1117
+ 'wbs' => 'application/vnd.criticaltools.wbs+xml',
1118
+ 'wbxml' => 'application/vnd.wap.wbxml',
1119
+ 'wcm' => 'application/vnd.ms-works',
1120
+ 'wdb' => 'application/vnd.ms-works',
1121
+ 'webarchive' => 'application/x-webarchive',
1122
+ 'webm' => 'video/webm',
1123
+ 'webp' => 'image/webp',
1124
+ 'wk1' => 'application/vnd.lotus-1-2-3',
1125
+ 'wk2' => 'application/vnd.lotus-1-2-3',
1126
+ 'wk3' => 'application/vnd.lotus-1-2-3',
1127
+ 'wk4' => 'application/vnd.lotus-1-2-3',
1128
+ 'wkq' => 'application/x-quattro-pro',
1129
+ 'wks' => 'application/vnd.ms-works',
1130
+ 'wl' => 'application/vnd.wolfram.wl',
1131
+ 'wm' => 'video/x-ms-wm',
1132
+ 'wma' => 'audio/x-ms-wma',
1133
+ 'wmd' => 'application/x-ms-wmd',
1134
+ 'wmf' => 'image/wmf',
1135
+ 'wml' => 'text/vnd.wap.wml',
1136
+ 'wmlc' => 'application/vnd.wap.wmlc',
1137
+ 'wmls' => 'text/vnd.wap.wmlscript',
1138
+ 'wmlsc' => 'application/vnd.wap.wmlscriptc',
1139
+ 'wmv' => 'video/x-ms-wmv',
1140
+ 'wmx' => 'video/x-ms-wmx',
1141
+ 'wmz' => 'application/x-ms-wmz',
1142
+ 'woff' => 'font/woff',
1143
+ 'woff2' => 'font/woff2',
1144
+ 'wp' => 'application/vnd.wordperfect',
1145
+ 'wp5' => 'application/vnd.wordperfect',
1146
+ 'wp6' => 'application/vnd.wordperfect',
1147
+ 'wp61' => 'application/vnd.wordperfect',
1148
+ 'wpd' => 'application/vnd.wordperfect',
1149
+ 'wpl' => 'application/vnd.ms-wpl',
1150
+ 'wps' => 'application/vnd.ms-works',
1151
+ 'wpt' => 'application/vnd.wordperfect',
1152
+ 'wq1' => 'application/x-quattro-pro',
1153
+ 'wq2' => 'application/x-quattro-pro',
1154
+ 'wqd' => 'application/vnd.wqd',
1155
+ 'wri' => 'application/x-mswrite',
1156
+ 'wrl' => 'model/vrml',
1157
+ 'wsdd' => 'text/plain',
1158
+ 'wsdl' => 'application/wsdl+xml',
1159
+ 'wspolicy' => 'application/wspolicy+xml',
1160
+ 'wtb' => 'application/vnd.webturbo',
1161
+ 'wvx' => 'video/x-ms-wvx',
1162
+ 'x32' => 'application/x-authorware-bin',
1163
+ 'x3d' => 'application/vnd.hzn-3d-crossword',
1164
+ 'x3f' => 'image/x-raw-sigma',
1165
+ 'xap' => 'application/x-silverlight-app',
1166
+ 'xar' => 'application/vnd.xara',
1167
+ 'xargs' => 'text/plain',
1168
+ 'xbap' => 'application/x-ms-xbap',
1169
+ 'xbd' => 'application/vnd.fujixerox.docuworks.binder',
1170
+ 'xbm' => 'image/x-xbitmap',
1171
+ 'xcat' => 'text/plain',
1172
+ 'xcf' => 'image/x-xcf',
1173
+ 'xconf' => 'text/x-config',
1174
+ 'xdm' => 'application/vnd.syncml.dm+xml',
1175
+ 'xdp' => 'application/vnd.adobe.xdp+xml',
1176
+ 'xdw' => 'application/vnd.fujixerox.docuworks',
1177
+ 'xegrm' => 'text/plain',
1178
+ 'xenc' => 'application/xenc+xml',
1179
+ 'xer' => 'application/patch-ops-error+xml',
1180
+ 'xfdf' => 'application/vnd.adobe.xfdf',
1181
+ 'xfdl' => 'application/vnd.xfdl',
1182
+ 'xgrm' => 'text/plain',
1183
+ 'xht' => 'application/xhtml+xml',
1184
+ 'xhtml' => 'application/xhtml+xml',
1185
+ 'xhtml2' => 'application/xhtml+xml',
1186
+ 'xhvml' => 'application/xv+xml',
1187
+ 'xif' => 'image/vnd.xiff',
1188
+ 'xla' => 'application/vnd.ms-excel',
1189
+ 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12',
1190
+ 'xlc' => 'application/vnd.ms-excel',
1191
+ 'xld' => 'application/vnd.ms-excel',
1192
+ 'xlex' => 'text/plain',
1193
+ 'xlf' => 'application/x-xliff+xml',
1194
+ 'xliff' => 'application/x-xliff+xml',
1195
+ 'xll' => 'application/vnd.ms-excel',
1196
+ 'xlm' => 'application/vnd.ms-excel',
1197
+ 'xlog' => 'text/plain',
1198
+ 'xlr' => 'application/x-tika-msworks-spreadsheet',
1199
+ 'xls' => 'application/vnd.ms-excel',
1200
+ 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
1201
+ 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12',
1202
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
1203
+ 'xlt' => 'application/vnd.ms-excel',
1204
+ 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12',
1205
+ 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
1206
+ 'xlw' => 'application/vnd.ms-excel',
1207
+ 'xlz' => 'application/x-xliff+zip',
1208
+ 'xmap' => 'text/plain',
1209
+ 'xmind' => 'application/x-xmind',
1210
+ 'xml' => 'application/xml',
1211
+ 'xmp' => 'application/rdf+xml',
1212
+ 'xo' => 'application/vnd.olpc-sugar',
1213
+ 'xop' => 'application/xop+xml',
1214
+ 'xpi' => 'application/x-xpinstall',
1215
+ 'xpm' => 'image/x-xpixmap',
1216
+ 'xport' => 'application/x-sas-xport',
1217
+ 'xpr' => 'application/vnd.is-xpr',
1218
+ 'xps' => 'application/vnd.ms-xpsdocument',
1219
+ 'xpt' => 'application/x-sas-xport',
1220
+ 'xpw' => 'application/vnd.intercon.formnet',
1221
+ 'xpx' => 'application/vnd.intercon.formnet',
1222
+ 'xq' => 'application/xquery',
1223
+ 'xquery' => 'application/xquery',
1224
+ 'xroles' => 'text/plain',
1225
+ 'xsamples' => 'text/plain',
1226
+ 'xsd' => 'application/xml',
1227
+ 'xsl' => 'application/xml',
1228
+ 'xslfo' => 'application/xslfo+xml',
1229
+ 'xslt' => 'application/xslt+xml',
1230
+ 'xsm' => 'application/vnd.syncml+xml',
1231
+ 'xsp' => 'text/plain',
1232
+ 'xspf' => 'application/xspf+xml',
1233
+ 'xtest' => 'text/plain',
1234
+ 'xul' => 'application/vnd.mozilla.xul+xml',
1235
+ 'xvm' => 'application/xv+xml',
1236
+ 'xvml' => 'application/xv+xml',
1237
+ 'xwd' => 'image/x-xwindowdump',
1238
+ 'xweb' => 'text/plain',
1239
+ 'xwelcome' => 'text/plain',
1240
+ 'xyz' => 'chemical/x-xyz',
1241
+ 'xz' => 'application/x-xz',
1242
+ 'y' => 'text/x-yacc',
1243
+ 'yaml' => 'text/x-yaml',
1244
+ 'z' => 'application/x-compress',
1245
+ 'zaz' => 'application/vnd.zzazz.deck+xml',
1246
+ 'zip' => 'application/zip',
1247
+ 'zir' => 'application/vnd.zul',
1248
+ 'zirz' => 'application/vnd.zul',
1249
+ 'zmm' => 'application/vnd.handheld-entertainment+xml',
1250
+ 'zoo' => 'application/x-zoo',
1251
+ 'zstd' => 'application/zstd',
1252
+ }
1253
+ # @private
1254
+ # :nodoc:
1255
+ TYPES = {
1256
+ 'application/andrew-inset' => [%w(ez), %w(), nil],
1257
+ 'application/applixware' => [%w(aw), %w(), nil],
1258
+ 'application/atom+xml' => [%w(atom), %w(), nil],
1259
+ 'application/atomcat+xml' => [%w(atomcat), %w(), nil],
1260
+ 'application/atomsvc+xml' => [%w(atomsvc), %w(), nil],
1261
+ 'application/bizagi-modeler' => [%w(bpm), %w(application/zip), 'BizAgi Process Modeler'],
1262
+ 'application/cbor' => [%w(cbor), %w(), 'Concise Binary Object Representation container'],
1263
+ 'application/ccxml+xml' => [%w(ccxml), %w(), nil],
1264
+ 'application/coreldraw' => [%w(cdr), %w(), 'des: CorelDraw X4 and newer'],
1265
+ 'application/cu-seeme' => [%w(cu), %w(), nil],
1266
+ 'application/dash+xml' => [%w(mpd), %w(application/xml), nil],
1267
+ 'application/davmount+xml' => [%w(davmount), %w(), nil],
1268
+ 'application/dif+xml' => [%w(dif), %w(application/xml), nil],
1269
+ 'application/dita+xml;format=map' => [%w(ditamap), %w(application/dita+xml), 'DITA Map'],
1270
+ 'application/dita+xml;format=topic' => [%w(dita), %w(application/dita+xml), 'DITA Topic'],
1271
+ 'application/dita+xml;format=val' => [%w(ditaval), %w(application/dita+xml), 'DITA Conditional Processing Profile'],
1272
+ 'application/ecmascript' => [%w(ecma), %w(), nil],
1273
+ 'application/emma+xml' => [%w(emma), %w(), nil],
1274
+ 'application/envi.hdr' => [%w(hdr), %w(), nil],
1275
+ 'application/epub+zip' => [%w(epub), %w(), 'Electronic Publication'],
1276
+ 'application/fits' => [%w(fits fit fts), %w(), 'Flexible Image Transport System'],
1277
+ 'application/font-tdpfr' => [%w(pfr), %w(), nil],
1278
+ 'application/gzip' => [%w(gz tgz), %w(), 'Gzip Compressed Archive'],
1279
+ 'application/hyperstudio' => [%w(stk), %w(), nil],
1280
+ 'application/illustrator' => [%w(ai), %w(application/postscript), 'Adobe Illustrator Artwork'],
1281
+ 'application/java-archive' => [%w(jar), %w(application/zip), 'Java Archive'],
1282
+ 'application/java-serialized-object' => [%w(ser), %w(), nil],
1283
+ 'application/java-vm' => [%w(class), %w(), 'Java Class File'],
1284
+ 'application/javascript' => [%w(js), %w(text/plain), 'JavaScript Source Code'],
1285
+ 'application/json' => [%w(json), %w(application/javascript), nil],
1286
+ 'application/lost+xml' => [%w(lostxml), %w(), nil],
1287
+ 'application/mac-binhex40' => [%w(hqx), %w(), nil],
1288
+ 'application/mac-compactpro' => [%w(cpt), %w(), nil],
1289
+ 'application/marc' => [%w(mrc), %w(), nil],
1290
+ 'application/mathematica' => [%w(ma nb mb), %w(text/plain), 'Wolfram Mathematica'],
1291
+ 'application/mathml+xml' => [%w(mathml), %w(), nil],
1292
+ 'application/mbox' => [%w(mbox), %w(text/x-tika-text-based-message), nil],
1293
+ 'application/mediaservercontrol+xml' => [%w(mscml), %w(), nil],
1294
+ 'application/mp4' => [%w(mp4s), %w(application/quicktime), 'MP4 container format'],
1295
+ 'application/msword' => [%w(doc dot), %w(application/x-tika-msoffice), 'Microsoft Word Document'],
1296
+ 'application/mxf' => [%w(mxf), %w(), nil],
1297
+ 'application/octet-stream' => [%w(bin dms lha lrf lzh so dist distz pkg bpk dump elc deploy), %w(), nil],
1298
+ 'application/oda' => [%w(oda), %w(), nil],
1299
+ 'application/oebps-package+xml' => [%w(opf), %w(), nil],
1300
+ 'application/ogg' => [%w(ogx), %w(), nil],
1301
+ 'application/onenote' => [%w(onetmp), %w(), nil],
1302
+ 'application/onenote; format=package' => [%w(onepkg), %w(application/vnd.ms-cab-compressed), 'OneNote Package'],
1303
+ 'application/onenote;format=one' => [%w(one), %w(application/onenote), nil],
1304
+ 'application/onenote;format=onetoc2' => [%w(onetoc onetoc2), %w(application/onenote), 'OneNote Table of Contents'],
1305
+ 'application/patch-ops-error+xml' => [%w(xer), %w(), nil],
1306
+ 'application/pdf' => [%w(pdf), %w(), 'Portable Document Format'],
1307
+ 'application/pgp-encrypted' => [%w(pgp), %w(), nil],
1308
+ 'application/pgp-signature' => [%w(asc sig), %w(), nil],
1309
+ 'application/pics-rules' => [%w(prf), %w(), nil],
1310
+ 'application/pkcs10' => [%w(p10), %w(), nil],
1311
+ 'application/pkcs7-mime' => [%w(p7m p7c), %w(), nil],
1312
+ 'application/pkcs7-signature' => [%w(p7s), %w(), nil],
1313
+ 'application/pkix-cert' => [%w(cer), %w(), nil],
1314
+ 'application/pkix-crl' => [%w(crl), %w(), nil],
1315
+ 'application/pkix-pkipath' => [%w(pkipath), %w(), nil],
1316
+ 'application/pkixcmp' => [%w(pki), %w(), nil],
1317
+ 'application/pls+xml' => [%w(pls), %w(), nil],
1318
+ 'application/postscript' => [%w(ps eps epsf epsi), %w(), 'PostScript'],
1319
+ 'application/prs.cww' => [%w(cww), %w(), nil],
1320
+ 'application/rdf+xml' => [%w(rdf owl xmp), %w(application/xml), 'XML syntax for RDF graphs'],
1321
+ 'application/reginfo+xml' => [%w(rif), %w(), nil],
1322
+ 'application/relax-ng-compact-syntax' => [%w(rnc), %w(text/plain), nil],
1323
+ 'application/resource-lists+xml' => [%w(rl), %w(), nil],
1324
+ 'application/resource-lists-diff+xml' => [%w(rld), %w(), nil],
1325
+ 'application/rls-services+xml' => [%w(rs), %w(), nil],
1326
+ 'application/rsd+xml' => [%w(rsd), %w(), nil],
1327
+ 'application/rss+xml' => [%w(rss), %w(), nil],
1328
+ 'application/rtf' => [%w(rtf), %w(text/plain), 'Rich Text Format File'],
1329
+ 'application/sbml+xml' => [%w(sbml), %w(), nil],
1330
+ 'application/scvp-cv-request' => [%w(scq), %w(), nil],
1331
+ 'application/scvp-cv-response' => [%w(scs), %w(), nil],
1332
+ 'application/scvp-vp-request' => [%w(spq), %w(), nil],
1333
+ 'application/scvp-vp-response' => [%w(spp), %w(), nil],
1334
+ 'application/sdp' => [%w(sdp), %w(), nil],
1335
+ 'application/sereal' => [%w(srl), %w(), 'Sereal binary serialization format'],
1336
+ 'application/set-payment-initiation' => [%w(setpay), %w(), nil],
1337
+ 'application/set-registration-initiation' => [%w(setreg), %w(), nil],
1338
+ 'application/shf+xml' => [%w(shf), %w(), nil],
1339
+ 'application/sldworks' => [%w(sldprt sldasm slddrw), %w(application/x-tika-msoffice), 'SolidWorks CAD program'],
1340
+ 'application/smil+xml' => [%w(smi smil sml), %w(application/xml), 'SMIL Multimedia'],
1341
+ 'application/sparql-query' => [%w(rq), %w(), nil],
1342
+ 'application/sparql-results+xml' => [%w(srx), %w(), nil],
1343
+ 'application/srgs' => [%w(gram), %w(), nil],
1344
+ 'application/srgs+xml' => [%w(grxml), %w(), nil],
1345
+ 'application/ssml+xml' => [%w(ssml), %w(), nil],
1346
+ 'application/timestamped-data' => [%w(tsd), %w(), nil],
1347
+ 'application/vnd.3gpp.pic-bw-large' => [%w(plb), %w(), nil],
1348
+ 'application/vnd.3gpp.pic-bw-small' => [%w(psb), %w(), nil],
1349
+ 'application/vnd.3gpp.pic-bw-var' => [%w(pvb), %w(), nil],
1350
+ 'application/vnd.3gpp2.tcap' => [%w(tcap), %w(), nil],
1351
+ 'application/vnd.3m.post-it-notes' => [%w(pwn), %w(), nil],
1352
+ 'application/vnd.accpac.simply.aso' => [%w(aso), %w(), nil],
1353
+ 'application/vnd.accpac.simply.imp' => [%w(imp), %w(), nil],
1354
+ 'application/vnd.acucobol' => [%w(acu), %w(), nil],
1355
+ 'application/vnd.acucorp' => [%w(atc acutc), %w(), nil],
1356
+ 'application/vnd.adobe.aftereffects.project' => [%w(aep), %w(), nil],
1357
+ 'application/vnd.adobe.aftereffects.template' => [%w(aet), %w(), nil],
1358
+ 'application/vnd.adobe.air-application-installer-package+zip' => [%w(air), %w(), nil],
1359
+ 'application/vnd.adobe.xdp+xml' => [%w(xdp), %w(application/xml), nil],
1360
+ 'application/vnd.adobe.xfdf' => [%w(xfdf), %w(application/xml), nil],
1361
+ 'application/vnd.airzip.filesecure.azf' => [%w(azf), %w(), nil],
1362
+ 'application/vnd.airzip.filesecure.azs' => [%w(azs), %w(), nil],
1363
+ 'application/vnd.amazon.ebook' => [%w(azw), %w(), nil],
1364
+ 'application/vnd.americandynamics.acc' => [%w(acc), %w(), nil],
1365
+ 'application/vnd.amiga.ami' => [%w(ami), %w(), nil],
1366
+ 'application/vnd.android.package-archive' => [%w(apk), %w(application/java-archive), nil],
1367
+ 'application/vnd.anser-web-certificate-issue-initiation' => [%w(cii), %w(), nil],
1368
+ 'application/vnd.anser-web-funds-transfer-initiation' => [%w(fti), %w(), nil],
1369
+ 'application/vnd.antix.game-component' => [%w(atx), %w(), nil],
1370
+ 'application/vnd.apple.installer+xml' => [%w(mpkg), %w(), nil],
1371
+ 'application/vnd.apple.keynote' => [%w(key), %w(application/vnd.apple.iwork), nil],
1372
+ 'application/vnd.apple.mpegurl' => [%w(m3u8), %w(), nil],
1373
+ 'application/vnd.apple.numbers' => [%w(numbers), %w(application/vnd.apple.iwork), nil],
1374
+ 'application/vnd.apple.pages' => [%w(pages), %w(application/vnd.apple.iwork), nil],
1375
+ 'application/vnd.arastra.swi' => [%w(swi), %w(), nil],
1376
+ 'application/vnd.blueice.multipass' => [%w(mpm), %w(), nil],
1377
+ 'application/vnd.bmi' => [%w(bmi), %w(), nil],
1378
+ 'application/vnd.businessobjects' => [%w(rep), %w(), nil],
1379
+ 'application/vnd.chemdraw+xml' => [%w(cdxml), %w(), nil],
1380
+ 'application/vnd.chipnuts.karaoke-mmd' => [%w(mmd), %w(), nil],
1381
+ 'application/vnd.cinderella' => [%w(cdy), %w(), nil],
1382
+ 'application/vnd.claymore' => [%w(cla), %w(), nil],
1383
+ 'application/vnd.clonk.c4group' => [%w(c4g c4d c4f c4p c4u), %w(), nil],
1384
+ 'application/vnd.commonspace' => [%w(csp), %w(), nil],
1385
+ 'application/vnd.contact.cmsg' => [%w(cdbcmsg), %w(), nil],
1386
+ 'application/vnd.cosmocaller' => [%w(cmc), %w(), nil],
1387
+ 'application/vnd.crick.clicker' => [%w(clkx), %w(), nil],
1388
+ 'application/vnd.crick.clicker.keyboard' => [%w(clkk), %w(), nil],
1389
+ 'application/vnd.crick.clicker.palette' => [%w(clkp), %w(), nil],
1390
+ 'application/vnd.crick.clicker.template' => [%w(clkt), %w(), nil],
1391
+ 'application/vnd.crick.clicker.wordbank' => [%w(clkw), %w(), nil],
1392
+ 'application/vnd.criticaltools.wbs+xml' => [%w(wbs), %w(), nil],
1393
+ 'application/vnd.ctc-posml' => [%w(pml), %w(), nil],
1394
+ 'application/vnd.cups-ppd' => [%w(ppd), %w(), nil],
1395
+ 'application/vnd.curl.car' => [%w(car), %w(), nil],
1396
+ 'application/vnd.curl.pcurl' => [%w(pcurl), %w(), nil],
1397
+ 'application/vnd.data-vision.rdz' => [%w(rdz), %w(), nil],
1398
+ 'application/vnd.denovo.fcselayout-link' => [%w(fe_launch), %w(), nil],
1399
+ 'application/vnd.dna' => [%w(dna), %w(), nil],
1400
+ 'application/vnd.dolby.mlp' => [%w(mlp), %w(), nil],
1401
+ 'application/vnd.dpgraph' => [%w(dpg), %w(), nil],
1402
+ 'application/vnd.dreamfactory' => [%w(dfac), %w(), nil],
1403
+ 'application/vnd.dynageo' => [%w(geo), %w(), nil],
1404
+ 'application/vnd.ecowin.chart' => [%w(mag), %w(), nil],
1405
+ 'application/vnd.enliven' => [%w(nml), %w(), nil],
1406
+ 'application/vnd.epson.esf' => [%w(esf), %w(), nil],
1407
+ 'application/vnd.epson.msf' => [%w(msf), %w(), nil],
1408
+ 'application/vnd.epson.quickanime' => [%w(qam), %w(), nil],
1409
+ 'application/vnd.epson.salt' => [%w(slt), %w(), nil],
1410
+ 'application/vnd.epson.ssf' => [%w(ssf), %w(), nil],
1411
+ 'application/vnd.eszigno3+xml' => [%w(es3 et3), %w(), nil],
1412
+ 'application/vnd.etsi.asic-e+zip' => [%w(asice), %w(application/zip), 'Extended Associated Signature Container'],
1413
+ 'application/vnd.etsi.asic-s+zip' => [%w(asics), %w(application/zip), 'Simple Associated Signature Container'],
1414
+ 'application/vnd.ezpix-album' => [%w(ez2), %w(), nil],
1415
+ 'application/vnd.ezpix-package' => [%w(ez3), %w(), nil],
1416
+ 'application/vnd.fdf' => [%w(fdf), %w(), 'Forms Data Format'],
1417
+ 'application/vnd.fdsn.mseed' => [%w(mseed), %w(), nil],
1418
+ 'application/vnd.fdsn.seed' => [%w(seed dataless), %w(), nil],
1419
+ 'application/vnd.flographit' => [%w(gph), %w(), nil],
1420
+ 'application/vnd.fluxtime.clip' => [%w(ftc), %w(), nil],
1421
+ 'application/vnd.framemaker' => [%w(fm frame maker book), %w(), nil],
1422
+ 'application/vnd.frogans.fnc' => [%w(fnc), %w(), nil],
1423
+ 'application/vnd.frogans.ltf' => [%w(ltf), %w(), nil],
1424
+ 'application/vnd.fsc.weblaunch' => [%w(fsc), %w(), nil],
1425
+ 'application/vnd.fujitsu.oasys' => [%w(oas), %w(), nil],
1426
+ 'application/vnd.fujitsu.oasys2' => [%w(oa2), %w(), nil],
1427
+ 'application/vnd.fujitsu.oasys3' => [%w(oa3), %w(), nil],
1428
+ 'application/vnd.fujitsu.oasysgp' => [%w(fg5), %w(), nil],
1429
+ 'application/vnd.fujitsu.oasysprs' => [%w(bh2), %w(), nil],
1430
+ 'application/vnd.fujixerox.ddd' => [%w(ddd), %w(), nil],
1431
+ 'application/vnd.fujixerox.docuworks' => [%w(xdw), %w(), nil],
1432
+ 'application/vnd.fujixerox.docuworks.binder' => [%w(xbd), %w(), nil],
1433
+ 'application/vnd.fuzzysheet' => [%w(fzs), %w(), nil],
1434
+ 'application/vnd.genomatix.tuxedo' => [%w(txd), %w(), nil],
1435
+ 'application/vnd.geogebra.file' => [%w(ggb), %w(), nil],
1436
+ 'application/vnd.geogebra.tool' => [%w(ggt), %w(), nil],
1437
+ 'application/vnd.geometry-explorer' => [%w(gex gre), %w(), nil],
1438
+ 'application/vnd.gmx' => [%w(gmx), %w(), nil],
1439
+ 'application/vnd.google-earth.kml+xml' => [%w(kml), %w(application/xml), 'Keyhole Markup Language'],
1440
+ 'application/vnd.google-earth.kmz' => [%w(kmz), %w(application/zip), nil],
1441
+ 'application/vnd.grafeq' => [%w(gqf gqs), %w(), nil],
1442
+ 'application/vnd.groove-account' => [%w(gac), %w(), nil],
1443
+ 'application/vnd.groove-help' => [%w(ghf), %w(), nil],
1444
+ 'application/vnd.groove-identity-message' => [%w(gim), %w(), nil],
1445
+ 'application/vnd.groove-injector' => [%w(grv), %w(), nil],
1446
+ 'application/vnd.groove-tool-message' => [%w(gtm), %w(), nil],
1447
+ 'application/vnd.groove-tool-template' => [%w(tpl), %w(), nil],
1448
+ 'application/vnd.groove-vcard' => [%w(vcg), %w(), nil],
1449
+ 'application/vnd.handheld-entertainment+xml' => [%w(zmm), %w(), nil],
1450
+ 'application/vnd.hbci' => [%w(hbci), %w(), nil],
1451
+ 'application/vnd.hhe.lesson-player' => [%w(les), %w(), nil],
1452
+ 'application/vnd.hp-hpgl' => [%w(hpgl), %w(), nil],
1453
+ 'application/vnd.hp-hpid' => [%w(hpid), %w(), nil],
1454
+ 'application/vnd.hp-hps' => [%w(hps), %w(), nil],
1455
+ 'application/vnd.hp-jlyt' => [%w(jlt), %w(), nil],
1456
+ 'application/vnd.hp-pcl' => [%w(pcl), %w(), nil],
1457
+ 'application/vnd.hp-pclxl' => [%w(pclxl), %w(), nil],
1458
+ 'application/vnd.hydrostatix.sof-data' => [%w(sfd-hdstx), %w(), nil],
1459
+ 'application/vnd.hzn-3d-crossword' => [%w(x3d), %w(), nil],
1460
+ 'application/vnd.ibm.minipay' => [%w(mpy), %w(), nil],
1461
+ 'application/vnd.ibm.modcap' => [%w(afp listafp list3820), %w(), nil],
1462
+ 'application/vnd.ibm.rights-management' => [%w(irm), %w(), nil],
1463
+ 'application/vnd.ibm.secure-container' => [%w(sc), %w(), nil],
1464
+ 'application/vnd.iccprofile' => [%w(icc icm), %w(), nil],
1465
+ 'application/vnd.igloader' => [%w(igl), %w(), nil],
1466
+ 'application/vnd.immervision-ivp' => [%w(ivp), %w(), nil],
1467
+ 'application/vnd.immervision-ivu' => [%w(ivu), %w(), nil],
1468
+ 'application/vnd.intercon.formnet' => [%w(xpw xpx), %w(), nil],
1469
+ 'application/vnd.intu.qbo' => [%w(qbo), %w(), nil],
1470
+ 'application/vnd.intu.qfx' => [%w(qfx), %w(), nil],
1471
+ 'application/vnd.iptc.g2.newsmessage+xml' => [%w(nar), %w(application/xml), 'XML syntax for IPTC NewsMessages'],
1472
+ 'application/vnd.ipunplugged.rcprofile' => [%w(rcprofile), %w(), nil],
1473
+ 'application/vnd.irepository.package+xml' => [%w(irp), %w(), nil],
1474
+ 'application/vnd.is-xpr' => [%w(xpr), %w(), nil],
1475
+ 'application/vnd.jam' => [%w(jam), %w(), nil],
1476
+ 'application/vnd.java.hprof ' => [%w(hprof), %w(), 'Java hprof text file'],
1477
+ 'application/vnd.java.hprof.text' => [%w(hprof.txt), %w(text/plain), 'Java hprof text file'],
1478
+ 'application/vnd.jcp.javame.midlet-rms' => [%w(rms), %w(), nil],
1479
+ 'application/vnd.jisp' => [%w(jisp), %w(), nil],
1480
+ 'application/vnd.joost.joda-archive' => [%w(joda), %w(), nil],
1481
+ 'application/vnd.kahootz' => [%w(ktz ktr), %w(), nil],
1482
+ 'application/vnd.kde.karbon' => [%w(karbon), %w(), nil],
1483
+ 'application/vnd.kde.kchart' => [%w(chrt), %w(), 'KChart File'],
1484
+ 'application/vnd.kde.kformula' => [%w(kfo), %w(), nil],
1485
+ 'application/vnd.kde.kivio' => [%w(flw), %w(), nil],
1486
+ 'application/vnd.kde.kontour' => [%w(kon), %w(), nil],
1487
+ 'application/vnd.kde.kpresenter' => [%w(kpr kpt), %w(), 'KPresenter File'],
1488
+ 'application/vnd.kde.kspread' => [%w(ksp), %w(), 'KSpread File'],
1489
+ 'application/vnd.kde.kword' => [%w(kwd kwt), %w(), 'KWord File'],
1490
+ 'application/vnd.kenameaapp' => [%w(htke), %w(), nil],
1491
+ 'application/vnd.kidspiration' => [%w(kia), %w(), nil],
1492
+ 'application/vnd.kinar' => [%w(kne knp), %w(), nil],
1493
+ 'application/vnd.koan' => [%w(skp skd skt skm), %w(), 'SSEYO Koan File'],
1494
+ 'application/vnd.kodak-descriptor' => [%w(sse), %w(), nil],
1495
+ 'application/vnd.llamagraphics.life-balance.desktop' => [%w(lbd), %w(), nil],
1496
+ 'application/vnd.llamagraphics.life-balance.exchange+xml' => [%w(lbe), %w(), nil],
1497
+ 'application/vnd.lotus-1-2-3' => [%w(wk1 wk2 wk3 wk4 123), %w(), 'Lotus 1-2-3'],
1498
+ 'application/vnd.lotus-1-2-3;version=2' => [%w(wk1 wk2), %w(application/vnd.lotus-1-2-3), 'Lotus 1-2-3, version 2'],
1499
+ 'application/vnd.lotus-1-2-3;version=3' => [%w(wk3), %w(application/vnd.lotus-1-2-3), 'Lotus 1-2-3, version 3'],
1500
+ 'application/vnd.lotus-1-2-3;version=4' => [%w(wk4), %w(application/vnd.lotus-1-2-3), 'Lotus 1-2-3, version 4-5'],
1501
+ 'application/vnd.lotus-1-2-3;version=97+9.x' => [%w(123), %w(application/vnd.lotus-1-2-3), 'Lotus 1-2-3, version 97/9.x'],
1502
+ 'application/vnd.lotus-approach' => [%w(apr), %w(), nil],
1503
+ 'application/vnd.lotus-freelance' => [%w(pre), %w(), nil],
1504
+ 'application/vnd.lotus-notes' => [%w(nsf), %w(), nil],
1505
+ 'application/vnd.lotus-organizer' => [%w(org), %w(), nil],
1506
+ 'application/vnd.lotus-wordpro' => [%w(lwp), %w(), nil],
1507
+ 'application/vnd.macports.portpkg' => [%w(portpkg), %w(), nil],
1508
+ 'application/vnd.mcd' => [%w(mcd), %w(), nil],
1509
+ 'application/vnd.medcalcdata' => [%w(mc1), %w(), nil],
1510
+ 'application/vnd.mediastation.cdkey' => [%w(cdkey), %w(), nil],
1511
+ 'application/vnd.mfer' => [%w(mwf), %w(), nil],
1512
+ 'application/vnd.mfmp' => [%w(mfm), %w(), nil],
1513
+ 'application/vnd.micrografx.flo' => [%w(flo), %w(), nil],
1514
+ 'application/vnd.micrografx.igx' => [%w(igx), %w(), nil],
1515
+ 'application/vnd.mif' => [%w(mif), %w(), 'FrameMaker Interchange Format'],
1516
+ 'application/vnd.mindjet.mindmanager' => [%w(mmp mmap mmpt mmat mmmp mmas), %w(application/zip), 'MindManager'],
1517
+ 'application/vnd.mobius.daf' => [%w(daf), %w(), nil],
1518
+ 'application/vnd.mobius.dis' => [%w(dis), %w(), nil],
1519
+ 'application/vnd.mobius.mbk' => [%w(mbk), %w(), nil],
1520
+ 'application/vnd.mobius.mqy' => [%w(mqy), %w(), nil],
1521
+ 'application/vnd.mobius.msl' => [%w(msl), %w(), nil],
1522
+ 'application/vnd.mobius.plc' => [%w(plc), %w(), nil],
1523
+ 'application/vnd.mobius.txf' => [%w(txf), %w(), nil],
1524
+ 'application/vnd.mophun.application' => [%w(mpn), %w(), nil],
1525
+ 'application/vnd.mophun.certificate' => [%w(mpc), %w(), nil],
1526
+ 'application/vnd.mozilla.xul+xml' => [%w(xul), %w(), nil],
1527
+ 'application/vnd.ms-artgalry' => [%w(cil), %w(), nil],
1528
+ 'application/vnd.ms-cab-compressed' => [%w(cab), %w(), nil],
1529
+ 'application/vnd.ms-excel' => [%w(xls xlm xla xlc xlt xlw xll xld), %w(application/x-tika-msoffice), 'Microsoft Excel Spreadsheet'],
1530
+ 'application/vnd.ms-excel.addin.macroenabled.12' => [%w(xlam), %w(application/x-tika-ooxml), 'Office Open XML Workbook Add-in (macro-enabled)'],
1531
+ 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => [%w(xlsb), %w(application/x-tika-ooxml), 'Microsoft Excel 2007 Binary Spreadsheet'],
1532
+ 'application/vnd.ms-excel.sheet.macroenabled.12' => [%w(xlsm), %w(application/x-tika-ooxml), 'Office Open XML Workbook (macro-enabled)'],
1533
+ 'application/vnd.ms-excel.template.macroenabled.12' => [%w(xltm), %w(application/x-tika-ooxml), 'Office Open XML Workbook Template (macro-enabled)'],
1534
+ 'application/vnd.ms-fontobject' => [%w(eot), %w(), nil],
1535
+ 'application/vnd.ms-htmlhelp' => [%w(chm), %w(), nil],
1536
+ 'application/vnd.ms-ims' => [%w(ims), %w(), nil],
1537
+ 'application/vnd.ms-lrm' => [%w(lrm), %w(), nil],
1538
+ 'application/vnd.ms-outlook' => [%w(msg), %w(application/x-tika-msoffice), 'Microsoft Outlook Message'],
1539
+ 'application/vnd.ms-outlook-pst' => [%w(pst ost), %w(), 'Outlook Personal Folders File Format'],
1540
+ 'application/vnd.ms-pki.seccat' => [%w(cat), %w(), nil],
1541
+ 'application/vnd.ms-pki.stl' => [%w(stl), %w(), nil],
1542
+ 'application/vnd.ms-powerpoint' => [%w(ppt ppz pps pot ppa), %w(application/x-tika-msoffice), 'Microsoft Powerpoint Presentation'],
1543
+ 'application/vnd.ms-powerpoint.addin.macroenabled.12' => [%w(ppam), %w(application/x-tika-ooxml), 'Office Open XML Presentation Add-in (macro-enabled)'],
1544
+ 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => [%w(pptm), %w(application/x-tika-ooxml), 'Office Open XML Presentation (macro-enabled)'],
1545
+ 'application/vnd.ms-powerpoint.slide.macroenabled.12' => [%w(sldm), %w(application/x-tika-ooxml), nil],
1546
+ 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => [%w(ppsm), %w(application/x-tika-ooxml), 'Office Open XML Presentation Slideshow (macro-enabled)'],
1547
+ 'application/vnd.ms-powerpoint.template.macroenabled.12' => [%w(potm), %w(application/x-tika-ooxml), nil],
1548
+ 'application/vnd.ms-project' => [%w(mpp mpt), %w(application/x-tika-msoffice), nil],
1549
+ 'application/vnd.ms-visio.drawing' => [%w(vsdx), %w(application/x-tika-visio-ooxml), 'Office Open XML Visio Drawing (macro-free)'],
1550
+ 'application/vnd.ms-visio.drawing.macroEnabled.12' => [%w(vsdm), %w(application/x-tika-visio-ooxml), 'Office Open XML Visio Drawing (macro-enabled)'],
1551
+ 'application/vnd.ms-visio.stencil' => [%w(vssx), %w(application/x-tika-visio-ooxml), 'Office Open XML Visio Stencil (macro-free)'],
1552
+ 'application/vnd.ms-visio.stencil.macroEnabled.12' => [%w(vssm), %w(application/x-tika-visio-ooxml), 'Office Open XML Visio Stencil (macro-enabled)'],
1553
+ 'application/vnd.ms-visio.template' => [%w(vstx), %w(application/x-tika-visio-ooxml), 'Office Open XML Visio Template (macro-free)'],
1554
+ 'application/vnd.ms-visio.template.macroEnabled.12' => [%w(vstm), %w(application/x-tika-visio-ooxml), 'Office Open XML Visio Template (macro-enabled)'],
1555
+ 'application/vnd.ms-word.document.macroenabled.12' => [%w(docm), %w(application/x-tika-ooxml), 'Office Open XML Document (macro-enabled)'],
1556
+ 'application/vnd.ms-word.template.macroenabled.12' => [%w(dotm), %w(application/x-tika-ooxml), 'Office Open XML Document Template (macro-enabled)'],
1557
+ 'application/vnd.ms-works' => [%w(wps wks wcm wdb), %w(application/x-tika-msoffice), nil],
1558
+ 'application/vnd.ms-wpl' => [%w(wpl), %w(), nil],
1559
+ 'application/vnd.ms-xpsdocument' => [%w(xps oxps), %w(application/x-tika-ooxml), 'Open XML Paper Specification'],
1560
+ 'application/vnd.mseq' => [%w(mseq), %w(), nil],
1561
+ 'application/vnd.musician' => [%w(mus), %w(), nil],
1562
+ 'application/vnd.muvee.style' => [%w(msty), %w(), nil],
1563
+ 'application/vnd.neurolanguage.nlu' => [%w(nlu), %w(), nil],
1564
+ 'application/vnd.noblenet-directory' => [%w(nnd), %w(), nil],
1565
+ 'application/vnd.noblenet-sealer' => [%w(nns), %w(), nil],
1566
+ 'application/vnd.noblenet-web' => [%w(nnw), %w(), nil],
1567
+ 'application/vnd.nokia.n-gage.data' => [%w(ngdat), %w(), nil],
1568
+ 'application/vnd.nokia.n-gage.symbian.install' => [%w(n-gage), %w(), nil],
1569
+ 'application/vnd.nokia.radio-preset' => [%w(rpst), %w(), nil],
1570
+ 'application/vnd.nokia.radio-presets' => [%w(rpss), %w(), nil],
1571
+ 'application/vnd.novadigm.edm' => [%w(edm), %w(), nil],
1572
+ 'application/vnd.novadigm.edx' => [%w(edx), %w(), nil],
1573
+ 'application/vnd.novadigm.ext' => [%w(ext), %w(), nil],
1574
+ 'application/vnd.oasis.opendocument.base' => [%w(odb), %w(), nil],
1575
+ 'application/vnd.oasis.opendocument.chart' => [%w(odc), %w(), 'OpenDocument v1.0: Chart document'],
1576
+ 'application/vnd.oasis.opendocument.chart-template' => [%w(otc), %w(), 'OpenDocument v1.0: Chart document used as template'],
1577
+ 'application/vnd.oasis.opendocument.flat.presentation' => [%w(fodp), %w(application/vnd.oasis.opendocument.tika.flat.document), 'OpenDocument v1.0: Flat Presentation document'],
1578
+ 'application/vnd.oasis.opendocument.flat.spreadsheet' => [%w(fods), %w(application/vnd.oasis.opendocument.tika.flat.document), 'OpenDocument v1.0: Flat Spreadsheet document'],
1579
+ 'application/vnd.oasis.opendocument.flat.text' => [%w(fodt), %w(application/vnd.oasis.opendocument.tika.flat.document), 'OpenDocument v1.0: Flat Text document'],
1580
+ 'application/vnd.oasis.opendocument.formula' => [%w(odf), %w(application/zip), 'OpenDocument v1.0: Formula document'],
1581
+ 'application/vnd.oasis.opendocument.formula-template' => [%w(odft), %w(), 'OpenDocument v1.0: Formula document used as template'],
1582
+ 'application/vnd.oasis.opendocument.graphics' => [%w(odg), %w(), 'OpenDocument v1.0: Graphics document (Drawing)'],
1583
+ 'application/vnd.oasis.opendocument.graphics-template' => [%w(otg), %w(), 'OpenDocument v1.0: Graphics document used as template'],
1584
+ 'application/vnd.oasis.opendocument.image' => [%w(odi), %w(), 'OpenDocument v1.0: Image document'],
1585
+ 'application/vnd.oasis.opendocument.image-template' => [%w(oti), %w(), 'OpenDocument v1.0: Image document used as template'],
1586
+ 'application/vnd.oasis.opendocument.presentation' => [%w(odp), %w(), 'OpenDocument v1.0: Presentation document'],
1587
+ 'application/vnd.oasis.opendocument.presentation-template' => [%w(otp), %w(), 'OpenDocument v1.0: Presentation document used as template'],
1588
+ 'application/vnd.oasis.opendocument.spreadsheet' => [%w(ods), %w(), 'OpenDocument v1.0: Spreadsheet document'],
1589
+ 'application/vnd.oasis.opendocument.spreadsheet-template' => [%w(ots), %w(), 'OpenDocument v1.0: Spreadsheet document used as template'],
1590
+ 'application/vnd.oasis.opendocument.text' => [%w(odt), %w(), 'OpenDocument v1.0: Text document'],
1591
+ 'application/vnd.oasis.opendocument.text-master' => [%w(otm), %w(), 'OpenDocument v1.0: Global Text document'],
1592
+ 'application/vnd.oasis.opendocument.text-template' => [%w(ott), %w(), 'OpenDocument v1.0: Text document used as template'],
1593
+ 'application/vnd.oasis.opendocument.text-web' => [%w(oth), %w(), 'OpenDocument v1.0: Text document used as template for HTML documents'],
1594
+ 'application/vnd.olpc-sugar' => [%w(xo), %w(), nil],
1595
+ 'application/vnd.oma.dd2+xml' => [%w(dd2), %w(), nil],
1596
+ 'application/vnd.openofficeorg.autotext' => [%w(bau), %w(application/zip), nil],
1597
+ 'application/vnd.openofficeorg.extension' => [%w(oxt), %w(), nil],
1598
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => [%w(pptx thmx), %w(application/x-tika-ooxml), 'Office Open XML Presentation'],
1599
+ 'application/vnd.openxmlformats-officedocument.presentationml.slide' => [%w(sldx), %w(application/x-tika-ooxml), nil],
1600
+ 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => [%w(ppsx), %w(application/x-tika-ooxml), 'Office Open XML Presentation Slideshow'],
1601
+ 'application/vnd.openxmlformats-officedocument.presentationml.template' => [%w(potx), %w(application/x-tika-ooxml), 'Office Open XML Presentation Template'],
1602
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => [%w(xlsx), %w(application/x-tika-ooxml), 'Office Open XML Workbook'],
1603
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => [%w(xltx), %w(application/x-tika-ooxml), 'Office Open XML Workbook Template'],
1604
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => [%w(docx), %w(application/x-tika-ooxml), 'Office Open XML Document'],
1605
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => [%w(dotx), %w(application/x-tika-ooxml), 'Office Open XML Document Template'],
1606
+ 'application/vnd.osgi.dp' => [%w(dp), %w(), nil],
1607
+ 'application/vnd.palm' => [%w(pqa oprc), %w(), nil],
1608
+ 'application/vnd.pg.format' => [%w(str), %w(), nil],
1609
+ 'application/vnd.pg.osasli' => [%w(ei6), %w(), nil],
1610
+ 'application/vnd.picsel' => [%w(efif), %w(), nil],
1611
+ 'application/vnd.pocketlearn' => [%w(plf), %w(), nil],
1612
+ 'application/vnd.powerbuilder6' => [%w(pbd), %w(), nil],
1613
+ 'application/vnd.previewsystems.box' => [%w(box), %w(), nil],
1614
+ 'application/vnd.proteus.magazine' => [%w(mgz), %w(), nil],
1615
+ 'application/vnd.publishare-delta-tree' => [%w(qps), %w(), nil],
1616
+ 'application/vnd.pvi.ptid1' => [%w(ptid), %w(), nil],
1617
+ 'application/vnd.quark.quarkxpress' => [%w(qxd qxt qwd qwt qxl qxb), %w(), nil],
1618
+ 'application/vnd.recordare.musicxml' => [%w(mxl), %w(), nil],
1619
+ 'application/vnd.recordare.musicxml+xml' => [%w(musicxml), %w(), nil],
1620
+ 'application/vnd.rim.cod' => [%w(cod), %w(), nil],
1621
+ 'application/vnd.rn-realmedia' => [%w(rm), %w(), nil],
1622
+ 'application/vnd.route66.link66+xml' => [%w(link66), %w(), nil],
1623
+ 'application/vnd.seemail' => [%w(see), %w(), nil],
1624
+ 'application/vnd.sema' => [%w(sema), %w(), nil],
1625
+ 'application/vnd.semd' => [%w(semd), %w(), nil],
1626
+ 'application/vnd.semf' => [%w(semf), %w(), nil],
1627
+ 'application/vnd.shana.informed.formdata' => [%w(ifm), %w(), nil],
1628
+ 'application/vnd.shana.informed.formtemplate' => [%w(itp), %w(), nil],
1629
+ 'application/vnd.shana.informed.interchange' => [%w(iif), %w(), nil],
1630
+ 'application/vnd.shana.informed.package' => [%w(ipk), %w(), nil],
1631
+ 'application/vnd.simtech-mindmapper' => [%w(twd twds), %w(), nil],
1632
+ 'application/vnd.smaf' => [%w(mmf), %w(), nil],
1633
+ 'application/vnd.smart.teacher' => [%w(teacher), %w(), nil],
1634
+ 'application/vnd.solent.sdkm+xml' => [%w(sdkm sdkd), %w(), nil],
1635
+ 'application/vnd.spotfire.dxp' => [%w(dxp), %w(), nil],
1636
+ 'application/vnd.spotfire.sfs' => [%w(sfs), %w(), nil],
1637
+ 'application/vnd.stardivision.calc' => [%w(sdc), %w(application/x-tika-staroffice), nil],
1638
+ 'application/vnd.stardivision.draw' => [%w(sda), %w(application/x-tika-staroffice), nil],
1639
+ 'application/vnd.stardivision.impress' => [%w(sdd), %w(application/x-tika-staroffice), nil],
1640
+ 'application/vnd.stardivision.math' => [%w(smf), %w(), nil],
1641
+ 'application/vnd.stardivision.writer' => [%w(sdw), %w(application/x-tika-staroffice), nil],
1642
+ 'application/vnd.stardivision.writer-global' => [%w(sgl), %w(), nil],
1643
+ 'application/vnd.sun.xml.calc' => [%w(sxc), %w(), nil],
1644
+ 'application/vnd.sun.xml.calc.template' => [%w(stc), %w(), nil],
1645
+ 'application/vnd.sun.xml.draw' => [%w(sxd), %w(), nil],
1646
+ 'application/vnd.sun.xml.draw.template' => [%w(std), %w(), nil],
1647
+ 'application/vnd.sun.xml.impress' => [%w(sxi), %w(), nil],
1648
+ 'application/vnd.sun.xml.impress.template' => [%w(sti), %w(), nil],
1649
+ 'application/vnd.sun.xml.math' => [%w(sxm), %w(), nil],
1650
+ 'application/vnd.sun.xml.writer' => [%w(sxw), %w(), 'OpenOffice v1.0: Writer Document'],
1651
+ 'application/vnd.sun.xml.writer.global' => [%w(sxg), %w(), nil],
1652
+ 'application/vnd.sun.xml.writer.template' => [%w(stw), %w(), nil],
1653
+ 'application/vnd.sus-calendar' => [%w(sus susp), %w(), nil],
1654
+ 'application/vnd.svd' => [%w(svd), %w(), nil],
1655
+ 'application/vnd.symbian.install' => [%w(sis sisx), %w(), nil],
1656
+ 'application/vnd.syncml+xml' => [%w(xsm), %w(), nil],
1657
+ 'application/vnd.syncml.dm+wbxml' => [%w(bdm), %w(), nil],
1658
+ 'application/vnd.syncml.dm+xml' => [%w(xdm), %w(), nil],
1659
+ 'application/vnd.tao.intent-module-archive' => [%w(tao), %w(), nil],
1660
+ 'application/vnd.tcpdump.pcap' => [%w(pcap cap dmp), %w(), 'TCPDump pcap packet capture'],
1661
+ 'application/vnd.tmobile-livetv' => [%w(tmo), %w(), nil],
1662
+ 'application/vnd.trid.tpt' => [%w(tpt), %w(), nil],
1663
+ 'application/vnd.triscape.mxs' => [%w(mxs), %w(), nil],
1664
+ 'application/vnd.trueapp' => [%w(tra), %w(), nil],
1665
+ 'application/vnd.ufdl' => [%w(ufd ufdl), %w(), nil],
1666
+ 'application/vnd.uiq.theme' => [%w(utz), %w(), nil],
1667
+ 'application/vnd.umajin' => [%w(umj), %w(), nil],
1668
+ 'application/vnd.unity' => [%w(unityweb), %w(), nil],
1669
+ 'application/vnd.uoml+xml' => [%w(uoml), %w(), nil],
1670
+ 'application/vnd.vcx' => [%w(vcx), %w(), nil],
1671
+ 'application/vnd.visio' => [%w(vsd vst vss vsw), %w(application/x-tika-msoffice), 'Microsoft Visio Diagram'],
1672
+ 'application/vnd.visionary' => [%w(vis), %w(), nil],
1673
+ 'application/vnd.vsf' => [%w(vsf), %w(), nil],
1674
+ 'application/vnd.wap.wbxml' => [%w(wbxml), %w(), nil],
1675
+ 'application/vnd.wap.wmlc' => [%w(wmlc), %w(), 'Compiled WML Document'],
1676
+ 'application/vnd.wap.wmlscriptc' => [%w(wmlsc), %w(), 'Compiled WML Script'],
1677
+ 'application/vnd.webturbo' => [%w(wtb), %w(), nil],
1678
+ 'application/vnd.wolfram.wl' => [%w(wl), %w(application/mathematica), 'Wolfram Language'],
1679
+ 'application/vnd.wordperfect' => [%w(wpd wp wp5 wp6 w60 wp61 wpt), %w(), 'WordPerfect - Corel Word Processing'],
1680
+ 'application/vnd.wqd' => [%w(wqd), %w(), nil],
1681
+ 'application/vnd.wt.stf' => [%w(stf), %w(), nil],
1682
+ 'application/vnd.xara' => [%w(xar), %w(), nil],
1683
+ 'application/vnd.xfdl' => [%w(xfdl), %w(), nil],
1684
+ 'application/vnd.yamaha.hv-dic' => [%w(hvd), %w(), nil],
1685
+ 'application/vnd.yamaha.hv-script' => [%w(hvs), %w(), nil],
1686
+ 'application/vnd.yamaha.hv-voice' => [%w(hvp), %w(), nil],
1687
+ 'application/vnd.yamaha.openscoreformat' => [%w(osf), %w(), nil],
1688
+ 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => [%w(osfpvg), %w(), nil],
1689
+ 'application/vnd.yamaha.smaf-audio' => [%w(saf), %w(), nil],
1690
+ 'application/vnd.yamaha.smaf-phrase' => [%w(spf), %w(), nil],
1691
+ 'application/vnd.yellowriver-custom-menu' => [%w(cmp), %w(), nil],
1692
+ 'application/vnd.zul' => [%w(zir zirz), %w(), nil],
1693
+ 'application/vnd.zzazz.deck+xml' => [%w(zaz), %w(), nil],
1694
+ 'application/voicexml+xml' => [%w(vxml), %w(), nil],
1695
+ 'application/warc' => [%w(warc), %w(), 'WARC'],
1696
+ 'application/wasm' => [%w(wasm), %w(), 'Web Assembly'],
1697
+ 'application/winhlp' => [%w(hlp), %w(), nil],
1698
+ 'application/wsdl+xml' => [%w(wsdl), %w(), nil],
1699
+ 'application/wspolicy+xml' => [%w(wspolicy), %w(), nil],
1700
+ 'application/x-7z-compressed' => [%w(7z), %w(), '7-zip archive'],
1701
+ 'application/x-abiword' => [%w(abw), %w(), nil],
1702
+ 'application/x-ace-compressed' => [%w(ace), %w(), nil],
1703
+ 'application/x-adobe-indesign' => [%w(indd), %w(), 'Adobe InDesign document'],
1704
+ 'application/x-adobe-indesign-interchange' => [%w(inx), %w(application/xml), 'Adobe InDesign Interchange format'],
1705
+ 'application/x-apple-diskimage' => [%w(dmg), %w(), nil],
1706
+ 'application/x-appleworks' => [%w(cwk), %w(), nil],
1707
+ 'application/x-archive' => [%w(ar a), %w(), nil],
1708
+ 'application/x-arj' => [%w(arj), %w(), nil],
1709
+ 'application/x-authorware-bin' => [%w(aab x32 u32 vox), %w(), nil],
1710
+ 'application/x-authorware-map' => [%w(aam), %w(), nil],
1711
+ 'application/x-authorware-seg' => [%w(aas), %w(), nil],
1712
+ 'application/x-axcrypt' => [%w(axx), %w(), 'AxCrypt'],
1713
+ 'application/x-bat' => [%w(bat cmd), %w(text/plain), 'Windows Batch / Command File'],
1714
+ 'application/x-bcpio' => [%w(bcpio), %w(), nil],
1715
+ 'application/x-bibtex-text-file' => [%w(bib bibtex), %w(text/plain), nil],
1716
+ 'application/x-bittorrent' => [%w(torrent), %w(), nil],
1717
+ 'application/x-brotli' => [%w(br brotli), %w(), nil],
1718
+ 'application/x-bzip' => [%w(bz tbz), %w(), nil],
1719
+ 'application/x-bzip2' => [%w(bz2 tbz2 boz), %w(application/x-bzip), 'Bzip 2 UNIX Compressed File'],
1720
+ 'application/x-cdlink' => [%w(vcd), %w(), 'Virtual CD-ROM CD Image File'],
1721
+ 'application/x-chat' => [%w(chat), %w(), nil],
1722
+ 'application/x-chess-pgn' => [%w(pgn), %w(), nil],
1723
+ 'application/x-chrome-package' => [%w(crx), %w(), 'Chrome Extension Package'],
1724
+ 'application/x-compress' => [%w(z), %w(), nil],
1725
+ 'application/x-corelpresentations' => [%w(shw), %w(application/x-tika-msoffice), nil],
1726
+ 'application/x-cpio' => [%w(cpio), %w(), 'UNIX CPIO Archive'],
1727
+ 'application/x-csh' => [%w(csh tcsh), %w(), nil],
1728
+ 'application/x-dbf' => [%w(dbf dbase dbase3), %w(), nil],
1729
+ 'application/x-debian-package' => [%w(deb udeb), %w(application/x-archive), nil],
1730
+ 'application/x-dex' => [%w(dex), %w(), 'Dalvik Executable Format'],
1731
+ 'application/x-director' => [%w(dir dcr dxr cst cct cxt w3d fgd swa), %w(), 'Shockwave Movie'],
1732
+ 'application/x-doom' => [%w(wad), %w(), nil],
1733
+ 'application/x-dosexec' => [%w(exe), %w(application/x-msdownload), 'DOS/Windows executable (EXE)'],
1734
+ 'application/x-dtbncx+xml' => [%w(ncx), %w(), nil],
1735
+ 'application/x-dtbook+xml' => [%w(dtb), %w(), nil],
1736
+ 'application/x-dtbresource+xml' => [%w(res), %w(), nil],
1737
+ 'application/x-dvi' => [%w(dvi), %w(), 'TeX Device Independent Document'],
1738
+ 'application/x-elc' => [%w(elc), %w(), 'Emacs Lisp bytecode'],
1739
+ 'application/x-endnote-refer' => [%w(enw enr), %w(), nil],
1740
+ 'application/x-erdas-hfa' => [%w(hfa), %w(), nil],
1741
+ 'application/x-fictionbook+xml' => [%w(fb2), %w(application/xml), 'FictionBook document'],
1742
+ 'application/x-filemaker' => [%w(fp7), %w(), 'FileMaker Pro 7'],
1743
+ 'application/x-font-adobe-metric' => [%w(afm acfm amfm), %w(), 'Adobe Font Metric'],
1744
+ 'application/x-font-bdf' => [%w(bdf), %w(), nil],
1745
+ 'application/x-font-ghostscript' => [%w(gsf), %w(), nil],
1746