diff --git a/MANUAL.txt b/MANUAL.txt
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -1,7 +1,7 @@
 ---
 title: Pandoc User's Guide
 author: John MacFarlane
-date: December 7, 2024
+date: December 22, 2024
 ---
 
 # Synopsis
@@ -761,14 +761,16 @@
 `--template=`*FILE*|*URL*
 
 :   Use the specified file as a custom template for the generated document.
-    Implies `--standalone`. See [Templates], below, for a description
-    of template syntax. If no extension is specified, an extension
-    corresponding to the writer will be added, so that `--template=special`
-    looks for `special.html` for HTML output.  If the template is not
-    found, pandoc will search for it in the `templates` subdirectory of
-    the user data directory (see `--data-dir`). If this option is not used,
-    a default template appropriate for the output format will be used (see
-    `-D/--print-default-template`).
+    Implies `--standalone`. See [Templates], below, for a
+    description of template syntax. If the template is not found,
+    pandoc will search for it in the `templates` subdirectory of
+    the user data directory (see `--data-dir`). If no extension
+    is specified and an extensionless template is not found,
+    pandoc will look for a template with an extension
+    corresponding to the writer, so that `--template=special`
+    looks for `special.html` for HTML output. If this option is
+    not used, a default template appropriate for the output
+    format will be used (see `-D/--print-default-template`).
 
 `-V` *KEY*[`=`*VAL*], `--variable=`*KEY*[`:`*VAL*]
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,167 @@
 # Revision history for pandoc
 
+## pandoc 3.6.1 (2024-12-23)
+
+  * Allow YAML bibliographies to be arrays of references (#10452).
+    Previously, they had to be YAML objects with a `references` key.
+
+  * Change `--template` to allow use of extensionless templates (#5270).
+    The intent is to allow bash process substitution: e.g.,
+    `--template <(echo "foo")`. Previously pandoc *always* added an
+    extension based on the output format, which caused problems
+    with the absolute filenames used by bash process substitution
+    (e.g. `/dev/fd/11`). Now, if the template has no extension,
+    pandoc will first try to find it without the extension, and
+    then add the extension if it can't be found. So, in general,
+    extensionless templates can now be used. But this has been
+    implemented in a way that should not cause problems for
+    existing uses, unless you are using a template `NAME.FORMAT`
+    but happen to have an extensionless file `NAME` in the template
+    search path.
+
+  * Allow `--shift-heading-level-by=-1` to work in djot in the same way
+    it works for other formats (with the top-level heading being
+    promoted to metadata title) (#10459).  This needed special
+    treatment because of the way djot surrounds sections with Divs.
+
+  * RST reader:
+
+    + Handle explicit reference links (#10484, Evan Silberman).
+      This case was missed when changing the reference link strategy for
+      RST to allow a single pass. (It is a regression in pandoc 3.6.)
+
+  * Markdown reader:
+
+    + Use T.P.URI's `pBase64DataURI` in parsing data URIs (#10075,
+      Evan Silberman and John MacFarlane).
+    + More efficient base64 data URI parsing (#10075, Evan
+      Silberman and John MacFarlane). This should yield dramatic
+      performance improvements for markdown documents containing
+      large data URIs in images.
+
+  * HTML reader:
+
+    + Don't canonicalize data: URIs (#10075). It can be very expensive
+      to call network-uri's URI parser on these.
+
+  * LaTeX reader:
+
+    + Handle `figure*` environment as a figure (#10472).
+
+  * MediaWiki reader:
+
+    + Allow empty quoted attributes (#10490).
+    + Allow cells starting with `+` (#10491).
+
+  * Textile reader:
+
+    + Improve parsing of spans (#9878). The span needs to be separated
+      from its surroundings by spaces. Also, a span can have attributes,
+      which we now attach.
+    + Inline constructors shouldn't trigger if closer is preceded by
+      whitespace (#10414).
+
+  * Docx writer:
+
+    + Put chapters in separate sections, and restart footnotes
+      by section by default (#2773). The main effect of this change is that
+      when `--top-level-division=chapter` is used, chapters will start on
+      a new page and footnote numbering will restart for each chapter.
+      Both of these defaults can be overridden in the reference.docx.
+    + Use styleIds not styleNames for Title, Subtitle, etc.
+      (#10282). This fixes a regression introduced in pandoc 3.5.
+      This change affects the default openxml template as well as the
+      OpenXML writer.
+
+  * Markdown writer:
+
+    + Avoid collapsing of initial/final newline in markdown raw blocks.
+      This makes it easy to write a filter that adds extra blank lines
+      before certain elements (#10477).
+
+  * Mediawiki writer:
+
+    + Escape line-initial characters that would otherwise be interpreted
+      as list starts (#9700).
+
+  * LaTeX writer:
+
+    + Properly handle boolean value for `csquotes` variable (#10403).
+    + Use displayquote for block quotes with `csquotes` (#10456).
+
+  * HTML writer:
+
+    + Avoid calling parseURIString for data URIs (#10075).
+      This was done to determine the "media category," but we can
+      get that directly from the mime component of data: URIs.
+
+  * Typst writer:
+
+    + Properly handle data URIs in images (#10460).
+
+  * LaTeX/Beamer templates:
+
+    + Fix default.beamer `nocite` location (Thomas Hodgson).
+      It must be inside a frame or it is ignored (#10465).
+    + Move nocites from LaTeX preamble to body (#10461, Thomas
+      Hodgson). Putting `\nocite` in the preamble works only with biblatex.
+
+  * Text.Pandoc.Parsing:
+
+    + Correct example in comment on `charsInBalanced` (Evan Silberman).
+
+  * Text.Pandoc.Error:
+
+    + Mention typst in rendering `PandocUnknownWriterError` for `pdf`
+      (Evan Silberman).
+
+  * Text.Pandoc.MediaBag:
+
+    + `insertMedia`: fast path for data URIs. Avoid the slow URI
+      parser from network-uri on large data URIs (#10075).
+
+  * Text.Pandoc.Class:
+
+    + Add shortcut for base64 data URIs in `downloadOrRead` (#10075).
+      This avoids calling the slow URI parser from network-uri on
+      data URIs, instead calling our own parser.
+
+  * Text.Pandoc.MIME:
+
+    + Fix `extensionFromMimeType`. We had a few special cases encoded,
+      but as previously written they wouldn't work properly with
+      modifiers like `;charset=utf-8`.
+
+  * Text.Pandoc.URI:
+
+    + Export `pBase64DataURI`.  Modify `isURI` to use this and avoid
+      calling network-uri's inefficient `parseURI` for data URIs.
+
+  * Text.Pandoc.PDF:
+
+    + Fix temp file extension in `toPdfViaTempFile` (#10468).
+      This fixes a regression in pandoc 3.6, which changed
+      the extension from `html` to `source`. Apparently
+      `wkhtmltopdf` needs it to be `.html`.  So now we have added
+      a parameter to `toPdfViaTempFile` that allows the extension
+      to be specified in a way that is appropriate to the PDF engine
+      used.
+
+  * Lua (Albert Krewinkel):
+
+    + Support more elements as input to `pandoc.utils.stringify`
+      (#10450). Elements of type Caption, Cell, TableHead, and TableFoot
+      can now be stringified.
+    + Add `Caption` constructor to `pandoc` module.
+
+  * Miscellaneous code quality improvements (Joseph C. Sible).
+
+  * Depend on citeproc 0.8.1.2, skylighting and skylighting-core
+    0.14.5.
+
+  * `doc/lua-filters.md: Fix links to constructors (Albert Krewinkel).
+
+
 ## pandoc 3.6 (2024-12-07)
 
   * Add `mdoc` as input format (Evan Silberman). This change
@@ -67,8 +229,8 @@
 
   * RST reader:
 
-    + Use a new one-pass parsing strategy. Instead of having an initial pass where
-      we collect reference definitions, we create links with target
+    + Use a new one-pass parsing strategy. Instead of having an initial pass
+      where we collect reference definitions, we create links with target
       `##SUBST##something` or `##REF##something` or `##NOTE##something`,
       and resolve these in a pass over the parsed AST. This allows us to handle
       link references that are not at the top level (#10281).
@@ -94,8 +256,8 @@
   * Markdown writer:
 
     + Issue INFO warning when not rendering table, e.g., when `raw_html` is
-      disabled and the table can't be fit into a supported markdown table format
-      (#10407).
+      disabled and the table can't be fit into a supported markdown table
+      format (#10407).
     + Respect empty LineBlock lines in `plain` output (Evan Silberman).
       The plain writer behaved as a markdown variant with `Ext_line_blocks`
       turned off, and so empty lines in a line block would get eliminated.
@@ -115,8 +277,8 @@
     + Make template sensitive to a `page-numbering` variable (#10370).
       This can be set to an empty string (or, in metadata, to false) for
       no page numbers.
-    + Make `smart` extension work (#10271). If `smart` is not enabled, a command in
-      the default template will disable smartquote substitutions.
+    + Make `smart` extension work (#10271). If `smart` is not enabled, a command
+      in the default template will disable smartquote substitutions.
       When `smart` is enabled, render curly apostrophes as straight
       and escape straight apostrophes. When `smart` is disabled,
       render curly apostrophes as curly and don't escape straight
diff --git a/data/docx/word/document.xml b/data/docx/word/document.xml
--- a/data/docx/word/document.xml
+++ b/data/docx/word/document.xml
@@ -189,7 +189,7 @@
       </w:r>
       <w:r>
         <w:t xml:space="preserve">
- 
+
 </w:t>
       </w:r>
       <w:r>
@@ -207,7 +207,7 @@
       </w:r>
       <w:r>
         <w:t xml:space="preserve">
- 
+
 </w:t>
       </w:r>
       <w:hyperlink r:id="rId30">
@@ -227,7 +227,7 @@
       </w:r>
       <w:r>
         <w:t xml:space="preserve">
- 
+
 </w:t>
       </w:r>
       <w:r>
@@ -391,6 +391,10 @@
 </w:t>
       </w:r>
     </w:p>
-    <w:sectPr />
+    <w:sectPr>
+      <w:footnotePr>
+        <w:numRestart w:val="eachSect" />
+      </w:footnotePr>
+    </w:sectPr>
   </w:body>
 </w:document>
diff --git a/data/templates/common.latex b/data/templates/common.latex
--- a/data/templates/common.latex
+++ b/data/templates/common.latex
@@ -257,9 +257,6 @@
 \addbibresource{$bibliography$}
 $endfor$
 $endif$
-$if(nocite-ids)$
-\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
-$endif$
 $--
 $-- csquotes
 $--
diff --git a/data/templates/default.beamer b/data/templates/default.beamer
--- a/data/templates/default.beamer
+++ b/data/templates/default.beamer
@@ -178,6 +178,9 @@
 $endif$
 $endif$
 \begin{frame}[allowframebreaks]{$biblio-title$}
+$if(nocite-ids)$
+  \nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
+$endif$
   \bibliographytrue
   \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
 \end{frame}
@@ -186,6 +189,9 @@
 $endif$
 $if(biblatex)$
 \begin{frame}[allowframebreaks]{$biblio-title$}
+$if(nocite-ids)$
+  \nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
+$endif$
   \bibliographytrue
   \printbibliography[heading=none]
 \end{frame}
diff --git a/data/templates/default.latex b/data/templates/default.latex
--- a/data/templates/default.latex
+++ b/data/templates/default.latex
@@ -96,6 +96,9 @@
 $if(has-frontmatter)$
 \backmatter
 $endif$
+$if(nocite-ids)$
+\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
+$endif$
 $if(natbib)$
 $if(bibliography)$
 $if(biblio-title)$
diff --git a/data/templates/default.openxml b/data/templates/default.openxml
--- a/data/templates/default.openxml
+++ b/data/templates/default.openxml
@@ -4,7 +4,7 @@
 $if(title)$
     <w:p>
       <w:pPr>
-        <w:pStyle w:val="Title" />
+        <w:pStyle w:val="$title-style-id$" />
       </w:pPr>
       $title$
     </w:p>
@@ -12,7 +12,7 @@
 $if(subtitle)$
     <w:p>
       <w:pPr>
-        <w:pStyle w:val="Subtitle" />
+        <w:pStyle w:val="$subtitle-style-id$" />
       </w:pPr>
       $subtitle$
     </w:p>
@@ -20,7 +20,7 @@
 $for(author)$
     <w:p>
       <w:pPr>
-        <w:pStyle w:val="Author" />
+        <w:pStyle w:val="$author-style-id$" />
       </w:pPr>
       $author$
     </w:p>
@@ -28,7 +28,7 @@
 $if(date)$
     <w:p>
       <w:pPr>
-        <w:pStyle w:val="Date" />
+        <w:pStyle w:val="$date-style-id$" />
       </w:pPr>
       $date$
     </w:p>
@@ -37,7 +37,7 @@
 $if(abstract-title)$
     <w:p>
       <w:pPr>
-        <w:pStyle w:val="AbstractTitle" />
+        <w:pStyle w:val="$abstract-title-style-id$" />
       </w:pPr>
       <w:r><w:t xml:space="preserve">$abstract-title$</w:t></w:r>
     </w:p>
@@ -64,7 +64,11 @@
 $if(sectpr)$
     $sectpr$
 $else$
-    <w:sectPr />
+    <w:sectPr>
+      <w:footnotePr>
+        <w:numRestart w:val="eachSect" />
+      </w:footnotePr>
+    </w:sectPr>
 $endif$
   </w:body>
 </w:document>
diff --git a/pandoc.cabal b/pandoc.cabal
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.4
 name:            pandoc
-version:         3.6
+version:         3.6.1
 build-type:      Simple
 license:         GPL-2.0-or-later
 license-file:    COPYING.md
@@ -489,7 +489,7 @@
                  blaze-markup          >= 0.8      && < 0.9,
                  bytestring            >= 0.9      && < 0.13,
                  case-insensitive      >= 1.2      && < 1.3,
-                 citeproc              >= 0.8.1.1  && < 0.9,
+                 citeproc              >= 0.8.1.2  && < 0.9,
                  commonmark            >= 0.2.6.1  && < 0.3,
                  commonmark-extensions >= 0.2.5.6  && < 0.3,
                  commonmark-pandoc     >= 0.2.2.3  && < 0.3,
@@ -524,8 +524,8 @@
                  random                >= 1        && < 1.3,
                  safe                  >= 0.3.18   && < 0.4,
                  scientific            >= 0.3      && < 0.4,
-                 skylighting           >= 0.14.4   && < 0.15,
-                 skylighting-core      >= 0.14.4   && < 0.15,
+                 skylighting           >= 0.14.5   && < 0.15,
+                 skylighting-core      >= 0.14.5   && < 0.15,
                  split                 >= 0.2      && < 0.3,
                  syb                   >= 0.1      && < 0.8,
                  tagsoup               >= 0.14.6   && < 0.15,
diff --git a/src/Text/Pandoc/App/OutputSettings.hs b/src/Text/Pandoc/App/OutputSettings.hs
--- a/src/Text/Pandoc/App/OutputSettings.hs
+++ b/src/Text/Pandoc/App/OutputSettings.hs
@@ -25,11 +25,11 @@
 import Text.DocTemplates (toVal, Context(..), Val(..))
 import qualified Control.Exception as E
 import Control.Monad
-import Control.Monad.Except (throwError)
+import Control.Monad.Except (throwError, catchError)
 import Control.Monad.Trans
 import Data.Char (toLower)
 import Data.List (find)
-import Data.Maybe (fromMaybe)
+import Data.Maybe (catMaybes, fromMaybe)
 import Skylighting (defaultSyntaxMap)
 import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition)
 import System.Directory (getCurrentDirectory)
@@ -111,13 +111,15 @@
           _ | not standalone -> return Nothing
           Nothing -> Just <$> getDefault
           Just tp -> do
-            -- strip off extensions
-            let tp' = case takeExtension tp of
-                        "" -> tp <.> T.unpack format
-                        _  -> tp
-            getTemplate tp'
-              >>= runWithPartials . compileTemplate tp'
-              >>= fmap Just . templateOrThrow
+            let getAndCompile fp =
+                   getTemplate fp >>= runWithPartials . compileTemplate fp >>=
+                      fmap Just . templateOrThrow
+            catchError
+              (getAndCompile tp)
+              (\e ->
+                  if null (takeExtension tp)
+                     then getAndCompile (tp <.> T.unpack format)
+                     else throwError e)
 
   (writer, writerExts, mtemplate) <-
     if "lua" `T.isSuffixOf` format
@@ -321,10 +323,11 @@
 sandbox' :: (PandocMonad m, MonadIO m) => Opt -> PandocPure a -> m a
 sandbox' opts = sandbox sandboxedFiles
  where
-   sandboxedFiles = maybe id (:) (optReferenceDoc opts) .
-                    maybe id (:) (optEpubMetadata opts) .
-                    maybe id (:) (optEpubCoverImage opts) .
-                    maybe id (:) (optCSL opts) .
-                    maybe id (:) (optCitationAbbreviations opts) $
+   sandboxedFiles = catMaybes [ optReferenceDoc opts
+                              , optEpubMetadata opts
+                              , optEpubCoverImage opts
+                              , optCSL opts
+                              , optCitationAbbreviations opts
+                              ] ++
                     optEpubFonts opts ++
                     optBibliography opts
diff --git a/src/Text/Pandoc/Class/PandocMonad.hs b/src/Text/Pandoc/Class/PandocMonad.hs
--- a/src/Text/Pandoc/Class/PandocMonad.hs
+++ b/src/Text/Pandoc/Class/PandocMonad.hs
@@ -77,7 +77,8 @@
 import Text.Pandoc.MIME (MimeType, getMimeType)
 import Text.Pandoc.MediaBag (MediaBag, lookupMedia, MediaItem(..))
 import Text.Pandoc.Shared (safeRead, makeCanonical, tshow)
-import Text.Pandoc.URI (uriPathToPath)
+import Text.Pandoc.URI (uriPathToPath, pBase64DataURI)
+import qualified Data.Attoparsec.Text as A
 import Text.Pandoc.Walk (walkM)
 import qualified Text.Pandoc.UTF8 as UTF8
 import Data.ByteString.Base64 (decodeLenient)
@@ -333,7 +334,11 @@
 downloadOrRead :: PandocMonad m
                => T.Text
                -> m (B.ByteString, Maybe MimeType)
-downloadOrRead s = do
+downloadOrRead s
+ | "data:" `T.isPrefixOf` s,
+   Right (bs, mt) <- A.parseOnly pBase64DataURI s
+   = pure (bs, Just mt)
+ | otherwise = do
   sourceURL <- getsCommonState stSourceURL
   case (sourceURL >>= parseURIReference' . ensureEscaped, ensureEscaped s) of
     (Just u, s') -> -- try fetching from relative path at source
diff --git a/src/Text/Pandoc/Error.hs b/src/Text/Pandoc/Error.hs
--- a/src/Text/Pandoc/Error.hs
+++ b/src/Text/Pandoc/Error.hs
@@ -129,7 +129,7 @@
        "Unknown output format " <> w <>
        case w of
          "pdf" -> "To create a pdf using pandoc, use" <>
-                  " -t latex|beamer|context|ms|html5" <>
+                  " -t latex|beamer|context|ms|html5|typst" <>
                  "\nand specify an output file with " <>
                  ".pdf extension (-o filename.pdf)."
          "doc" -> "\nPandoc can convert to DOCX, but not to DOC."
diff --git a/src/Text/Pandoc/MIME.hs b/src/Text/Pandoc/MIME.hs
--- a/src/Text/Pandoc/MIME.hs
+++ b/src/Text/Pandoc/MIME.hs
@@ -45,20 +45,21 @@
 getMimeTypeDef = fromMaybe "application/octet-stream" . getMimeType
 
 extensionFromMimeType :: MimeType -> Maybe T.Text
--- few special cases, where there are multiple options:
-extensionFromMimeType "text/plain" = Just "txt"
-extensionFromMimeType "video/quicktime" = Just "mov"
-extensionFromMimeType "video/mpeg" = Just "mpeg"
-extensionFromMimeType "video/dv" = Just "dv"
-extensionFromMimeType "image/vnd.djvu" = Just "djvu"
-extensionFromMimeType "image/tiff" = Just "tiff"
-extensionFromMimeType "image/jpeg" = Just "jpg"
-extensionFromMimeType "application/xml" = Just "xml"
-extensionFromMimeType "application/ogg" = Just "ogg"
-extensionFromMimeType "image/svg+xml" = Just "svg" -- avoid svgz
 extensionFromMimeType mimetype =
-  M.lookup (T.takeWhile (/=';') mimetype) reverseMimeTypes
   -- note:  we just look up the basic mime type, dropping the content-encoding etc.
+  case T.takeWhile (/=';') mimetype of
+    -- handle a few special cases, where there are multiple options:
+    "text/plain" -> Just "txt"
+    "video/quicktime" -> Just "mov"
+    "video/mpeg" -> Just "mpeg"
+    "video/dv" -> Just "dv"
+    "image/vnd.djvu" -> Just "djvu"
+    "image/tiff" -> Just "tiff"
+    "image/jpeg" -> Just "jpg"
+    "application/xml" -> Just "xml"
+    "application/ogg" -> Just "ogg"
+    "image/svg+xml" -> Just "svg" -- avoid svgz
+    mt -> M.lookup mt reverseMimeTypes
 
 -- | Determine general media category for file path, e.g.
 --
diff --git a/src/Text/Pandoc/MediaBag.hs b/src/Text/Pandoc/MediaBag.hs
--- a/src/Text/Pandoc/MediaBag.hs
+++ b/src/Text/Pandoc/MediaBag.hs
@@ -58,6 +58,8 @@
 -- | We represent paths with /, in normalized form.  Percent-encoding
 -- is not resolved.
 canonicalize :: FilePath -> Text
+-- avoid an expensive call to isURI for data URIs:
+canonicalize fp@('d':'a':'t':'a':':':_) = T.pack fp
 canonicalize fp
   | isURI fp = T.pack fp
   | otherwise = T.replace "\\" "/" . T.pack . normalise $ fp
@@ -77,29 +79,37 @@
             -> BL.ByteString  -- ^ contents of resource
             -> MediaBag
             -> MediaBag
-insertMedia fp mbMime contents (MediaBag mediamap) =
-  MediaBag (M.insert fp' mediaItem mediamap)
-  where mediaItem = MediaItem{ mediaPath = newpath
-                             , mediaContents = contents
-                             , mediaMimeType = mt }
-        fp' = canonicalize fp
-        fp'' = unEscapeString $ T.unpack fp'
-        uri = parseURI fp
-        newpath = if Posix.isRelative fp''
-                       && Windows.isRelative fp''
-                       && isNothing uri
-                       && not (".." `isInfixOf` fp'')
-                       && '%' `notElem` fp''
-                     then fp''
-                     else show (hashWith SHA1 $ BL.toStrict contents) <> ext
-        fallback = case takeExtension fp'' of
-                        ".gz" -> getMimeTypeDef $ dropExtension fp''
-                        _     -> getMimeTypeDef fp''
-        mt = fromMaybe fallback mbMime
-        path = maybe fp'' (unEscapeString . uriPath) uri
-        ext = case takeExtension path of
-                '.':e | '%' `notElem` e -> '.':e
-                _ -> maybe "" (\x -> '.':T.unpack x) $ extensionFromMimeType mt
+insertMedia fp mbMime contents (MediaBag mediamap)
+ | 'd':'a':'t':'a':':':_ <- fp
+ , Just mt' <- mbMime
+   = MediaBag (M.insert fp'
+               MediaItem{ mediaPath = hashpath
+                        , mediaContents = contents
+                        , mediaMimeType = mt' } mediamap)
+ | otherwise = MediaBag (M.insert fp' mediaItem mediamap)
+ where
+  mediaItem = MediaItem{ mediaPath = newpath
+                       , mediaContents = contents
+                       , mediaMimeType = mt }
+  fp' = canonicalize fp
+  fp'' = unEscapeString $ T.unpack fp'
+  uri = parseURI fp
+  hashpath = show (hashWith SHA1 (BL.toStrict contents)) <> ext
+  newpath = if Posix.isRelative fp''
+                 && Windows.isRelative fp''
+                 && isNothing uri
+                 && not (".." `isInfixOf` fp'')
+                 && '%' `notElem` fp''
+               then fp''
+               else hashpath
+  fallback = case takeExtension fp'' of
+                  ".gz" -> getMimeTypeDef $ dropExtension fp''
+                  _     -> getMimeTypeDef fp''
+  mt = fromMaybe fallback mbMime
+  path = maybe fp'' (unEscapeString . uriPath) uri
+  ext = case takeExtension path of
+          '.':e | '%' `notElem` e -> '.':e
+          _ -> maybe "" (\x -> '.':T.unpack x) $ extensionFromMimeType mt
 
 -- | Lookup a media item in a 'MediaBag', returning mime type and contents.
 lookupMedia :: FilePath
diff --git a/src/Text/Pandoc/PDF.hs b/src/Text/Pandoc/PDF.hs
--- a/src/Text/Pandoc/PDF.hs
+++ b/src/Text/Pandoc/PDF.hs
@@ -91,12 +91,12 @@
                else [f]
       source <- writer opts doc
       verbosity <- getVerbosity
-      liftIO $ toPdfViaTempFile verbosity program pdfargs mkOutArgs source
+      liftIO $ toPdfViaTempFile verbosity program pdfargs mkOutArgs ".html" source
     "typst" -> do
       source <- writer opts doc
       verbosity <- getVerbosity
       liftIO $
-        toPdfViaTempFile verbosity program ("compile":pdfargs) (:[]) source
+        toPdfViaTempFile verbosity program ("compile":pdfargs) (:[]) ".typ" source
     "pdfroff" -> do
       source <- writer opts doc
       let paperargs =
@@ -184,7 +184,7 @@
                  -- see #6474
   source <- writer opts doc
   verbosity <- getVerbosity
-  liftIO $ toPdfViaTempFile verbosity program args (:[]) source
+  liftIO $ toPdfViaTempFile verbosity program args (:[]) ".html" source
 
 handleImages :: (PandocMonad m, MonadIO m)
              => WriterOptions
@@ -469,10 +469,11 @@
           -> String       -- ^ Program (program name or path)
           -> [String]     -- ^ Args to program
           -> (String -> [String]) -- ^ Construct args for output file
+          -> String       -- ^ extension to use for input file (e.g. '.html')
           -> Text         -- ^ Source
           -> IO (Either ByteString ByteString)
-toPdfViaTempFile verbosity program args mkOutArgs source =
-  withTempFile "." "toPdfViaTempFile.source" $ \file h1 ->
+toPdfViaTempFile verbosity program args mkOutArgs extension source =
+  withTempFile "." ("toPdfViaTempFile" <> extension) $ \file h1 ->
     withTempFile "." "toPdfViaTempFile.pdf" $ \pdfFile h2 -> do
       hClose h1
       hClose h2
diff --git a/src/Text/Pandoc/Parsing/General.hs b/src/Text/Pandoc/Parsing/General.hs
--- a/src/Text/Pandoc/Parsing/General.hs
+++ b/src/Text/Pandoc/Parsing/General.hs
@@ -446,8 +446,8 @@
 -- | Parse a string of characters between an open character
 -- and a close character, including text between balanced
 -- pairs of open and close, which must be different. For example,
--- @charsInBalanced '(' ')' anyChar@ will parse "(hello (there))"
--- and return "hello (there)".
+-- @charsInBalanced '(' ')' (Data.Text.singleton <$> anyChar)@ will parse
+-- "(hello (there))" and return "hello (there)".
 charsInBalanced :: (Stream s m Char, UpdateSourcePos s Char)
                 => Char -> Char -> ParsecT s st m Text -> ParsecT s st m Text
 charsInBalanced open close parser = try $ do
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -547,16 +547,12 @@
                 , citationHash = 0 }
   let items = Citeproc.citationItems citation
   let cs = map toPandocCitation items
-  refs <- mapM (traverse (return . text)) $
-            mapMaybe (\item ->
-                        case Citeproc.citationItemData item of
-                          Nothing -> Nothing
-                          Just itemData ->
-                            -- see #10366, sometimes itemData has a different
-                            -- id and we need to use the same one:
-                            Just $ itemData{ referenceId =
-                                               Citeproc.citationItemId item })
-            items
+  let refs = mapMaybe (\item -> fmap (\itemData -> text <$>
+                                        -- see #10366, sometimes itemData has a different
+                                        -- id and we need to use the same one:
+                                        itemData{ referenceId =
+                                                    Citeproc.citationItemId item })
+                                  (Citeproc.citationItemData item)) items
   modify $ \st ->
     st{ docxReferences = foldr
           (\ref -> M.insert (referenceId ref) ref)
diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs
--- a/src/Text/Pandoc/Readers/HTML.hs
+++ b/src/Text/Pandoc/Readers/HTML.hs
@@ -927,25 +927,21 @@
   let attr = toStringAttr attr'
   unless inCase $
     guard (maybe True (== mathMLNamespace) (lookup "xmlns" attr))
-  let isDisplay = case lookup "display" attr of
-                     Just "block" -> True
-                     _ -> False
+  let constructor = case lookup "display" attr of
+                       Just "block" -> B.displayMath
+                       _ -> B.math
   contents <- manyTill pAny (pSatisfy (matchTagClose "math"))
   -- KaTeX and others include original TeX in annotation tag;
   -- just use this if present rather than parsing MathML:
   case extractTeXAnnotation contents of
-    Just x -> return $ if isDisplay
-                          then B.displayMath x
-                          else B.math x
+    Just x -> return $ constructor x
     Nothing ->
       case mathMLToTeXMath (renderTags $
               [open] <> contents <> [TagClose "math"]) of
            Left _   -> return $ B.spanWith ("",["math"],attr) $ B.text $
                                  innerText contents
            Right "" -> return mempty
-           Right x  -> return $ if isDisplay
-                                   then B.displayMath x
-                                   else B.math x
+           Right x  -> return $ constructor x
 
 extractTeXAnnotation :: [Tag Text] -> Maybe Text
 extractTeXAnnotation [] = Nothing
@@ -1226,8 +1222,10 @@
 
 -- | Adjusts a url according to the document's base URL.
 canonicalizeUrl :: PandocMonad m => Text -> TagParser m Text
-canonicalizeUrl url = do
-  mbBaseHref <- baseHref <$> getState
-  return $ case (parseURIReference (T.unpack url), mbBaseHref) of
-                (Just rel, Just bs) -> tshow (rel `nonStrictRelativeTo` bs)
-                _                   -> url
+canonicalizeUrl url
+  | "data:" `T.isPrefixOf` url = return url
+  | otherwise = do
+     mbBaseHref <- baseHref <$> getState
+     return $ case (parseURIReference (T.unpack url), mbBaseHref) of
+                   (Just rel, Just bs) -> tshow (rel `nonStrictRelativeTo` bs)
+                   _                   -> url
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1016,6 +1016,7 @@
    , ("minipage", divWith ("",["minipage"],[]) <$>
        env "minipage" (skipopts *> spaces *> optional braced *> spaces *> blocks))
    , ("figure", env "figure" $ skipopts *> figure')
+   , ("figure*", env "figure*" $ skipopts *> figure')
    , ("subfigure", env "subfigure" $ skipopts *> tok *> figure')
    , ("center", divWith ("", ["center"], []) <$> env "center" blocks)
    , ("quote", blockQuote <$> env "quote" blocks)
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -28,6 +28,7 @@
 import qualified Data.Map as M
 import Data.Maybe
 import qualified Data.Set as Set
+import qualified Data.Attoparsec.Text as A
 import Data.Text (Text)
 import qualified Data.Text as T
 import qualified Data.ByteString as BS
@@ -51,7 +52,7 @@
                                  isCommentTag, isInlineTag, isTextTag)
 import Text.Pandoc.Readers.LaTeX (applyMacros, rawLaTeXBlock, rawLaTeXInline)
 import Text.Pandoc.Shared
-import Text.Pandoc.URI (escapeURI, isURI)
+import Text.Pandoc.URI (escapeURI, isURI, pBase64DataURI)
 import Text.Pandoc.XML (fromEntities)
 import Text.Pandoc.Readers.Metadata (yamlBsToMeta, yamlBsToRefs, yamlMetaBlock)
 -- import Debug.Trace (traceShowId)
@@ -1834,11 +1835,22 @@
   let sourceURL = T.unwords . T.words . T.concat <$> many urlChunk
   let betweenAngles = try $
          char '<' >> mconcat <$> (manyTill litChar (char '>'))
-  src <- try betweenAngles <|> sourceURL
+  src <- try betweenAngles <|> try base64DataURI <|> sourceURL
   tit <- option "" $ try $ spnl >> linkTitle
   skipSpaces
   char ')'
   return (escapeURI $ trimr src, tit)
+
+base64DataURI :: PandocMonad m => ParsecT Sources s m Text
+base64DataURI = do
+  Sources ((pos, txt):rest) <- getInput
+  let r = A.parse (fst <$> A.match pBase64DataURI) txt
+  case r of
+    A.Done remaining consumed -> do
+      let pos' = incSourceColumn pos (T.length consumed)
+      setInput $ Sources ((pos', remaining):rest)
+      return consumed
+    _ -> mzero
 
 linkTitle :: PandocMonad m => MarkdownParser m Text
 linkTitle = quotedTitle '"' <|> quotedTitle '\''
diff --git a/src/Text/Pandoc/Readers/Mdoc.hs b/src/Text/Pandoc/Readers/Mdoc.hs
--- a/src/Text/Pandoc/Readers/Mdoc.hs
+++ b/src/Text/Pandoc/Readers/Mdoc.hs
@@ -26,7 +26,7 @@
 #if MIN_VERSION_base(4,19,0)
 import Data.List (intersperse, unsnoc)
 #else
-import Data.List (intersperse, uncons)
+import Data.List (intersperse)
 #endif
 import qualified Data.Map.Strict as M
 import qualified Data.Text as T
@@ -46,7 +46,7 @@
 
 #if !MIN_VERSION_base(4,19,0)
 unsnoc :: [a] -> Maybe ([a], a)
-unsnoc xs = (\(hd, tl) -> (reverse tl, hd)) <$> uncons (reverse xs)
+unsnoc = foldr (\x -> Just . maybe ([], x) (\(~(a, b)) -> (x : a, b))) Nothing
 #endif
 
   {- As a general principle, if mandoc -T lint issues a WARNING admonition
diff --git a/src/Text/Pandoc/Readers/MediaWiki.hs b/src/Text/Pandoc/Readers/MediaWiki.hs
--- a/src/Text/Pandoc/Readers/MediaWiki.hs
+++ b/src/Text/Pandoc/Readers/MediaWiki.hs
@@ -253,7 +253,7 @@
   skipMany spaceChar
   char '='
   skipMany spaceChar
-  v <- (char '"' >> many1TillChar (satisfy (/='\n')) (char '"'))
+  v <- (char '"' >> manyTillChar (satisfy (/='\n')) (char '"'))
        <|> many1Char (satisfy $ \c -> not (isSpace c) && c /= '|')
   return (k,v)
 
@@ -276,7 +276,7 @@
   skipMany spaceChar
   c <- oneOf "|!"
   when (col > 1) $ void $ char c
-  notFollowedBy (oneOf "-}+")
+  notFollowedBy (oneOf "-}")
   attribs <- option [] (parseAttrs <* skipMany spaceChar <* char '|')
   skipMany spaceChar
   pure attribs
diff --git a/src/Text/Pandoc/Readers/Metadata.hs b/src/Text/Pandoc/Readers/Metadata.hs
--- a/src/Text/Pandoc/Readers/Metadata.hs
+++ b/src/Text/Pandoc/Readers/Metadata.hs
@@ -21,6 +21,7 @@
 import Control.Monad.Except (throwError)
 import qualified Data.ByteString as B
 import qualified Data.Map as M
+import qualified Data.Vector as V
 import Data.Text (Text)
 import qualified Data.Text as T
 import qualified Data.Yaml as Yaml
@@ -46,8 +47,7 @@
   case decodeAllWithWarnings bstr of
        Right (warnings, xs) -> do
          pos <- getPosition
-         mapM_ (\w -> case w of
-                        Yaml.DuplicateKey jpath ->
+         mapM_ (\(Yaml.DuplicateKey jpath) ->
                           report (YamlWarning pos $ "Duplicate key: " <>
                                   T.pack (formatRelativePath jpath)))
            warnings
@@ -84,20 +84,24 @@
 yamlBsToRefs pMetaValue idpred bstr =
   case Yaml.decodeAllEither' bstr of
        Right (Object m : _) -> do
-         let isSelected (String t) = idpred t
-             isSelected _ = False
-         let hasSelectedId (Object o) =
-               case parse (withObject "ref" (.:? "id")) (Object o) of
-                 Success (Just id') -> isSelected id'
-                 _ -> False
-             hasSelectedId _ = False
          case parse (withObject "metadata" (.:? "references")) (Object m) of
            Success (Just refs) -> sequence <$>
                  mapM (yamlToMetaValue pMetaValue) (filter hasSelectedId refs)
            _ -> return $ return []
+       Right (Array v : _) -> do
+         let refs = filter hasSelectedId $ V.toList v
+         sequence <$> mapM (yamlToMetaValue pMetaValue) (filter hasSelectedId refs)
        Right _ -> return . return $ []
        Left err' -> throwError $ PandocParseError
                                $ T.pack $ Yaml.prettyPrintParseException err'
+ where
+   isSelected (String t) = idpred t
+   isSelected _ = False
+   hasSelectedId (Object o) =
+     case parse (withObject "ref" (.:? "id")) (Object o) of
+       Success (Just id') -> isSelected id'
+       _ -> False
+   hasSelectedId _ = False
 
 normalizeMetaValue :: (PandocMonad m, HasLastStrPosition st)
                    => ParsecT Sources st m (Future st MetaValue)
diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs
--- a/src/Text/Pandoc/Readers/RST.hs
+++ b/src/Text/Pandoc/Readers/RST.hs
@@ -1704,22 +1704,19 @@
   skipSpaces
   string "`_"
   optional $ char '_' -- anonymous form
-  ((src',tit),attr) <-
-    if isURI src
-       then return ((src, ""), nullAttr)
-       else
-         case T.unsnoc src of
-           -- `link <google_>` is a reference link to _google!
-           Just (xs, '_') -> lookupKey [] (toKey xs)
-           _              -> return ((src, ""), nullAttr)
+  let src' | isURI src = escapeURI src
+           | otherwise =
+              case T.unsnoc src of
+                 Just (xs, '_') -> "##REF##" <> xs
+                 _              -> src
   let label'' = if label' == mempty
                    then B.str src
                    else label'
   let key = toKey $ stringify label'
   unless (key == Key mempty) $ do
     updateState $ \s -> s{
-      stateKeys = M.insert key ((src',tit), attr) $ stateKeys s }
-  return $ B.linkWith attr (escapeURI src') tit label''
+      stateKeys = M.insert key ((src',""), nullAttr) $ stateKeys s }
+  return $ B.linkWith nullAttr src' "" label''
 
 citationName :: PandocMonad m => RSTParser m Text
 citationName = do
diff --git a/src/Text/Pandoc/Readers/Textile.hs b/src/Text/Pandoc/Readers/Textile.hs
--- a/src/Text/Pandoc/Readers/Textile.hs
+++ b/src/Text/Pandoc/Readers/Textile.hs
@@ -501,6 +501,7 @@
                 , endline
                 , code
                 , escapedInline
+                , spanGroup
                 , inlineMarkup
                 , groupedInlineMarkup
                 , rawHtmlInline
@@ -525,9 +526,21 @@
                       , simpleInline (char '-' <* notFollowedBy (char '-')) B.strikeout
                       , simpleInline (char '^') B.superscript
                       , simpleInline (char '~') B.subscript
-                      , simpleInline (char '%') id
                       ]
 
+-- "The <span> tag is created by percent % signs between whitespaces."
+-- e.g. My mother has %{color:green;}green% eyes.
+spanGroup :: PandocMonad m => TextileParser m Inlines
+spanGroup = try $ do
+  notAfterString >>= guard
+  char '%' *> notFollowedBy whitespace
+  attr <- option nullAttr attributes
+  contents <- mconcat <$> manyTill
+   (try (((B.space <>) <$> try (whitespace *> notFollowedBy newline *> inline))
+         <|> try (notFollowedBy newline *> inline)))
+   (try (char '%' <* lookAhead (newline <|> ' ' <$ whitespace)))
+  pure $ B.spanWith attr contents
+
 -- | Trademark, registered, copyright
 mark :: PandocMonad m => TextileParser m Inlines
 mark = try $ char '(' >> (try tm <|> try reg <|> copy)
@@ -778,12 +791,14 @@
              -> (Inlines -> Inlines)                  -- ^ Inline constructor
              -> TextileParser m Inlines  -- ^ content parser (to be used repeatedly)
 simpleInline border construct = try $ do
-  notAfterString
+  notAfterString >>= guard
   border *> notFollowedBy (oneOf " \t\n\r")
   attr <- attributes
   body <- trimInlines . mconcat <$>
           withQuoteContext InSingleQuote
-            (manyTill (notFollowedBy newline >> inline)
+            (manyTill (((B.space <>) <$>
+                         try (whitespace *> notFollowedBy newline >> inline))
+                     <|> try (notFollowedBy newline >> inline))
              (try border <* notFollowedBy alphaNum))
   return $ construct $
         if attr == nullAttr
diff --git a/src/Text/Pandoc/Readers/Vimwiki.hs b/src/Text/Pandoc/Readers/Vimwiki.hs
--- a/src/Text/Pandoc/Readers/Vimwiki.hs
+++ b/src/Text/Pandoc/Readers/Vimwiki.hs
@@ -54,6 +54,7 @@
 import Data.Maybe
 import Data.Text (Text)
 import qualified Data.Text as T
+import Safe (lastMay)
 import Text.Pandoc.Builder (Blocks, Inlines, fromList, toList, trimInlines)
 import qualified Text.Pandoc.Builder as B (blockQuote, bulletList, code,
                                            codeBlockWith, definitionList,
@@ -510,9 +511,7 @@
   notFollowedBy (oneOf spaceChars)
   contents <- mconcat <$> many1Till inline'
                            (try (char '*' *> notFollowedBy alphaNum))
-  guard $ case reverse (toList contents) of
-             Space:_ -> False
-             _ -> True
+  guard $ lastMay (toList contents) /= Just Space
   return $ B.spanWith (makeId contents, [], []) mempty <> B.strong contents
 
 makeId :: Inlines -> Text
@@ -524,9 +523,7 @@
   notFollowedBy (oneOf spaceChars)
   contents <- mconcat <$> many1Till inline'
                            (try (char '_' *> notFollowedBy alphaNum))
-  guard $ case reverse (toList contents) of
-             Space:_ -> False
-             _ -> True
+  guard $ lastMay (toList contents) /= Just Space
   return $ B.emph contents
 
 strikeout :: PandocMonad m => VwParser m Inlines
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -523,7 +523,7 @@
  where
   getLevel (Header level _ _) = Min level
   getLevel _ = Min 99
-  minLevel = if null numoffsets || all (== 0) numoffsets
+  minLevel = if all (== 0) numoffsets
                 then getMin $ query getLevel bs
                 else 1 -- see #5071, for backwards compatibility
   go :: [Block] -> S.State [Int] [Block]
diff --git a/src/Text/Pandoc/Transforms.hs b/src/Text/Pandoc/Transforms.hs
--- a/src/Text/Pandoc/Transforms.hs
+++ b/src/Text/Pandoc/Transforms.hs
@@ -154,6 +154,11 @@
   | n < 0
   , m + n == 0 = headerShift n $
                  B.setTitle (B.fromList ils) $ Pandoc meta bs
+-- for this case, see #10459:
+headerShift n (Pandoc meta (Div attr@(_,"section":_,_) (Header m _ ils : as) : bs))
+  | n < 0
+  , m + n == 0 = headerShift n $
+                 B.setTitle (B.fromList ils) $ Pandoc meta (Div attr as : bs)
 headerShift n (Pandoc meta bs) = Pandoc meta (walk shift bs)
 
  where
diff --git a/src/Text/Pandoc/URI.hs b/src/Text/Pandoc/URI.hs
--- a/src/Text/Pandoc/URI.hs
+++ b/src/Text/Pandoc/URI.hs
@@ -15,13 +15,20 @@
                        , isURI
                        , schemes
                        , uriPathToPath
+                       , pBase64DataURI
                        ) where
 import qualified Network.HTTP.Types as HTTP
+import Data.ByteString.Base64 (decodeLenient)
+import Text.Pandoc.MIME (MimeType)
+import qualified Data.ByteString as B
 import qualified Text.Pandoc.UTF8 as UTF8
 import qualified Data.Text as T
 import qualified Data.Set as Set
 import Data.Char (isSpace, isAscii)
 import Network.URI (URI (uriScheme), parseURI, escapeURIString)
+import qualified Data.Attoparsec.Text as A
+import Data.Text.Encoding (encodeUtf8)
+import Control.Applicative (many)
 
 urlEncode :: T.Text -> T.Text
 urlEncode = UTF8.toText . HTTP.urlEncode True . UTF8.fromText
@@ -90,12 +97,16 @@
 -- | Check if the string is a valid URL with a IANA or frequently used but
 -- unofficial scheme (see @schemes@).
 isURI :: T.Text -> Bool
-isURI =
-  -- we URI-escape non-ASCII characters because otherwise parseURI will choke:
-  maybe False hasKnownScheme . parseURI . escapeURIString isAscii . T.unpack
+isURI t =
+  -- If it's a base 64 data: URI, avoid the expensive call to parseURI:
+  case A.parseOnly (pBase64DataURI *> A.endOfInput) t of
+    Right () -> True
+    Left _ ->
+      -- we URI-escape non-ASCII characters because otherwise parseURI will choke:
+      maybe False hasKnownScheme . parseURI . escapeURIString isAscii . T.unpack $ t
   where
-    hasKnownScheme = (`Set.member` schemes) . T.toLower .
-                     T.filter (/= ':') . T.pack . uriScheme
+    hasKnownScheme =
+      (`Set.member` schemes) . T.toLower . T.filter (/= ':') . T.pack . uriScheme
 
 -- | Converts the path part of a file: URI to a regular path.
 -- On windows, @/c:/foo@ should be @c:/foo@.
@@ -109,3 +120,31 @@
 #else
   path
 #endif
+
+pBase64DataURI :: A.Parser (B.ByteString, MimeType)
+pBase64DataURI = base64uri
+ where
+  base64uri = do
+    A.string "data:"
+    mime <- do
+      n1 <- restrictedName
+      A.char '/'
+      n2 <- restrictedName
+      mps <- many mediaParam
+      pure $ n1 <> "/" <> n2 <> mconcat mps
+    A.string ";base64,"
+    b64 <- A.takeWhile (A.inClass "A-Za-z0-9+/")
+    A.skipWhile (== '=')
+    -- this decode should be lazy:
+    pure (decodeLenient (encodeUtf8 b64), mime)
+  restrictedName = do
+    c <- A.satisfy (A.inClass "A-Za-z0-9")
+    rest <- A.takeWhile (A.inClass "A-Za-z0-9!#$&^_.+-")
+    pure $ T.singleton c <> rest
+  mediaParam = do
+    A.char ';'
+    A.skipWhile isSpace
+    k <- restrictedName
+    A.char '='
+    v <- A.takeWhile (/=';')
+    pure $ ";" <> k <> "=" <> v
diff --git a/src/Text/Pandoc/Writers/ANSI.hs b/src/Text/Pandoc/Writers/ANSI.hs
--- a/src/Text/Pandoc/Writers/ANSI.hs
+++ b/src/Text/Pandoc/Writers/ANSI.hs
@@ -82,7 +82,7 @@
   body <- blockListToANSI opts blocks'
   notes <- gets $ reverse . stNotes
   let notemark x = D.literal (tshow (x :: Int) <> ".") <+> D.space
-  let marks = take (length notes) $ map notemark [1..]
+  let marks = map notemark [1..length notes]
   let hangWidth = foldr (max . D.offset) 0 marks
   let notepretty | not (null notes) = D.cblock width hr $+$ hangMarks hangWidth marks notes
                  | otherwise = D.empty
@@ -297,12 +297,12 @@
 inlineToANSI opts (Superscript lst) = do
   case traverse toSuperscriptInline lst of
     Just xs -> inlineListToANSI opts xs
-    Nothing -> inlineListToANSI opts lst >>= return . D.parens
+    Nothing -> D.parens <$> inlineListToANSI opts lst
 
 inlineToANSI opts (Subscript lst) = do
   case traverse toSubscriptInline lst of
     Just xs -> inlineListToANSI opts xs
-    Nothing -> inlineListToANSI opts lst >>= return . D.parens
+    Nothing -> D.parens <$> inlineListToANSI opts lst
 
 inlineToANSI opts (SmallCaps lst) = inlineListToANSI opts lst
 
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs
--- a/src/Text/Pandoc/Writers/Docx.hs
+++ b/src/Text/Pandoc/Writers/Docx.hs
@@ -346,7 +346,6 @@
   let relEntry = toEntry "word/_rels/document.xml.rels" epochtime
         $ renderXml reldoc
 
-  -- let sectpr = fromMaybe (mknode "w:sectPr" [] ()) mbsectpr'
   let contents' = BL.fromStrict $ UTF8.fromText contents
 
   -- word/document.xml
diff --git a/src/Text/Pandoc/Writers/Docx/OpenXML.hs b/src/Text/Pandoc/Writers/Docx/OpenXML.hs
--- a/src/Text/Pandoc/Writers/Docx/OpenXML.hs
+++ b/src/Text/Pandoc/Writers/Docx/OpenXML.hs
@@ -286,6 +286,8 @@
                  (fmap (vcat . map (literal . showContent)) . blocksToOpenXML opts)
                  (fmap (hcat . map (literal . showContent)) . inlinesToOpenXML opts)
                  meta
+  cStyleMap <- gets (smParaStyle . stStyleMaps)
+  let styleIdOf name = fromStyleId $ getStyleIdFromName name cStyleMap
   let context = resetField "body" body
               . resetField "toc"
                    (vcat (map (literal . showElement) toc))
@@ -299,6 +301,12 @@
               . resetField "date" date
               . resetField "abstract-title" abstractTitle
               . resetField "abstract" abstract
+              . resetField "title-style-id" (styleIdOf "Title")
+              . resetField "subtitle-style-id" (styleIdOf "Subtitle")
+              . resetField "author-style-id" (styleIdOf "Author")
+              . resetField "date-style-id" (styleIdOf "Date")
+              . resetField "abstract-title-style-id" (styleIdOf "AbstractTitle")
+              . resetField "abstract-style-id" (styleIdOf "Abstract")
               $ metadata
   tpl <- maybe (lift $ compileDefaultTemplate "openxml") pure $ writerTemplate opts
   let rendered = render Nothing $ renderTemplate tpl context
@@ -367,6 +375,7 @@
   wrapBookmark ident $ header <> contents
 blockToOpenXML' opts (Header lev (ident,_,kvs) lst) = do
   setFirstPara
+  let isChapter = lev == 1 && writerTopLevelDivision opts == TopLevelChapter
   paraProps <- withParaPropM (pStyleM (fromString $ "Heading "++show lev)) $
                     getParaProps False
   number <-
@@ -380,14 +389,20 @@
                 Nothing -> return []
            else return []
   contents <- (number ++) <$> inlinesToOpenXML opts lst
-  if T.null ident
-     then return [Elem $ mknode "w:p" [] (map Elem paraProps ++ contents)]
-     else do
-       let bookmarkName = ident
-       modify $ \s -> s{ stSectionIds = Set.insert bookmarkName
-                                      $ stSectionIds s }
-       bookmarkedContents <- wrapBookmark bookmarkName contents
-       return [Elem $ mknode "w:p" [] (map Elem paraProps ++ bookmarkedContents)]
+  let addSectionBreak
+       | isChapter = (Elem (mknode "w:p" []
+                            (mknode "w:pPr" []
+                             [mknode "w:sectPr" [] ()])) :)
+       | otherwise = id
+  addSectionBreak <$>
+    if T.null ident
+       then return [Elem $ mknode "w:p" [] (map Elem paraProps ++ contents)]
+       else do
+         let bookmarkName = ident
+         modify $ \s -> s{ stSectionIds = Set.insert bookmarkName
+                                        $ stSectionIds s }
+         bookmarkedContents <- wrapBookmark bookmarkName contents
+         return [Elem $ mknode "w:p" [] (map Elem paraProps ++ bookmarkedContents)]
 blockToOpenXML' opts (Plain lst) = do
   isInTable <- gets stInTable
   isInList <- gets stInList
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -1578,8 +1578,13 @@
                                            $ toHtml linkTxt
                                  , [A5.controls ""] )
                             s' = fromMaybe s $ T.stripSuffix ".gz" s
-                            normSrc = maybe (T.unpack s) uriPath (parseURIReference $ T.unpack s')
-                            (tag, specAttrs) = case mediaCategory normSrc of
+                            category =
+                              if "data:" `T.isPrefixOf` s
+                                 then Just . T.takeWhile (/= '/') . T.drop 5 $ s
+                                 else case parseURIReference (T.unpack s') of
+                                        Just u -> mediaCategory $ uriPath u
+                                        Nothing -> mediaCategory (T.unpack s)
+                            (tag, specAttrs) = case category of
                               Just "image" -> imageTag
                               Just "video" -> mediaTag H5.video "Video"
                               Just "audio" -> mediaTag H5.audio "Audio"
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -39,7 +39,7 @@
 import Data.Text (Text)
 import qualified Data.Text as T
 import Network.URI (unEscapeString)
-import Text.DocTemplates (FromContext(lookupContext), renderTemplate)
+import Text.DocTemplates (FromContext(lookupContext), Val(..), renderTemplate)
 import Text.Collate.Lang (renderLang, Lang(langLanguage))
 import Text.Pandoc.Class.PandocMonad (PandocMonad, report, toLang)
 import Text.Pandoc.Definition
@@ -157,11 +157,15 @@
                                           _               -> "article"
   when (documentClass `elem` chaptersClasses) $
      modify $ \s -> s{ stHasChapters = True }
-  case lookupContext "csquotes" (writerVariables options) `mplus`
-       (stringify <$> lookupMeta "csquotes" meta) of
-     Nothing      -> return ()
-     Just "false" -> return ()
-     Just _       -> modify $ \s -> s{stCsquotes = True}
+  let csquotes =
+        case lookupContext "csquotes" (writerVariables options) of
+          Just (BoolVal v) -> v
+          Just (SimpleVal (Text _ t)) -> t /= ("false" :: Text)
+          _ -> case stringify <$> lookupMeta "csquotes" meta of
+                  Nothing -> False
+                  Just "false" -> False
+                  Just _ -> True
+  when csquotes $ modify $ \s -> s{stCsquotes = True}
   let (blocks'', lastHeader) = if writerCiteMethod options == Citeproc then
                                  (blocks', [])
                                else case reverse blocks' of
@@ -426,6 +430,7 @@
   blockToLaTeX $ linesToPara lns
 blockToLaTeX (BlockQuote lst) = do
   beamer <- gets stBeamer
+  csquotes <- liftM stCsquotes get
   case lst of
        [b] | beamer && isListBlock b -> do
          oldIncremental <- gets stIncremental
@@ -438,7 +443,10 @@
          modify (\s -> s{stInQuote = True})
          contents <- blockListToLaTeX lst
          modify (\s -> s{stInQuote = oldInQuote})
-         return $ "\\begin{quote}" $$ contents $$ "\\end{quote}"
+         let envname = if csquotes then "displayquote" else "quote"
+         return $ ("\\begin" <> braces envname) $$
+                  contents $$
+                  ("\\end" <> braces envname)
 blockToLaTeX (CodeBlock (identifier,classes,keyvalAttr) str) = do
   opts <- gets stOptions
   inNote <- stInNote <$> get
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -470,16 +470,18 @@
   let renderEmpty = mempty <$ report (BlockNotRendered b)
   case variant of
     PlainText
-      | f == "plain" -> return $ literal str <> literal "\n"
+      | f == "plain" -> return $ nest 0 (literal str) <> literal "\n"
     Commonmark
       | f `elem` ["gfm", "commonmark", "commonmark_x", "markdown"]
-         -> return $ literal str $$ blankline
+         -> return $ nest 0 (literal str) $$ blankline
       | f `elem` ["html", "html5", "html4"]
          -> return $ literal (removeBlankLinesInHTML str) $$ blankline
     Markdown
       | f `elem` ["markdown", "markdown_github", "markdown_phpextra",
                   "markdown_mmd", "markdown_strict"]
-         -> return $ literal str <> literal "\n"
+        -- the 'nest 0' ensures that leading and trailing newlines
+        -- don't get collapsed. See #10477 for context;
+         -> return $ nest 0 (literal str) <> literal "\n"
     Markua -> renderEmpty
     _ | f `elem` ["html", "html5", "html4"]
       , isEnabled Ext_markdown_attribute opts
diff --git a/src/Text/Pandoc/Writers/MediaWiki.hs b/src/Text/Pandoc/Writers/MediaWiki.hs
--- a/src/Text/Pandoc/Writers/MediaWiki.hs
+++ b/src/Text/Pandoc/Writers/MediaWiki.hs
@@ -117,9 +117,12 @@
   tags <- asks useTags
   lev <- asks listLevel
   contents <- inlineListToMediaWiki inlines
+  let initEsc = if startsWithListMarker contents -- #9700
+                   then "\\"
+                   else ""
   return $ if tags
               then  "<p>" <> contents <> "</p>"
-              else contents <> if null lev then "\n" else ""
+              else initEsc <> contents <> if null lev then "\n" else ""
 
 blockToMediaWiki (LineBlock lns) =
   blockToMediaWiki $ linesToPara lns
@@ -1144,3 +1147,9 @@
   "yaml",
   "yaml+jinja",
   "zephir" ]
+
+startsWithListMarker :: Text -> Bool
+startsWithListMarker t =
+  case T.uncons t of
+    Nothing -> False
+    Just (c,_) -> c == '#' || c == ':' || c == ';' || c == '*'
diff --git a/src/Text/Pandoc/Writers/Typst.hs b/src/Text/Pandoc/Writers/Typst.hs
--- a/src/Text/Pandoc/Writers/Typst.hs
+++ b/src/Text/Pandoc/Writers/Typst.hs
@@ -450,7 +450,11 @@
        Just v -> ", " <> literal k <> ": " <> literal v
        Nothing -> mempty
   dimAttrs = mconcat $ map toDimAttr ["height", "width"]
-  coreImage = "image" <> parens (doubleQuoted src' <> dimAttrs)
+  isData = "data:" `T.isPrefixOf` src'
+  dataSvg = "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><image xlink:href=\"" <> src' <> "\" /></svg>"
+  coreImage
+    | isData = "image.decode" <> parens(doubleQuoted dataSvg <> dimAttrs)
+    | otherwise = "image" <> parens (doubleQuoted src' <> dimAttrs)
 
 textstyle :: PandocMonad m => Doc Text -> [Inline] -> TW m (Doc Text)
 textstyle s inlines =
diff --git a/test/command/10414.md b/test/command/10414.md
new file mode 100644
--- /dev/null
+++ b/test/command/10414.md
@@ -0,0 +1,6 @@
+```
+% pandoc -f textile -t html
+from 30.-100. text, inside - after dash
+^D
+<p>from 30.–100. text, inside - after dash</p>
+```
diff --git a/test/command/10459.md b/test/command/10459.md
new file mode 100644
--- /dev/null
+++ b/test/command/10459.md
@@ -0,0 +1,11 @@
+```
+% pandoc -s --shift-heading-level-by=-1 -f djot -t native
+# hi
+^D
+Pandoc
+  Meta
+    { unMeta =
+        fromList [ ( "title" , MetaInlines [ Str "hi" ] ) ]
+    }
+  [ Div ( "hi" , [ "section" ] , [] ) [] ]
+```
diff --git a/test/command/10484.md b/test/command/10484.md
new file mode 100644
--- /dev/null
+++ b/test/command/10484.md
@@ -0,0 +1,22 @@
+```
+% pandoc -frst -tmarkdown_strict
+- One issue fixed: `issue 123`_.
+
+- One change merged: `Big change <pull 234_>`_.
+
+- Improved the `home page <https://example.com/homepage>`_.
+
+- One more `small change`__.
+
+.. _issue 123: https://github.com/joe/project/issues/123
+.. _pull 234: https://github.com/joe/project/pull/234
+__ https://github.com/joe/project/issues/999
+
+^D
+-   One issue fixed: [issue
+    123](https://github.com/joe/project/issues/123).
+-   One change merged: [Big
+    change](https://github.com/joe/project/pull/234).
+-   Improved the [home page](https://example.com/homepage).
+-   One more [small change](https://github.com/joe/project/issues/999).
+```
diff --git a/test/command/10490.md b/test/command/10490.md
new file mode 100644
--- /dev/null
+++ b/test/command/10490.md
@@ -0,0 +1,50 @@
+```
+% pandoc -f mediawiki -t html
+{|class="wikitable" style="text-align: center;"
+|-
+!rowspan=3 style=""|Witness program version
+!colspan=4 style=""|Hash size
+|-
+!Mainnet
+!Testnet
+!Mainnet
+!Testnet
+|-
+|0||p2||QW||7Xh||T7n
+|-
+|1||p4||QY||7Xq||T7w
+|}
+^D
+<table>
+<thead>
+<tr>
+<th style=""><p>Witness program version</p></th>
+<th colspan="4" style=""><p>Hash size</p></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><p>Mainnet</p></td>
+<td><p>Testnet</p></td>
+<td><p>Mainnet</p></td>
+<td><p>Testnet</p></td>
+<td></td>
+</tr>
+<tr>
+<td><p>0</p></td>
+<td><p>p2</p></td>
+<td><p>QW</p></td>
+<td><p>7Xh</p></td>
+<td><p>T7n</p></td>
+</tr>
+<tr>
+<td><p>1</p></td>
+<td><p>p4</p></td>
+<td><p>QY</p></td>
+<td><p>7Xq</p></td>
+<td><p>T7w</p></td>
+</tr>
+</tbody>
+</table>
+
+```
diff --git a/test/command/10491.md b/test/command/10491.md
new file mode 100644
--- /dev/null
+++ b/test/command/10491.md
@@ -0,0 +1,35 @@
+```
+% pandoc -f mediawiki -t gfm
+{| class="wikitable"
+|-
+!
+!0
+!1
+!2
+!3
+!4
+!5
+!6
+!7
+|-
+!+0
+|q||p||z||r||y||9||x||8
+|-
+!+8
+|g||f||2||t||v||d||w||0
+|-
+!+16
+|s||3||j||n||5||4||k||h
+|-
+!+24
+|c||e||6||m||u||a||7||l
+|}
+^D
+|     | 0   | 1   | 2   | 3   | 4   | 5   | 6   | 7   |
+|-----|-----|-----|-----|-----|-----|-----|-----|-----|
+| +0  | q   | p   | z   | r   | y   | 9   | x   | 8   |
+| +8  | g   | f   | 2   | t   | v   | d   | w   | 0   |
+| +16 | s   | 3   | j   | n   | 5   | 4   | k   | h   |
+| +24 | c   | e   | 6   | m   | u   | a   | 7   | l   |
+
+```
diff --git a/test/command/6034.md b/test/command/6034.md
--- a/test/command/6034.md
+++ b/test/command/6034.md
@@ -7,8 +7,13 @@
   \end{overpic}
 \end{figure*}
 ^D
-[ RawBlock
-    (Format "latex")
-    "\\begin{figure*}\n  \\centering\n  \\begin{overpic}{test_pic}\n    \\put (70,80) {Caption}\n  \\end{overpic}\n\\end{figure*}"
+[ Figure
+    ( "" , [] , [] )
+    (Caption Nothing [])
+    [ RawBlock (Format "latex") "\\centering"
+    , RawBlock
+        (Format "latex")
+        "\\begin{overpic}{test_pic}\n    \\put (70,80) {Caption}\n  \\end{overpic}"
+    ]
 ]
 ```
diff --git a/test/command/9700.md b/test/command/9700.md
new file mode 100644
--- /dev/null
+++ b/test/command/9700.md
@@ -0,0 +1,14 @@
+```
+% pandoc -t mediawiki
+This is a normal sentence with a manual text footnote\*
+
+\* The footnote explains why it couldn't just be inside parentheses
+
+\#foobar \#foobar
+^D
+This is a normal sentence with a manual text footnote*
+
+\* The footnote explains why it couldn’t just be inside parentheses
+
+\#foobar #foobar
+```
diff --git a/test/command/9878.md b/test/command/9878.md
--- a/test/command/9878.md
+++ b/test/command/9878.md
@@ -4,3 +4,9 @@
 ^D
 [ Para [ Str "15%" , Space , Str "50%" ] ]
 ```
+```
+% pandoc -f textile -t native
+15%. 70%
+^D
+[ Para [ Str "15%." , Space , Str "70%" ] ]
+```
diff --git a/test/docx/golden/block_quotes.docx b/test/docx/golden/block_quotes.docx
Binary files a/test/docx/golden/block_quotes.docx and b/test/docx/golden/block_quotes.docx differ
diff --git a/test/docx/golden/codeblock.docx b/test/docx/golden/codeblock.docx
Binary files a/test/docx/golden/codeblock.docx and b/test/docx/golden/codeblock.docx differ
diff --git a/test/docx/golden/comments.docx b/test/docx/golden/comments.docx
Binary files a/test/docx/golden/comments.docx and b/test/docx/golden/comments.docx differ
diff --git a/test/docx/golden/custom_style_no_reference.docx b/test/docx/golden/custom_style_no_reference.docx
Binary files a/test/docx/golden/custom_style_no_reference.docx and b/test/docx/golden/custom_style_no_reference.docx differ
diff --git a/test/docx/golden/custom_style_preserve.docx b/test/docx/golden/custom_style_preserve.docx
Binary files a/test/docx/golden/custom_style_preserve.docx and b/test/docx/golden/custom_style_preserve.docx differ
diff --git a/test/docx/golden/custom_style_reference.docx b/test/docx/golden/custom_style_reference.docx
Binary files a/test/docx/golden/custom_style_reference.docx and b/test/docx/golden/custom_style_reference.docx differ
diff --git a/test/docx/golden/definition_list.docx b/test/docx/golden/definition_list.docx
Binary files a/test/docx/golden/definition_list.docx and b/test/docx/golden/definition_list.docx differ
diff --git a/test/docx/golden/document-properties-short-desc.docx b/test/docx/golden/document-properties-short-desc.docx
Binary files a/test/docx/golden/document-properties-short-desc.docx and b/test/docx/golden/document-properties-short-desc.docx differ
diff --git a/test/docx/golden/document-properties.docx b/test/docx/golden/document-properties.docx
Binary files a/test/docx/golden/document-properties.docx and b/test/docx/golden/document-properties.docx differ
diff --git a/test/docx/golden/headers.docx b/test/docx/golden/headers.docx
Binary files a/test/docx/golden/headers.docx and b/test/docx/golden/headers.docx differ
diff --git a/test/docx/golden/image.docx b/test/docx/golden/image.docx
Binary files a/test/docx/golden/image.docx and b/test/docx/golden/image.docx differ
diff --git a/test/docx/golden/inline_code.docx b/test/docx/golden/inline_code.docx
Binary files a/test/docx/golden/inline_code.docx and b/test/docx/golden/inline_code.docx differ
diff --git a/test/docx/golden/inline_formatting.docx b/test/docx/golden/inline_formatting.docx
Binary files a/test/docx/golden/inline_formatting.docx and b/test/docx/golden/inline_formatting.docx differ
diff --git a/test/docx/golden/inline_images.docx b/test/docx/golden/inline_images.docx
Binary files a/test/docx/golden/inline_images.docx and b/test/docx/golden/inline_images.docx differ
diff --git a/test/docx/golden/link_in_notes.docx b/test/docx/golden/link_in_notes.docx
Binary files a/test/docx/golden/link_in_notes.docx and b/test/docx/golden/link_in_notes.docx differ
diff --git a/test/docx/golden/links.docx b/test/docx/golden/links.docx
Binary files a/test/docx/golden/links.docx and b/test/docx/golden/links.docx differ
diff --git a/test/docx/golden/lists.docx b/test/docx/golden/lists.docx
Binary files a/test/docx/golden/lists.docx and b/test/docx/golden/lists.docx differ
diff --git a/test/docx/golden/lists_9994.docx b/test/docx/golden/lists_9994.docx
Binary files a/test/docx/golden/lists_9994.docx and b/test/docx/golden/lists_9994.docx differ
diff --git a/test/docx/golden/lists_continuing.docx b/test/docx/golden/lists_continuing.docx
Binary files a/test/docx/golden/lists_continuing.docx and b/test/docx/golden/lists_continuing.docx differ
diff --git a/test/docx/golden/lists_div_bullets.docx b/test/docx/golden/lists_div_bullets.docx
Binary files a/test/docx/golden/lists_div_bullets.docx and b/test/docx/golden/lists_div_bullets.docx differ
diff --git a/test/docx/golden/lists_multiple_initial.docx b/test/docx/golden/lists_multiple_initial.docx
Binary files a/test/docx/golden/lists_multiple_initial.docx and b/test/docx/golden/lists_multiple_initial.docx differ
diff --git a/test/docx/golden/lists_restarting.docx b/test/docx/golden/lists_restarting.docx
Binary files a/test/docx/golden/lists_restarting.docx and b/test/docx/golden/lists_restarting.docx differ
diff --git a/test/docx/golden/nested_anchors_in_header.docx b/test/docx/golden/nested_anchors_in_header.docx
Binary files a/test/docx/golden/nested_anchors_in_header.docx and b/test/docx/golden/nested_anchors_in_header.docx differ
diff --git a/test/docx/golden/notes.docx b/test/docx/golden/notes.docx
Binary files a/test/docx/golden/notes.docx and b/test/docx/golden/notes.docx differ
diff --git a/test/docx/golden/raw-blocks.docx b/test/docx/golden/raw-blocks.docx
Binary files a/test/docx/golden/raw-blocks.docx and b/test/docx/golden/raw-blocks.docx differ
diff --git a/test/docx/golden/raw-bookmarks.docx b/test/docx/golden/raw-bookmarks.docx
Binary files a/test/docx/golden/raw-bookmarks.docx and b/test/docx/golden/raw-bookmarks.docx differ
diff --git a/test/docx/golden/table_one_row.docx b/test/docx/golden/table_one_row.docx
Binary files a/test/docx/golden/table_one_row.docx and b/test/docx/golden/table_one_row.docx differ
diff --git a/test/docx/golden/table_with_list_cell.docx b/test/docx/golden/table_with_list_cell.docx
Binary files a/test/docx/golden/table_with_list_cell.docx and b/test/docx/golden/table_with_list_cell.docx differ
diff --git a/test/docx/golden/tables-default-widths.docx b/test/docx/golden/tables-default-widths.docx
Binary files a/test/docx/golden/tables-default-widths.docx and b/test/docx/golden/tables-default-widths.docx differ
diff --git a/test/docx/golden/tables.docx b/test/docx/golden/tables.docx
Binary files a/test/docx/golden/tables.docx and b/test/docx/golden/tables.docx differ
diff --git a/test/docx/golden/tables_separated_with_rawblock.docx b/test/docx/golden/tables_separated_with_rawblock.docx
Binary files a/test/docx/golden/tables_separated_with_rawblock.docx and b/test/docx/golden/tables_separated_with_rawblock.docx differ
diff --git a/test/docx/golden/task_list.docx b/test/docx/golden/task_list.docx
Binary files a/test/docx/golden/task_list.docx and b/test/docx/golden/task_list.docx differ
diff --git a/test/docx/golden/track_changes_deletion.docx b/test/docx/golden/track_changes_deletion.docx
Binary files a/test/docx/golden/track_changes_deletion.docx and b/test/docx/golden/track_changes_deletion.docx differ
diff --git a/test/docx/golden/track_changes_insertion.docx b/test/docx/golden/track_changes_insertion.docx
Binary files a/test/docx/golden/track_changes_insertion.docx and b/test/docx/golden/track_changes_insertion.docx differ
diff --git a/test/docx/golden/track_changes_move.docx b/test/docx/golden/track_changes_move.docx
Binary files a/test/docx/golden/track_changes_move.docx and b/test/docx/golden/track_changes_move.docx differ
diff --git a/test/docx/golden/track_changes_scrubbed_metadata.docx b/test/docx/golden/track_changes_scrubbed_metadata.docx
Binary files a/test/docx/golden/track_changes_scrubbed_metadata.docx and b/test/docx/golden/track_changes_scrubbed_metadata.docx differ
diff --git a/test/docx/golden/unicode.docx b/test/docx/golden/unicode.docx
Binary files a/test/docx/golden/unicode.docx and b/test/docx/golden/unicode.docx differ
diff --git a/test/docx/golden/verbatim_subsuper.docx b/test/docx/golden/verbatim_subsuper.docx
Binary files a/test/docx/golden/verbatim_subsuper.docx and b/test/docx/golden/verbatim_subsuper.docx differ
