Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Plack for openSUSE:Factory 
checked in at 2026-06-13 18:47:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Plack (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Plack.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Plack"

Sat Jun 13 18:47:47 2026 rev:14 rq:1359051 version:1.0054

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Plack/perl-Plack.changes    2024-03-08 
18:08:45.537183636 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Plack.new.1981/perl-Plack.changes  
2026-06-13 18:49:46.375500283 +0200
@@ -1,0 +2,23 @@
+Tue May  5 07:33:15 UTC 2026 - Tina Müller <[email protected]>
+
+- updated to 1.0054
+   see /usr/share/doc/packages/perl-Plack/Changes
+
+  1.0054  2026-05-04 23:38:13 PDT
+      [BUG FIXES]
+          - Revert Plack::App::File REQUEST_METHOD check after locating file 
due to regression #725
+  1.0053  2026-04-28 15:59:58 PDT
+      [DEPRECATIONS]
+          - Plack::Middleware::XSendfile is deprecated due to security design 
issues; see POD for migration examples
+      [BUG FIXES]
+          - Plack::App::File now checks REQUEST_METHOD after locating the file 
#681
+  1.0052  2026-04-27 12:59:19 PDT
+      [BUG FIXES]
+          - stat already open filehandle rather than filename in 
Plack::App::File #716
+      [IMPROVEMENTS]
+          - Updated MIME type list in Plack::MIME sourced from rack/rack #706
+          - Avoid try block just for checking $object->isa in 
HTTP::Message::PSGI #712
+          - Remove the last remaining uses of base.pm #707
+          - Document security trust model and frontend configuration for 
XSendfile middleware
+
+-------------------------------------------------------------------

Old:
----
  Plack-1.0051.tar.gz

New:
----
  Plack-1.0054.tar.gz
  README.md
  _scmsync.obsinfo
  build.specials.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Plack.spec ++++++
--- /var/tmp/diff_new_pack.ZoQQ3s/_old  2026-06-13 18:49:46.967524878 +0200
+++ /var/tmp/diff_new_pack.ZoQQ3s/_new  2026-06-13 18:49:46.967524878 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Plack
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,54 +18,55 @@
 
 %define cpan_name Plack
 Name:           perl-Plack
-Version:        1.0051
+Version:        1.0054
 Release:        0
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Perl Superglue for Web frameworks and Web Servers (PSGI 
toolkit)
 URL:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/%{cpan_name}-%{version}.tar.gz
 Source1:        cpanspec.yml
+Source100:      README.md
 BuildArch:      noarch
 BuildRequires:  perl
 BuildRequires:  perl-macros
-BuildRequires:  perl(Apache::LogFormat::Compiler) >= 0.33
-BuildRequires:  perl(Cookie::Baker) >= 0.07
-BuildRequires:  perl(Devel::StackTrace) >= 1.23
-BuildRequires:  perl(Devel::StackTrace::AsHTML) >= 0.11
-BuildRequires:  perl(File::ShareDir) >= 1.00
-BuildRequires:  perl(File::ShareDir::Install) >= 0.06
+BuildRequires:  perl(Apache::LogFormat::Compiler) >= 0.330
+BuildRequires:  perl(Cookie::Baker) >= 0.70
+BuildRequires:  perl(Devel::StackTrace) >= 1.230
+BuildRequires:  perl(Devel::StackTrace::AsHTML) >= 0.110
+BuildRequires:  perl(File::ShareDir) >= 1.0
+BuildRequires:  perl(File::ShareDir::Install) >= 0.60
 BuildRequires:  perl(Filesys::Notify::Simple)
-BuildRequires:  perl(HTTP::Entity::Parser) >= 0.25
-BuildRequires:  perl(HTTP::Headers::Fast) >= 0.18
+BuildRequires:  perl(HTTP::Entity::Parser) >= 0.250
+BuildRequires:  perl(HTTP::Headers::Fast) >= 0.180
 BuildRequires:  perl(HTTP::Message) >= 5.814
 BuildRequires:  perl(HTTP::Tiny) >= 0.034
-BuildRequires:  perl(Hash::MultiValue) >= 0.05
+BuildRequires:  perl(Hash::MultiValue) >= 0.50
 BuildRequires:  perl(Pod::Usage) >= 1.36
-BuildRequires:  perl(Stream::Buffered) >= 0.02
+BuildRequires:  perl(Stream::Buffered) >= 0.20
 BuildRequires:  perl(Test::More) >= 0.88
 BuildRequires:  perl(Test::Requires)
-BuildRequires:  perl(Test::TCP) >= 2.15
+BuildRequires:  perl(Test::TCP) >= 2.150
 BuildRequires:  perl(Try::Tiny)
-BuildRequires:  perl(URI) >= 1.59
-BuildRequires:  perl(WWW::Form::UrlEncoded) >= 0.23
+BuildRequires:  perl(URI) >= 1.590
+BuildRequires:  perl(WWW::Form::UrlEncoded) >= 0.230
 BuildRequires:  perl(parent)
-Requires:       perl(Apache::LogFormat::Compiler) >= 0.33
-Requires:       perl(Cookie::Baker) >= 0.07
-Requires:       perl(Devel::StackTrace) >= 1.23
-Requires:       perl(Devel::StackTrace::AsHTML) >= 0.11
-Requires:       perl(File::ShareDir) >= 1.00
+Requires:       perl(Apache::LogFormat::Compiler) >= 0.330
+Requires:       perl(Cookie::Baker) >= 0.70
+Requires:       perl(Devel::StackTrace) >= 1.230
+Requires:       perl(Devel::StackTrace::AsHTML) >= 0.110
+Requires:       perl(File::ShareDir) >= 1.0
 Requires:       perl(Filesys::Notify::Simple)
-Requires:       perl(HTTP::Entity::Parser) >= 0.25
-Requires:       perl(HTTP::Headers::Fast) >= 0.18
+Requires:       perl(HTTP::Entity::Parser) >= 0.250
+Requires:       perl(HTTP::Headers::Fast) >= 0.180
 Requires:       perl(HTTP::Message) >= 5.814
 Requires:       perl(HTTP::Tiny) >= 0.034
-Requires:       perl(Hash::MultiValue) >= 0.05
+Requires:       perl(Hash::MultiValue) >= 0.50
 Requires:       perl(Pod::Usage) >= 1.36
-Requires:       perl(Stream::Buffered) >= 0.02
-Requires:       perl(Test::TCP) >= 2.15
+Requires:       perl(Stream::Buffered) >= 0.20
+Requires:       perl(Test::TCP) >= 2.150
 Requires:       perl(Try::Tiny)
-Requires:       perl(URI) >= 1.59
-Requires:       perl(WWW::Form::UrlEncoded) >= 0.23
+Requires:       perl(URI) >= 1.590
+Requires:       perl(WWW::Form::UrlEncoded) >= 0.230
 Requires:       perl(parent)
 %{perl_requires}
 
@@ -78,7 +79,7 @@
 Plack are and why we need them.
 
 %prep
-%autosetup  -n %{cpan_name}-%{version}
+%autosetup -n %{cpan_name}-%{version} -p1
 
 find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path 
"*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 
644
 

++++++ Plack-1.0051.tar.gz -> Plack-1.0054.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/Changes new/Plack-1.0054/Changes
--- old/Plack-1.0051/Changes    2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/Changes    2026-05-05 08:38:14.000000000 +0200
@@ -1,5 +1,26 @@
 Go to http://github.com/plack/Plack/issues for the roadmap and known issues.
 
+1.0054  2026-05-04 23:38:13 PDT
+    [BUG FIXES]
+        - Revert Plack::App::File REQUEST_METHOD check after locating file due 
to regression #725
+
+1.0053  2026-04-28 15:59:58 PDT
+    [DEPRECATIONS]
+        - Plack::Middleware::XSendfile is deprecated due to security design 
issues; see POD for migration examples
+
+    [BUG FIXES]
+        - Plack::App::File now checks REQUEST_METHOD after locating the file 
#681
+
+1.0052  2026-04-27 12:59:19 PDT
+    [BUG FIXES]
+        - stat already open filehandle rather than filename in 
Plack::App::File #716
+
+    [IMPROVEMENTS]
+        - Updated MIME type list in Plack::MIME sourced from rack/rack #706
+        - Avoid try block just for checking $object->isa in 
HTTP::Message::PSGI #712
+        - Remove the last remaining uses of base.pm #707
+        - Document security trust model and frontend configuration for 
XSendfile middleware
+
 1.0051  2024-01-05 15:09:37 PST
     [BUG FIXES]
         - Fix a bug where $req->headers can pick up non-PSGI header values 
from environment #703
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/META.json new/Plack-1.0054/META.json
--- old/Plack-1.0051/META.json  2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/META.json  2026-05-05 08:38:14.000000000 +0200
@@ -4,7 +4,7 @@
       "Tatsuhiko Miyagawa"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Milla version v1.0.22, Dist::Zilla version 6.025, 
CPAN::Meta::Converter version 2.150010",
+   "generated_by" : "Dist::Milla version v1.0.22, Dist::Zilla version 6.025, 
CPAN::Meta::Converter version 2.150013",
    "license" : [
       "perl_5"
    ],
@@ -102,7 +102,7 @@
          "web" : "https://github.com/plack/Plack";
       }
    },
-   "version" : "1.0051",
+   "version" : "1.0054",
    "x_authority" : "cpan:MIYAGAWA",
    "x_contributors" : [
       "Aaron Trevena <[email protected]>",
@@ -119,6 +119,7 @@
       "Asato Wakisaka <[email protected]>",
       "Ashley Pond V <[email protected]>",
       "Ask Bj\u00f8rn Hansen <[email protected]>",
+      "bbrtj <[email protected]>",
       "ben hengst <[email protected]>",
       "Ben Morrow <[email protected]>",
       "Bernhard Graf <[email protected]>",
@@ -185,6 +186,7 @@
       "Mark Stosberg <[email protected]>",
       "Masahiro Chiba <[email protected]>",
       "Masahiro Nagano <[email protected]>",
+      "Maurice Aubrey <[email protected]>",
       "Michael G. Schwern <[email protected]>",
       "Michael R. Davis <[email protected]>",
       "Michal Josef \u0160pa\u010dek <[email protected]>",
@@ -192,6 +194,7 @@
       "Narsimham Chelluri <[email protected]>",
       "Narsimham Chelluri <[email protected]>",
       "Nick Wellnhofer <[email protected]>",
+      "Nitesh Yadav <[email protected]>",
       "Nobuo Danjou <[email protected]>",
       "Olaf Alders <[email protected]>",
       "Oliver Gorwits <[email protected]>",
@@ -209,6 +212,7 @@
       "punytan <[email protected]>",
       "Rafael Kitover <[email protected]>",
       "Randy Stauner <[email protected]>",
+      "Rawley <[email protected]>",
       "Ray Miller <[email protected]>",
       "Richard Sim\u00f5es <[email protected]>",
       "Ricky Morse <[email protected]>",
@@ -241,6 +245,7 @@
       "xaicron <[email protected]>",
       "Yann Kerherve <[email protected]>",
       "yappo <[email protected]>",
+      "Yoshikazu Sawa <[email protected]>",
       "Yury Zavarin <[email protected]>",
       "Yuval Kogman <[email protected]>",
       "\u5510\u9cf3 <[email protected]>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/META.yml new/Plack-1.0054/META.yml
--- old/Plack-1.0051/META.yml   2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/META.yml   2026-05-05 08:38:14.000000000 +0200
@@ -9,7 +9,7 @@
   ExtUtils::MakeMaker: '0'
   File::ShareDir::Install: '0.06'
 dynamic_config: 0
-generated_by: 'Dist::Milla version v1.0.22, Dist::Zilla version 6.025, 
CPAN::Meta::Converter version 2.150010'
+generated_by: 'Dist::Milla version v1.0.22, Dist::Zilla version 6.025, 
CPAN::Meta::Converter version 2.150013'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -47,7 +47,7 @@
   bugtracker: https://github.com/plack/Plack/issues
   homepage: https://github.com/plack/Plack
   repository: https://github.com/plack/Plack.git
-version: '1.0051'
+version: '1.0054'
 x_authority: cpan:MIYAGAWA
 x_contributors:
   - 'Aaron Trevena <[email protected]>'
@@ -64,6 +64,7 @@
   - 'Asato Wakisaka <[email protected]>'
   - 'Ashley Pond V <[email protected]>'
   - 'Ask Bjørn Hansen <[email protected]>'
+  - 'bbrtj <[email protected]>'
   - 'ben hengst <[email protected]>'
   - 'Ben Morrow <[email protected]>'
   - 'Bernhard Graf <[email protected]>'
@@ -130,6 +131,7 @@
   - 'Mark Stosberg <[email protected]>'
   - 'Masahiro Chiba <[email protected]>'
   - 'Masahiro Nagano <[email protected]>'
+  - 'Maurice Aubrey <[email protected]>'
   - 'Michael G. Schwern <[email protected]>'
   - 'Michael R. Davis <[email protected]>'
   - 'Michal Josef Špaček <[email protected]>'
@@ -137,6 +139,7 @@
   - 'Narsimham Chelluri <[email protected]>'
   - 'Narsimham Chelluri <[email protected]>'
   - 'Nick Wellnhofer <[email protected]>'
+  - 'Nitesh Yadav <[email protected]>'
   - 'Nobuo Danjou <[email protected]>'
   - 'Olaf Alders <[email protected]>'
   - 'Oliver Gorwits <[email protected]>'
@@ -154,6 +157,7 @@
   - 'punytan <[email protected]>'
   - 'Rafael Kitover <[email protected]>'
   - 'Randy Stauner <[email protected]>'
+  - 'Rawley <[email protected]>'
   - 'Ray Miller <[email protected]>'
   - 'Richard Simões <[email protected]>'
   - 'Ricky Morse <[email protected]>'
@@ -186,10 +190,11 @@
   - 'xaicron <[email protected]>'
   - 'Yann Kerherve <[email protected]>'
   - 'yappo <[email protected]>'
+  - 'Yoshikazu Sawa <[email protected]>'
   - 'Yury Zavarin <[email protected]>'
   - 'Yuval Kogman <[email protected]>'
   - '唐鳳 <[email protected]>'
 x_generated_by_perl: v5.34.1
-x_serialization_backend: 'YAML::Tiny version 1.73'
+x_serialization_backend: 'YAML::Tiny version 1.76'
 x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later'
 x_static_install: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/Makefile.PL new/Plack-1.0054/Makefile.PL
--- old/Plack-1.0051/Makefile.PL        2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/Makefile.PL        2026-05-05 08:38:14.000000000 +0200
@@ -50,7 +50,7 @@
     "Test::More" => "0.88",
     "Test::Requires" => 0
   },
-  "VERSION" => "1.0051",
+  "VERSION" => "1.0054",
   "test" => {
     "TESTS" => "t/*.t t/HTTP-Message-PSGI/*.t t/HTTP-Server-PSGI/*.t 
t/Plack-Builder/*.t t/Plack-HTTPParser-PP/*.t t/Plack-Handler/*.t 
t/Plack-Loader/*.t t/Plack-MIME/*.t t/Plack-Middleware/*.t 
t/Plack-Middleware/cascade/*.t t/Plack-Middleware/recursive/*.t 
t/Plack-Middleware/stacktrace/*.t t/Plack-Request/*.t t/Plack-Response/*.t 
t/Plack-Runner/*.t t/Plack-TempBuffer/*.t t/Plack-Test/*.t t/Plack-Util/*.t"
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/HTTP/Message/PSGI.pm 
new/Plack-1.0054/lib/HTTP/Message/PSGI.pm
--- old/Plack-1.0051/lib/HTTP/Message/PSGI.pm   2024-01-06 00:09:39.000000000 
+0100
+++ new/Plack-1.0054/lib/HTTP/Message/PSGI.pm   2026-05-05 08:38:14.000000000 
+0200
@@ -8,7 +8,7 @@
 use HTTP::Status qw(status_message);
 use URI::Escape ();
 use Plack::Util;
-use Try::Tiny;
+use Scalar::Util ();
 
 my $TRUE  = (1 == 1);
 my $FALSE = !$TRUE;
@@ -16,7 +16,7 @@
 sub req_to_psgi {
     my $req = shift;
 
-    unless (try { $req->isa('HTTP::Request') }) {
+    unless (Scalar::Util::blessed($req) && $req->isa('HTTP::Request')) {
         Carp::croak("Request is not HTTP::Request: $req");
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/App/Cascade.pm 
new/Plack-1.0054/lib/Plack/App/Cascade.pm
--- old/Plack-1.0051/lib/Plack/App/Cascade.pm   2024-01-06 00:09:39.000000000 
+0100
+++ new/Plack-1.0054/lib/Plack/App/Cascade.pm   2026-05-05 08:38:14.000000000 
+0200
@@ -1,6 +1,6 @@
 package Plack::App::Cascade;
 use strict;
-use base qw(Plack::Component);
+use parent qw(Plack::Component);
 
 use Plack::Util;
 use Plack::Util::Accessor qw(apps catch codes);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/App/File.pm 
new/Plack-1.0054/lib/Plack/App/File.pm
--- old/Plack-1.0051/lib/Plack/App/File.pm      2024-01-06 00:09:39.000000000 
+0100
+++ new/Plack-1.0054/lib/Plack/App/File.pm      2026-05-05 08:38:14.000000000 
+0200
@@ -97,7 +97,7 @@
     open my $fh, "<:raw", $file
         or return $self->return_403;
 
-    my @stat = stat $file;
+    my @stat = stat $fh;
 
     Plack::Util::set_io_path($fh, Cwd::realpath($file));
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/MIME.pm 
new/Plack-1.0054/lib/Plack/MIME.pm
--- old/Plack-1.0051/lib/Plack/MIME.pm  2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/lib/Plack/MIME.pm  2026-05-05 08:38:14.000000000 +0200
@@ -3,179 +3,646 @@
 
 # stolen from rack.mime.rb
 our $MIME_TYPES = {
-    ".3gp"     => "video/3gpp",
-    ".a"       => "application/octet-stream",
-    ".ai"      => "application/postscript",
-    ".aif"     => "audio/x-aiff",
-    ".aiff"    => "audio/x-aiff",
-    ".apk"     => "application/vnd.android.package-archive",
-    ".asc"     => "application/pgp-signature",
-    ".asf"     => "video/x-ms-asf",
-    ".asm"     => "text/x-asm",
-    ".asx"     => "video/x-ms-asf",
-    ".atom"    => "application/atom+xml",
-    ".au"      => "audio/basic",
-    ".avi"     => "video/x-msvideo",
-    ".bat"     => "application/x-msdownload",
-    ".bin"     => "application/octet-stream",
-    ".bmp"     => "image/bmp",
-    ".bz2"     => "application/x-bzip2",
-    ".c"       => "text/x-c",
-    ".cab"     => "application/vnd.ms-cab-compressed",
-    ".cc"      => "text/x-c",
-    ".chm"     => "application/vnd.ms-htmlhelp",
-    ".class"   => "application/octet-stream",
-    ".com"     => "application/x-msdownload",
-    ".conf"    => "text/plain",
-    ".cpp"     => "text/x-c",
-    ".crt"     => "application/x-x509-ca-cert",
-    ".css"     => "text/css",
-    ".csv"     => "text/csv",
-    ".cxx"     => "text/x-c",
-    ".deb"     => "application/x-debian-package",
-    ".der"     => "application/x-x509-ca-cert",
-    ".diff"    => "text/x-diff",
-    ".djv"     => "image/vnd.djvu",
-    ".djvu"    => "image/vnd.djvu",
-    ".dll"     => "application/x-msdownload",
-    ".dmg"     => "application/octet-stream",
-    ".doc"     => "application/msword",
-    ".dot"     => "application/msword",
-    ".dtd"     => "application/xml-dtd",
-    ".dvi"     => "application/x-dvi",
-    ".ear"     => "application/java-archive",
-    ".eml"     => "message/rfc822",
-    ".eps"     => "application/postscript",
-    ".exe"     => "application/x-msdownload",
-    ".f"       => "text/x-fortran",
-    ".f77"     => "text/x-fortran",
-    ".f90"     => "text/x-fortran",
-    ".flv"     => "video/x-flv",
-    ".for"     => "text/x-fortran",
-    ".gem"     => "application/octet-stream",
-    ".gemspec" => "text/x-script.ruby",
-    ".gif"     => "image/gif",
-    ".gz"      => "application/x-gzip",
-    ".h"       => "text/x-c",
-    ".hh"      => "text/x-c",
-    ".htm"     => "text/html",
-    ".html"    => "text/html",
-    ".ico"     => "image/vnd.microsoft.icon",
-    ".ics"     => "text/calendar",
-    ".ifb"     => "text/calendar",
-    ".iso"     => "application/octet-stream",
-    ".jar"     => "application/java-archive",
-    ".java"    => "text/x-java-source",
-    ".jnlp"    => "application/x-java-jnlp-file",
-    ".jpeg"    => "image/jpeg",
-    ".jpg"     => "image/jpeg",
-    ".js"      => "application/javascript",
-    ".json"    => "application/json",
-    ".log"     => "text/plain",
-    ".m3u"     => "audio/x-mpegurl",
-    ".m4v"     => "video/mp4",
-    ".man"     => "text/troff",
-    ".manifest"=> "text/cache-manifest",
-    ".mathml"  => "application/mathml+xml",
-    ".mbox"    => "application/mbox",
-    ".mdoc"    => "text/troff",
-    ".me"      => "text/troff",
-    ".mid"     => "audio/midi",
-    ".midi"    => "audio/midi",
-    ".mime"    => "message/rfc822",
-    ".mml"     => "application/mathml+xml",
-    ".mng"     => "video/x-mng",
-    ".mov"     => "video/quicktime",
-    ".mp3"     => "audio/mpeg",
-    ".mp4"     => "video/mp4",
-    ".mp4v"    => "video/mp4",
-    ".mpeg"    => "video/mpeg",
-    ".mpg"     => "video/mpeg",
-    ".ms"      => "text/troff",
-    ".msi"     => "application/x-msdownload",
-    ".odp"     => "application/vnd.oasis.opendocument.presentation",
-    ".ods"     => "application/vnd.oasis.opendocument.spreadsheet",
-    ".odt"     => "application/vnd.oasis.opendocument.text",
-    ".ogg"     => "application/ogg",
-    ".ogv"     => "video/ogg",
-    ".p"       => "text/x-pascal",
-    ".pas"     => "text/x-pascal",
-    ".pbm"     => "image/x-portable-bitmap",
-    ".pdf"     => "application/pdf",
-    ".pem"     => "application/x-x509-ca-cert",
-    ".pgm"     => "image/x-portable-graymap",
-    ".pgp"     => "application/pgp-encrypted",
-    ".pkg"     => "application/octet-stream",
-    ".pl"      => "text/x-script.perl",
-    ".pm"      => "text/x-script.perl-module",
-    ".png"     => "image/png",
-    ".pnm"     => "image/x-portable-anymap",
-    ".ppm"     => "image/x-portable-pixmap",
-    ".pps"     => "application/vnd.ms-powerpoint",
-    ".ppt"     => "application/vnd.ms-powerpoint",
-    ".ps"      => "application/postscript",
-    ".psd"     => "image/vnd.adobe.photoshop",
-    ".py"      => "text/x-script.python",
-    ".qt"      => "video/quicktime",
-    ".ra"      => "audio/x-pn-realaudio",
-    ".rake"    => "text/x-script.ruby",
-    ".ram"     => "audio/x-pn-realaudio",
-    ".rar"     => "application/x-rar-compressed",
-    ".rb"      => "text/x-script.ruby",
-    ".rdf"     => "application/rdf+xml",
-    ".roff"    => "text/troff",
-    ".rpm"     => "application/x-redhat-package-manager",
-    ".rss"     => "application/rss+xml",
-    ".rtf"     => "application/rtf",
-    ".ru"      => "text/x-script.ruby",
-    ".s"       => "text/x-asm",
-    ".sgm"     => "text/sgml",
-    ".sgml"    => "text/sgml",
-    ".sh"      => "application/x-sh",
-    ".sig"     => "application/pgp-signature",
-    ".snd"     => "audio/basic",
-    ".so"      => "application/octet-stream",
-    ".svg"     => "image/svg+xml",
-    ".svgz"    => "image/svg+xml",
-    ".swf"     => "application/x-shockwave-flash",
-    ".t"       => "text/troff",
-    ".tar"     => "application/x-tar",
-    ".tbz"     => "application/x-bzip-compressed-tar",
-    ".tcl"     => "application/x-tcl",
-    ".tex"     => "application/x-tex",
-    ".texi"    => "application/x-texinfo",
-    ".texinfo" => "application/x-texinfo",
-    ".text"    => "text/plain",
-    ".tif"     => "image/tiff",
-    ".tiff"    => "image/tiff",
-    ".torrent" => "application/x-bittorrent",
-    ".tr"      => "text/troff",
-    ".ttf"     => "font/ttf",
-    ".txt"     => "text/plain",
-    ".vcf"     => "text/x-vcard",
-    ".vcs"     => "text/x-vcalendar",
-    ".vrml"    => "model/vrml",
-    ".war"     => "application/java-archive",
-    ".wav"     => "audio/x-wav",
-    ".webm"    => "video/webm",
-    ".webp"    => "image/webp",
-    ".wma"     => "audio/x-ms-wma",
-    ".wmv"     => "video/x-ms-wmv",
-    ".wmx"     => "video/x-ms-wmx",
-    ".woff"    => "application/font-woff",
-    ".wrl"     => "model/vrml",
-    ".wsdl"    => "application/wsdl+xml",
-    ".xbm"     => "image/x-xbitmap",
-    ".xhtml"   => "application/xhtml+xml",
-    ".xls"     => "application/vnd.ms-excel",
-    ".xlsx"    => 
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-    ".xml"     => "application/xml",
-    ".xpm"     => "image/x-xpixmap",
-    ".xsl"     => "application/xml",
-    ".xslt"    => "application/xslt+xml",
-    ".yaml"    => "text/yaml",
-    ".yml"     => "text/yaml",
-    ".zip"     => "application/zip",
+      ".123"       => "application/vnd.lotus-1-2-3",
+      ".3dml"      => "text/vnd.in3d.3dml",
+      ".3g2"       => "video/3gpp2",
+      ".3gp"       => "video/3gpp",
+      ".a"         => "application/octet-stream",
+      ".acc"       => "application/vnd.americandynamics.acc",
+      ".ace"       => "application/x-ace-compressed",
+      ".acu"       => "application/vnd.acucobol",
+      ".aep"       => "application/vnd.audiograph",
+      ".afp"       => "application/vnd.ibm.modcap",
+      ".ai"        => "application/postscript",
+      ".aif"       => "audio/x-aiff",
+      ".aiff"      => "audio/x-aiff",
+      ".ami"       => "application/vnd.amiga.ami",
+      ".apng"      => "image/apng",
+      ".appcache"  => "text/cache-manifest",
+      ".apr"       => "application/vnd.lotus-approach",
+      ".asc"       => "application/pgp-signature",
+      ".asf"       => "video/x-ms-asf",
+      ".asm"       => "text/x-asm",
+      ".aso"       => "application/vnd.accpac.simply.aso",
+      ".asx"       => "video/x-ms-asf",
+      ".atc"       => "application/vnd.acucorp",
+      ".atom"      => "application/atom+xml",
+      ".atomcat"   => "application/atomcat+xml",
+      ".atomsvc"   => "application/atomsvc+xml",
+      ".atx"       => "application/vnd.antix.game-component",
+      ".au"        => "audio/basic",
+      ".avi"       => "video/x-msvideo",
+      ".avif"      => "image/avif",
+      ".bat"       => "application/x-msdownload",
+      ".bcpio"     => "application/x-bcpio",
+      ".bdm"       => "application/vnd.syncml.dm+wbxml",
+      ".bh2"       => "application/vnd.fujitsu.oasysprs",
+      ".bin"       => "application/octet-stream",
+      ".bmi"       => "application/vnd.bmi",
+      ".bmp"       => "image/bmp",
+      ".box"       => "application/vnd.previewsystems.box",
+      ".btif"      => "image/prs.btif",
+      ".bz"        => "application/x-bzip",
+      ".bz2"       => "application/x-bzip2",
+      ".c"         => "text/x-c",
+      ".c4g"       => "application/vnd.clonk.c4group",
+      ".cab"       => "application/vnd.ms-cab-compressed",
+      ".cc"        => "text/x-c",
+      ".ccxml"     => "application/ccxml+xml",
+      ".cdbcmsg"   => "application/vnd.contact.cmsg",
+      ".cdkey"     => "application/vnd.mediastation.cdkey",
+      ".cdx"       => "chemical/x-cdx",
+      ".cdxml"     => "application/vnd.chemdraw+xml",
+      ".cdy"       => "application/vnd.cinderella",
+      ".cer"       => "application/pkix-cert",
+      ".cgm"       => "image/cgm",
+      ".chat"      => "application/x-chat",
+      ".chm"       => "application/vnd.ms-htmlhelp",
+      ".chrt"      => "application/vnd.kde.kchart",
+      ".cif"       => "chemical/x-cif",
+      ".cii"       => "application/vnd.anser-web-certificate-issue-initiation",
+      ".cil"       => "application/vnd.ms-artgalry",
+      ".cla"       => "application/vnd.claymore",
+      ".class"     => "application/octet-stream",
+      ".clkk"      => "application/vnd.crick.clicker.keyboard",
+      ".clkp"      => "application/vnd.crick.clicker.palette",
+      ".clkt"      => "application/vnd.crick.clicker.template",
+      ".clkw"      => "application/vnd.crick.clicker.wordbank",
+      ".clkx"      => "application/vnd.crick.clicker",
+      ".clp"       => "application/x-msclip",
+      ".cmc"       => "application/vnd.cosmocaller",
+      ".cmdf"      => "chemical/x-cmdf",
+      ".cml"       => "chemical/x-cml",
+      ".cmp"       => "application/vnd.yellowriver-custom-menu",
+      ".cmx"       => "image/x-cmx",
+      ".com"       => "application/x-msdownload",
+      ".conf"      => "text/plain",
+      ".cpio"      => "application/x-cpio",
+      ".cpp"       => "text/x-c",
+      ".cpt"       => "application/mac-compactpro",
+      ".crd"       => "application/x-mscardfile",
+      ".crl"       => "application/pkix-crl",
+      ".crt"       => "application/x-x509-ca-cert",
+      ".csh"       => "application/x-csh",
+      ".csml"      => "chemical/x-csml",
+      ".csp"       => "application/vnd.commonspace",
+      ".css"       => "text/css",
+      ".csv"       => "text/csv",
+      ".curl"      => "application/vnd.curl",
+      ".cww"       => "application/prs.cww",
+      ".cxx"       => "text/x-c",
+      ".daf"       => "application/vnd.mobius.daf",
+      ".davmount"  => "application/davmount+xml",
+      ".dcr"       => "application/x-director",
+      ".dd2"       => "application/vnd.oma.dd2+xml",
+      ".ddd"       => "application/vnd.fujixerox.ddd",
+      ".deb"       => "application/x-debian-package",
+      ".der"       => "application/x-x509-ca-cert",
+      ".dfac"      => "application/vnd.dreamfactory",
+      ".diff"      => "text/x-diff",
+      ".dis"       => "application/vnd.mobius.dis",
+      ".djv"       => "image/vnd.djvu",
+      ".djvu"      => "image/vnd.djvu",
+      ".dll"       => "application/x-msdownload",
+      ".dmg"       => "application/octet-stream",
+      ".dna"       => "application/vnd.dna",
+      ".doc"       => "application/msword",
+      ".docm"      => "application/vnd.ms-word.document.macroEnabled.12",
+      ".docx"      => 
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+      ".dot"       => "application/msword",
+      ".dotm"      => "application/vnd.ms-word.template.macroEnabled.12",
+      ".dotx"      => 
"application/vnd.openxmlformats-officedocument.wordprocessingml.template",
+      ".dp"        => "application/vnd.osgi.dp",
+      ".dpg"       => "application/vnd.dpgraph",
+      ".dsc"       => "text/prs.lines.tag",
+      ".dtd"       => "application/xml-dtd",
+      ".dts"       => "audio/vnd.dts",
+      ".dtshd"     => "audio/vnd.dts.hd",
+      ".dv"        => "video/x-dv",
+      ".dvi"       => "application/x-dvi",
+      ".dwf"       => "model/vnd.dwf",
+      ".dwg"       => "image/vnd.dwg",
+      ".dxf"       => "image/vnd.dxf",
+      ".dxp"       => "application/vnd.spotfire.dxp",
+      ".ear"       => "application/java-archive",
+      ".ecelp4800" => "audio/vnd.nuera.ecelp4800",
+      ".ecelp7470" => "audio/vnd.nuera.ecelp7470",
+      ".ecelp9600" => "audio/vnd.nuera.ecelp9600",
+      ".ecma"      => "application/ecmascript",
+      ".edm"       => "application/vnd.novadigm.edm",
+      ".edx"       => "application/vnd.novadigm.edx",
+      ".efif"      => "application/vnd.picsel",
+      ".ei6"       => "application/vnd.pg.osasli",
+      ".eml"       => "message/rfc822",
+      ".eol"       => "audio/vnd.digital-winds",
+      ".eot"       => "application/vnd.ms-fontobject",
+      ".eps"       => "application/postscript",
+      ".es3"       => "application/vnd.eszigno3+xml",
+      ".esf"       => "application/vnd.epson.esf",
+      ".etx"       => "text/x-setext",
+      ".exe"       => "application/x-msdownload",
+      ".ext"       => "application/vnd.novadigm.ext",
+      ".ez"        => "application/andrew-inset",
+      ".ez2"       => "application/vnd.ezpix-album",
+      ".ez3"       => "application/vnd.ezpix-package",
+      ".f"         => "text/x-fortran",
+      ".f77"       => "text/x-fortran",
+      ".f90"       => "text/x-fortran",
+      ".fbs"       => "image/vnd.fastbidsheet",
+      ".fdf"       => "application/vnd.fdf",
+      ".fe_launch" => "application/vnd.denovo.fcselayout-link",
+      ".fg5"       => "application/vnd.fujitsu.oasysgp",
+      ".fli"       => "video/x-fli",
+      ".flif"      => "image/flif",
+      ".flo"       => "application/vnd.micrografx.flo",
+      ".flv"       => "video/x-flv",
+      ".flw"       => "application/vnd.kde.kivio",
+      ".flx"       => "text/vnd.fmi.flexstor",
+      ".fly"       => "text/vnd.fly",
+      ".fm"        => "application/vnd.framemaker",
+      ".fnc"       => "application/vnd.frogans.fnc",
+      ".for"       => "text/x-fortran",
+      ".fpx"       => "image/vnd.fpx",
+      ".fsc"       => "application/vnd.fsc.weblaunch",
+      ".fst"       => "image/vnd.fst",
+      ".ftc"       => "application/vnd.fluxtime.clip",
+      ".fti"       => "application/vnd.anser-web-funds-transfer-initiation",
+      ".fvt"       => "video/vnd.fvt",
+      ".fzs"       => "application/vnd.fuzzysheet",
+      ".g3"        => "image/g3fax",
+      ".gac"       => "application/vnd.groove-account",
+      ".gdl"       => "model/vnd.gdl",
+      ".gem"       => "application/octet-stream",
+      ".gemspec"   => "text/x-script.ruby",
+      ".ghf"       => "application/vnd.groove-help",
+      ".gif"       => "image/gif",
+      ".gim"       => "application/vnd.groove-identity-message",
+      ".gmx"       => "application/vnd.gmx",
+      ".gph"       => "application/vnd.flographit",
+      ".gqf"       => "application/vnd.grafeq",
+      ".gram"      => "application/srgs",
+      ".grv"       => "application/vnd.groove-injector",
+      ".grxml"     => "application/srgs+xml",
+      ".gtar"      => "application/x-gtar",
+      ".gtm"       => "application/vnd.groove-tool-message",
+      ".gtw"       => "model/vnd.gtw",
+      ".gv"        => "text/vnd.graphviz",
+      ".gz"        => "application/x-gzip",
+      ".h"         => "text/x-c",
+      ".h261"      => "video/h261",
+      ".h263"      => "video/h263",
+      ".h264"      => "video/h264",
+      ".hbci"      => "application/vnd.hbci",
+      ".hdf"       => "application/x-hdf",
+      ".heic"      => "image/heic",
+      ".heics"     => "image/heic-sequence",
+      ".heif"      => "image/heif",
+      ".heifs"     => "image/heif-sequence",
+      ".hh"        => "text/x-c",
+      ".hlp"       => "application/winhlp",
+      ".hpgl"      => "application/vnd.hp-hpgl",
+      ".hpid"      => "application/vnd.hp-hpid",
+      ".hps"       => "application/vnd.hp-hps",
+      ".hqx"       => "application/mac-binhex40",
+      ".htc"       => "text/x-component",
+      ".htke"      => "application/vnd.kenameaapp",
+      ".htm"       => "text/html",
+      ".html"      => "text/html",
+      ".hvd"       => "application/vnd.yamaha.hv-dic",
+      ".hvp"       => "application/vnd.yamaha.hv-voice",
+      ".hvs"       => "application/vnd.yamaha.hv-script",
+      ".icc"       => "application/vnd.iccprofile",
+      ".ice"       => "x-conference/x-cooltalk",
+      ".ico"       => "image/vnd.microsoft.icon",
+      ".ics"       => "text/calendar",
+      ".ief"       => "image/ief",
+      ".ifb"       => "text/calendar",
+      ".ifm"       => "application/vnd.shana.informed.formdata",
+      ".igl"       => "application/vnd.igloader",
+      ".igs"       => "model/iges",
+      ".igx"       => "application/vnd.micrografx.igx",
+      ".iif"       => "application/vnd.shana.informed.interchange",
+      ".imp"       => "application/vnd.accpac.simply.imp",
+      ".ims"       => "application/vnd.ms-ims",
+      ".ipk"       => "application/vnd.shana.informed.package",
+      ".irm"       => "application/vnd.ibm.rights-management",
+      ".irp"       => "application/vnd.irepository.package+xml",
+      ".iso"       => "application/octet-stream",
+      ".itp"       => "application/vnd.shana.informed.formtemplate",
+      ".ivp"       => "application/vnd.immervision-ivp",
+      ".ivu"       => "application/vnd.immervision-ivu",
+      ".jad"       => "text/vnd.sun.j2me.app-descriptor",
+      ".jam"       => "application/vnd.jam",
+      ".jar"       => "application/java-archive",
+      ".java"      => "text/x-java-source",
+      ".jisp"      => "application/vnd.jisp",
+      ".jlt"       => "application/vnd.hp-jlyt",
+      ".jnlp"      => "application/x-java-jnlp-file",
+      ".joda"      => "application/vnd.joost.joda-archive",
+      ".jp2"       => "image/jp2",
+      ".jpeg"      => "image/jpeg",
+      ".jpg"       => "image/jpeg",
+      ".jpgv"      => "video/jpeg",
+      ".jpm"       => "video/jpm",
+      ".js"        => "text/javascript",
+      ".json"      => "application/json",
+      ".karbon"    => "application/vnd.kde.karbon",
+      ".kfo"       => "application/vnd.kde.kformula",
+      ".kia"       => "application/vnd.kidspiration",
+      ".kml"       => "application/vnd.google-earth.kml+xml",
+      ".kmz"       => "application/vnd.google-earth.kmz",
+      ".kne"       => "application/vnd.kinar",
+      ".kon"       => "application/vnd.kde.kontour",
+      ".kpr"       => "application/vnd.kde.kpresenter",
+      ".ksp"       => "application/vnd.kde.kspread",
+      ".ktz"       => "application/vnd.kahootz",
+      ".kwd"       => "application/vnd.kde.kword",
+      ".latex"     => "application/x-latex",
+      ".lbd"       => "application/vnd.llamagraphics.life-balance.desktop",
+      ".lbe"       => 
"application/vnd.llamagraphics.life-balance.exchange+xml",
+      ".les"       => "application/vnd.hhe.lesson-player",
+      ".link66"    => "application/vnd.route66.link66+xml",
+      ".log"       => "text/plain",
+      ".lostxml"   => "application/lost+xml",
+      ".lrm"       => "application/vnd.ms-lrm",
+      ".ltf"       => "application/vnd.frogans.ltf",
+      ".lvp"       => "audio/vnd.lucent.voice",
+      ".lwp"       => "application/vnd.lotus-wordpro",
+      ".m3u"       => "audio/x-mpegurl",
+      ".m3u8"      => "application/x-mpegurl",
+      ".m4a"       => "audio/mp4a-latm",
+      ".m4v"       => "video/mp4",
+      ".ma"        => "application/mathematica",
+      ".mag"       => "application/vnd.ecowin.chart",
+      ".man"       => "text/troff",
+      ".manifest"  => "text/cache-manifest",
+      ".mathml"    => "application/mathml+xml",
+      ".mbk"       => "application/vnd.mobius.mbk",
+      ".mbox"      => "application/mbox",
+      ".mc1"       => "application/vnd.medcalcdata",
+      ".mcd"       => "application/vnd.mcd",
+      ".mdb"       => "application/x-msaccess",
+      ".mdi"       => "image/vnd.ms-modi",
+      ".mdoc"      => "text/troff",
+      ".me"        => "text/troff",
+      ".mfm"       => "application/vnd.mfmp",
+      ".mgz"       => "application/vnd.proteus.magazine",
+      ".mid"       => "audio/midi",
+      ".midi"      => "audio/midi",
+      ".mif"       => "application/vnd.mif",
+      ".mime"      => "message/rfc822",
+      ".mj2"       => "video/mj2",
+      ".mjs"       => "text/javascript",
+      ".mlp"       => "application/vnd.dolby.mlp",
+      ".mmd"       => "application/vnd.chipnuts.karaoke-mmd",
+      ".mmf"       => "application/vnd.smaf",
+      ".mml"       => "application/mathml+xml",
+      ".mmr"       => "image/vnd.fujixerox.edmics-mmr",
+      ".mng"       => "video/x-mng",
+      ".mny"       => "application/x-msmoney",
+      ".mov"       => "video/quicktime",
+      ".movie"     => "video/x-sgi-movie",
+      ".mp3"       => "audio/mpeg",
+      ".mp4"       => "video/mp4",
+      ".mp4a"      => "audio/mp4",
+      ".mp4s"      => "application/mp4",
+      ".mp4v"      => "video/mp4",
+      ".mpc"       => "application/vnd.mophun.certificate",
+      ".mpd"       => "application/dash+xml",
+      ".mpeg"      => "video/mpeg",
+      ".mpg"       => "video/mpeg",
+      ".mpga"      => "audio/mpeg",
+      ".mpkg"      => "application/vnd.apple.installer+xml",
+      ".mpm"       => "application/vnd.blueice.multipass",
+      ".mpn"       => "application/vnd.mophun.application",
+      ".mpp"       => "application/vnd.ms-project",
+      ".mpy"       => "application/vnd.ibm.minipay",
+      ".mqy"       => "application/vnd.mobius.mqy",
+      ".mrc"       => "application/marc",
+      ".ms"        => "text/troff",
+      ".mscml"     => "application/mediaservercontrol+xml",
+      ".mseq"      => "application/vnd.mseq",
+      ".msf"       => "application/vnd.epson.msf",
+      ".msh"       => "model/mesh",
+      ".msi"       => "application/x-msdownload",
+      ".msl"       => "application/vnd.mobius.msl",
+      ".msty"      => "application/vnd.muvee.style",
+      ".mts"       => "model/vnd.mts",
+      ".mus"       => "application/vnd.musician",
+      ".mvb"       => "application/x-msmediaview",
+      ".mwf"       => "application/vnd.mfer",
+      ".mxf"       => "application/mxf",
+      ".mxl"       => "application/vnd.recordare.musicxml",
+      ".mxml"      => "application/xv+xml",
+      ".mxs"       => "application/vnd.triscape.mxs",
+      ".mxu"       => "video/vnd.mpegurl",
+      ".n"         => "application/vnd.nokia.n-gage.symbian.install",
+      ".nc"        => "application/x-netcdf",
+      ".ngdat"     => "application/vnd.nokia.n-gage.data",
+      ".nlu"       => "application/vnd.neurolanguage.nlu",
+      ".nml"       => "application/vnd.enliven",
+      ".nnd"       => "application/vnd.noblenet-directory",
+      ".nns"       => "application/vnd.noblenet-sealer",
+      ".nnw"       => "application/vnd.noblenet-web",
+      ".npx"       => "image/vnd.net-fpx",
+      ".nsf"       => "application/vnd.lotus-notes",
+      ".oa2"       => "application/vnd.fujitsu.oasys2",
+      ".oa3"       => "application/vnd.fujitsu.oasys3",
+      ".oas"       => "application/vnd.fujitsu.oasys",
+      ".obd"       => "application/x-msbinder",
+      ".oda"       => "application/oda",
+      ".odc"       => "application/vnd.oasis.opendocument.chart",
+      ".odf"       => "application/vnd.oasis.opendocument.formula",
+      ".odg"       => "application/vnd.oasis.opendocument.graphics",
+      ".odi"       => "application/vnd.oasis.opendocument.image",
+      ".odp"       => "application/vnd.oasis.opendocument.presentation",
+      ".ods"       => "application/vnd.oasis.opendocument.spreadsheet",
+      ".odt"       => "application/vnd.oasis.opendocument.text",
+      ".oga"       => "audio/ogg",
+      ".ogg"       => "application/ogg",
+      ".ogv"       => "video/ogg",
+      ".ogx"       => "application/ogg",
+      ".org"       => "application/vnd.lotus-organizer",
+      ".otc"       => "application/vnd.oasis.opendocument.chart-template",
+      ".otf"       => "font/otf",
+      ".otg"       => "application/vnd.oasis.opendocument.graphics-template",
+      ".oth"       => "application/vnd.oasis.opendocument.text-web",
+      ".oti"       => "application/vnd.oasis.opendocument.image-template",
+      ".otm"       => "application/vnd.oasis.opendocument.text-master",
+      ".ots"       => 
"application/vnd.oasis.opendocument.spreadsheet-template",
+      ".ott"       => "application/vnd.oasis.opendocument.text-template",
+      ".oxt"       => "application/vnd.openofficeorg.extension",
+      ".p"         => "text/x-pascal",
+      ".p10"       => "application/pkcs10",
+      ".p12"       => "application/x-pkcs12",
+      ".p7b"       => "application/x-pkcs7-certificates",
+      ".p7m"       => "application/pkcs7-mime",
+      ".p7r"       => "application/x-pkcs7-certreqresp",
+      ".p7s"       => "application/pkcs7-signature",
+      ".pas"       => "text/x-pascal",
+      ".pbd"       => "application/vnd.powerbuilder6",
+      ".pbm"       => "image/x-portable-bitmap",
+      ".pcl"       => "application/vnd.hp-pcl",
+      ".pclxl"     => "application/vnd.hp-pclxl",
+      ".pcx"       => "image/x-pcx",
+      ".pdb"       => "chemical/x-pdb",
+      ".pdf"       => "application/pdf",
+      ".pem"       => "application/x-x509-ca-cert",
+      ".pfr"       => "application/font-tdpfr",
+      ".pgm"       => "image/x-portable-graymap",
+      ".pgn"       => "application/x-chess-pgn",
+      ".pgp"       => "application/pgp-encrypted",
+      ".pic"       => "image/x-pict",
+      ".pict"      => "image/pict",
+      ".pkg"       => "application/octet-stream",
+      ".pki"       => "application/pkixcmp",
+      ".pkipath"   => "application/pkix-pkipath",
+      ".pl"        => "text/x-script.perl",
+      ".plb"       => "application/vnd.3gpp.pic-bw-large",
+      ".plc"       => "application/vnd.mobius.plc",
+      ".plf"       => "application/vnd.pocketlearn",
+      ".pls"       => "application/pls+xml",
+      ".pm"        => "text/x-script.perl-module",
+      ".pml"       => "application/vnd.ctc-posml",
+      ".png"       => "image/png",
+      ".pnm"       => "image/x-portable-anymap",
+      ".pntg"      => "image/x-macpaint",
+      ".portpkg"   => "application/vnd.macports.portpkg",
+      ".pot"       => "application/vnd.ms-powerpoint",
+      ".potm"      => "application/vnd.ms-powerpoint.template.macroEnabled.12",
+      ".potx"      => 
"application/vnd.openxmlformats-officedocument.presentationml.template",
+      ".ppa"       => "application/vnd.ms-powerpoint",
+      ".ppam"      => "application/vnd.ms-powerpoint.addin.macroEnabled.12",
+      ".ppd"       => "application/vnd.cups-ppd",
+      ".ppm"       => "image/x-portable-pixmap",
+      ".pps"       => "application/vnd.ms-powerpoint",
+      ".ppsm"      => 
"application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
+      ".ppsx"      => 
"application/vnd.openxmlformats-officedocument.presentationml.slideshow",
+      ".ppt"       => "application/vnd.ms-powerpoint",
+      ".pptm"      => 
"application/vnd.ms-powerpoint.presentation.macroEnabled.12",
+      ".pptx"      => 
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
+      ".prc"       => "application/vnd.palm",
+      ".pre"       => "application/vnd.lotus-freelance",
+      ".prf"       => "application/pics-rules",
+      ".ps"        => "application/postscript",
+      ".psb"       => "application/vnd.3gpp.pic-bw-small",
+      ".psd"       => "image/vnd.adobe.photoshop",
+      ".ptid"      => "application/vnd.pvi.ptid1",
+      ".pub"       => "application/x-mspublisher",
+      ".pvb"       => "application/vnd.3gpp.pic-bw-var",
+      ".pwn"       => "application/vnd.3m.post-it-notes",
+      ".py"        => "text/x-script.python",
+      ".pya"       => "audio/vnd.ms-playready.media.pya",
+      ".pyv"       => "video/vnd.ms-playready.media.pyv",
+      ".qam"       => "application/vnd.epson.quickanime",
+      ".qbo"       => "application/vnd.intu.qbo",
+      ".qfx"       => "application/vnd.intu.qfx",
+      ".qps"       => "application/vnd.publishare-delta-tree",
+      ".qt"        => "video/quicktime",
+      ".qtif"      => "image/x-quicktime",
+      ".qxd"       => "application/vnd.quark.quarkxpress",
+      ".ra"        => "audio/x-pn-realaudio",
+      ".rake"      => "text/x-script.ruby",
+      ".ram"       => "audio/x-pn-realaudio",
+      ".rar"       => "application/x-rar-compressed",
+      ".ras"       => "image/x-cmu-raster",
+      ".rb"        => "text/x-script.ruby",
+      ".rcprofile" => "application/vnd.ipunplugged.rcprofile",
+      ".rdf"       => "application/rdf+xml",
+      ".rdz"       => "application/vnd.data-vision.rdz",
+      ".rep"       => "application/vnd.businessobjects",
+      ".rgb"       => "image/x-rgb",
+      ".rif"       => "application/reginfo+xml",
+      ".rl"        => "application/resource-lists+xml",
+      ".rlc"       => "image/vnd.fujixerox.edmics-rlc",
+      ".rld"       => "application/resource-lists-diff+xml",
+      ".rm"        => "application/vnd.rn-realmedia",
+      ".rmp"       => "audio/x-pn-realaudio-plugin",
+      ".rms"       => "application/vnd.jcp.javame.midlet-rms",
+      ".rnc"       => "application/relax-ng-compact-syntax",
+      ".roff"      => "text/troff",
+      ".rpm"       => "application/x-redhat-package-manager",
+      ".rpss"      => "application/vnd.nokia.radio-presets",
+      ".rpst"      => "application/vnd.nokia.radio-preset",
+      ".rq"        => "application/sparql-query",
+      ".rs"        => "application/rls-services+xml",
+      ".rsd"       => "application/rsd+xml",
+      ".rss"       => "application/rss+xml",
+      ".rtf"       => "application/rtf",
+      ".rtx"       => "text/richtext",
+      ".ru"        => "text/x-script.ruby",
+      ".s"         => "text/x-asm",
+      ".saf"       => "application/vnd.yamaha.smaf-audio",
+      ".sbml"      => "application/sbml+xml",
+      ".sc"        => "application/vnd.ibm.secure-container",
+      ".scd"       => "application/x-msschedule",
+      ".scm"       => "application/vnd.lotus-screencam",
+      ".scq"       => "application/scvp-cv-request",
+      ".scs"       => "application/scvp-cv-response",
+      ".sdkm"      => "application/vnd.solent.sdkm+xml",
+      ".sdp"       => "application/sdp",
+      ".see"       => "application/vnd.seemail",
+      ".sema"      => "application/vnd.sema",
+      ".semd"      => "application/vnd.semd",
+      ".semf"      => "application/vnd.semf",
+      ".setpay"    => "application/set-payment-initiation",
+      ".setreg"    => "application/set-registration-initiation",
+      ".sfd"       => "application/vnd.hydrostatix.sof-data",
+      ".sfs"       => "application/vnd.spotfire.sfs",
+      ".sgm"       => "text/sgml",
+      ".sgml"      => "text/sgml",
+      ".sh"        => "application/x-sh",
+      ".shar"      => "application/x-shar",
+      ".shf"       => "application/shf+xml",
+      ".sig"       => "application/pgp-signature",
+      ".sit"       => "application/x-stuffit",
+      ".sitx"      => "application/x-stuffitx",
+      ".skp"       => "application/vnd.koan",
+      ".slt"       => "application/vnd.epson.salt",
+      ".smi"       => "application/smil+xml",
+      ".snd"       => "audio/basic",
+      ".so"        => "application/octet-stream",
+      ".spf"       => "application/vnd.yamaha.smaf-phrase",
+      ".spl"       => "application/x-futuresplash",
+      ".spot"      => "text/vnd.in3d.spot",
+      ".spp"       => "application/scvp-vp-response",
+      ".spq"       => "application/scvp-vp-request",
+      ".src"       => "application/x-wais-source",
+      ".srt"       => "text/srt",
+      ".srx"       => "application/sparql-results+xml",
+      ".sse"       => "application/vnd.kodak-descriptor",
+      ".ssf"       => "application/vnd.epson.ssf",
+      ".ssml"      => "application/ssml+xml",
+      ".stf"       => "application/vnd.wt.stf",
+      ".stk"       => "application/hyperstudio",
+      ".str"       => "application/vnd.pg.format",
+      ".sus"       => "application/vnd.sus-calendar",
+      ".sv4cpio"   => "application/x-sv4cpio",
+      ".sv4crc"    => "application/x-sv4crc",
+      ".svd"       => "application/vnd.svd",
+      ".svg"       => "image/svg+xml",
+      ".svgz"      => "image/svg+xml",
+      ".swf"       => "application/x-shockwave-flash",
+      ".swi"       => "application/vnd.arastra.swi",
+      ".t"         => "text/troff",
+      ".tao"       => "application/vnd.tao.intent-module-archive",
+      ".tar"       => "application/x-tar",
+      ".tbz"       => "application/x-bzip-compressed-tar",
+      ".tcap"      => "application/vnd.3gpp2.tcap",
+      ".tcl"       => "application/x-tcl",
+      ".tex"       => "application/x-tex",
+      ".texi"      => "application/x-texinfo",
+      ".texinfo"   => "application/x-texinfo",
+      ".text"      => "text/plain",
+      ".tif"       => "image/tiff",
+      ".tiff"      => "image/tiff",
+      ".tmo"       => "application/vnd.tmobile-livetv",
+      ".torrent"   => "application/x-bittorrent",
+      ".tpl"       => "application/vnd.groove-tool-template",
+      ".tpt"       => "application/vnd.trid.tpt",
+      ".tr"        => "text/troff",
+      ".tra"       => "application/vnd.trueapp",
+      ".trm"       => "application/x-msterminal",
+      ".ts"        => "video/mp2t",
+      ".tsv"       => "text/tab-separated-values",
+      ".ttf"       => "font/ttf",
+      ".twd"       => "application/vnd.simtech-mindmapper",
+      ".txd"       => "application/vnd.genomatix.tuxedo",
+      ".txf"       => "application/vnd.mobius.txf",
+      ".txt"       => "text/plain",
+      ".ufd"       => "application/vnd.ufdl",
+      ".umj"       => "application/vnd.umajin",
+      ".unityweb"  => "application/vnd.unity",
+      ".uoml"      => "application/vnd.uoml+xml",
+      ".uri"       => "text/uri-list",
+      ".ustar"     => "application/x-ustar",
+      ".utz"       => "application/vnd.uiq.theme",
+      ".uu"        => "text/x-uuencode",
+      ".vcd"       => "application/x-cdlink",
+      ".vcf"       => "text/x-vcard",
+      ".vcg"       => "application/vnd.groove-vcard",
+      ".vcs"       => "text/x-vcalendar",
+      ".vcx"       => "application/vnd.vcx",
+      ".vis"       => "application/vnd.visionary",
+      ".viv"       => "video/vnd.vivo",
+      ".vrml"      => "model/vrml",
+      ".vsd"       => "application/vnd.visio",
+      ".vsf"       => "application/vnd.vsf",
+      ".vtt"       => "text/vtt",
+      ".vtu"       => "model/vnd.vtu",
+      ".vxml"      => "application/voicexml+xml",
+      ".war"       => "application/java-archive",
+      ".wasm"      => "application/wasm",
+      ".wav"       => "audio/x-wav",
+      ".wax"       => "audio/x-ms-wax",
+      ".wbmp"      => "image/vnd.wap.wbmp",
+      ".wbs"       => "application/vnd.criticaltools.wbs+xml",
+      ".wbxml"     => "application/vnd.wap.wbxml",
+      ".webm"      => "video/webm",
+      ".webp"      => "image/webp",
+      ".wm"        => "video/x-ms-wm",
+      ".wma"       => "audio/x-ms-wma",
+      ".wmd"       => "application/x-ms-wmd",
+      ".wmf"       => "application/x-msmetafile",
+      ".wml"       => "text/vnd.wap.wml",
+      ".wmlc"      => "application/vnd.wap.wmlc",
+      ".wmls"      => "text/vnd.wap.wmlscript",
+      ".wmlsc"     => "application/vnd.wap.wmlscriptc",
+      ".wmv"       => "video/x-ms-wmv",
+      ".wmx"       => "video/x-ms-wmx",
+      ".wmz"       => "application/x-ms-wmz",
+      ".woff"      => "font/woff",
+      ".woff2"     => "font/woff2",
+      ".wpd"       => "application/vnd.wordperfect",
+      ".wpl"       => "application/vnd.ms-wpl",
+      ".wps"       => "application/vnd.ms-works",
+      ".wqd"       => "application/vnd.wqd",
+      ".wri"       => "application/x-mswrite",
+      ".wrl"       => "model/vrml",
+      ".wsdl"      => "application/wsdl+xml",
+      ".wspolicy"  => "application/wspolicy+xml",
+      ".wtb"       => "application/vnd.webturbo",
+      ".wvx"       => "video/x-ms-wvx",
+      ".x3d"       => "application/vnd.hzn-3d-crossword",
+      ".xar"       => "application/vnd.xara",
+      ".xbd"       => "application/vnd.fujixerox.docuworks.binder",
+      ".xbm"       => "image/x-xbitmap",
+      ".xdm"       => "application/vnd.syncml.dm+xml",
+      ".xdp"       => "application/vnd.adobe.xdp+xml",
+      ".xdw"       => "application/vnd.fujixerox.docuworks",
+      ".xenc"      => "application/xenc+xml",
+      ".xer"       => "application/patch-ops-error+xml",
+      ".xfdf"      => "application/vnd.adobe.xfdf",
+      ".xfdl"      => "application/vnd.xfdl",
+      ".xhtml"     => "application/xhtml+xml",
+      ".xif"       => "image/vnd.xiff",
+      ".xla"       => "application/vnd.ms-excel",
+      ".xlam"      => "application/vnd.ms-excel.addin.macroEnabled.12",
+      ".xls"       => "application/vnd.ms-excel",
+      ".xlsb"      => "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
+      ".xlsx"      => 
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+      ".xlsm"      => "application/vnd.ms-excel.sheet.macroEnabled.12",
+      ".xlt"       => "application/vnd.ms-excel",
+      ".xltx"      => 
"application/vnd.openxmlformats-officedocument.spreadsheetml.template",
+      ".xml"       => "application/xml",
+      ".xo"        => "application/vnd.olpc-sugar",
+      ".xop"       => "application/xop+xml",
+      ".xpm"       => "image/x-xpixmap",
+      ".xpr"       => "application/vnd.is-xpr",
+      ".xps"       => "application/vnd.ms-xpsdocument",
+      ".xpw"       => "application/vnd.intercon.formnet",
+      ".xsl"       => "application/xml",
+      ".xslt"      => "application/xslt+xml",
+      ".xsm"       => "application/vnd.syncml+xml",
+      ".xspf"      => "application/xspf+xml",
+      ".xul"       => "application/vnd.mozilla.xul+xml",
+      ".xwd"       => "image/x-xwindowdump",
+      ".xyz"       => "chemical/x-xyz",
+      ".yaml"      => "text/yaml",
+      ".yml"       => "text/yaml",
+      ".zaz"       => "application/vnd.zzazz.deck+xml",
+      ".zip"       => "application/zip",
+      ".zmm"       => "application/vnd.handheld-entertainment+xml",
 };
 
 my $fallback = sub { };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/Middleware/Auth/Basic.pm 
new/Plack-1.0054/lib/Plack/Middleware/Auth/Basic.pm
--- old/Plack-1.0051/lib/Plack/Middleware/Auth/Basic.pm 2024-01-06 
00:09:39.000000000 +0100
+++ new/Plack-1.0054/lib/Plack/Middleware/Auth/Basic.pm 2026-05-05 
08:38:14.000000000 +0200
@@ -85,12 +85,21 @@
 supplied and returns whether the authentication succeeds. Required.
 
 Authenticator can also be an object that responds to C<authenticate>
-method that takes username and password and returns boolean, so
-backends for L<Authen::Simple> is perfect to use:
+method that takes username and password and returns boolean, so any
+backends for L<Authen::Simple> are perfect to use:
 
   use Authen::Simple::LDAP;
   enable "Auth::Basic", authenticator => Authen::Simple::LDAP->new(...);
 
+For authentication based on C<htpasswd> files:
+
+  use Authen::Simple::Passwd;
+  enable "Auth::Basic",
+    realm => "Password protected area",
+    authenticator => Authen::Simple::Passwd->new(
+      path => "/path/to/.htpasswd",
+    );
+
 =item realm
 
 Realm name to display in the basic authentication dialog. Defaults to 
I<restricted area>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/Middleware/Lint.pm 
new/Plack-1.0054/lib/Plack/Middleware/Lint.pm
--- old/Plack-1.0051/lib/Plack/Middleware/Lint.pm       2024-01-06 
00:09:39.000000000 +0100
+++ new/Plack-1.0054/lib/Plack/Middleware/Lint.pm       2026-05-05 
08:38:14.000000000 +0200
@@ -43,7 +43,7 @@
         die('Missing mandatory env param: PATH_INFO');
     }
     if ($env->{PATH_INFO} ne '' && $env->{PATH_INFO} !~ m!^/!) {
-        die('PATH_INFO must begin with / ($env->{PATH_INFO})');
+        die("PATH_INFO must begin with / ($env->{PATH_INFO})");
     }
     unless (defined($env->{SERVER_NAME})) {
         die('Missing mandatory env param: SERVER_NAME');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/Middleware/XSendfile.pm 
new/Plack-1.0054/lib/Plack/Middleware/XSendfile.pm
--- old/Plack-1.0051/lib/Plack/Middleware/XSendfile.pm  2024-01-06 
00:09:39.000000000 +0100
+++ new/Plack-1.0054/lib/Plack/Middleware/XSendfile.pm  2026-05-05 
08:38:14.000000000 +0200
@@ -3,10 +3,17 @@
 use warnings;
 use parent qw(Plack::Middleware);
 
+use Carp ();
 use Plack::Util;
 use Scalar::Util;
 use Plack::Util::Accessor qw( variation );
 
+sub new {
+    my $class = shift;
+    Carp::carp("Plack::Middleware::XSendfile is deprecated and will be removed 
in a future release");
+    $class->SUPER::new(@_);
+}
+
 sub call {
     my $self = shift;
     my $env  = shift;
@@ -70,6 +77,49 @@
 
   enable "Plack::Middleware::XSendfile";
 
+=head1 DEPRECATION NOTICE
+
+This middleware is deprecated and will be removed in a future release, due to
+poor security design caused by the way configuration is passed via HTTP request
+headers. See L</SECURITY>.
+
+The simplest replacement is to set the appropriate header directly in your
+application when serving a file. For example, in a Mojolicious controller:
+
+  sub download {
+      my $c = shift;
+      $c->res->headers->header('X-Accel-Redirect' => '/path/to/document.pdf');
+      $c->render(data => '', status => 200);
+  }
+
+If you need to handle this at the middleware layer instead to make it more
+transparent, you can replicate the behavior inline using L<Plack::Builder>:
+
+  use Plack::Builder;
+  use Plack::Util;
+  use Scalar::Util qw(blessed);
+
+  builder {
+      enable sub {
+          my $app = shift;
+          sub {
+              my $env = shift;
+              my $res = $app->($env);
+              Plack::Util::response_cb($res, sub {
+                  my $res = shift;
+                  my $body = $res->[2];
+                  if (blessed($body) && $body->can('path')) {
+                      my $h = Plack::Util::headers($res->[1]);
+                      $h->set('X-Sendfile' => $body->path);
+                      $h->set('Content-Length', 0);
+                      $res->[2] = [];
+                  }
+              });
+          };
+      };
+      $app;
+  };
+
 =head1 DESCRIPTION
 
 When the body is a blessed reference with a C<path> method, then the
@@ -84,11 +134,62 @@
 You should use L<IO::File::WithPath> or L<Plack::Util>'s
 C<set_io_path> to add C<path> method to an IO object in the body.
 
-See 
L<http://github.com/rack/rack-contrib/blob/master/lib/rack/contrib/sendfile.rb>
-for the frontend configuration.
+See L<https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile>
+for frontend configuration examples.
 
 Plack::Middleware::XSendfile does not set the Content-Type header.
 
+=head1 FRONTEND CONFIGURATION
+
+=head2 Nginx
+
+Nginx supports C<X-Accel-Redirect>. Configure an internal location and
+pass the C<X-Accel-Mapping> header to the backend so the middleware can
+rewrite filesystem paths into internal URLs:
+
+  location ~ /files/(.*) {
+      internal;
+      alias /var/www/$1;
+  }
+
+  location / {
+      proxy_pass         http://127.0.0.1:5000/;
+      proxy_set_header   X-Sendfile-Type     X-Accel-Redirect;
+      proxy_set_header   X-Accel-Mapping     /var/www/=/files/;
+  }
+
+C<X-Accel-Mapping> tells the middleware which filesystem prefix to replace
+and what internal URL prefix to use instead.
+
+=head2 Apache
+
+Enable mod_xsendfile (L<https://tn123.org/mod_xsendfile/>) and set the
+request header so the middleware activates:
+
+  RequestHeader Set X-Sendfile-Type X-Sendfile
+  XSendFile on
+
+=head2 lighttpd
+
+  proxy-core.allow-x-sendfile = "enable"
+  proxy-core.rewrite-request = (
+      "X-Sendfile-Type" => (".*" => "X-Sendfile")
+  )
+
+=head1 SECURITY
+
+This middleware reads C<X-Sendfile-Type> and C<X-Accel-Mapping> from incoming
+request headers to determine how to serve files. It is therefore critical that
+these headers are set by the frontend proxy and cannot be supplied by untrusted
+clients; otherwise a client could influence which files the frontend serves.
+
+B<The Plack backend must not be directly reachable by untrusted clients.>
+
+For each frontend, make sure B<both> headers are explicitly set in the proxy
+configuration. C<proxy_set_header> (nginx), C<RequestHeader Set> (Apache), and
+C<proxy-core.rewrite-request> (lighttpd) all overwrite any client-supplied
+values, which is why the examples above use those directives.
+
 =head1 CONFIGURATION
 
 =over 4
@@ -111,7 +212,7 @@
 
 =back
 
-An unsupport value will log an error.
+An unsupported value will log an error.
 
 =back
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/Request.pm 
new/Plack-1.0054/lib/Plack/Request.pm
--- old/Plack-1.0051/lib/Plack/Request.pm       2024-01-06 00:09:39.000000000 
+0100
+++ new/Plack-1.0054/lib/Plack/Request.pm       2026-05-05 08:38:14.000000000 
+0200
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 use 5.008_001;
-our $VERSION = '1.0051';
+our $VERSION = '1.0054';
 
 use HTTP::Headers::Fast;
 use Carp ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack/Response.pm 
new/Plack-1.0054/lib/Plack/Response.pm
--- old/Plack-1.0051/lib/Plack/Response.pm      2024-01-06 00:09:39.000000000 
+0100
+++ new/Plack-1.0054/lib/Plack/Response.pm      2026-05-05 08:38:14.000000000 
+0200
@@ -1,7 +1,7 @@
 package Plack::Response;
 use strict;
 use warnings;
-our $VERSION = '1.0051';
+our $VERSION = '1.0054';
 
 use Plack::Util::Accessor qw(body status);
 use Carp ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/lib/Plack.pm 
new/Plack-1.0054/lib/Plack.pm
--- old/Plack-1.0051/lib/Plack.pm       2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/lib/Plack.pm       2026-05-05 08:38:14.000000000 +0200
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 use 5.008_001;
-our $VERSION = '1.0051';
+our $VERSION = '1.0054';
 
 1;
 __END__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/t/HTTP-Server-PSGI/listen.t 
new/Plack-1.0054/t/HTTP-Server-PSGI/listen.t
--- old/Plack-1.0051/t/HTTP-Server-PSGI/listen.t        2024-01-06 
00:09:39.000000000 +0100
+++ new/Plack-1.0054/t/HTTP-Server-PSGI/listen.t        2026-05-05 
08:38:14.000000000 +0200
@@ -29,6 +29,7 @@
     client => sub {
         my $port = shift;
         my $ua = LWP::UserAgent->new;
+               $ua->timeout($ua_timeout);
         my $res = $ua->get("http://127.0.0.1:$port/";);
         ok $res->is_success;
         is $res->code, 200;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/t/Plack-MIME/fallback.t 
new/Plack-1.0054/t/Plack-MIME/fallback.t
--- old/Plack-1.0051/t/Plack-MIME/fallback.t    2024-01-06 00:09:39.000000000 
+0100
+++ new/Plack-1.0054/t/Plack-MIME/fallback.t    2026-05-05 08:38:14.000000000 
+0200
@@ -1,11 +1,12 @@
 use Test::More;
+BEGIN { plan skip_all => "MIME::Types requires Perl 5.16+" if $] < 5.016 }
 use Test::Requires qw(MIME::Types);
 use Plack::MIME;
 use MIME::Types 'by_suffix';
 
-is( Plack::MIME->mime_type(".vcd"), undef );
+is( Plack::MIME->mime_type(".ncm"), undef );
 
 Plack::MIME->set_fallback(sub { (by_suffix $_[0])[0] });
-is( Plack::MIME->mime_type(".vcd"), "application/x-cdlink" );
+is( Plack::MIME->mime_type(".ncm"), 
"application/vnd.nokia.configuration-message" );
 
 done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Plack-1.0051/t/Plack-Middleware/httpexceptions.t 
new/Plack-1.0054/t/Plack-Middleware/httpexceptions.t
--- old/Plack-1.0051/t/Plack-Middleware/httpexceptions.t        2024-01-06 
00:09:39.000000000 +0100
+++ new/Plack-1.0054/t/Plack-Middleware/httpexceptions.t        2026-05-05 
08:38:14.000000000 +0200
@@ -11,16 +11,16 @@
 }
 
 package HTTP::Error::InternalServerError;
-use base qw(HTTP::Error);
+use parent -norequire => qw(HTTP::Error);
 sub code { 500 }
 
 package HTTP::Error::Forbidden;
-use base qw(HTTP::Error);
+use parent -norequire => qw(HTTP::Error);
 sub code { 403 }
 sub as_string { "blah blah blah" }
 
 package HTTP::Error::Redirect;
-use base qw(HTTP::Error);
+use parent -norequire => qw(HTTP::Error);
 sub code { 302 }
 sub location { "http://somewhere/else"; }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Plack-1.0051/t/Plack-Middleware/httpexceptions_streaming.t 
new/Plack-1.0054/t/Plack-Middleware/httpexceptions_streaming.t
--- old/Plack-1.0051/t/Plack-Middleware/httpexceptions_streaming.t      
2024-01-06 00:09:39.000000000 +0100
+++ new/Plack-1.0054/t/Plack-Middleware/httpexceptions_streaming.t      
2026-05-05 08:38:14.000000000 +0200
@@ -11,11 +11,11 @@
 }
 
 package HTTP::Error::InternalServerError;
-use base qw(HTTP::Error);
+use parent -norequire => qw(HTTP::Error);
 sub code { 500 }
 
 package HTTP::Error::Forbidden;
-use base qw(HTTP::Error);
+use parent -norequire => qw(HTTP::Error);
 sub code { 403 }
 sub as_string { "blah blah blah" }
 

++++++ README.md ++++++

## Build Results

Current state of perl in openSUSE:Factory is

![Factory build 
results](https://br.opensuse.org/status/openSUSE:Factory/perl-Plack/standard)

The current state of perl in the devel project build (devel:languages:perl)

![Devel project build 
results](https://br.opensuse.org/status/devel:languages:perl/perl-Plack)



++++++ _scmsync.obsinfo ++++++
mtime: 1777966395
commit: e965fa2ebab8c289f65dc58f15da74270e07bea67464a5b3169c4e91bdf0dc96
url: https://src.opensuse.org/perl/perl-Plack
revision: e965fa2ebab8c289f65dc58f15da74270e07bea67464a5b3169c4e91bdf0dc96
projectscmsync: https://src.opensuse.org/perl/_ObsPrj

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-05-05 09:33:15.000000000 +0200
@@ -0,0 +1 @@
+.osc

Reply via email to