diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,32 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.14.1
+
+  * Update syntax definitions for julia, actionscript, bash, cpp, css,
+    djangotemplate, dosbat, groovy, html, ini, isocpp, java, javadoc, json,
+    jsp, latex, makefile, mustache, php, powershell, rest, rhtml,
+    sass, scala, scss, toml, xml, raku (with patch).
+
+  * Many improvements to regular expression compilation:
+
+    - Properly recognize unicode characters.
+    - Handle `\Q..\E` literal sequences.
+    - Handle group modifiers like `(?i:etc.)`. (The only one
+      we actually pay attention to is `i`.)
+    - Allow unicode category escapes outside of character classes.
+    - Support one-letter unicode category escapes like `\p{L}`.
+      These are found in some of the newer syntax definitions.
+
+  * Improve regex matching:
+
+    - Fix `wordDetect` to work around an issue in the new html.xml.
+    - Refactor and fix `atWordBoundary`: remove redundant checks, and
+      fix behavior (`/x\b/` was behaving like `/\bx\b/`) (Côme ALLART).
+    - Fix bug in `lastCharOffset` (Côme ALLART).
+
+  * Style: Allow colors to be specified in ARGB format (#178).
+    We currently just ignore the A part, but at least we don't fail.
+
 ## 0.14
 
   * Add rWeakDeliminators field to Rule. [API change]
diff --git a/skylighting-core.cabal b/skylighting-core.cabal
--- a/skylighting-core.cabal
+++ b/skylighting-core.cabal
@@ -1,5 +1,5 @@
 name:                skylighting-core
-version:             0.14
+version:             0.14.1
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/src/Regex/KDE/Compile.hs b/src/Regex/KDE/Compile.hs
--- a/src/Regex/KDE/Compile.hs
+++ b/src/Regex/KDE/Compile.hs
@@ -1,17 +1,17 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Regex.KDE.Compile
   (compileRegex)
   where
 
-import Data.Word (Word8)
 import qualified Data.ByteString as B
+import qualified Data.Text as T
 import Data.ByteString (ByteString)
-import qualified Data.ByteString.UTF8 as U
+import Data.Text.Encoding (decodeUtf8With, encodeUtf8)
+import Data.Text.Encoding.Error (lenientDecode)
 import Safe
-import Data.Attoparsec.ByteString as A hiding (match)
+import Data.Attoparsec.Text as A hiding (match)
 import Data.Char
 import Control.Applicative
 import Regex.KDE.Regex
@@ -21,94 +21,125 @@
 import Data.Semigroup ((<>))
 #endif
 
+-- I believe the Regex engine used in KatePart is Qt's.
+-- It is described here: https://doc.qt.io/qt-6/qregexp.html
+
 -- | Compile a UTF-8 encoded ByteString as a Regex.  If the first
 -- parameter is True, then the Regex will be case sensitive.
 compileRegex :: Bool -> ByteString -> Either String Regex
 compileRegex caseSensitive bs =
-  let !res = parseOnly (evalStateT parser 0) bs
+  let !res = parseOnly (evalStateT parser RState{
+                                            rsCurrentCaptureNumber = 0,
+                                            rsCaseSensitive = caseSensitive })
+                       (decodeUtf8With lenientDecode bs)
    in res
  where
    parser = do
-     !re <- pRegex caseSensitive
+     !re <- pRegex
      (re <$ lift A.endOfInput) <|>
-       do rest <- lift A.takeByteString
+       do rest <- lift A.takeText
           fail $ "parse error at byte position " ++
-                 show (B.length bs - B.length rest)
+                 show (B.length bs - B.length (encodeUtf8 rest))
 
-type RParser = StateT Int Parser
+data RState =
+  RState
+  { rsCurrentCaptureNumber :: Int
+  , rsCaseSensitive :: Bool }
+  deriving (Show)
 
-pRegex :: Bool -> RParser Regex
-pRegex caseSensitive =
+type RParser = StateT RState Parser
+
+pRegex :: RParser Regex
+pRegex =
   option MatchNull $
   foldr MatchAlt
-    <$> (pAltPart caseSensitive)
-    <*> (many $ lift (char '|') *> (pAltPart caseSensitive <|> pure mempty))
-
-pAltPart :: Bool -> RParser Regex
-pAltPart caseSensitive = mconcat <$> many1 (pRegexPart caseSensitive)
+    <$> pAltPart
+    <*> many (lift (char '|') *> (pAltPart <|> pure mempty))
 
-char :: Char -> Parser Char
-char c =
-  c <$ satisfy (== fromIntegral (ord c))
+pAltPart :: RParser Regex
+pAltPart = mconcat <$> many1 pRegexPart
 
-pRegexPart :: Bool -> RParser Regex
-pRegexPart caseSensitive =
-  (lift (pRegexChar caseSensitive) <|> pParenthesized caseSensitive) >>=
-     lift . pSuffix
+pRegexPart :: RParser Regex
+pRegexPart =
+  pRegexChar <|> pParenthesized >>= pSuffix
 
-pParenthesized :: Bool -> RParser Regex
-pParenthesized caseSensitive = do
-  _ <- lift (satisfy (== 40))
+pParenthesized :: RParser Regex
+pParenthesized = do
+  _ <- lift (char '(')
   -- pcrepattern says: A group that starts with (?| resets the capturing
   -- parentheses numbers in each alternative.
   resetCaptureNumbers <- option False (True <$ lift (string "?|"))
-  modifier <- if resetCaptureNumbers
-                 then return id
-                 else lift (satisfy (== 63) *> pGroupModifiers)
-                    <|> (MatchCapture <$> (modify (+ 1) *> get))
-  currentCaptureNumber <- get
-  contents <- option MatchNull $
+  (modifier, stModifier) <-
+              if resetCaptureNumbers
+                 then return (id, id)
+                 else lift (char '?' *> pGroupModifiers)
+                    <|> do modify (\st -> st{
+                                      rsCurrentCaptureNumber =
+                                             rsCurrentCaptureNumber st + 1})
+                           num <- gets rsCurrentCaptureNumber
+                           pure (MatchCapture num, id)
+  currentCaptureNumber <- gets rsCurrentCaptureNumber
+  contents <- option MatchNull $ withStateT stModifier $
     foldr MatchAlt
-      <$> (pAltPart caseSensitive)
-      <*> (many $ lift (char '|') *>
-            (((if resetCaptureNumbers
-                  then put currentCaptureNumber
-                  else return ()) >> pAltPart caseSensitive) <|> pure mempty))
-  _ <- lift (satisfy (== 41))
+      <$> pAltPart
+      <*> many (lift (char '|') *>
+            ((when resetCaptureNumbers
+                  (modify (\st ->
+                        st{ rsCurrentCaptureNumber = currentCaptureNumber }))
+               >> pAltPart) <|> pure mempty))
+  _ <- lift (char ')')
   return $ modifier contents
 
-pGroupModifiers :: Parser (Regex -> Regex)
+pGroupModifiers :: Parser (Regex -> Regex, RState -> RState)
 pGroupModifiers =
-  (id <$ char ':')
+  (do stmod <- pRegexModifier -- (?i:
+      void (char ':')
+      pure (id, stmod))
    <|>
      do dir <- option Forward $ Backward <$ char '<'
-        (AssertPositive dir <$ char '=') <|> (AssertNegative dir <$ char '!')
+        ((AssertPositive dir, id) <$ char '=') <|>
+          ((AssertNegative dir, id) <$ char '!')
    <|>
-     do n <- satisfy (\d -> d >= 48 && d <= 57)
-        return (\_ -> Subroutine (fromIntegral n - 48))
+     do c <- digit
+        return (\_ -> Subroutine (ord c - 48), id)
    <|>
-     do _ <- satisfy (== 82) -- R
-        return  (\_ -> Subroutine 0)
+     do void $ char 'R'
+        return  (\_ -> Subroutine 0, id)
 
-pSuffix :: Regex -> Parser Regex
+pRegexModifier :: Parser (RState -> RState)
+pRegexModifier = do
+  -- "adlupimnsx-imnsx"
+  -- i = 105  - = 45
+  ons <- many $ satisfy (inClass "adlupimnsx")
+  offs <- option [] $ char '-' *>
+                      many (satisfy (inClass "imnsx"))
+  pure $ \st -> st{
+    rsCaseSensitive =
+      if 'i' `elem` ons && 'i' `notElem` offs
+         then False
+         else ('i' `elem` offs) || rsCaseSensitive st
+  }
+
+pSuffix :: Regex -> RParser Regex
 pSuffix re = option re $ do
-  w <- satisfy (\x -> x == 42 || x == 43 || x == 63 || x == 123)
+  w <- lift $ satisfy (inClass "*+?{")
   (case w of
-    42  -> return $ MatchAlt (MatchSome re) MatchNull
-    43  -> return $ MatchSome re
-    63  -> return $ MatchAlt re MatchNull
-    123 -> do
-      let isDig x = x >= 48 && x < 58
-      minn <- option Nothing $ readMay . U.toString <$> A.takeWhile isDig
-      maxn <- option minn $ char ',' *>
-                       (readMay . U.toString <$> A.takeWhile isDig)
-      _ <- char '}'
+    '*'  -> return $ MatchAlt (MatchSome re) MatchNull
+    '+'  -> return $ MatchSome re
+    '?'  -> return $ MatchAlt re MatchNull
+    '{'  -> do
+      minn <- lift $
+        option Nothing $ readMay . T.unpack <$> A.takeWhile isDigit
+      maxn <- lift $ option minn $ char ',' *>
+                       (readMay . T.unpack <$> A.takeWhile isDigit)
+      _ <- lift $ char '}'
       case (minn, maxn) of
           (Nothing, Nothing) -> mzero
           (Just n, Nothing)  -> return $! atleast n re
           (Nothing, Just n)  -> return $! atmost n re
           (Just m, Just n)   -> return $! between m n re
-    _   -> fail "pSuffix encountered impossible byte") >>= pQuantifierModifier
+    _   -> fail "pSuffix encountered impossible byte") >>=
+             lift . pQuantifierModifier
  where
    atmost 0 _ = MatchNull
    atmost n r = MatchAlt (mconcat (replicate n r)) (atmost (n-1) r)
@@ -120,55 +151,41 @@
 
 pQuantifierModifier :: Regex -> Parser Regex
 pQuantifierModifier re = option re $
-  (Possessive re <$ satisfy (== 43)) <|>
-  (Lazy re <$ satisfy (==63))
+  (Possessive re <$ char '+') <|> (Lazy re <$ char '?')
 
-pRegexChar :: Bool -> Parser Regex
-pRegexChar caseSensitive = do
-  w <- satisfy $ const True
+pRegexChar :: RParser Regex
+pRegexChar = do
+  w <- lift anyChar
+  caseSensitive <- gets rsCaseSensitive
   case w of
-    46  -> return MatchAnyChar
-    37 -> (do -- dynamic %1 %2
-              ds <- A.takeWhile1 (\x -> x >= 48 && x <= 57)
-              case readMay (U.toString ds) of
+    '.'  -> return MatchAnyChar
+    '%' -> (do -- dynamic %1 %2
+              ds <- lift $ many1 digit
+              case readMay ds of
                 Just !n -> return $ MatchDynamic n
                 Nothing -> fail "not a number")
             <|> return (MatchChar (== '%'))
-    92  -> pRegexEscapedChar
-    36  -> return AssertEnd
-    94  -> return AssertBeginning
-    91  -> pRegexCharClass
-    _ | w < 128
-      , not (isSpecial w)
-         -> do let c = chr $ fromIntegral w
-               return $! MatchChar $
-                        if caseSensitive
-                           then (== c)
-                           else (\d -> toLower d == toLower c)
-      | w >= 0xc0 -> do
-          rest <- case w of
-                    _ | w >= 0xf0 -> A.take 3
-                      | w >= 0xe0 -> A.take 2
-                      | otherwise -> A.take 1
-          case U.uncons (B.cons w rest) of
-            Just (d, _) -> return $! MatchChar $
-                             if caseSensitive
-                                then (== d)
-                                else (\e -> toLower e == toLower d)
-            Nothing     -> fail "could not decode as UTF8"
-      | otherwise -> mzero
+    '\\' -> lift pRegexEscapedChar
+    '$'  -> return AssertEnd
+    '^'  -> return AssertBeginning
+    '['  -> lift pRegexCharClass
+    _ | isSpecial w -> mzero
+      | otherwise -> return $!
+            MatchChar $ if caseSensitive
+                           then (== w)
+                           else (\d -> toLower d == toLower w)
 
 pRegexEscapedChar :: Parser Regex
 pRegexEscapedChar = do
-  c <- anyChar
+  c <- A.anyChar
   (case c of
     'b' -> return AssertWordBoundary
     'B' -> return $ AssertNegative Forward AssertWordBoundary
     '{' -> do -- captured pattern: \1 \2 \{12}
-              ds <- A.takeWhile1 (\x -> x >= 48 && x <= 57)
+              ds <- many1 digit
               _ <- char '}'
-              case readMay (U.toString ds) of
-                Just !n -> return $ MatchCaptured $ n
+              case readMay ds of
+                Just !n -> return $ MatchCaptured n
                 Nothing -> fail "not a number"
     'd' -> return $ MatchChar isDigit
     'D' -> return $ MatchChar (not . isDigit)
@@ -176,7 +193,8 @@
     'S' -> return $ MatchChar (not . isSpace)
     'w' -> return $ MatchChar isWordChar
     'W' -> return $ MatchChar (not . isWordChar)
-    _ | c >= '0' && c <= '9' ->
+    'p' -> MatchChar <$> pUnicodeCharClass
+    _ | isDigit c ->
        return $! MatchCaptured (ord c - ord '0')
       | otherwise -> mzero) <|> (MatchChar . (==) <$> pEscaped c)
 
@@ -192,28 +210,27 @@
     'v' -> return '\v'
     '0' -> do -- \0ooo matches octal ooo
       ds <- A.take 3
-      case readMay ("'\\o" ++ U.toString ds ++ "'") of
+      case readMay ("'\\o" ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid octal character escape"
     _ | c >= '1' && c <= '7' -> do
       -- \123 matches octal 123, \1 matches octal 1
       let octalDigitScanner s w
-            | s < 3, w >= 48 && w <= 55
-                        = Just (s + 1) -- digits 0-7
+            | s < 3, isOctDigit w = Just (s + 1) -- digits 0-7
             | otherwise = Nothing
       ds <- A.scan (1 :: Int) octalDigitScanner
-      case readMay ("'\\o" ++ [c] ++ U.toString ds ++ "'") of
+      case readMay ("'\\o" ++ [c] ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid octal character escape"
     'z' -> do -- \zhhhh matches unicode hex char hhhh
       ds <- A.take 4
-      case readMay ("'\\x" ++ U.toString ds ++ "'") of
+      case readMay ("'\\x" ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid hex character escape"
     'x' -> do -- \xhh matches hex hh, \x{h+} matches hex h+
-      ds <- (satisfy (== 123) *> A.takeWhile (/= 125) <* satisfy (== 125))
+      ds <- (char '{' *> A.takeWhile (/= '}') <* char '}')
              <|> A.take 2
-      case readMay ("'\\x" ++ U.toString ds ++ "'") of
+      case readMay ("'\\x" ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid hex character escape"
     _ | isPunctuation c || isSymbol c || isSpace c -> return c
@@ -221,9 +238,9 @@
 
 pRegexCharClass :: Parser Regex
 pRegexCharClass = do
-  negated <- option False $ True <$ satisfy (== 94) -- '^'
+  negated <- option False $ True <$ char '^'
   let getEscapedClass = do
-        _ <- satisfy (== 92) -- backslash
+        _ <- char '\\'
         (isDigit <$ char 'd')
          <|> (not . isDigit <$ char 'D')
          <|> (isSpace <$ char 's')
@@ -232,7 +249,7 @@
          <|> (not . isWordChar <$ char 'W')
   let getPosixClass = do
         _ <- string "[:"
-        localNegated <- option False $ True <$ satisfy (== 94) -- '^'
+        localNegated <- option False $ True <$ char '^'
         res <- (isAlphaNum <$ string "alnum")
              <|> (isAlpha <$ string "alpha")
              <|> (isAscii <$ string "ascii")
@@ -251,73 +268,95 @@
              <|> (isHexDigit <$ string "xdigit")
         _ <- string ":]"
         return $! if localNegated then not . res else res
-  let getC = (satisfy (== 92) *> anyChar >>= pEscaped) <|>
-       (chr . fromIntegral <$> satisfy (\x -> x /= 92 && x /= 93)) -- \ ]
+  let getC = (char '\\' *> anyChar >>= pEscaped) <|>
+             satisfy (\c -> c /= '\\' && c /= ']')
   let getCRange = do
         c <- getC
-        (\d -> (\x -> x >= c && x <= d)) <$> (char '-' *> getC) <|>
+        (\d x -> x >= c && x <= d) <$> (char '-' *> getC) <|>
           return (== c)
-  let getCClass = do -- character class \p{Lo}
-        _ <- A.string "\\p"
-        ds <- satisfy (== 123) *> A.takeWhile (/= 125) <* satisfy (== 125)
-        return $
-          (case ds of
-            "Lu" -> (== UppercaseLetter)
-            "Ll" -> (== LowercaseLetter)
-            "Lt" -> (== TitlecaseLetter)
-            "Lm" -> (== ModifierLetter)
-            "Lo" -> (== OtherLetter)
-            "Mn" -> (== NonSpacingMark)
-            "Mc" -> (== SpacingCombiningMark)
-            "Me" -> (== EnclosingMark)
-            "Nd" -> (== DecimalNumber)
-            "Nl" -> (== LetterNumber)
-            "No" -> (== OtherNumber)
-            "Pc" -> (== ConnectorPunctuation)
-            "Pd" -> (== DashPunctuation)
-            "Ps" -> (== OpenPunctuation)
-            "Pe" -> (== ClosePunctuation)
-            "Pi" -> (== InitialQuote)
-            "Pf" -> (== FinalQuote)
-            "Po" -> (== OtherPunctuation)
-            "Sm" -> (== MathSymbol)
-            "Sc" -> (== CurrencySymbol)
-            "Sk" -> (== ModifierSymbol)
-            "So" -> (== OtherSymbol)
-            "Zs" -> (== Space)
-            "Zl" -> (== LineSeparator)
-            "Zp" -> (== ParagraphSeparator)
-            "Cc" -> (== Control)
-            "Cf" -> (== Format)
-            "Cs" -> (== Surrogate)
-            "Co" -> (== PrivateUse)
-            "Cn" -> (== NotAssigned)
-            _    -> (const False)) . generalCategory
+  let getQELiteral = do
+        void $ A.string "\\Q"
+        cs <- manyTill anyChar (A.string "\\E")
+        return $! \c -> any (== c) cs
   brack <- option [] $ [(==']')] <$ char ']'
-  fs <- many (getEscapedClass <|> getPosixClass <|> getCRange <|> getCClass)
-  _ <- satisfy (== 93) -- ]
+  fs <- many (getQELiteral <|> getEscapedClass <|> getPosixClass <|> getCRange
+              <|> (A.string "\\p" *> pUnicodeCharClass))
+  void $ char ']'
   let f c = any ($ c) $ brack ++ fs
-  return $! MatchChar (if negated then (not . f) else f)
+  return $! MatchChar $ if negated
+                           then not . f
+                           else f
 
-anyChar :: Parser Char
-anyChar = do
-  w <- satisfy (const True)
-  return $! chr $ fromIntegral w
+-- character class \p{Lo}; we assume \p is already parsed
+pUnicodeCharClass :: Parser (Char -> Bool)
+pUnicodeCharClass = do
+  ds <- char '{' *> A.takeWhile (/= '}') <* char '}'
+  return $
+    (case ds of
+      "Lu" -> (== UppercaseLetter)
+      "Ll" -> (== LowercaseLetter)
+      "Lt" -> (== TitlecaseLetter)
+      "Lm" -> (== ModifierLetter)
+      "Lo" -> (== OtherLetter)
+      "L" -> (\c -> c == UppercaseLetter || c == LowercaseLetter ||
+                    c == TitlecaseLetter || c == ModifierLetter ||
+                    c == OtherLetter)
+      "Mn" -> (== NonSpacingMark)
+      "Mc" -> (== SpacingCombiningMark)
+      "Me" -> (== EnclosingMark)
+      "M" -> (\c -> c == NonSpacingMark || c == SpacingCombiningMark ||
+                    c == EnclosingMark)
+      "Nd" -> (== DecimalNumber)
+      "Nl" -> (== LetterNumber)
+      "No" -> (== OtherNumber)
+      "N" -> (\c -> c == DecimalNumber || c == LetterNumber ||
+                    c == OtherNumber)
+      "Pc" -> (== ConnectorPunctuation)
+      "Pd" -> (== DashPunctuation)
+      "Ps" -> (== OpenPunctuation)
+      "Pe" -> (== ClosePunctuation)
+      "Pi" -> (== InitialQuote)
+      "Pf" -> (== FinalQuote)
+      "Po" -> (== OtherPunctuation)
+      "P" -> (\c -> c == ConnectorPunctuation || c == DashPunctuation ||
+                    c == OpenPunctuation || c == ClosePunctuation ||
+                    c == InitialQuote || c == FinalQuote ||
+                    c == OtherPunctuation)
+      "Sm" -> (== MathSymbol)
+      "Sc" -> (== CurrencySymbol)
+      "Sk" -> (== ModifierSymbol)
+      "So" -> (== OtherSymbol)
+      "S" -> (\c -> c == MathSymbol || c == CurrencySymbol ||
+                    c == ModifierSymbol || c == OtherSymbol)
+      "Zs" -> (== Space)
+      "Zl" -> (== LineSeparator)
+      "Zp" -> (== ParagraphSeparator)
+      "Z" -> (\c -> c == Space || c == LineSeparator ||
+                    c == ParagraphSeparator)
+      "Cc" -> (== Control)
+      "Cf" -> (== Format)
+      "Cs" -> (== Surrogate)
+      "Co" -> (== PrivateUse)
+      "Cn" -> (== NotAssigned)
+      "C" -> (\c -> c == Control || c == Format || c == Surrogate ||
+                    c == PrivateUse || c == NotAssigned)
+      _    -> const False) . generalCategory
 
-isSpecial :: Word8 -> Bool
-isSpecial 92 = True -- '\\'
-isSpecial 63 = True -- '?'
-isSpecial 42 = True -- '*'
-isSpecial 43 = True -- '+'
--- isSpecial 123 = True -- '{'  -- this is okay except in suffixes
-isSpecial 91 = True -- '['
-isSpecial 93 = True -- ']'
-isSpecial 37 = True -- '%'
-isSpecial 40 = True -- '('
-isSpecial 41 = True -- ')'
-isSpecial 124 = True -- '|'
-isSpecial 46 = True -- '.'
-isSpecial 36 = True -- '$'
-isSpecial 94 = True -- '^'
+
+isSpecial :: Char -> Bool
+isSpecial '\\' = True
+isSpecial '?'  = True
+isSpecial '*'  = True
+isSpecial '+'  = True
+-- isSpecial '{' = True -- this is okay except in suffixes
+isSpecial '[' = True
+isSpecial ']' = True
+isSpecial '%' = True
+isSpecial '(' = True
+isSpecial ')' = True
+isSpecial '|' = True
+isSpecial '.' = True
+isSpecial '$' = True
+isSpecial '^' = True
 isSpecial _  = False
 
diff --git a/src/Regex/KDE/Match.hs b/src/Regex/KDE/Match.hs
--- a/src/Regex/KDE/Match.hs
+++ b/src/Regex/KDE/Match.hs
@@ -156,22 +156,16 @@
 
 atWordBoundary :: Match -> Bool
 atWordBoundary m =
-  case matchOffset m of
-    0 -> True
-    n | n == B.length (matchBytes m) -> True
-      | otherwise ->
-           case lastCharOffset (matchBytes m) (matchOffset m) of
-             Nothing  -> True
-             Just off ->
-               case U.toString (B.drop (off - 1) (matchBytes m)) of
-                 (prev:cur:next:_) ->
-                   (isWordChar cur /= isWordChar next) ||
-                   (isWordChar cur /= isWordChar prev)
-                 _ -> True
+  case lastCharOffset (matchBytes m) (matchOffset m) of
+    Nothing  -> True
+    Just off ->
+      case U.toString (B.drop off (matchBytes m)) of
+        (cur:next:_) -> isWordChar cur /= isWordChar next
+        _ -> True
 
 lastCharOffset :: ByteString -> Int -> Maybe Int
 lastCharOffset _ 0 = Nothing
-lastCharOffset _ 1 = Nothing
+lastCharOffset _ 1 = Just 0
 lastCharOffset bs n =
   case B.index bs (n - 2) of
     w | w <  0b10000000 -> Just (n - 1)
diff --git a/src/Skylighting/Tokenizer.hs b/src/Skylighting/Tokenizer.hs
--- a/src/Skylighting/Tokenizer.hs
+++ b/src/Skylighting/Tokenizer.hs
@@ -383,7 +383,9 @@
 
 wordDetect :: Bool -> Set.Set Char -> Text -> ByteString -> TokenizerM Text
 wordDetect caseSensitive weakDelims s inp = do
-  wordBoundary weakDelims inp
+  -- Removed the next line because KDE seems to allow
+  -- \n<DOCTYPE! to match \b<DOCTYPE!/b:
+  -- wordBoundary weakDelims inp
   t <- decodeBS $ UTF8.take (Text.length s) inp
   -- we assume here that the case fold will not change length,
   -- which is safe for ASCII keywords and the like...
diff --git a/src/Skylighting/Types.hs b/src/Skylighting/Types.hs
--- a/src/Skylighting/Types.hs
+++ b/src/Skylighting/Types.hs
@@ -312,6 +312,10 @@
      case reads ['(','0','x',r1,r2,',','0','x',g1,g2,',','0','x',b1,b2,')'] of
            ((r,g,b),_) : _ -> Just $ RGB r g b
            _               -> Nothing
+  toColor ['#',_,_,r1,r2,g1,g2,b1,b2] = -- ARGB format, we just ignore the A
+     case reads ['(','0','x',r1,r2,',','0','x',g1,g2,',','0','x',b1,b2,')'] of
+           ((r,g,b),_) : _ -> Just $ RGB r g b
+           _               -> Nothing
   toColor _        = Nothing
 
 instance ToColor Int where
diff --git a/test/expected/hk91.html.native b/test/expected/hk91.html.native
--- a/test/expected/hk91.html.native
+++ b/test/expected/hk91.html.native
@@ -1,5 +1,5 @@
-[ [ ( DataTypeTok , "<!DOCTYPE " )
-  , ( NormalTok , "HTML" )
+[ [ ( DataTypeTok , "<!DOCTYPE" )
+  , ( NormalTok , " HTML" )
   , ( DataTypeTok , ">" )
   ]
 , [ ( DataTypeTok , "<" )
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -310,6 +310,7 @@
   , ("[\\p{Lu}\\p{Ll}]*", "Σφa1B", Just ("Σφa", []))
   , ("\\bhello\\b|hell", "hello there", Just ("hello", []))
   , ("\\bhello\\b|hell", "hellothere", Just ("hell", []))
+  , ("u\\b", "ue", Nothing)
   , ("[[:space:]]{2,4}.", "  abc", Just ("  a", []))
   , ("[[:space:]]{2,4}.", " abc", Nothing)
   , ("[[:space:]]{2,4}.", "     abc", Just ("     ", []))
@@ -335,6 +336,9 @@
   , ("(?|(abc)|(def))", "abc", Just ("abc", [(1,"abc")]))
   , ("(?|(abc)|(def))", "def", Just ("def", [(1,"def")]))
   , ("(?:(abc)|(def))", "def", Just ("def", [(2,"def")]))
+  , ("((?i:infinity|e|pi)|NaN)", "InfInity",
+      Just ("InfInity", [(1,"InfInity")]))
+--  , ("(?im)foo", "Foo", Just ("Foo", []))
   , ("d(?=(bc)|(ef))", "def", Just ("d", [(2,"ef")]))
   , ("([bcd])([efg])(?2)(?1)", "befd", Just ("befd", [(1,"b"),(2,"e")]))
   , ("([abc](?1)*)", "abcd", Just ("abc", [(1,"abc")]))
@@ -342,6 +346,8 @@
   , ("a|\\((?0)\\)", "(((a)))", Just ("(((a)))", []))
   , ("([abc](x(?1))*)", "axbxcc", Just ("axbxc", [(1,"axbxc"),(2,"xc")]))
     -- note: pcre gives insetad (2, "xbxc") -- I don't understand why
+  , ("[\\p{Nd}]", "33", Just ("3", []))
+  , ("\\p{N}", "33", Just ("3", []))
   ]
 
 
diff --git a/xml/actionscript.xml b/xml/actionscript.xml
--- a/xml/actionscript.xml
+++ b/xml/actionscript.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language>
-<language name="ActionScript 2.0" version="9" kateversion="5.62" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
+<language name="ActionScript 2.0" version="10" kateversion="5.79" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
   <highlighting>
     
     <list name="properties">
diff --git a/xml/bash.xml b/xml/bash.xml
--- a/xml/bash.xml
+++ b/xml/bash.xml
@@ -66,7 +66,7 @@
 
 <language
     name="Bash"
-    version="50"
+    version="51"
     kateversion="5.79"
     section="Scripts"
     extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD"
@@ -1005,13 +1005,15 @@
         <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">
         <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">
         <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
@@ -1019,7 +1021,8 @@
         <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">
         <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
diff --git a/xml/cpp.xml b/xml/cpp.xml
--- a/xml/cpp.xml
+++ b/xml/cpp.xml
@@ -11,12 +11,12 @@
 <language
     name="C++"
     section="Sources"
-    version="15"
+    version="17"
     kateversion="5.79"
     indenter="cstyle"
     style="C++"
     mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
-    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc"
+    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.inl;*.pde;*.moc;*.mpp;*.ixx;*.cppm;*.cxxm;*.c++m;*.ccm"
     author="Alex Turbov (i.zaufi@gmail.com)"
     license="LGPL"
     priority="9"
@@ -50,11 +50,16 @@
     <item>Q_EMIT</item>
     <item>Q_ENUM</item>
     <item>Q_ENUMS</item>
+    <item>Q_ENUM_NS</item>
     <item>Q_FLAG</item>
     <item>Q_FLAGS</item>
+    <item>Q_FLAG_NS</item>
     <item>Q_GADGET</item>
+    <item>Q_GADGET_EXPORT</item>
     <item>Q_INTERFACES</item>
     <item>Q_INVOKABLE</item>
+    <item>Q_NAMESPACE</item>
+    <item>Q_NAMESPACE_EXPORT</item>
     <item>Q_OBJECT</item>
     <item>Q_PROPERTY</item>
     <item>Q_REVISION</item>
@@ -458,6 +463,27 @@
     <item>Q_MOVABLE_TYPE</item>
     <item>Q_DUMMY_TYPE</item>
     <item>Q_RELOCATABLE_TYPE</item>
+    <!--https://doc.qt.io/qt-6/qqmlengine.html#macros-->
+    <item>QML_ADDED_IN_MINOR_VERSION</item>
+    <item>QML_ANONYMOUS</item>
+    <item>QML_ATTACHED</item>
+    <item>QML_DECLARE_TYPE</item>
+    <item>QML_DECLARE_TYPEINFO</item>
+    <item>QML_ELEMENT</item>
+    <item>QML_EXTENDED</item>
+    <item>QML_EXTENDED_NAMESPACE</item>
+    <item>QML_EXTRA_VERSION</item>
+    <item>QML_FOREIGN</item>
+    <item>QML_FOREIGN_NAMESPACE</item>
+    <item>QML_IMPLEMENTS_INTERFACES</item>
+    <item>QML_INTERFACE</item>
+    <item>QML_NAMED_ELEMENT</item>
+    <item>QML_REMOVED_IN_MINOR_VERSION</item>
+    <item>QML_SEQUENTIAL_CONTAINER</item>
+    <item>QML_SINGLETON</item>
+    <item>QML_UNAVAILABLE</item>
+    <item>QML_UNCREATABLE</item>
+    <item>QML_VALUE_TYPE</item>
   </list>
 
   <list name="QtFunc">
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -2,1956 +2,2080 @@
 <!DOCTYPE language
 [
   <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
-  <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-  <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-  <!ENTITY ident   "[-]?(&nmstart;)(&nmchar;)*">
-]>
-
-<!--
-
-Kate CSS syntax highlighting definition
-
-Changelog:
-
-- Version 8, by Jonathan Poelen
-- fix some Operator and Selector Tag highlighting
-
-- Version 7, by Jonathan Poelen
-- fix tag followed by a pseudo-class in a nested rule (@media, ...)
-- fix constraint in a rule
-- fix Kate auto-completion for properties and rules
-- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Variable, Value Keyword, Color, Number, Unit, Selector Tag
-
-- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
-- Remake for complex CSS syntax, avoid errors
-
-- Version 2.13, by Guo Yunhe
-- Add all W3C Work Draft properties
-
-- Version 2.06, by Mte90:
-- CSS3 tag
-
-- Version 2.03, by Milian Wolff:
-- Make it spelling aware
-
-- Version 2.08, Joseph Wenninger:
-- CSS3 media queries
-
--->
-
-<language name="CSS" version="15" kateversion="5.53" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
-    <!-- https://www.w3.org/Style/CSS/current-work -->
-
-    <highlighting>
-        <list name="properties">
-            <!-- W3C > Work Draft, from https://www.w3.org/Style/CSS/all-properties (exclude FPWD)-->
-            <item>accent-color</item>
-            <item>align-content</item>
-            <item>align-items</item>
-            <item>alignment-baseline</item>
-            <item>align-self</item>
-            <item>all</item>
-            <item>animation</item>
-            <item>animation-delay</item>
-            <item>animation-direction</item>
-            <item>animation-duration</item>
-            <item>animation-fill-mode</item>
-            <item>animation-iteration-count</item>
-            <item>animation-name</item>
-            <item>animation-play-state</item>
-            <item>animation-timing-function</item>
-            <item>appearance</item>
-            <item>aspect-ratio</item>
-            <item>azimuth</item>
-            <item>backdrop-filter</item>
-            <item>backface-visibility</item>
-            <item>background</item>
-            <item>background-attachment</item>
-            <item>background-blend-mode</item>
-            <item>background-clip</item>
-            <item>background-color</item>
-            <item>background-image</item>
-            <item>background-origin</item>
-            <item>background-position</item>
-            <item>background-position-x</item>
-            <item>background-position-y</item>
-            <item>background-repeat</item>
-            <item>background-size</item>
-            <item>baseline-shift</item>
-            <item>baseline-source</item>
-            <item>block-ellipsis</item>
-            <item>block-size</item>
-            <item>bookmark-label</item>
-            <item>bookmark-level</item>
-            <item>bookmark-state</item>
-            <item>border</item>
-            <item>border-block</item>
-            <item>border-block-color</item>
-            <item>border-block-end</item>
-            <item>border-block-end-color</item>
-            <item>border-block-end-style</item>
-            <item>border-block-end-width</item>
-            <item>border-block-start</item>
-            <item>border-block-start-color</item>
-            <item>border-block-start-style</item>
-            <item>border-block-start-width</item>
-            <item>border-block-style</item>
-            <item>border-block-width</item>
-            <item>border-bottom</item>
-            <item>border-bottom-color</item>
-            <item>border-bottom-left-radius</item>
-            <item>border-bottom-right-radius</item>
-            <item>border-bottom-style</item>
-            <item>border-bottom-width</item>
-            <item>border-boundary</item>
-            <item>border-collapse</item>
-            <item>border-color</item>
-            <item>border-end-end-radius</item>
-            <item>border-end-start-radius</item>
-            <item>border-image</item>
-            <item>border-image-outset</item>
-            <item>border-image-repeat</item>
-            <item>border-image-slice</item>
-            <item>border-image-source</item>
-            <item>border-image-width</item>
-            <item>border-inline</item>
-            <item>border-inline-color</item>
-            <item>border-inline-end</item>
-            <item>border-inline-end-color</item>
-            <item>border-inline-end-style</item>
-            <item>border-inline-end-width</item>
-            <item>border-inline-start</item>
-            <item>border-inline-start-color</item>
-            <item>border-inline-start-style</item>
-            <item>border-inline-start-width</item>
-            <item>border-inline-style</item>
-            <item>border-inline-width</item>
-            <item>border-left</item>
-            <item>border-left-color</item>
-            <item>border-left-style</item>
-            <item>border-left-width</item>
-            <item>border-radius</item>
-            <item>border-right</item>
-            <item>border-right-color</item>
-            <item>border-right-style</item>
-            <item>border-right-width</item>
-            <item>border-spacing</item>
-            <item>border-start-end-radius</item>
-            <item>border-start-start-radius</item>
-            <item>border-style</item>
-            <item>border-top</item>
-            <item>border-top-color</item>
-            <item>border-top-left-radius</item>
-            <item>border-top-right-radius</item>
-            <item>border-top-style</item>
-            <item>border-top-width</item>
-            <item>border-width</item>
-            <item>bottom</item>
-            <item>box-decoration-break</item>
-            <item>box-shadow</item>
-            <item>box-sizing</item>
-            <item>box-snap</item>
-            <item>break-after</item>
-            <item>break-before</item>
-            <item>break-inside</item>
-            <item>caption-side</item>
-            <item>caret</item>
-            <item>caret-color</item>
-            <item>caret-shape</item>
-            <item>chains</item>
-            <item>clear</item>
-            <item>clip</item>
-            <item>clip-path</item>
-            <item>clip-rule</item>
-            <item>color</item>
-            <item>color-adjust</item>
-            <item>color-interpolation-filters</item>
-            <item>color-scheme</item>
-            <item>columns</item>
-            <item>column-count</item>
-            <item>column-fill</item>
-            <item>column-gap</item>
-            <item>column-rule</item>
-            <item>column-rule-color</item>
-            <item>column-rule-style</item>
-            <item>column-rule-width</item>
-            <item>column-span</item>
-            <item>column-width</item>
-            <item>contain</item>
-            <item>contain-intrinsic-block-size</item>
-            <item>contain-intrinsic-height</item>
-            <item>contain-intrinsic-inline-size</item>
-            <item>contain-intrinsic-size</item>
-            <item>contain-intrinsic-width</item>
-            <item>container</item>
-            <item>container-name</item>
-            <item>container-type</item>
-            <item>content</item>
-            <item>content-visibility</item>
-            <item>continue</item>
-            <item>counter-increment</item>
-            <item>counter-reset</item>
-            <item>counter-set</item>
-            <item>cue</item>
-            <item>cue-after</item>
-            <item>cue-before</item>
-            <item>cursor</item>
-            <item>direction</item>
-            <item>display</item>
-            <item>dominant-baseline</item>
-            <item>elevation</item>
-            <item>empty-cells</item>
-            <item>fill</item>
-            <item>fill-break</item>
-            <item>fill-color</item>
-            <item>fill-image</item>
-            <item>fill-opacity</item>
-            <item>fill-origin</item>
-            <item>fill-position</item>
-            <item>fill-repeat</item>
-            <item>fill-rule</item>
-            <item>fill-size</item>
-            <item>filter</item>
-            <item>flex</item>
-            <item>flex-basis</item>
-            <item>flex-direction</item>
-            <item>flex-flow</item>
-            <item>flex-grow</item>
-            <item>flex-shrink</item>
-            <item>flex-wrap</item>
-            <item>float</item>
-            <item>flood-color</item>
-            <item>flood-opacity</item>
-            <item>flow</item>
-            <item>flow-from</item>
-            <item>flow-into</item>
-            <item>font</item>
-            <item>font-family</item>
-            <item>font-feature-settings</item>
-            <item>font-kerning</item>
-            <item>font-language-override</item>
-            <item>font-optical-sizing</item>
-            <item>font-palette</item>
-            <item>font-size</item>
-            <item>font-size-adjust</item>
-            <item>font-stretch</item>
-            <item>font-style</item>
-            <item>font-synthesis</item>
-            <item>font-synthesis-small-caps</item>
-            <item>font-synthesis-style</item>
-            <item>font-synthesis-weight</item>
-            <item>font-variant</item>
-            <item>font-variant-alternates</item>
-            <item>font-variant-caps</item>
-            <item>font-variant-east-asian</item>
-            <item>font-variant-emoji</item>
-            <item>font-variant-ligatures</item>
-            <item>font-variant-numeric</item>
-            <item>font-variant-position</item>
-            <item>font-variation-settings</item>
-            <item>font-weight</item>
-            <item>footnote-display</item>
-            <item>footnote-policy</item>
-            <item>forced-color-adjust</item>
-            <item>gap</item>
-            <item>glyph-orientation-vertical</item>
-            <item>grid</item>
-            <item>grid-area</item>
-            <item>grid-auto-columns</item>
-            <item>grid-auto-flow</item>
-            <item>grid-auto-rows</item>
-            <item>grid-column</item>
-            <item>grid-column-end</item>
-            <item>grid-column-start</item>
-            <item>grid-row</item>
-            <item>grid-row-end</item>
-            <item>grid-row-start</item>
-            <item>grid-template</item>
-            <item>grid-template-areas</item>
-            <item>grid-template-columns</item>
-            <item>grid-template-rows</item>
-            <item>hanging-punctuation</item>
-            <item>height</item>
-            <item>hyphenate-character</item>
-            <item>hyphenate-limit-chars</item>
-            <item>hyphenate-limit-last</item>
-            <item>hyphenate-limit-lines</item>
-            <item>hyphenate-limit-zone</item>
-            <item>hyphens</item>
-            <item>image-orientation</item>
-            <item>image-rendering</item>
-            <item>image-resolution</item>
-            <item>initial-letter</item>
-            <item>initial-letter-align</item>
-            <item>initial-letter-wrap</item>
-            <item>inline-size</item>
-            <item>inline-sizing</item>
-            <item>inset</item>
-            <item>inset-block</item>
-            <item>inset-block-end</item>
-            <item>inset-block-start</item>
-            <item>inset-inline</item>
-            <item>inset-inline-end</item>
-            <item>inset-inline-start</item>
-            <item>isolation</item>
-            <item>justify-content</item>
-            <item>justify-items</item>
-            <item>justify-self</item>
-            <item>leading-trim</item>
-            <item>left</item>
-            <item>letter-spacing</item>
-            <item>lighting-color</item>
-            <item>line-break</item>
-            <item>line-clamp</item>
-            <item>line-grid</item>
-            <item>line-height</item>
-            <item>line-height-step</item>
-            <item>line-padding</item>
-            <item>line-snap</item>
-            <item>list-style</item>
-            <item>list-style-image</item>
-            <item>list-style-position</item>
-            <item>list-style-type</item>
-            <item>margin</item>
-            <item>margin-block</item>
-            <item>margin-block-end</item>
-            <item>margin-block-start</item>
-            <item>margin-bottom</item>
-            <item>margin-inline</item>
-            <item>margin-inline-end</item>
-            <item>margin-inline-start</item>
-            <item>margin-left</item>
-            <item>margin-right</item>
-            <item>margin-top</item>
-            <item>margin-trim</item>
-            <item>marker-end</item>
-            <item>marker-mid</item>
-            <item>marker-side</item>
-            <item>marker-start</item>
-            <item>mask</item>
-            <item>mask-border</item>
-            <item>mask-border-mode</item>
-            <item>mask-border-outset</item>
-            <item>mask-border-repeat</item>
-            <item>mask-border-slice</item>
-            <item>mask-border-source</item>
-            <item>mask-border-width</item>
-            <item>mask-clip</item>
-            <item>mask-composite</item>
-            <item>mask-image</item>
-            <item>mask-mode</item>
-            <item>mask-origin</item>
-            <item>mask-position</item>
-            <item>mask-repeat</item>
-            <item>mask-size</item>
-            <item>mask-type</item>
-            <item>max-block-size</item>
-            <item>max-height</item>
-            <item>max-inline-size</item>
-            <item>max-lines</item>
-            <item>max-width</item>
-            <item>min-block-size</item>
-            <item>min-height</item>
-            <item>min-inline-size</item>
-            <item>min-intrinsic-sizing</item>
-            <item>min-width</item>
-            <item>mix-blend-mode</item>
-            <item>nav-up</item>
-            <item>nav-down</item>
-            <item>nav-left</item>
-            <item>nav-right</item>
-            <item>object-fit</item>
-            <item>object-position</item>
-            <item>offset</item>
-            <item>offset-anchor</item>
-            <item>offset-distance</item>
-            <item>offset-path</item>
-            <item>offset-position</item>
-            <item>offset-rotate</item>
-            <item>opacity</item>
-            <item>order</item>
-            <item>orphans</item>
-            <item>outline</item>
-            <item>outline-color</item>
-            <item>outline-offset</item>
-            <item>outline-style</item>
-            <item>outline-width</item>
-            <item>overflow</item>
-            <item>overflow-anchor</item>
-            <item>overflow-block</item>
-            <item>overflow-clip-margin</item>
-            <item>overflow-inline</item>
-            <item>overflow-wrap</item>
-            <item>overflow-x</item>
-            <item>overflow-y</item>
-            <item>overscroll-behavior</item>
-            <item>overscroll-behavior-block</item>
-            <item>overscroll-behavior-inline</item>
-            <item>overscroll-behavior-x</item>
-            <item>overscroll-behavior-y</item>
-            <item>padding</item>
-            <item>padding-block</item>
-            <item>padding-block-end</item>
-            <item>padding-block-start</item>
-            <item>padding-bottom</item>
-            <item>padding-inline</item>
-            <item>padding-inline-end</item>
-            <item>padding-inline-start</item>
-            <item>padding-left</item>
-            <item>padding-right</item>
-            <item>padding-top</item>
-            <item>page</item>
-            <item>page-break-after</item>
-            <item>page-break-before</item>
-            <item>page-break-inside</item>
-            <item>paint-order</item>
-            <item>pause</item>
-            <item>pause-after</item>
-            <item>pause-before</item>
-            <item>perspective</item>
-            <item>perspective-origin</item>
-            <item>pitch</item>
-            <item>pitch-range</item>
-            <item>place-content</item>
-            <item>place-items</item>
-            <item>place-self</item>
-            <item>play-during</item>
-            <item>pointer-events</item>
-            <item>position</item>
-            <item>print-color-adjust</item>
-            <item>quotes</item>
-            <item>region-fragment</item>
-            <item>resize</item>
-            <item>rest</item>
-            <item>rest-after</item>
-            <item>rest-before</item>
-            <item>richness</item>
-            <item>right</item>
-            <item>rotate</item>
-            <item>rotation</item>
-            <item>row-gap</item>
-            <item>ruby-align</item>
-            <item>ruby-merge</item>
-            <item>ruby-overhang</item>
-            <item>ruby-position</item>
-            <item>running</item>
-            <item>scale</item>
-            <item>scroll-behavior</item>
-            <item>scroll-margin</item>
-            <item>scroll-margin-block</item>
-            <item>scroll-margin-block-end</item>
-            <item>scroll-margin-block-start</item>
-            <item>scroll-margin-bottom</item>
-            <item>scroll-margin-inline</item>
-            <item>scroll-margin-inline-end</item>
-            <item>scroll-margin-inline-start</item>
-            <item>scroll-margin-left</item>
-            <item>scroll-margin-right</item>
-            <item>scroll-margin-top</item>
-            <item>scroll-padding</item>
-            <item>scroll-padding-block</item>
-            <item>scroll-padding-block-end</item>
-            <item>scroll-padding-block-start</item>
-            <item>scroll-padding-bottom</item>
-            <item>scroll-padding-inline</item>
-            <item>scroll-padding-inline-end</item>
-            <item>scroll-padding-inline-start</item>
-            <item>scroll-padding-left</item>
-            <item>scroll-padding-right</item>
-            <item>scroll-padding-top</item>
-            <item>scroll-snap-align</item>
-            <item>scroll-snap-stop</item>
-            <item>scroll-snap-type</item>
-            <item>scrollbar-color</item>
-            <item>scrollbar-gutter</item>
-            <item>scrollbar-width</item>
-            <item>shape-image-threshold</item>
-            <item>shape-inside</item>
-            <item>shape-margin</item>
-            <item>shape-outside</item>
-            <item>speak-as</item>
-            <item>spatial-navigation-action</item>
-            <item>spatial-navigation-contain</item>
-            <item>spatial-navigation-function</item>
-            <item>speak</item>
-            <item>speak-header</item>
-            <item>speak-numeral</item>
-            <item>speak-punctuation</item>
-            <item>speech-rate</item>
-            <item>stress</item>
-            <item>string-set</item>
-            <item>tab-size</item>
-            <item>table-layout</item>
-            <item>text-align-all</item>
-            <item>text-align</item>
-            <item>text-align-last</item>
-            <item>text-combine-upright</item>
-            <item>text-decoration</item>
-            <item>text-decoration-color</item>
-            <item>text-decoration-line</item>
-            <item>text-decoration-skip</item>
-            <item>text-decoration-skip-box</item>
-            <item>text-decoration-skip-ink</item>
-            <item>text-decoration-skip-inset</item>
-            <item>text-decoration-skip-self</item>
-            <item>text-decoration-skip-spaces</item>
-            <item>text-decoration-style</item>
-            <item>text-decoration-thickness</item>
-            <item>text-edge</item>
-            <item>text-emphasis</item>
-            <item>text-emphasis-color</item>
-            <item>text-emphasis-position</item>
-            <item>text-emphasis-skip</item>
-            <item>text-emphasis-style</item>
-            <item>text-group-align</item>
-            <item>text-indent</item>
-            <item>text-justify</item>
-            <item>text-orientation</item>
-            <item>text-overflow</item>
-            <item>text-rendering</item>
-            <item>text-shadow</item>
-            <item>text-space-collapse</item>
-            <item>text-space-trim</item>
-            <item>text-spacing</item>
-            <item>text-transform</item>
-            <item>text-underline-offset</item>
-            <item>text-underline-position</item>
-            <item>text-wrap</item>
-            <item>top</item>
-            <item>transform</item>
-            <item>transform-box</item>
-            <item>transform-origin</item>
-            <item>transform-style</item>
-            <item>transition</item>
-            <item>transition-delay</item>
-            <item>transition-duration</item>
-            <item>transition-property</item>
-            <item>transition-timing-function</item>
-            <item>translate</item>
-            <item>unicode-bidi</item>
-            <item>user-select</item>
-            <item>vertical-align</item>
-            <item>visibility</item>
-            <item>voice-balance</item>
-            <item>voice-duration</item>
-            <item>voice-family</item>
-            <item>voice-pitch</item>
-            <item>voice-range</item>
-            <item>voice-rate</item>
-            <item>voice-stress</item>
-            <item>voice-volume</item>
-            <item>volume</item>
-            <item>white-space</item>
-            <item>widows</item>
-            <item>width</item>
-            <item>will-change</item>
-            <item>word-boundary-detection</item>
-            <item>word-boundary-expansion</item>
-            <item>word-break</item>
-            <item>word-spacing</item>
-            <item>word-wrap</item>
-            <item>wrap-after</item>
-            <item>wrap-before</item>
-            <item>wrap-flow</item>
-            <item>wrap-inside</item>
-            <item>wrap-through</item>
-            <item>writing-mode</item>
-            <item>z-index</item>
-
-            <!-- Gecko rendering engine CSS property extensions -->
-            <item>-moz-animation</item>
-            <item>-moz-animation-delay</item>
-            <item>-moz-animation-direction</item>
-            <item>-moz-animation-duration</item>
-            <item>-moz-animation-fill-mode</item>
-            <item>-moz-animation-iteration-count</item>
-            <item>-moz-animation-name</item>
-            <item>-moz-animation-play-state</item>
-            <item>-moz-animation-timing-function</item>
-            <item>-moz-appearance</item>
-            <item>-moz-background-clip</item>
-            <item>-moz-background-origin</item>
-            <item>-moz-background-size</item>
-            <item>-moz-border-image</item>
-            <item>-moz-border-radius</item>
-            <item>-moz-border-radius-bottomleft</item>
-            <item>-moz-border-radius-bottomright</item>
-            <item>-moz-border-radius-topleft</item>
-            <item>-moz-border-radius-topright</item>
-            <item>-moz-box-align</item>
-            <item>-moz-box-direction</item>
-            <item>-moz-box-flex</item>
-            <item>-moz-box-flex-group</item>
-            <item>-moz-box-ordinal-group</item>
-            <item>-moz-box-orient</item>
-            <item>-moz-box-pack</item>
-            <item>-moz-box-shadow</item>
-            <item>-moz-box-sizing</item>
-            <item>-moz-box</item>
-            <item>-moz-column-count</item>
-            <item>-moz-column-fill</item>
-            <item>-moz-column-gap</item>
-            <item>-moz-column-rule</item>
-            <item>-moz-column-rule-color</item>
-            <item>-moz-column-rule-style</item>
-            <item>-moz-column-rule-width</item>
-            <item>-moz-columns</item>
-            <item>-moz-column-width</item>
-            <item>-moz-hyphens</item>
-            <item>-moz-opacity</item>
-            <item>-moz-outline-style</item>
-            <item>-moz-perspective</item>
-            <item>-moz-resize</item>
-            <item>-moz-text-align-last</item>
-            <item>-moz-text-decoration-color</item>
-            <item>-moz-text-decoration-line</item>
-            <item>-moz-text-decoration-style</item>
-            <item>-moz-transform</item>
-            <item>-moz-transform-origin</item>
-            <item>-moz-transform-style</item>
-            <item>-moz-transition</item>
-            <item>-moz-transition-delay</item>
-            <item>-moz-transition-duration</item>
-            <item>-moz-transition-property</item>
-            <item>-moz-transition-timing-function</item>
-            <item>-moz-user-select</item>
-
-            <!-- Opera rendering engine CSS property extensions -->
-            <item>-o-background-size</item>
-            <item>-o-linear-gradient</item>
-            <item>-o-text-overflow</item>
-            <item>-o-transition</item>
-            <item>-o-transform-origin</item>
-
-            <!-- konq specific -->
-            <item>konq_bgpos_x</item>
-            <item>konq_bgpos_y</item>
-            <item>-khtml-background-size</item>
-            <item>-khtml-border-top-left-radius</item>
-            <item>-khtml-border-top-right-radius</item>
-            <item>-khtml-border-bottom-left-radius</item>
-            <item>-khtml-border-bottom-right-radius</item>
-            <item>-khtml-border-radius</item>
-            <item>-khtml-box-shadow</item>
-            <item>-khtml-opacity</item>
-
-            <!-- Webkit rendering engine CSS property extensions -->
-            <item>-webkit-appearance</item>
-            <item>-webkit-animation</item>
-            <item>-webkit-animation-name</item>
-            <item>-webkit-animation-duration</item>
-            <item>-webkit-animation-iteration</item>
-            <item>-webkit-animation-direction</item>
-            <item>-webkit-animation-delay</item>
-            <item>-webkit-animation-play-state</item>
-            <item>-webkit-animation-fill-mode</item>
-            <item>-webkit-background-size</item>
-            <item>-webkit-backface-visibility</item>
-            <item>-webkit-border-image</item>
-            <item>-webkit-border-bottom-colors</item>
-            <item>-webkit-border-left-colors</item>
-            <item>-webkit-border-radius</item>
-            <item>-webkit-border-right-colors</item>
-            <item>-webkit-border-top-colors</item>
-            <item>-webkit-border-top-left-radius</item>
-            <item>-webkit-border-top-right-radius</item>
-            <item>-webkit-border-bottom-left-radius</item>
-            <item>-webkit-border-bottom-right-radius</item>
-            <item>-webkit-border-radius-bottomleft</item>
-            <item>-webkit-border-radius-bottomright</item>
-            <item>-webkit-box-align</item>
-            <item>-webkit-box-direction</item>
-            <item>-webkit-box-flex</item>
-            <item>-webkit-box-ordinal-group</item>
-            <item>-webkit-box-orient</item>
-            <item>-webkit-box-pack</item>
-            <item>-webkit-box-reflect</item>
-            <item>-webkit-box-shadow</item>
-            <item>-webkit-box-sizing</item>
-            <item>-webkit-column-count</item>
-            <item>-webkit-column-gap</item>
-            <item>-webkit-hyphens</item>
-            <item>-webkit-linear-gradient</item>
-            <item>-webkit-gradient</item>
-            <item>-webkit-overflow-scrolling</item>
-            <item>-webkit-perspective</item>
-            <item>-webkit-text-decoration</item>
-            <item>-webkit-text-decoration-skip</item>
-            <item>-webkit-text-fill-color</item>
-            <item>-webkit-text-stroke-color</item>
-            <item>-webkit-text-stroke-width</item>
-            <item>-webkit-text-size-adjust</item>
-            <item>-webkit-tap-highlight-color</item>
-            <item>-webkit-transform</item>
-            <item>-webkit-transform-origin</item>
-            <item>-webkit-transform-style</item>
-            <item>-webkit-transition</item>
-            <item>-webkit-transition-property</item>
-            <item>-webkit-transition-delay</item>
-            <item>-webkit-transition-duration</item>
-            <item>-webkit-user-select</item>
-
-            <!-- Trident (a.k.a., MSHTML) CSS property extensions -->
-            <item>zoom</item>
-            <item>-ms-animation-name</item>
-            <item>-ms-animation-duration</item>
-            <item>-ms-animation-iteration</item>
-            <item>-ms-animation-direction</item>
-            <item>-ms-animation-delay</item>
-            <item>-ms-animation-play-state</item>
-            <item>-ms-animation-fill-mode</item>
-            <item>-ms-box-sizing</item>
-            <item>-ms-filter</item>
-            <item>-ms-flex</item>
-            <item>-ms-flex-align</item>
-            <item>-ms-flex-direction</item>
-            <item>-ms-flex-flow</item>
-            <item>-ms-flex-item-align</item>
-            <item>-ms-flex-line-pack</item>
-            <item>-ms-flex-negative</item>
-            <item>-ms-flex-order</item>
-            <item>-ms-flex-pack</item>
-            <item>-ms-flex-positive</item>
-            <item>-ms-flex-position</item>
-            <item>-ms-flex-preferred-size</item>
-            <item>-ms-flex-wrap</item>
-            <item>-ms-interpolation-mode</item>
-            <item>-ms-linear-gradient</item>
-            <item>-ms-overflow-style</item>
-            <item>-ms-text-size-adjust</item>
-            <item>-ms-transform</item>
-            <item>-ms-transition</item>
-            <item>-ms-user-select</item>
-        </list>
-
-        <list name="value keywords">
-            <item>auto</item>
-            <item>inherit</item>
-            <item>unset</item>
-        </list>
-
-        <list name="values">
-            <item>none</item>
-            <item>hidden</item>
-            <item>initial</item>
-            <item>revert</item>
-            <item>revert-layer</item>
-            <item>dotted</item>
-            <item>dashed</item>
-            <item>solid</item>
-            <item>double</item>
-            <item>groove</item>
-            <item>ridge</item>
-            <item>inset</item>
-            <item>outset</item>
-            <item>xx-small</item>
-            <item>x-small</item>
-            <item>small</item>
-            <item>medium</item>
-            <item>large</item>
-            <item>x-large</item>
-            <item>xx-large</item>
-            <item>smaller</item>
-            <item>larger</item>
-            <item>italic</item>
-            <item>oblique</item>
-            <item>small-caps</item>
-            <item>normal</item>
-            <item>bold</item>
-            <item>bolder</item>
-            <item>lighter</item>
-            <item>light</item>
-            <item>transparent</item>
-            <item>repeat</item>
-            <item>repeat-x</item>
-            <item>repeat-y</item>
-            <item>no-repeat</item>
-            <item>baseline</item>
-            <item>sub</item>
-            <item>super</item>
-            <item>top</item>
-            <item>text-top</item>
-            <item>middle</item>
-            <item>bottom</item>
-            <item>text-bottom</item>
-            <item>left</item>
-            <item>right</item>
-            <item>center</item>
-            <item>justify</item>
-            <item>konq-center</item>
-            <item>disc</item>
-            <item>square</item>
-            <item>box</item>
-            <item>decimal</item>
-            <item>decimal-leading-zero</item>
-            <item>lower-roman</item>
-            <item>upper-roman</item>
-            <item>lower-greek</item>
-            <item>lower-alpha</item>
-            <item>lower-latin</item>
-            <item>upper-alpha</item>
-            <item>upper-latin</item>
-            <item>hebrew</item>
-            <item>armenian</item>
-            <item>georgian</item>
-            <item>cjk-ideographic</item>
-            <item>hiragana</item>
-            <item>katakana</item>
-            <item>hiragana-iroha</item>
-            <item>katakana-iroha</item>
-            <item>list-item</item>
-            <item>compact</item>
-            <item>marker</item>
-            <item>crosshair</item>
-            <item>default</item>
-            <item>pointer</item>
-            <item>move</item>
-            <item>e-resize</item>
-            <item>ne-resize</item>
-            <item>nw-resize</item>
-            <item>n-resize</item>
-            <item>se-resize</item>
-            <item>sw-resize</item>
-            <item>s-resize</item>
-            <item>w-resize</item>
-            <item>text</item>
-            <item>wait</item>
-            <item>help</item>
-            <item>above</item>
-            <item>absolute</item>
-            <item>always</item>
-            <item>avoid</item>
-            <item>avoid-page</item>
-            <item>avoid-column</item>
-            <item>avoid-region</item>
-            <item>below</item>
-            <item>bidi-override</item>
-            <item>blink</item>
-            <item>both</item>
-            <item>break-word</item>
-            <item>capitalize</item>
-            <item>caption</item>
-            <item>clip</item>
-            <item>close-quote</item>
-            <item>collapse</item>
-            <item>column</item>
-            <item>condensed</item>
-            <item>crop</item>
-            <item>cross</item>
-            <item>ellipsis</item>
-            <item>ellipsis-word</item>
-            <item>embed</item>
-            <item>expanded</item>
-            <item>extra-condensed</item>
-            <item>extra-expanded</item>
-            <item>fixed</item>
-            <item>hand</item>
-            <item>hide</item>
-            <item>higher</item>
-            <item>icon</item>
-            <item>inside</item>
-            <item>invert</item>
-            <item>landscape</item>
-            <item>level</item>
-            <item>line-through</item>
-            <item>loud</item>
-            <item>lower</item>
-            <item>lowercase</item>
-            <item>ltr</item>
-            <item>menu</item>
-            <item>message-box</item>
-            <item>mix</item>
-            <item>narrower</item>
-            <item>no-close-quote</item>
-            <item>no-open-quote</item>
-            <item>nowrap</item>
-            <item>open-quote</item>
-            <item>outside</item>
-            <item>overline</item>
-            <item>portrait</item>
-            <item>pre</item>
-            <item>pre-line</item>
-            <item>pre-wrap</item>
-            <item>relative</item>
-            <item>rtl</item>
-            <item>scroll</item>
-            <item>semi-condensed</item>
-            <item>semi-expanded</item>
-            <item>separate</item>
-            <item>show</item>
-            <item>small-caption</item>
-            <item>static</item>
-            <item>static-position</item>
-            <item>status-bar</item>
-            <item>sticky</item>
-            <item>thick</item>
-            <item>thin</item>
-            <item>ultra-condensed</item>
-            <item>ultra-expanded</item>
-            <item>underline</item>
-            <item>uppercase</item>
-            <item>visible</item>
-            <item>wider</item>
-            <item>break</item>
-            <item>serif</item>
-            <item>sans-serif</item>
-            <item>cursive</item>
-            <item>fantasy</item>
-            <item>monospace</item>
-            <item>border-box</item>
-            <item>content-box</item>
-            <item>-epub-hyphens</item>
-            <item>contain</item>
-            <item>cover</item>
-
-            <!-- cursor -->
-            <item>pointer</item>
-            <item>default</item>
-            <item>context-menu</item>
-            <item>help</item>
-            <item>pointer</item>
-            <item>progress</item>
-            <item>wait</item>
-            <item>cell</item>
-            <item>crosshair</item>
-            <item>text</item>
-            <item>vertical-text</item>
-            <item>alias</item>
-            <item>copy</item>
-            <item>move</item>
-            <item>no-drop</item>
-            <item>not-allowed</item>
-            <item>grab</item>
-            <item>grabbing</item>
-            <item>all-scroll</item>
-            <item>col-resize</item>
-            <item>row-resize</item>
-            <item>n-resize</item>
-            <item>e-resize</item>
-            <item>s-resize</item>
-            <item>w-resize</item>
-            <item>ne-resize</item>
-            <item>nw-resize</item>
-            <item>se-resize</item>
-            <item>sw-resize</item>
-            <item>ew-resize</item>
-            <item>ns-resize</item>
-            <item>nesw-resize</item>
-            <item>nwse-resize</item>
-            <item>zoom-in</item>
-            <item>zoom-out</item>
-
-            <!-- contain -->
-            <item>none</item>
-            <item>strict</item>
-            <item>content</item>
-            <item>size</item>
-            <item>inline-size</item>
-            <item>layout</item>
-            <item>style</item>
-            <item>paint</item>
-
-            <!-- scroll-snap-type -->
-            <item>mandatory</item>
-            <item>proximity</item>
-
-            <!-- text-orientation -->
-            <item>mixed</item>
-            <item>upright</item>
-            <item>sideways</item>
-            <item>sideways-right</item>
-            <item>use-glyph-orientation</item>
-
-            <!-- shape-outside, clip-path, text-emphasis -->
-            <item>filled</item>
-            <item>open</item>
-            <item>dot</item>
-            <item>circle</item>
-            <item>double-circle</item>
-            <item>triangle</item>
-            <item>sesame</item>
-
-            <!-- display -->
-            <!-- https://developer.mozilla.org/fr/docs/Web/CSS/display -->
-            <item>block</item>
-            <item>inline</item>
-            <item>run-in</item>
-
-            <item>flow</item>
-            <item>flow-root</item>
-            <item>table</item>
-            <item>flex</item>
-            <item>grid</item>
-            <item>ruby</item>
-
-            <item>list-item</item>
-
-            <item>table-row-group</item>
-            <item>table-header-group</item>
-            <item>table-footer-group</item>
-            <item>table-row</item>
-            <item>table-cell</item>
-            <item>table-column-group</item>
-            <item>table-column</item>
-            <item>table-caption</item>
-            <item>ruby-base</item>
-            <item>ruby-text</item>
-            <item>ruby-base-container</item>
-            <item>ruby-text-container</item>
-
-            <item>contents</item>
-
-            <item>inline-block</item>
-            <item>inline-table</item>
-            <item>inline-flex</item>
-            <item>inline-grid</item>
-
-            <!-- transition and animation -->
-            <item>all</item>
-            <item>ease</item>
-            <item>ease-in</item>
-            <item>ease-out</item>
-            <item>ease-in-out</item>
-            <item>step-start</item>
-            <item>step-end</item>
-            <item>linear</item>
-
-            <!-- animation -->
-            <item>infinite</item>
-            <item>reverse</item>
-            <item>alternate</item>
-            <item>alternate-reverse</item>
-            <item>forwards</item>
-            <item>backwards</item>
-            <item>running</item>
-            <item>paused</item>
-        </list>
-
-        <list name="colors">
-            <item>black</item>
-            <item>silver</item>
-            <item>gray</item>
-            <item>white</item>
-            <item>maroon</item>
-            <item>red</item>
-            <item>purple</item>
-            <item>fuchsia</item>
-            <item>green</item>
-            <item>lime</item>
-            <item>olive</item>
-            <item>yellow</item>
-            <item>navy</item>
-            <item>blue</item>
-            <item>teal</item>
-            <item>aqua</item>
-            <item>orange</item>
-            <item>aliceblue</item>
-            <item>antiquewhite</item>
-            <item>aquamarine</item>
-            <item>azure</item>
-            <item>beige</item>
-            <item>bisque</item>
-            <item>blanchedalmond</item>
-            <item>blueviolet</item>
-            <item>brown</item>
-            <item>burlywood</item>
-            <item>cadetblue</item>
-            <item>chartreuse</item>
-            <item>chocolate</item>
-            <item>coral</item>
-            <item>cornflowerblue</item>
-            <item>cornsilk</item>
-            <item>crimson</item>
-            <item>cyan</item>
-            <item>aqua</item>
-            <item>darkblue</item>
-            <item>darkcyan</item>
-            <item>darkgoldenrod</item>
-            <item>darkgray</item>
-            <item>darkgreen</item>
-            <item>darkgrey</item>
-            <item>darkkhaki</item>
-            <item>darkmagenta</item>
-            <item>darkolivegreen</item>
-            <item>darkorange</item>
-            <item>darkorchid</item>
-            <item>darkred</item>
-            <item>darksalmon</item>
-            <item>darkseagreen</item>
-            <item>darkslateblue</item>
-            <item>darkslategray</item>
-            <item>darkslategrey</item>
-            <item>darkturquoise</item>
-            <item>darkviolet</item>
-            <item>deeppink</item>
-            <item>deepskyblue</item>
-            <item>dimgray</item>
-            <item>dimgrey</item>
-            <item>dodgerblue</item>
-            <item>firebrick</item>
-            <item>floralwhite</item>
-            <item>forestgreen</item>
-            <item>gainsboro</item>
-            <item>ghostwhite</item>
-            <item>gold</item>
-            <item>goldenrod</item>
-            <item>greenyellow</item>
-            <item>grey</item>
-            <item>honeydew</item>
-            <item>hotpink</item>
-            <item>indianred</item>
-            <item>indigo</item>
-            <item>ivory</item>
-            <item>khaki</item>
-            <item>lavender</item>
-            <item>lavenderblush</item>
-            <item>lawngreen</item>
-            <item>lemonchiffon</item>
-            <item>lightblue</item>
-            <item>lightcoral</item>
-            <item>lightcyan</item>
-            <item>lightgoldenrodyellow</item>
-            <item>lightgray</item>
-            <item>lightgreen</item>
-            <item>lightgrey</item>
-            <item>lightpink</item>
-            <item>lightsalmon</item>
-            <item>lightseagreen</item>
-            <item>lightskyblue</item>
-            <item>lightslategray</item>
-            <item>lightslategrey</item>
-            <item>lightsteelblue</item>
-            <item>lightyellow</item>
-            <item>limegreen</item>
-            <item>linen</item>
-            <item>magenta</item>
-            <item>fuchsia</item>
-            <item>mediumaquamarine</item>
-            <item>mediumblue</item>
-            <item>mediumorchid</item>
-            <item>mediumpurple</item>
-            <item>mediumseagreen</item>
-            <item>mediumslateblue</item>
-            <item>mediumspringgreen</item>
-            <item>mediumturquoise</item>
-            <item>mediumvioletred</item>
-            <item>midnightblue</item>
-            <item>mintcream</item>
-            <item>mistyrose</item>
-            <item>moccasin</item>
-            <item>navajowhite</item>
-            <item>oldlace</item>
-            <item>olivedrab</item>
-            <item>orangered</item>
-            <item>orchid</item>
-            <item>palegoldenrod</item>
-            <item>palegreen</item>
-            <item>paleturquoise</item>
-            <item>palevioletred</item>
-            <item>papayawhip</item>
-            <item>peachpuff</item>
-            <item>peru</item>
-            <item>pink</item>
-            <item>plum</item>
-            <item>powderblue</item>
-            <item>rebeccapurple</item>
-            <item>rosybrown</item>
-            <item>royalblue</item>
-            <item>saddlebrown</item>
-            <item>salmon</item>
-            <item>sandybrown</item>
-            <item>seagreen</item>
-            <item>seashell</item>
-            <item>sienna</item>
-            <item>skyblue</item>
-            <item>slateblue</item>
-            <item>slategray</item>
-            <item>slategrey</item>
-            <item>snow</item>
-            <item>springgreen</item>
-            <item>steelblue</item>
-            <item>tan</item>
-            <item>thistle</item>
-            <item>tomato</item>
-            <item>turquoise</item>
-            <item>violet</item>
-            <item>wheat</item>
-            <item>whitesmoke</item>
-            <item>yellowgreen</item>
-            <item>rebeccapurple</item>
-
-            <item>ActiveBorder</item>
-            <item>ActiveCaption</item>
-            <item>AppWorkspace</item>
-            <item>Background</item>
-            <item>ButtonFace</item>
-            <item>ButtonHighlight</item>
-            <item>ButtonShadow</item>
-            <item>ButtonText</item>
-            <item>CaptionText</item>
-            <item>GrayText</item>
-            <item>Highlight</item>
-            <item>HighlightText</item>
-            <item>InactiveBorder</item>
-            <item>InactiveCaption</item>
-            <item>InactiveCaptionText</item>
-            <item>InfoBackground</item>
-            <item>InfoText</item>
-            <item>Menu</item>
-            <item>MenuText</item>
-            <item>Scrollbar</item>
-            <item>ThreeDDarkShadow</item>
-            <item>ThreeDFace</item>
-            <item>ThreeDHighlight</item>
-            <item>ThreeDLightShadow</item>
-            <item>ThreeDShadow</item>
-            <item>Window</item>
-            <item>WindowFrame</item>
-            <item>WindowText</item>
-        </list>
-
-        <list name="functions">
-            <item>attr</item>
-            <item>cross-fade</item>
-            <item>env</item>
-            <item>fit-content</item>
-            <item>minmax</item>
-            <item>path</item>
-            <item>repeat</item>
-            <item>url</item>
-            <item>var</item>
-
-            <!-- math functions -->
-            <!-- https://drafts.csswg.org/css-values-4/#calc-syntax -->
-            <item>abs</item>
-            <item>acos</item>
-            <item>asin</item>
-            <item>atan2</item>
-            <item>atan</item>
-            <item>calc</item>
-            <item>clamp</item>
-            <item>cos</item>
-            <item>exp</item>
-            <item>hypot</item>
-            <item>log</item>
-            <item>max</item>
-            <item>min</item>
-            <item>mod</item>
-            <item>pow</item>
-            <item>rem</item>
-            <item>round</item>
-            <item>sign</item>
-            <item>sin</item>
-            <item>sqrt</item>
-            <item>tan</item>
-
-            <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/gradient#formal_syntax -->
-            <item>linear-gradient</item>
-            <item>radial-gradient</item>
-            <item>repeating-linear-gradient</item>
-            <item>repeating-radial-gradient</item>
-
-            <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#formal_syntax -->
-            <item>rgb</item>
-            <item>rgba</item>
-            <item>hsl</item>
-            <item>hsla</item>
-            <item>hwb</item>
-            <item>lab</item>
-            <item>lch</item>
-            <item>oklab</item>
-            <item>oklch</item>
-            <item>color</item>
-            <item>color-mix</item>
-
-            <!-- CSS4 -->
-            <item>toggle</item>
-            <item>hwb</item>
-            <item>device-cmyk</item>
-            <item>color</item>
-            <item>element</item>
-            <item>image</item>
-            <item>image-set</item>
-            <item>conic-gradient</item>
-
-            <!-- counter style -->
-            <item>symbols</item>
-            <item>counter</item>
-            <item>counters</item>
-
-            <!-- clip -->
-            <item>rect</item>
-
-            <!-- shape-outside and clip-path -->
-            <item>inset</item>
-            <item>circle</item>
-            <item>ellipse</item>
-            <item>polygon</item>
-
-            <!-- filter and backdrop-filter -->
-            <item>blur</item>
-            <item>brightness</item>
-            <item>contrast</item>
-            <item>drop-shadow</item>
-            <item>grayscale</item>
-            <item>hue-rotate</item>
-            <item>invert</item>
-            <item>opacity</item>
-            <item>saturate</item>
-            <item>sepia</item>
-
-            <!-- grid-template-columns and grid-template-rows -->
-            <item>max-content</item>
-            <item>min-content</item>
-            <item>repeat</item>
-
-            <!-- transition and animation -->
-            <item>cubic-bezier</item>
-            <item>frames</item>
-            <item>steps</item>
-
-            <!-- transform -->
-            <item>matrix</item>
-            <item>matrix3d</item>
-            <item>perspective</item>
-            <item>rotate</item>
-            <item>rotate3d</item>
-            <item>rotateX</item>
-            <item>rotateY</item>
-            <item>rotateZ</item>
-            <item>scale</item>
-            <item>scale3d</item>
-            <item>scaleX</item>
-            <item>scaleY</item>
-            <item>scaleZ</item>
-            <item>skew</item>
-            <item>skewX</item>
-            <item>skewY</item>
-            <item>translate</item>
-            <item>translate3d</item>
-            <item>translateX</item>
-            <item>translateY</item>
-            <item>translateZ</item>
-
-            <!-- inner @font-face -->
-            <item>local</item>
-            <item>format</item>
-        </list>
-
-        <list name="medias">
-            <!-- types -->
-            <item>all</item>
-            <item>print</item>
-            <item>screen</item>
-            <item>speech</item>
-
-            <!-- features -->
-            <item>any-pointer</item>
-            <item>any-hover</item>
-            <item>aspect-ratio</item>
-            <item>color</item>
-            <item>color-gamut</item>
-            <item>color-index</item>
-            <item>display-mode</item>
-            <item>grid</item>
-            <item>height</item>
-            <item>hover</item>
-            <item>max-aspect-ratio</item>
-            <item>max-color</item>
-            <item>max-color-index</item>
-            <item>max-device-aspect-ratio</item>
-            <item>max-device-height</item>
-            <item>max-device-width</item>
-            <item>max-height</item>
-            <item>max-monochrome</item>
-            <item>max-resolution</item>
-            <item>max-width</item>
-            <item>min-aspect-ratio</item>
-            <item>min-color</item>
-            <item>min-color-index</item>
-            <item>min-device-aspect-ratio</item>
-            <item>min-device-height</item>
-            <item>min-device-width</item>
-            <item>min-height</item>
-            <item>min-monochrome</item>
-            <item>min-resolution</item>
-            <item>min-width</item>
-            <item>monochrome</item>
-            <item>orientation</item>
-            <item>pointer</item>
-            <item>resolution</item>
-            <item>scan</item>
-            <item>update</item>
-            <item>width</item>
-        </list>
-
-        <!-- prefixed by :: -->
-        <list name="pseudoelements">
-            <item>after</item>
-            <item>backdrop</item>
-            <item>before</item>
-            <item>cue</item>
-            <item>file-selector-button</item>
-            <item>first-letter</item>
-            <item>first-line</item>
-            <item>marker</item>
-            <item>part</item>
-            <item>placeholder</item>
-            <item>selection</item>
-            <item>slotted</item>
-
-            <!-- experimental -->
-            <!-- <item>spelling-error</item> -->
-            <!-- <item>grammar-error</item> -->
-            <!-- <item>target-text</item> -->
-
-            <!-- UI pseudo-classes -->
-            <item>value</item>
-            <item>choices</item>
-            <item>repeat-item</item>
-            <item>repeat-index</item>
-
-            <item>-moz-progress-bar</item>
-            <item>-moz-range-progress</item>
-            <item>-moz-range-thumb</item>
-            <item>-moz-range-track</item>
-            <item>-moz-selection</item>
-            <item>-ms-fill</item>
-            <item>-ms-fill-lower</item>
-            <item>-ms-fill-upper</item>
-            <item>-ms-thumb</item>
-            <item>-ms-track</item>
-            <item>-webkit-progress-bar</item>
-            <item>-webkit-progress-value</item>
-            <item>-webkit-slider-runnable-track</item>
-            <item>-webkit-slider-thumb</item>
-        </list>
-
-        <!-- prefixed by : -->
-        <list name="pseudoclasses">
-            <item>future</item>
-            <item>local-link</item>
-            <item>modal</item>
-            <item>picture-in-picture</item>
-
-            <item>active</item>
-            <item>any-link</item>
-            <item>autofill</item>
-            <item>checked</item>
-            <item>default</item>
-            <item>defined</item>
-            <!-- <item>dir</item> -->
-            <item>disabled</item>
-            <item>empty</item>
-            <item>enabled</item>
-            <item>first-child</item>
-            <item>first-of-type</item>
-            <item>focus</item>
-            <item>focus-visible</item>
-            <item>focus-within</item>
-            <item>fullscreen</item>
-            <item>host</item>
-            <item>hover</item>
-            <item>in-range</item>
-            <item>indeterminate</item>
-            <item>invalid</item>
-            <item>lang</item>
-            <item>last-child</item>
-            <item>last-of-type</item>
-            <item>left</item>
-            <item>link</item>
-            <item>not</item>
-            <item>nth-child</item>
-            <item>nth-last-child</item>
-            <item>nth-last-of-type</item>
-            <item>nth-of-type</item>
-            <item>only-child</item>
-            <item>only-of-type</item>
-            <item>optional</item>
-            <item>out-of-range</item>
-            <item>placeholder-shown</item>
-            <item>read-only</item>
-            <item>read-write</item>
-            <item>required</item>
-            <item>right</item>
-            <item>root</item>
-            <item>scope</item>
-            <item>target</item>
-            <item>valid</item>
-            <item>visited</item>
-
-            <!-- pseudo-elements -->
-            <item>after</item>
-            <item>before</item>
-            <item>cue</item>
-            <item>first-letter</item>
-            <item>first-line</item>
-            <item>selection</item>
-        </list>
-
-        <list name="pseudoclass-selector">
-            <item>has</item>
-            <item>host</item>
-            <item>host-context</item>
-            <item>is</item>
-            <item>matches</item>
-            <item>not</item>
-            <item>where</item>
-        </list>
-
-        <list name="pseudoclasses-@page">
-            <item>blank</item>
-            <item>first</item>
-            <item>left</item>
-            <item>recto</item>
-            <item>right</item>
-            <item>verso</item>
-        </list>
-
-        <list name="at-rules">
-            <item>@character</item>
-            <item>@layer</item>
-            <item>@container</item>
-            <item>@charset</item>
-            <item>@import</item>
-            <item>@namespace</item>
-        </list>
-
-        <list name="nested at-rules">
-            <item>@font-feature-values</item>
-            <item>@document</item>
-            <item>@media</item>
-            <item>@supports</item>
-        </list>
-
-        <list name="other at-rules">
-            <item>@counter-style</item>
-            <item>@viewport</item>
-            <item>@page</item>
-            <item>@font-face</item>
-            <item>@keyframes</item>
-        </list>
-
-        <list name="within-@viewport">
-            <item>min-width</item>
-            <item>max-width</item>
-            <item>width</item>
-            <item>min-height</item>
-            <item>max-height</item>
-            <item>height</item>
-            <item>zoom</item>
-            <item>min-zoom</item>
-            <item>max-zoom</item>
-            <item>user-zoom</item>
-            <item>orientation</item>
-            <item>viewport-fit</item>
-        </list>
-
-        <list name="within-@page">
-            <item>size</item>
-            <item>marks</item>
-            <item>bleed</item>
-        </list>
-
-        <list name="within-@font-face">
-            <item>font-display</item>
-            <item>font-family</item>
-            <item>font-stretch</item>
-            <item>font-style</item>
-            <item>font-weight</item>
-            <item>font-variant</item>
-            <item>font-feature-settings</item>
-            <item>font-variation-settings</item>
-            <item>src</item>
-            <item>unicode-range</item>
-        </list>
-
-        <list name="within-@keyframes">
-            <item>from</item>
-            <item>to</item>
-        </list>
-
-        <list name="media operators">
-            <item>and</item>
-            <item>only</item>
-            <item>not</item>
-        </list>
-
-        <contexts>
-            <context name="Base" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-            <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
-                <RegExpr attribute="Selector Id" context="#stay" String="#&ident;" />
-                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Selector Tag" context="#stay" String="&ident;" />
-            </context>
-
-            <!-- find functions // rgba(255,255,255,0.75) -->
-            <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
-            </context>
-
-            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
-            <context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Annotation" context="Annotation" char="!" />
-                <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
-                <keyword attribute="Value" context="#stay" String="values" />
-                <keyword attribute="Color" context="#stay" String="colors" />
-                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
-                <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])" />
-                <RegExpr attribute="Normal Text" context="#stay" String="&ident;" />
-            </context>
-
-            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <WordDetect attribute="Annotation" context="#pop" String="important" />
-            </context>
-
-            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <!-- https://drafts.csswg.org/css-values-4/#lengths -->
-                <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units -->
-                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)(?![-+])" />
-            </context>
-
-            <!-- find strings // "some words" 'some words' -->
-            <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="String" context="StringDQ" char="&quot;" />
-                <DetectChar attribute="String" context="StringSQ" char="'" />
-            </context>
-
-            <!-- find comments // /* comment */ -->
-            <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/>
-                <Detect2Chars attribute="Error" context="Error" char="/" char1="/" />
-            </context>
-
-            <context name="Error" attribute="Error" lineEndContext="#pop">
-                <RegExpr attribute="Error" context="#pop" String=".*" />
-            </context>
-
-            <context name="IsComments" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*BEGIN\b.*\*/" beginRegion="UserDefined" />
-                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*END\b.*\*/" endRegion="UserDefined" />
-                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
-            </context>
-
-            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
-                <keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" />
-                <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
-                <WordDetect attribute="At Rule" context="#pop!@keyframes" String="@keyframes" />
-                <WordDetect attribute="At Rule" context="#pop!@viewport" String="@viewport" />
-                <WordDetect attribute="At Rule" context="#pop!@font-face" String="@font-face" />
-                <WordDetect attribute="At Rule" context="#pop!@page" String="@page" />
-                <RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" />
-            </context>
-
-            <context name="@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <keyword attribute="Value" context="#stay" String="within-@keyframes" />
-                <RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" />
-            </context>
-
-            <context name="@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@viewport" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <keyword attribute="Property" context="IsProperty" String="within-@font-face" />
-                <RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-            </context>
-
-            <context name="@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop">
-                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
-                <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="Within-@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@page" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="IsProperty" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-            </context>
-
-            <context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="NestedBase" char="{" beginRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="NestedBase" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="Base" />
-            </context>
-
-            <context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay">
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <keyword attribute="Keyword" context="#stay" String="media operators" />
-                <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
-                <keyword attribute="Value" context="#stay" String="medias" />
-                <IncludeRules context="FindValues" />
-            </context>
-
-            <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop" char="]" />
-                <IncludeRules context="FindStrings" />
-                <DetectChar   attribute="Operator" context="SelectorAttrValue" char="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorAttrValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
-                <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
-                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
-                <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="Comment" attribute="Comment" lineEndContext="#stay">
-                <DetectSpaces />
-                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
-                <IncludeRules context="##Comments" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="RuleSet" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+(?=\s*:)" lookAhead="true" />
-                <IncludeRules context="Base" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[A-Za-z_-]+" />
-            </context>
-
-            <context name="Rule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-                <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
-                <keyword attribute="Property" context="#stay" String="properties" />
-                <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
-                <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
-                <RegExpr attribute="Variable" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <!-- Jump out conditions -->
-                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
-            </context>
-
-            <context name="Function" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="FunctionParameters" char="(" />
-                <StringDetect attribute="Function" context="FunctionVar" String="var(" />
-                <StringDetect attribute="Function" context="FunctionUrl" String="url(" />
-                <StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
-                <keyword attribute="Function" context="#stay" String="functions" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
-                <DetectSpaces />
-                <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
-            </context>
-
-            <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="Calc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
-            </context>
-
-            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue">
-                <DetectSpaces />
-                <IncludeRules context="FindStrings" />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-            </context>
-
-            <context name="UrlValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
-            </context>
-
-            <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-            </context>
-
-            <!-- string contexts -->
-            <context name="StringDQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="&quot;" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="StringSQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="'" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="InsideString" attribute="String" lineEndContext="#stay">
-                <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
-                <RegExpr attribute="String" context="#stay" String="\\?[^&quot;'\\]+" />
-            </context>
-
-        </contexts>
-
-        <itemDatas>
-            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
-            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="String" defStyleNum="dsString"/>
-            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
-            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
-            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
-            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
-            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
-            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
-            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
-            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
-            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
-            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="Comment" defStyleNum="dsComment" />
-            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
-            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
-        </itemDatas>
-    </highlighting>
-
-    <general>
-        <keywords casesensitive="0" weakDeliminator="-%@" />
-        <comments>
-            <comment name="multiLine" start="/*" end="*/" region="comment" />
+  <!ENTITY escaped "\\([0-9a-fA-F]{1,6}|[^\n\r\f0-9a-fA-F])">
+  <!ENTITY ident   "-?([_a-zA-Z]|&escaped;)([-_a-zA-Z0-9]+|&escaped;)*">
+  <!-- identifiers starting with several - are invalid, but supported by browsers -->
+  <!ENTITY ident2  "([-\w]+|&escaped;)+">
+  <!ENTITY var     "--[-\w]*">
+  <!ENTITY func    "-?[a-zA-Z][-a-zA-Z0-9]*">
+  <!ENTITY propcheck "(?=\s*(/[*].*?[*]/\s*)?:)">
+]>
+
+<!--
+
+Kate CSS syntax highlighting definition
+
+Changelog:
+
+- Version 8, by Jonathan Poelen
+- fix some Operator and Selector Tag highlighting
+
+- Version 7, by Jonathan Poelen
+- fix tag followed by a pseudo-class in a nested rule (@media, ...)
+- fix constraint in a rule
+- fix Kate auto-completion for properties and rules
+- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Variable, Value Keyword, Color, Number, Unit, Selector Tag
+
+- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
+- Remake for complex CSS syntax, avoid errors
+
+- Version 2.13, by Guo Yunhe
+- Add all W3C Work Draft properties
+
+- Version 2.06, by Mte90:
+- CSS3 tag
+
+- Version 2.03, by Milian Wolff:
+- Make it spelling aware
+
+- Version 2.08, Joseph Wenninger:
+- CSS3 media queries
+
+-->
+
+<language name="CSS" version="17" kateversion="5.79" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+    <highlighting>
+        <!-- W3C > Work Draft, from https://www.w3.org/Style/CSS/all-properties (exclude FPWD)-->
+        <list name="properties">
+            <item>-webkit-line-clamp</item>
+            <item>-webkit-text-fill-color</item>
+            <item>-webkit-text-stroke</item>
+            <item>-webkit-text-stroke-color</item>
+            <item>-webkit-text-stroke-width</item>
+            <item>accent-color</item>
+            <item>additive-symbols</item>
+            <item>align-content</item>
+            <item>align-items</item>
+            <item>align-self</item>
+            <item>all</item>
+            <item>animation</item>
+            <item>animation-composition</item>
+            <item>animation-delay</item>
+            <item>animation-direction</item>
+            <item>animation-duration</item>
+            <item>animation-fill-mode</item>
+            <item>animation-iteration-count</item>
+            <item>animation-name</item>
+            <item>animation-play-state</item>
+            <item>animation-timing-function</item>
+            <item>appearance</item>
+            <item>ascent-override</item>
+            <item>aspect-ratio</item>
+            <item>backdrop-filter</item>
+            <item>backface-visibility</item>
+            <item>background</item>
+            <item>background-attachment</item>
+            <item>background-blend-mode</item>
+            <item>background-clip</item>
+            <item>background-color</item>
+            <item>background-image</item>
+            <item>background-origin</item>
+            <item>background-position</item>
+            <item>background-position-x</item>
+            <item>background-position-y</item>
+            <item>background-repeat</item>
+            <item>background-size</item>
+            <item>base-palette</item>
+            <item>block-size</item>
+            <item>border</item>
+            <item>border-block</item>
+            <item>border-block-color</item>
+            <item>border-block-end</item>
+            <item>border-block-end-color</item>
+            <item>border-block-end-style</item>
+            <item>border-block-end-width</item>
+            <item>border-block-start</item>
+            <item>border-block-start-color</item>
+            <item>border-block-start-style</item>
+            <item>border-block-start-width</item>
+            <item>border-block-style</item>
+            <item>border-block-width</item>
+            <item>border-bottom</item>
+            <item>border-bottom-color</item>
+            <item>border-bottom-left-radius</item>
+            <item>border-bottom-right-radius</item>
+            <item>border-bottom-style</item>
+            <item>border-bottom-width</item>
+            <item>border-collapse</item>
+            <item>border-color</item>
+            <item>border-end-end-radius</item>
+            <item>border-end-start-radius</item>
+            <item>border-image</item>
+            <item>border-image-outset</item>
+            <item>border-image-repeat</item>
+            <item>border-image-slice</item>
+            <item>border-image-source</item>
+            <item>border-image-width</item>
+            <item>border-inline</item>
+            <item>border-inline-color</item>
+            <item>border-inline-end</item>
+            <item>border-inline-end-color</item>
+            <item>border-inline-end-style</item>
+            <item>border-inline-end-width</item>
+            <item>border-inline-start</item>
+            <item>border-inline-start-color</item>
+            <item>border-inline-start-style</item>
+            <item>border-inline-start-width</item>
+            <item>border-inline-style</item>
+            <item>border-inline-width</item>
+            <item>border-left</item>
+            <item>border-left-color</item>
+            <item>border-left-style</item>
+            <item>border-left-width</item>
+            <item>border-radius</item>
+            <item>border-right</item>
+            <item>border-right-color</item>
+            <item>border-right-style</item>
+            <item>border-right-width</item>
+            <item>border-spacing</item>
+            <item>border-start-end-radius</item>
+            <item>border-start-start-radius</item>
+            <item>border-style</item>
+            <item>border-top</item>
+            <item>border-top-color</item>
+            <item>border-top-left-radius</item>
+            <item>border-top-right-radius</item>
+            <item>border-top-style</item>
+            <item>border-top-width</item>
+            <item>border-width</item>
+            <item>bottom</item>
+            <item>box-decoration-break</item>
+            <item>box-shadow</item>
+            <item>box-sizing</item>
+            <item>break-after</item>
+            <item>break-before</item>
+            <item>break-inside</item>
+            <item>caption-side</item>
+            <item>caret-color</item>
+            <item>clear</item>
+            <item>clip-path</item>
+            <item>color</item>
+            <item>color-scheme</item>
+            <item>column-count</item>
+            <item>column-fill</item>
+            <item>column-gap</item>
+            <item>column-rule</item>
+            <item>column-rule-color</item>
+            <item>column-rule-style</item>
+            <item>column-rule-width</item>
+            <item>column-span</item>
+            <item>column-width</item>
+            <item>columns</item>
+            <item>contain</item>
+            <item>contain-intrinsic-block-size</item>
+            <item>contain-intrinsic-height</item>
+            <item>contain-intrinsic-inline-size</item>
+            <item>contain-intrinsic-size</item>
+            <item>contain-intrinsic-width</item>
+            <item>container</item>
+            <item>container-name</item>
+            <item>container-type</item>
+            <item>content</item>
+            <item>counter-increment</item>
+            <item>counter-reset</item>
+            <item>counter-set</item>
+            <item>cursor</item>
+            <item>descent-override</item>
+            <item>direction</item>
+            <item>display</item>
+            <item>empty-cells</item>
+            <item>fallback</item>
+            <item>filter</item>
+            <item>flex</item>
+            <item>flex-basis</item>
+            <item>flex-direction</item>
+            <item>flex-flow</item>
+            <item>flex-grow</item>
+            <item>flex-shrink</item>
+            <item>flex-wrap</item>
+            <item>float</item>
+            <item>font</item>
+            <item>font-display</item>
+            <item>font-family</item>
+            <item>font-feature-settings</item>
+            <item>font-kerning</item>
+            <item>font-language-override</item>
+            <item>font-optical-sizing</item>
+            <item>font-palette</item>
+            <item>font-size</item>
+            <item>font-size-adjust</item>
+            <item>font-stretch</item>
+            <item>font-style</item>
+            <item>font-synthesis</item>
+            <item>font-synthesis-position</item>
+            <item>font-synthesis-small-caps</item>
+            <item>font-synthesis-style</item>
+            <item>font-synthesis-weight</item>
+            <item>font-variant</item>
+            <item>font-variant-alternates</item>
+            <item>font-variant-caps</item>
+            <item>font-variant-east-asian</item>
+            <item>font-variant-emoji</item>
+            <item>font-variant-ligatures</item>
+            <item>font-variant-numeric</item>
+            <item>font-variant-position</item>
+            <item>font-variation-settings</item>
+            <item>font-weight</item>
+            <item>forced-color-adjust</item>
+            <item>gap</item>
+            <item>grid</item>
+            <item>grid-area</item>
+            <item>grid-auto-columns</item>
+            <item>grid-auto-flow</item>
+            <item>grid-auto-rows</item>
+            <item>grid-column</item>
+            <item>grid-column-end</item>
+            <item>grid-column-start</item>
+            <item>grid-row</item>
+            <item>grid-row-end</item>
+            <item>grid-row-start</item>
+            <item>grid-template</item>
+            <item>grid-template-areas</item>
+            <item>grid-template-columns</item>
+            <item>grid-template-rows</item>
+            <item>hanging-punctuation</item>
+            <item>height</item>
+            <item>hyphenate-character</item>
+            <item>hyphenate-limit-chars</item>
+            <item>hyphens</item>
+            <item>image-orientation</item>
+            <item>image-rendering</item>
+            <item>inherits</item>
+            <item>initial-value</item>
+            <item>inline-size</item>
+            <item>inset</item>
+            <item>inset-block</item>
+            <item>inset-block-end</item>
+            <item>inset-block-start</item>
+            <item>inset-inline</item>
+            <item>inset-inline-end</item>
+            <item>inset-inline-start</item>
+            <item>isolation</item>
+            <item>justify-content</item>
+            <item>justify-items</item>
+            <item>justify-self</item>
+            <item>left</item>
+            <item>letter-spacing</item>
+            <item>line-break</item>
+            <item>line-gap-override</item>
+            <item>line-height</item>
+            <item>list-style</item>
+            <item>list-style-image</item>
+            <item>list-style-position</item>
+            <item>list-style-type</item>
+            <item>margin</item>
+            <item>margin-block</item>
+            <item>margin-block-end</item>
+            <item>margin-block-start</item>
+            <item>margin-bottom</item>
+            <item>margin-inline</item>
+            <item>margin-inline-end</item>
+            <item>margin-inline-start</item>
+            <item>margin-left</item>
+            <item>margin-right</item>
+            <item>margin-top</item>
+            <item>mask</item>
+            <item>mask-border</item>
+            <item>mask-border-mode</item>
+            <item>mask-border-outset</item>
+            <item>mask-border-repeat</item>
+            <item>mask-border-slice</item>
+            <item>mask-border-source</item>
+            <item>mask-border-width</item>
+            <item>mask-clip</item>
+            <item>mask-composite</item>
+            <item>mask-image</item>
+            <item>mask-mode</item>
+            <item>mask-origin</item>
+            <item>mask-position</item>
+            <item>mask-repeat</item>
+            <item>mask-size</item>
+            <item>mask-type</item>
+            <item>math-depth</item>
+            <item>math-style</item>
+            <item>max-block-size</item>
+            <item>max-height</item>
+            <item>max-inline-size</item>
+            <item>max-width</item>
+            <item>min-block-size</item>
+            <item>min-height</item>
+            <item>min-inline-size</item>
+            <item>min-width</item>
+            <item>mix-blend-mode</item>
+            <item>negative</item>
+            <item>object-fit</item>
+            <item>object-position</item>
+            <item>offset</item>
+            <item>offset-anchor</item>
+            <item>offset-distance</item>
+            <item>offset-path</item>
+            <item>offset-rotate</item>
+            <item>opacity</item>
+            <item>order</item>
+            <item>orphans</item>
+            <item>outline</item>
+            <item>outline-color</item>
+            <item>outline-offset</item>
+            <item>outline-style</item>
+            <item>outline-width</item>
+            <item>overflow</item>
+            <item>overflow-anchor</item>
+            <item>overflow-block</item>
+            <item>overflow-clip-margin</item>
+            <item>overflow-inline</item>
+            <item>overflow-wrap</item>
+            <item>overflow-x</item>
+            <item>overflow-y</item>
+            <item>override-colors</item>
+            <item>overscroll-behavior</item>
+            <item>overscroll-behavior-block</item>
+            <item>overscroll-behavior-inline</item>
+            <item>overscroll-behavior-x</item>
+            <item>overscroll-behavior-y</item>
+            <item>pad</item>
+            <item>padding</item>
+            <item>padding-block</item>
+            <item>padding-block-end</item>
+            <item>padding-block-start</item>
+            <item>padding-bottom</item>
+            <item>padding-inline</item>
+            <item>padding-inline-end</item>
+            <item>padding-inline-start</item>
+            <item>padding-left</item>
+            <item>padding-right</item>
+            <item>padding-top</item>
+            <item>page</item>
+            <item>page-break-after</item>
+            <item>page-break-before</item>
+            <item>page-break-inside</item>
+            <item>page-orientation</item>
+            <item>paint-order</item>
+            <item>perspective</item>
+            <item>perspective-origin</item>
+            <item>place-content</item>
+            <item>place-items</item>
+            <item>place-self</item>
+            <item>pointer-events</item>
+            <item>position</item>
+            <item>prefix</item>
+            <item>print-color-adjust</item>
+            <item>quotes</item>
+            <item>range</item>
+            <item>resize</item>
+            <item>right</item>
+            <item>rotate</item>
+            <item>row-gap</item>
+            <item>ruby-position</item>
+            <item>scale</item>
+            <item>scroll-behavior</item>
+            <item>scroll-margin</item>
+            <item>scroll-margin-block</item>
+            <item>scroll-margin-block-end</item>
+            <item>scroll-margin-block-start</item>
+            <item>scroll-margin-bottom</item>
+            <item>scroll-margin-inline</item>
+            <item>scroll-margin-inline-end</item>
+            <item>scroll-margin-inline-start</item>
+            <item>scroll-margin-left</item>
+            <item>scroll-margin-right</item>
+            <item>scroll-margin-top</item>
+            <item>scroll-padding</item>
+            <item>scroll-padding-block</item>
+            <item>scroll-padding-block-end</item>
+            <item>scroll-padding-block-start</item>
+            <item>scroll-padding-bottom</item>
+            <item>scroll-padding-inline</item>
+            <item>scroll-padding-inline-end</item>
+            <item>scroll-padding-inline-start</item>
+            <item>scroll-padding-left</item>
+            <item>scroll-padding-right</item>
+            <item>scroll-padding-top</item>
+            <item>scroll-snap-align</item>
+            <item>scroll-snap-stop</item>
+            <item>scroll-snap-type</item>
+            <item>scrollbar-color</item>
+            <item>scrollbar-gutter</item>
+            <item>scrollbar-width</item>
+            <item>shape-image-threshold</item>
+            <item>shape-margin</item>
+            <item>shape-outside</item>
+            <item>size</item>
+            <item>size-adjust</item>
+            <item>speak-as</item>
+            <item>src</item>
+            <item>suffix</item>
+            <item>symbols</item>
+            <item>syntax</item>
+            <item>system</item>
+            <item>tab-size</item>
+            <item>table-layout</item>
+            <item>text-align</item>
+            <item>text-align-last</item>
+            <item>text-combine-upright</item>
+            <item>text-decoration</item>
+            <item>text-decoration-color</item>
+            <item>text-decoration-line</item>
+            <item>text-decoration-skip-ink</item>
+            <item>text-decoration-style</item>
+            <item>text-decoration-thickness</item>
+            <item>text-emphasis</item>
+            <item>text-emphasis-color</item>
+            <item>text-emphasis-position</item>
+            <item>text-emphasis-style</item>
+            <item>text-indent</item>
+            <item>text-justify</item>
+            <item>text-orientation</item>
+            <item>text-overflow</item>
+            <item>text-rendering</item>
+            <item>text-shadow</item>
+            <item>text-transform</item>
+            <item>text-underline-offset</item>
+            <item>text-underline-position</item>
+            <item>top</item>
+            <item>touch-action</item>
+            <item>transform</item>
+            <item>transform-box</item>
+            <item>transform-origin</item>
+            <item>transform-style</item>
+            <item>transition</item>
+            <item>transition-delay</item>
+            <item>transition-duration</item>
+            <item>transition-property</item>
+            <item>transition-timing-function</item>
+            <item>translate</item>
+            <item>unicode-bidi</item>
+            <item>unicode-range</item>
+            <item>user-select</item>
+            <item>vertical-align</item>
+            <item>visibility</item>
+            <item>white-space</item>
+            <item>widows</item>
+            <item>width</item>
+            <item>will-change</item>
+            <item>word-break</item>
+            <item>word-spacing</item>
+            <item>writing-mode</item>
+            <item>z-index</item>
+
+            <!-- SVG only -->
+
+            <item>alignment-baseline</item>
+            <item>baseline-shift</item>
+            <item>color-interpolation</item>
+            <item>color-interpolation-filters</item>
+            <item>dominant-baseline</item>
+            <item>fill</item>
+            <item>fill-opacity</item>
+            <item>fill-rule</item>
+            <item>flood-color</item>
+            <item>flood-opacity</item>
+            <item>marker-end</item>
+            <item>marker-mid</item>
+            <item>marker-start</item>
+            <item>shape-rendering</item>
+            <item>stop-color</item>
+            <item>stop-opacity</item>
+            <item>stroke</item>
+            <item>stroke-dasharray</item>
+            <item>stroke-dashoffset</item>
+            <item>stroke-linecap</item>
+            <item>stroke-linejoin</item>
+            <item>stroke-miterlimit</item>
+            <item>stroke-opacity</item>
+            <item>text-anchor</item>
+            <item>vector-effect</item>
+        </list>
+
+        <list name="vendor properties">
+            <!-- Gecko rendering engine CSS property extensions -->
+            <item>-moz-box-align</item>
+            <item>-moz-box-direction</item>
+            <item>-moz-box-flex</item>
+            <item>-moz-box-flex-group</item>
+            <item>-moz-box-ordinal-group</item>
+            <item>-moz-box-orient</item>
+            <item>-moz-box-pack</item>
+            <item>-moz-box</item>
+
+            <!-- Opera rendering engine CSS property extensions -->
+            <item>-o-linear-gradient</item>
+
+            <!-- konq specific -->
+            <item>konq_bgpos_x</item>
+            <item>konq_bgpos_y</item>
+
+            <!-- Webkit rendering engine CSS property extensions -->
+            <item>-webkit-box-align</item>
+            <item>-webkit-box-direction</item>
+            <item>-webkit-box-flex</item>
+            <item>-webkit-box-ordinal-group</item>
+            <item>-webkit-box-orient</item>
+            <item>-webkit-box-pack</item>
+            <item>-webkit-box-reflect</item>
+            <item>-webkit-linear-gradient</item>
+            <item>-webkit-gradient</item>
+            <item>-webkit-overflow-scrolling</item>
+            <item>-webkit-text-decoration-skip</item>
+            <item>-webkit-text-size-adjust</item>
+            <item>-webkit-tap-highlight-color</item>
+
+            <!-- Trident (a.k.a., MSHTML) CSS property extensions -->
+            <item>-ms-filter</item>
+            <item>-ms-flex</item>
+            <item>-ms-flex-align</item>
+            <item>-ms-flex-item-align</item>
+            <item>-ms-flex-line-pack</item>
+            <item>-ms-flex-negative</item>
+            <item>-ms-flex-order</item>
+            <item>-ms-flex-pack</item>
+            <item>-ms-flex-positive</item>
+            <item>-ms-flex-position</item>
+            <item>-ms-flex-preferred-size</item>
+            <item>-ms-interpolation-mode</item>
+            <item>-ms-linear-gradient</item>
+            <item>-ms-text-size-adjust</item>
+        </list>
+
+        <list name="value keywords">
+            <item>auto</item>
+            <item>inherit</item>
+            <item>initial</item>
+            <item>revert</item>
+            <item>revert-layer</item>
+            <item>unset</item>
+        </list>
+
+        <list name="values">
+            <item>-moz-arabic-indic</item>
+            <item>-moz-bengali</item>
+            <item>-moz-cjk-earthly-branch</item>
+            <item>-moz-cjk-heavenly-stem</item>
+            <item>-moz-devanagari</item>
+            <item>-moz-gujarati</item>
+            <item>-moz-gurmukhi</item>
+            <item>-moz-kannada</item>
+            <item>-moz-lao</item>
+            <item>-moz-malayalam</item>
+            <item>-moz-myanmar</item>
+            <item>-moz-oriya</item>
+            <item>-moz-persian</item>
+            <item>-moz-tamil</item>
+            <item>-moz-telugu</item>
+            <item>-moz-thai</item>
+            <item>absolute</item>
+            <item>accumulate</item>
+            <item>add</item>
+            <item>additive</item>
+            <item>alias</item>
+            <item>all</item>
+            <item>all-petite-caps</item>
+            <item>all-scroll</item>
+            <item>all-small-caps</item>
+            <item>allow-end</item>
+            <item>alpha</item>
+            <item>alphabetic</item>
+            <item>alternate</item>
+            <item>alternate-reverse</item>
+            <item>always</item>
+            <item>anywhere</item>
+            <item>arabic-indic</item>
+            <item>armenian</item>
+            <item>auto-add</item>
+            <item>auto-fill</item>
+            <item>auto-fit</item>
+            <item>avoid</item>
+            <item>avoid-column</item>
+            <item>avoid-page</item>
+            <item>avoid-region</item>
+            <item>backwards</item>
+            <item>balance</item>
+            <item>balance-all</item>
+            <item>baseline</item>
+            <item>bengali</item>
+            <item>bidi-override</item>
+            <item>bigger</item>
+            <item>block</item>
+            <item>block-end</item>
+            <item>block-start</item>
+            <item>bold</item>
+            <item>bolder</item>
+            <item>border</item>
+            <item>border-box</item>
+            <item>both</item>
+            <item>both-edges</item>
+            <item>bottom</item>
+            <item>break-all</item>
+            <item>break-spaces</item>
+            <item>break-word</item>
+            <item>bullets</item>
+            <item>cambodian</item>
+            <item>cap-height</item>
+            <item>capitalize</item>
+            <item>cell</item>
+            <item>center</item>
+            <item>ch-width</item>
+            <item>circle</item>
+            <item>cjk-decimal</item>
+            <item>cjk-earthly-branch</item>
+            <item>cjk-heavenly-stem</item>
+            <item>cjk-ideographic</item>
+            <item>clip</item>
+            <item>clone</item>
+            <item>close-quote</item>
+            <item>col-resize</item>
+            <item>collapse</item>
+            <item>color</item>
+            <item>color-burn</item>
+            <item>color-dodge</item>
+            <item>column</item>
+            <item>column-reverse</item>
+            <item>common-ligatures</item>
+            <item>compact</item>
+            <item>condensed</item>
+            <item>contain</item>
+            <item>content</item>
+            <item>content-box</item>
+            <item>contents</item>
+            <item>context-menu</item>
+            <item>contextual</item>
+            <item>copy</item>
+            <item>cover</item>
+            <item>crisp-edges</item>
+            <item>crosshair</item>
+            <item>currentcolor</item>
+            <item>cursive</item>
+            <item>cyclic</item>
+            <item>dark</item>
+            <item>darken</item>
+            <item>dashed</item>
+            <item>decimal</item>
+            <item>decimal-leading-zero</item>
+            <item>default</item>
+            <item>dense</item>
+            <item>devanagari</item>
+            <item>diagonal-fractions</item>
+            <item>difference</item>
+            <item>disc</item>
+            <item>disclosure-closed</item>
+            <item>disclosure-open</item>
+            <item>discretionary-ligatures</item>
+            <item>dot</item>
+            <item>dotted</item>
+            <item>double</item>
+            <item>double-circle</item>
+            <item>e-resize</item>
+            <item>each-line</item>
+            <item>ease</item>
+            <item>ease-in</item>
+            <item>ease-in-out</item>
+            <item>ease-out</item>
+            <item>economy</item>
+            <item>ellipsis</item>
+            <item>embed</item>
+            <item>emoji</item>
+            <item>end</item>
+            <item>ethiopic-numeric</item>
+            <item>ew-resize</item>
+            <item>ex-height</item>
+            <item>exact</item>
+            <item>exclude</item>
+            <item>exclusion</item>
+            <item>expanded</item>
+            <item>extends</item>
+            <item>extra-condensed</item>
+            <item>extra-expanded</item>
+            <item>fade</item>
+            <item>fallback</item>
+            <item>false</item>
+            <item>fangsong</item>
+            <item>fantasy</item>
+            <item>fill</item>
+            <item>fill-box</item>
+            <item>filled</item>
+            <item>first</item>
+            <item>fit-content</item>
+            <item>fixed</item>
+            <item>flat</item>
+            <item>flex</item>
+            <item>flex-end</item>
+            <item>flex-start</item>
+            <item>flow</item>
+            <item>flow-root</item>
+            <item>force-end</item>
+            <item>forwards</item>
+            <item>from-font</item>
+            <item>from-image</item>
+            <item>full-size-kana</item>
+            <item>full-width</item>
+            <item>georgian</item>
+            <item>grab</item>
+            <item>grabbing</item>
+            <item>grid</item>
+            <item>groove</item>
+            <item>gujarati</item>
+            <item>gurmukhi</item>
+            <item>hanging</item>
+            <item>hard-light</item>
+            <item>hebrew</item>
+            <item>help</item>
+            <item>hidden</item>
+            <item>hide</item>
+            <item>high-quality</item>
+            <item>hiragana</item>
+            <item>hiragana-iroha</item>
+            <item>historical-forms</item>
+            <item>historical-ligatures</item>
+            <item>horizontal</item>
+            <item>horizontal-tb</item>
+            <item>hue</item>
+            <item>ic-height</item>
+            <item>ic-width</item>
+            <item>infinite</item>
+            <item>inline</item>
+            <item>inline-block</item>
+            <item>inline-end</item>
+            <item>inline-flex</item>
+            <item>inline-grid</item>
+            <item>inline-size</item>
+            <item>inline-start</item>
+            <item>inline-table</item>
+            <item>inset</item>
+            <item>inside</item>
+            <item>inter-character</item>
+            <item>inter-word</item>
+            <item>intersect</item>
+            <item>invert</item>
+            <item>isolate</item>
+            <item>isolate-override</item>
+            <item>italic</item>
+            <item>japanese-formal</item>
+            <item>japanese-informal</item>
+            <item>jump-both</item>
+            <item>jump-end</item>
+            <item>jump-none</item>
+            <item>jump-start</item>
+            <item>justify</item>
+            <item>justify-all</item>
+            <item>kannada</item>
+            <item>katakana</item>
+            <item>katakana-iroha</item>
+            <item>keep-all</item>
+            <item>keyword</item>
+            <item>khmer</item>
+            <item>korean-hangul-formal</item>
+            <item>korean-hanja-formal</item>
+            <item>korean-hanja-informal</item>
+            <item>landscape</item>
+            <item>lao</item>
+            <item>large</item>
+            <item>larger</item>
+            <item>last</item>
+            <item>layout</item>
+            <item>left</item>
+            <item>legacy</item>
+            <item>light</item>
+            <item>lighten</item>
+            <item>lighter</item>
+            <item>line-through</item>
+            <item>linear</item>
+            <item>lining-nums</item>
+            <item>local</item>
+            <item>loose</item>
+            <item>lower-alpha</item>
+            <item>lower-armenian</item>
+            <item>lower-greek</item>
+            <item>lower-latin</item>
+            <item>lower-roman</item>
+            <item>lowercase</item>
+            <item>ltr</item>
+            <item>luminance</item>
+            <item>luminosity</item>
+            <item>malayalam</item>
+            <item>mandatory</item>
+            <item>manipulation</item>
+            <item>manual</item>
+            <item>margin-box</item>
+            <item>match-parent</item>
+            <item>match-source</item>
+            <item>math</item>
+            <item>max-content</item>
+            <item>medium</item>
+            <item>min-content</item>
+            <item>mixed</item>
+            <item>mongolian</item>
+            <item>monospace</item>
+            <item>move</item>
+            <item>multiply</item>
+            <item>myanmar</item>
+            <item>n-resize</item>
+            <item>ne-resize</item>
+            <item>nesw-resize</item>
+            <item>no-clip</item>
+            <item>no-close-quote</item>
+            <item>no-common-ligatures</item>
+            <item>no-contextual</item>
+            <item>no-discretionary-ligatures</item>
+            <item>no-drop</item>
+            <item>no-historical-ligatures</item>
+            <item>no-open-quote</item>
+            <item>no-repeat</item>
+            <item>none</item>
+            <item>normal</item>
+            <item>not-allowed</item>
+            <item>nowrap</item>
+            <item>ns-resize</item>
+            <item>numbers</item>
+            <item>numeric</item>
+            <item>nw-resize</item>
+            <item>nwse-resize</item>
+            <item>oblique</item>
+            <item>oldstyle-nums</item>
+            <item>only</item>
+            <item>open</item>
+            <item>open-quote</item>
+            <item>optional</item>
+            <item>ordinal</item>
+            <item>oriya</item>
+            <item>outset</item>
+            <item>outside</item>
+            <item>over</item>
+            <item>overlay</item>
+            <item>overline</item>
+            <item>padding</item>
+            <item>padding-box</item>
+            <item>paint</item>
+            <item>painted</item>
+            <item>pan-down</item>
+            <item>pan-left</item>
+            <item>pan-right</item>
+            <item>pan-up</item>
+            <item>pan-x</item>
+            <item>pan-y</item>
+            <item>paused</item>
+            <item>persian</item>
+            <item>petite-caps</item>
+            <item>pinch-zoom</item>
+            <item>pixelated</item>
+            <item>plaintext</item>
+            <item>pointer</item>
+            <item>portrait</item>
+            <item>position</item>
+            <item>pre</item>
+            <item>pre-line</item>
+            <item>pre-wrap</item>
+            <item>preserve-3d</item>
+            <item>progress</item>
+            <item>proportional-nums</item>
+            <item>proportional-width</item>
+            <item>proximity</item>
+            <item>recto</item>
+            <item>relative</item>
+            <item>repeat</item>
+            <item>repeat-x</item>
+            <item>repeat-y</item>
+            <item>replace</item>
+            <item>reverse</item>
+            <item>ridge</item>
+            <item>right</item>
+            <item>rotate-left</item>
+            <item>rotate-right</item>
+            <item>round</item>
+            <item>row</item>
+            <item>row-resize</item>
+            <item>row-reverse</item>
+            <item>rtl</item>
+            <item>ruby</item>
+            <item>ruby-base</item>
+            <item>ruby-base-container</item>
+            <item>ruby-text</item>
+            <item>ruby-text-container</item>
+            <item>running</item>
+            <item>s-resize</item>
+            <item>safe</item>
+            <item>sans-serif</item>
+            <item>saturation</item>
+            <item>scale-down</item>
+            <item>screen</item>
+            <item>scroll</item>
+            <item>scroll-position</item>
+            <item>se-resize</item>
+            <item>self-end</item>
+            <item>self-start</item>
+            <item>semi-condensed</item>
+            <item>semi-expanded</item>
+            <item>separate</item>
+            <item>serif</item>
+            <item>sesame</item>
+            <item>show</item>
+            <item>sideways</item>
+            <item>sideways-lr</item>
+            <item>sideways-right</item>
+            <item>sideways-rl</item>
+            <item>simp-chinese-formal</item>
+            <item>simp-chinese-informal</item>
+            <item>size</item>
+            <item>slashed-zero</item>
+            <item>slice</item>
+            <item>small</item>
+            <item>small-caps</item>
+            <item>smaller</item>
+            <item>smooth</item>
+            <item>soft-light</item>
+            <item>solid</item>
+            <item>space</item>
+            <item>space-around</item>
+            <item>space-between</item>
+            <item>space-evenly</item>
+            <item>spell-out</item>
+            <item>square</item>
+            <item>stable</item>
+            <item>stacked-fractions</item>
+            <item>start</item>
+            <item>static</item>
+            <item>step-end</item>
+            <item>step-start</item>
+            <item>sticky</item>
+            <item>stretch</item>
+            <item>strict</item>
+            <item>stroke</item>
+            <item>stroke-box</item>
+            <item>style</item>
+            <item>sub</item>
+            <item>subtract</item>
+            <item>super</item>
+            <item>sw-resize</item>
+            <item>swap</item>
+            <item>symbolic</item>
+            <item>system-ui</item>
+            <item>table</item>
+            <item>table-caption</item>
+            <item>table-cell</item>
+            <item>table-column</item>
+            <item>table-column-group</item>
+            <item>table-footer-group</item>
+            <item>table-header-group</item>
+            <item>table-row</item>
+            <item>table-row-group</item>
+            <item>tabular-nums</item>
+            <item>tamil</item>
+            <item>telugu</item>
+            <item>text</item>
+            <item>thai</item>
+            <item>thick</item>
+            <item>thin</item>
+            <item>tibetan</item>
+            <item>titling-caps</item>
+            <item>top</item>
+            <item>trad-chinese-formal</item>
+            <item>trad-chinese-informal</item>
+            <item>transparent</item>
+            <item>triangle</item>
+            <item>true</item>
+            <item>ui-monospace</item>
+            <item>ui-rounded</item>
+            <item>ui-sans-serif</item>
+            <item>ui-serif</item>
+            <item>ultra-condensed</item>
+            <item>ultra-expanded</item>
+            <item>under</item>
+            <item>underline</item>
+            <item>unicase</item>
+            <item>unicode</item>
+            <item>unsafe</item>
+            <item>upper-alpha</item>
+            <item>upper-armenian</item>
+            <item>upper-latin</item>
+            <item>upper-roman</item>
+            <item>uppercase</item>
+            <item>upright</item>
+            <item>use-glyph-orientation</item>
+            <item>verso</item>
+            <item>vertical</item>
+            <item>vertical-lr</item>
+            <item>vertical-rl</item>
+            <item>vertical-text</item>
+            <item>view-box</item>
+            <item>visible</item>
+            <item>visibleFill</item>
+            <item>visiblePainted</item>
+            <item>visibleStroke</item>
+            <item>w-resize</item>
+            <item>wait</item>
+            <item>weight</item>
+            <item>words</item>
+            <item>wrap</item>
+            <item>wrap-reverse</item>
+            <item>x-large</item>
+            <item>x-small</item>
+            <item>xx-large</item>
+            <item>xx-small</item>
+            <item>xxx-large</item>
+            <item>zoom-in</item>
+            <item>zoom-out</item>
+
+            <!-- SVG only -->
+
+            <item>after-edge</item>
+            <item>arcs</item>
+            <item>before-edge</item>
+            <item>bevel</item>
+            <item>bounding-box</item>
+            <item>butt</item>
+            <item>central</item>
+            <item>crispEdges</item>
+            <item>evenodd</item>
+            <item>fixed-position</item>
+            <item>freeze</item>
+            <item>geometricPrecision</item>
+            <item>ideographic</item>
+            <item>linearRGB</item>
+            <item>mathematical</item>
+            <item>middle</item>
+            <item>miter</item>
+            <item>miter-clip</item>
+            <item>non-rotation</item>
+            <item>non-scaling-size</item>
+            <item>non-scaling-stroke</item>
+            <item>nonzero</item>
+            <item>optimizeLegibility</item>
+            <item>optimizeQuality</item>
+            <item>optimizeSpeed</item>
+            <item>remove</item>
+            <item>sRGB</item>
+            <item>text-after-edge</item>
+            <item>text-before-edge</item>
+            <item>text-bottom</item>
+            <item>text-top</item>
+
+            <!-- manual list -->
+            <item>konq-center</item>
+        </list>
+
+        <list name="colors">
+            <item>aliceblue</item>
+            <item>antiquewhite</item>
+            <item>aqua</item>
+            <item>aquamarine</item>
+            <item>azure</item>
+            <item>beige</item>
+            <item>bisque</item>
+            <item>black</item>
+            <item>blanchedalmond</item>
+            <item>blue</item>
+            <item>blueviolet</item>
+            <item>brown</item>
+            <item>burlywood</item>
+            <item>cadetblue</item>
+            <item>chartreuse</item>
+            <item>chocolate</item>
+            <item>coral</item>
+            <item>cornflowerblue</item>
+            <item>cornsilk</item>
+            <item>crimson</item>
+            <item>cyan</item>
+            <item>darkblue</item>
+            <item>darkcyan</item>
+            <item>darkgoldenrod</item>
+            <item>darkgray</item>
+            <item>darkgreen</item>
+            <item>darkgrey</item>
+            <item>darkkhaki</item>
+            <item>darkmagenta</item>
+            <item>darkolivegreen</item>
+            <item>darkorange</item>
+            <item>darkorchid</item>
+            <item>darkred</item>
+            <item>darksalmon</item>
+            <item>darkseagreen</item>
+            <item>darkslateblue</item>
+            <item>darkslategray</item>
+            <item>darkslategrey</item>
+            <item>darkturquoise</item>
+            <item>darkviolet</item>
+            <item>deeppink</item>
+            <item>deepskyblue</item>
+            <item>dimgray</item>
+            <item>dimgrey</item>
+            <item>dodgerblue</item>
+            <item>firebrick</item>
+            <item>floralwhite</item>
+            <item>forestgreen</item>
+            <item>fuchsia</item>
+            <item>gainsboro</item>
+            <item>ghostwhite</item>
+            <item>gold</item>
+            <item>goldenrod</item>
+            <item>gray</item>
+            <item>green</item>
+            <item>greenyellow</item>
+            <item>grey</item>
+            <item>honeydew</item>
+            <item>hotpink</item>
+            <item>indianred</item>
+            <item>indigo</item>
+            <item>ivory</item>
+            <item>khaki</item>
+            <item>lavender</item>
+            <item>lavenderblush</item>
+            <item>lawngreen</item>
+            <item>lemonchiffon</item>
+            <item>lightblue</item>
+            <item>lightcoral</item>
+            <item>lightcyan</item>
+            <item>lightgoldenrodyellow</item>
+            <item>lightgray</item>
+            <item>lightgreen</item>
+            <item>lightgrey</item>
+            <item>lightpink</item>
+            <item>lightsalmon</item>
+            <item>lightseagreen</item>
+            <item>lightskyblue</item>
+            <item>lightslategray</item>
+            <item>lightslategrey</item>
+            <item>lightsteelblue</item>
+            <item>lightyellow</item>
+            <item>lime</item>
+            <item>limegreen</item>
+            <item>linen</item>
+            <item>magenta</item>
+            <item>maroon</item>
+            <item>mediumaquamarine</item>
+            <item>mediumblue</item>
+            <item>mediumorchid</item>
+            <item>mediumpurple</item>
+            <item>mediumseagreen</item>
+            <item>mediumslateblue</item>
+            <item>mediumspringgreen</item>
+            <item>mediumturquoise</item>
+            <item>mediumvioletred</item>
+            <item>midnightblue</item>
+            <item>mintcream</item>
+            <item>mistyrose</item>
+            <item>moccasin</item>
+            <item>navajowhite</item>
+            <item>navy</item>
+            <item>oldlace</item>
+            <item>olive</item>
+            <item>olivedrab</item>
+            <item>orange</item>
+            <item>orangered</item>
+            <item>orchid</item>
+            <item>palegoldenrod</item>
+            <item>palegreen</item>
+            <item>paleturquoise</item>
+            <item>palevioletred</item>
+            <item>papayawhip</item>
+            <item>peachpuff</item>
+            <item>peru</item>
+            <item>pink</item>
+            <item>plum</item>
+            <item>powderblue</item>
+            <item>purple</item>
+            <item>rebeccapurple</item>
+            <item>red</item>
+            <item>rosybrown</item>
+            <item>royalblue</item>
+            <item>saddlebrown</item>
+            <item>salmon</item>
+            <item>sandybrown</item>
+            <item>seagreen</item>
+            <item>seashell</item>
+            <item>sienna</item>
+            <item>silver</item>
+            <item>skyblue</item>
+            <item>slateblue</item>
+            <item>slategray</item>
+            <item>slategrey</item>
+            <item>snow</item>
+            <item>springgreen</item>
+            <item>steelblue</item>
+            <item>tan</item>
+            <item>teal</item>
+            <item>thistle</item>
+            <item>tomato</item>
+            <item>turquoise</item>
+            <item>violet</item>
+            <item>wheat</item>
+            <item>white</item>
+            <item>whitesmoke</item>
+            <item>yellow</item>
+            <item>yellowgreen</item>
+            
+            <!-- System colors -->
+            <item>AccentColor</item>
+            <item>AccentColorText</item>
+            <item>ActiveText</item>
+            <item>ButtonBorder</item>
+            <item>ButtonFace</item>
+            <item>ButtonText</item>
+            <item>Canvas</item>
+            <item>CanvasText</item>
+            <item>Field</item>
+            <item>FieldText</item>
+            <item>GrayText</item>
+            <item>Highlight</item>
+            <item>HighlightText</item>
+            <item>LinkText</item>
+            <item>Mark</item>
+            <item>MarkText</item>
+            <item>VisitedText</item>
+        </list>
+
+        <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Functions -->
+        <list name="functions">
+            <item>abs</item>
+            <item>acos</item>
+            <item>annotation</item>
+            <item>asin</item>
+            <item>atan</item>
+            <item>atan2</item>
+            <item>attr</item>
+            <item>blur</item>
+            <item>brightness</item>
+            <item>calc</item>
+            <item>character-variant</item>
+            <item>circle</item>
+            <item>clamp</item>
+            <item>color</item>
+            <item>color-mix</item>
+            <item>conic-gradient</item>
+            <item>contrast</item>
+            <item>cos</item>
+            <item>counter</item>
+            <item>counters</item>
+            <item>cross-fade</item>
+            <item>device-cmyk</item>
+            <item>drop-shadow</item>
+            <item>ellipse</item>
+            <item>env</item>
+            <item>exp</item>
+            <item>fit-content</item>
+            <item>format</item>
+            <item>grayscale</item>
+            <item>hsl</item>
+            <item>hue-rotate</item>
+            <item>hwb</item>
+            <item>hypot</item>
+            <item>image</item>
+            <item>image-set</item>
+            <item>inset</item>
+            <item>invert</item>
+            <item>lab</item>
+            <item>lch</item>
+            <item>linear-gradient</item>
+            <item>local</item>
+            <item>log</item>
+            <item>matrix</item>
+            <item>matrix3d</item>
+            <item>max</item>
+            <item>min</item>
+            <item>minmax</item>
+            <item>mod</item>
+            <item>oklab</item>
+            <item>oklch</item>
+            <item>opacity</item>
+            <item>ornaments</item>
+            <item>paint</item>
+            <item>path</item>
+            <item>perspective</item>
+            <item>polygon</item>
+            <item>pow</item>
+            <item>radial-gradient</item>
+            <item>rem</item>
+            <item>repeat</item>
+            <item>repeating-conic-gradient</item>
+            <item>repeating-linear-gradient</item>
+            <item>repeating-radial-gradient</item>
+            <item>rgb</item>
+            <item>rotate</item>
+            <item>rotate3d</item>
+            <item>rotateX</item>
+            <item>rotateY</item>
+            <item>rotateZ</item>
+            <item>round</item>
+            <item>saturate</item>
+            <item>scale</item>
+            <item>scale3d</item>
+            <item>scaleX</item>
+            <item>scaleY</item>
+            <item>scaleZ</item>
+            <item>sepia</item>
+            <item>sign</item>
+            <item>sin</item>
+            <item>skew</item>
+            <item>skewX</item>
+            <item>skewY</item>
+            <item>sqrt</item>
+            <item>styleset</item>
+            <item>stylistic</item>
+            <item>swash</item>
+            <item>symbols</item>
+            <item>tan</item>
+            <item>tech</item>
+            <item>translate</item>
+            <item>translate3d</item>
+            <item>translateX</item>
+            <item>translateY</item>
+            <item>translateZ</item>
+            <item>url</item>
+            <item>var</item>
+        </list>
+
+        <list name="media types">
+            <item>all</item>
+            <item>print</item>
+            <item>screen</item>
+            <item>speech</item>
+        </list>
+
+        <list name="media features">
+            <item>-webkit-device-pixel-ratio</item>
+            <item>-webkit-transform-3d</item>
+            <item>any-hover</item>
+            <item>any-pointer</item>
+            <item>aspect-ratio</item>
+            <item>color</item>
+            <item>color-gamut</item>
+            <item>color-index</item>
+            <item>display-mode</item>
+            <item>dynamic-range</item>
+            <item>forced-colors</item>
+            <item>grid</item>
+            <item>height</item>
+            <item>hover</item>
+            <item>inverted-colors</item>
+            <item>max-height</item>
+            <item>max-width</item>
+            <item>min-height</item>
+            <item>min-width</item>
+            <item>monochrome</item>
+            <item>orientation</item>
+            <item>overflow-block</item>
+            <item>overflow-inline</item>
+            <item>pointer</item>
+            <item>prefers-color-scheme</item>
+            <item>prefers-contrast</item>
+            <item>prefers-reduced-motion</item>
+            <item>resolution</item>
+            <item>scripting</item>
+            <item>update</item>
+            <item>video-dynamic-range</item>
+            <item>width</item>
+        </list>
+
+        <!-- prefixed by :: -->
+        <list name="pseudo-elements">
+            <item>after</item>
+            <item>backdrop</item>
+            <item>before</item>
+            <item>cue</item>
+            <item>cue-region</item>
+            <item>file-selector-button</item>
+            <item>first-letter</item>
+            <item>first-line</item>
+            <item>marker</item>
+            <item>part</item>
+            <item>placeholder</item>
+            <item>selection</item>
+            <item>slotted</item>
+
+            <!-- manual list -->
+
+            <item>-moz-progress-bar</item>
+            <item>-moz-range-progress</item>
+            <item>-moz-range-thumb</item>
+            <item>-moz-range-track</item>
+            <item>-moz-selection</item>
+            <item>-ms-fill</item>
+            <item>-ms-fill-lower</item>
+            <item>-ms-fill-upper</item>
+            <item>-ms-thumb</item>
+            <item>-ms-track</item>
+            <item>-webkit-progress-bar</item>
+            <item>-webkit-progress-value</item>
+            <item>-webkit-slider-runnable-track</item>
+            <item>-webkit-slider-thumb</item>
+        </list>
+
+        <!-- prefixed by : -->
+        <list name="pseudo-classes">
+            <item>active</item>
+            <item>any-link</item>
+            <item>autofill</item>
+            <item>buffering</item>
+            <item>checked</item>
+            <item>current</item>
+            <item>default</item>
+            <item>defined</item>
+            <item>dir</item>
+            <item>disabled</item>
+            <item>empty</item>
+            <item>enabled</item>
+            <item>first</item>
+            <item>first-child</item>
+            <item>first-of-type</item>
+            <item>focus</item>
+            <item>focus-visible</item>
+            <item>focus-within</item>
+            <item>fullscreen</item>
+            <item>has</item>
+            <item>host</item>
+            <item>host-context</item>
+            <item>hover</item>
+            <item>in-range</item>
+            <item>indeterminate</item>
+            <item>invalid</item>
+            <item>is</item>
+            <item>lang</item>
+            <item>last-child</item>
+            <item>last-of-type</item>
+            <item>left</item>
+            <item>link</item>
+            <item>local-link</item>
+            <item>modal</item>
+            <item>muted</item>
+            <item>not</item>
+            <item>nth-child</item>
+            <item>nth-last-child</item>
+            <item>nth-last-of-type</item>
+            <item>nth-of-type</item>
+            <item>only-child</item>
+            <item>only-of-type</item>
+            <item>optional</item>
+            <item>out-of-range</item>
+            <item>paused</item>
+            <item>picture-in-picture</item>
+            <item>placeholder-shown</item>
+            <item>playing</item>
+            <item>read-only</item>
+            <item>read-write</item>
+            <item>required</item>
+            <item>right</item>
+            <item>root</item>
+            <item>scope</item>
+            <item>seeking</item>
+            <item>stalled</item>
+            <item>target</item>
+            <item>user-invalid</item>
+            <item>user-valid</item>
+            <item>valid</item>
+            <item>visited</item>
+            <item>volume-locked</item>
+            <item>where</item>
+        </list>
+
+        <list name="@page pseudo-classes">
+            <item>blank</item>
+            <item>first</item>
+            <item>left</item>
+            <item>recto</item>
+            <item>right</item>
+            <item>verso</item>
+        </list>
+
+        <list name="at-rules">
+            <item>@charset</item>
+            <item>@container</item>
+            <item>@font-feature-values</item>
+            <item>@import</item>
+            <item>@keyframes</item>
+            <item>@layer</item>
+            <item>@media</item>
+            <item>@namespace</item>
+            <item>@page</item>
+            <item>@supports</item>
+        </list>
+
+        <list name="at-rules definitions">
+            <item>@color-profile</item>
+            <item>@counter-style</item>
+            <item>@font-face</item>
+            <item>@font-palette-values</item>
+            <item>@property</item>
+        </list>
+
+        <list name="media operators">
+            <item>or</item>
+            <item>and</item>
+            <item>only</item>
+            <item>not</item>
+        </list>
+
+        <contexts>
+            <context name="Base" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="RuleSet" char="{" beginRegion="ruleset"/>
+                <DetectChar context="SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+            <context name="FindSelector" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassOrElement" char=":"/>
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="["/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassSelector" char="("/>
+                <AnyChar attribute="Selector Symbol" String="*>+~|&amp;"/>
+                <IncludeRules context="FindComments"/>
+                <RegExpr attribute="Selector Class" String="\.&ident2;"/>
+                <RegExpr attribute="Selector Id" String="#&ident2;"/>
+                <RegExpr attribute="Selector Tag" String="&ident;"/>
+            </context>
+
+            <!-- find functions // rgba(255,255,255,0.75) -->
+            <context name="FindFunctions" attribute="Normal Text">
+                <RegExpr context="Function" String="(&func;)?\(" lookAhead="1"/>
+            </context>
+            <context name="FindNestedFunctions" attribute="Normal Text">
+                <RegExpr context="NestedFunction" String="(&func;)?\(" lookAhead="1"/>
+            </context>
+
+            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
+            <context name="FindValues" attribute="Normal Text">
+                <DetectChar attribute="Annotation" context="Annotation" char="!"/>
+                <keyword attribute="Value Keyword" String="value keywords"/>
+                <keyword attribute="Value" String="values"/>
+                <keyword attribute="Named Color" String="colors"/>
+                <RegExpr attribute="Color" String="#([0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{3,4})"/>
+                <IncludeRules context="FindNumber"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="FindNumber" attribute="Number" lineEndContext="#pop">
+                <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])"/>
+            </context>
+
+            <context name="FindIdentifier" attribute="Number" lineEndContext="#pop">
+                <RegExpr String="&ident2;\s*"/>
+            </context>
+
+            <context name="FindVendorProperty" attribute="Normal Text">
+                <RegExpr attribute="Vendor Property" String="-(webkit|moz|o|ms)-[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <WordDetect attribute="Annotation" context="#pop" String="important"/>
+            </context>
+
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <!-- https://drafts.csswg.org/css-values-4/#lengths -->
+                <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units -->
+                <RegExpr attribute="Unit" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|grad|rad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)(?![-+])"/>
+            </context>
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindStrings" attribute="Normal Text">
+                <DetectChar attribute="String" context="StringDQ" char="&quot;"/>
+                <DetectChar attribute="String" context="StringSQ" char="'"/>
+            </context>
+
+            <!-- find comments // /* comment */ -->
+            <context name="FindComments" attribute="Normal Text">
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="1"/>
+                <Detect2Chars attribute="Error" context="Error" char="/" char1="/"/>
+            </context>
+
+            <context name="Error" attribute="Error" lineEndContext="#pop">
+                <RegExpr attribute="Error" context="#pop" String=".*"/>
+            </context>
+
+            <context name="IsComments" attribute="Normal Text">
+                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*BEGIN\b.*\*/" beginRegion="UserDefined"/>
+                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*END\b.*\*/" endRegion="UserDefined"/>
+                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment"/>
+            </context>
+
+            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
+                <WordDetect attribute="At Rule" context="@keyframes" String="@keyframes"/>
+                <WordDetect attribute="At Rule" context="@layer" String="@layer"/>
+                <WordDetect attribute="At Rule" context="@font-feature-values" String="@font-feature-values"/>
+                <WordDetect attribute="At Rule" context="@page" String="@page"/>
+                <WordDetect attribute="At Rule" context="@supports" String="@supports"/>
+                <keyword attribute="At Rule" context="@property" String="at-rules definitions"/>
+                <RegExpr attribute="At Rule" context="@media" String="@[-a-zA-Z0-9_]*"/>
+            </context>
+
+
+            <context name="AtRuleCommon" attribute="At Rule Text">
+                <DetectChar char=";" context="#pop#pop" attribute="Separator Symbol"/>
+                <DetectChar char="}" context="#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="AtRuleCommon2" attribute="At Rule Text">
+                <DetectChar char="{" context="#pop#pop!NestedRule" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+
+
+            <context name="@media" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleCommon2"/>
+                <IncludeRules context="FindFunctions"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media types" attribute="Media Type"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="AtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char=";" context="#pop#pop#pop" attribute="Error"/>
+                <DetectChar char="{" context="#pop#pop#pop!RuleSet" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop#pop#pop" lookAhead="1"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="NestedAtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="AtRuleMediaConditionValue" attribute="At Rule Text">
+                <AnyChar String="&lt;>=" attribute="Operator"/>
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="NestedAtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" attribute="Property Separator"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindNumber"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media features" attribute="Condition Property"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="NestedRule" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char="}" context="#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="{" context="RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <DetectChar char="@" context="SelectAtRule" lookAhead="1"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+
+            <context name="@supports" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleSupportsCondition" lookAhead="1"/>
+                <IncludeRules context="AtRuleCommon2"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <WordDetect String="selector(" context="FunctionSelector" attribute="Function"/>
+                <WordDetect String="font-tech(" context="#pop!SupportsProp" lookAhead="1"/>
+                <WordDetect String="font-format(" context="#pop!SupportsProp" lookAhead="1"/>
+                <DetectIdentifier/>
+            </context>
+            <context name="SupportsProp" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="#pop#pop!RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <WordDetect String="font-tech(" context="FunctionFont" attribute="Function"/>
+                <WordDetect String="font-format(" context="FunctionFont" attribute="Function"/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+
+            <context name="AtRuleSupportsCondition" attribute="At Rule Text" fallthroughContext="#pop">
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=";" context="#pop#pop#pop" attribute="Error"/>
+                <DetectChar char="{" context="#pop#pop#pop!NestedRule" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop#pop#pop" lookAhead="1"/>
+            </context>
+            <context name="SupportsCondition" attribute="At Rule Text" fallthroughContext="#pop!SupportsConditionValue">
+                <DetectSpaces/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" context="#pop!SupportsConditionValue" attribute="Property Separator"/>
+                <IncludeRules context="FindComments"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="properties" attribute="Condition Property"/>
+                <IncludeRules context="FindVendorProperty"/>
+            </context>
+            <context name="SupportsConditionValue" attribute="At Rule Text">
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionSelector" attribute="At Rule Text">
+                <DetectSpaces/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Function"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+            <context name="FunctionFont" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Function"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+
+            <context name="@layer" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="AtRuleCommon2"/>
+            </context>
+
+
+            <context name="@page" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Pseudo" char=":"/>
+                <AnyChar String="{};" context="#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <keyword attribute="Selector Pseudo" String="@page pseudo-classes"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@property" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="-"/>
+                <DetectChar char="{" context="#pop#pop!RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@font-feature-values" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar char="{" context="#pop#pop!FontFeatureBlock" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+            <context name="FontFeatureBlock" attribute="Normal Text" fallthroughContext="#pop!NestedRule">
+                <DetectSpaces/>
+                <DetectChar char="}" context="#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="{" context="AtRuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <RegExpr String="@[-a-zA-Z]*" attribute="At Rule"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="AtRuleSet" attribute="Normal Text" fallthroughContext="#pop!NestedRule">
+                <IncludeRules context="RuleSet"/>
+            </context>
+
+
+            <context name="@keyframes" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="#pop#pop!KeyFramesBlock" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <DetectIdentifier/>
+            </context>
+            <context name="KeyFramesBlock" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="," attribute="Separator Symbol"/>
+                <IncludeRules context="FindComments"/>
+                <RegExpr attribute="Value" String="\b(from|to)\b|[-+]?[0-9.]+%"/>
+            </context>
+
+
+            <context name="SelectorAttr" attribute="Attribute Name">
+                <DetectChar attribute="Selector Attribute" context="#pop" char="]"/>
+                <IncludeRules context="FindStrings"/>
+                <DetectChar attribute="Attribute Operator" context="SelectorAttrValue" char="="/>
+                <AnyChar attribute="Attribute Operator" String="~^$*|"/>
+                <IncludeRules context="FindComments"/>
+                <DetectIdentifier/>
+                <AnyChar context="#pop" String="{};#.,:>" lookAhead="1"/>
+            </context>
+
+            <context name="SelectorAttrValue" attribute="Normal Text" fallthroughContext="SelectorAttrEnd">
+                <DetectSpaces/>
+                <AnyChar context="SelectorAttrValueQuoted" String="&quot;'" lookAhead="1"/>
+                <RegExpr context="SelectorAttrEnd" attribute="String" String="-?(\w|&escaped;)([-\w]+|&escaped;)*"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="SelectorAttrValueQuoted" attribute="String" fallthroughContext="#pop!SelectorAttrEnd">
+                <IncludeRules context="FindStrings"/>
+            </context>
+            <context name="SelectorAttrEnd" attribute="String" fallthroughContext="#pop#pop#pop">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop" char="]"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="i" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="I" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="s" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="S" char1="]" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="SelectorAttrValueSensitiveOp" attribute="String">
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop#pop" char="]"/>
+                <AnyChar attribute="Attribute Operator" String="isIS"/>
+            </context>
+
+            <context name="PseudoClassOrElement" attribute="Selector Pseudo" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectChar char=":" attribute="Selector Pseudo"/>
+                <WordDetect String="lang" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <WordDetect String="part" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <RegExpr String="nth-[-a-zA-Z0-9]*" attribute="Selector Pseudo" context="PseudoClassNth"/>
+                <RegExpr String="[-a-zA-Z]+" attribute="Selector Pseudo" context="#pop"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="PseudoClassStr" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassStrInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassStrInner" attribute="Error">
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <DetectChar char="{" context="#pop#pop#pop!RuleSet" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char=":" context="#pop#pop#pop!PseudoClassOrElement" attribute="Error"/>
+                <RegExpr String="\s*&ident;(\s+&ident;|\s+)*" attribute="String"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="PseudoClassNth" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassNthInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassNthInner" attribute="Normal Text" fallthroughContext="#pop#pop!PseudoClassSelector">
+                <Int attribute="Number" additionalDeliminator="-"/>
+                <AnyChar String="+-" attribute="Operator"/>
+                <DetectChar char="n" attribute="Unit"/>
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <WordDetect String="odd" attribute="Value"/>
+                <WordDetect String="even" attribute="Value"/>
+                <WordDetect String="of" attribute="Keyword" context="#pop#pop!PseudoClassSelector"/>
+                <IncludeRules context="FindComments"/>
+                <DetectSpaces/>
+            </context>
+
+            <context name="PseudoClassSelector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop" attribute="Selector Pseudo"/>
+                <DetectChar attribute="Selector Pseudo" context="NestedPseudoClassSelector" char="("/>
+                <IncludeRules context="FindSelector"/>
+                <DetectChar char="{" context="#pop!RuleSet" attribute="Error" beginRegion="ruleset"/>
+            </context>
+            <context name="NestedPseudoClassSelector" attribute="Normal Text">
+                <DetectChar char="{" context="#pop" lookAhead="1"/>
+                <IncludeRules context="PseudoClassSelector"/>
+            </context>
+
+            <context name="Comment" attribute="Comment">
+                <DetectSpaces/>
+                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="RuleSet" attribute="Normal Text" fallthroughContext="Rule">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="RuleSet" char="{" beginRegion="ruleset"/>
+                <DetectChar context="SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar context="Selector" String=".#:,[*>+~|&amp;" lookAhead="1"/>
+            </context>
+
+            <context name="Selector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop!RuleSet" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar context="#pop!SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <context name="Rule" attribute="Normal Text">
+                <DetectChar attribute="Property Separator" context="RuleParameters" char=":"/>
+                <Detect2Chars attribute="Variable" context="PropertyVariable" char="-" char1="-"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar context="#pop!Selector" String=".#,[*>+~|&amp;@{}" lookAhead="1"/>
+                <keyword attribute="Property" String="properties"/>
+                <DetectSpaces attribute="Normal Text"/>
+                <IncludeRules context="FindVendorProperty"/>
+                <RegExpr attribute="Unknown Property" String="[-_a-zA-Z]*"/>
+            </context>
+            <context name="PropertyVariable" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Variable" context="#pop" String="[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <context name="RuleParameters" attribute="Normal Text">
+                <DetectSpaces/>
+                <!-- Jump out conditions -->
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="Function" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char=";"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset"/>
+            </context>
+            <context name="NestedFunction" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <AnyChar context="#pop" String="{};" lookAhead="1"/>
+            </context>
+            <context name="FunctionInc" attribute="Normal Text">
+                <DetectChar attribute="Function" context="FunctionParameters" char="("/>
+                <StringDetect attribute="Function" context="FunctionVar" String="var("/>
+                <StringDetect attribute="Function" context="FunctionCalc" String="calc("/>
+                <StringDetect attribute="Function" context="FunctionUrl" String="url("/>
+                <StringDetect attribute="Function" context="FunctionEnv" String="env("/>
+                <keyword attribute="Function" String="functions"/>
+                <!-- Legacy -->
+                <WordDetect attribute="Function" String="rgba"/>
+                <WordDetect attribute="Function" String="hsla"/>
+                <RegExpr attribute="Unknown Function" String="&func;"/>
+            </context>
+
+            <context name="FunctionVar" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&var;" context="FunctionVarSep" attribute="Variable"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="FunctionVarSep" attribute="Normal Text" fallthroughContext="FunctionVarParam">
+                <DetectChar char=")" context="#pop#pop#pop" attribute="Function"/>
+                <DetectChar char="," context="FunctionVarParam" attribute="Separator Symbol"/>
+            </context>
+            <context name="FunctionVarParam" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop#pop#pop#pop" attribute="Function"/>
+                <AnyChar String=";{}" context="#pop#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionEnv" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&ident;" context="FunctionVarSep" attribute="Normal Text"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="FunctionCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="NestedCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="Calc" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Normal Text" context="NestedCalc" char="("/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/%"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindNumber"/>
+                <RegExpr String="[-+]?((?i:infinity|e|pi)|NaN)($|[^-\w])|[-+]($|[\s(,;]|/\*)" context="CalcConstantOrOperator" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+            <context name="CalcConstantOrOperator" attribute="Normal Text" fallthroughContext="#pop">
+                <DetectIdentifier context="#pop" attribute="Calc Constant"/>
+                <AnyChar String="-+" attribute="Operator"/>
+            </context>
+
+            <context name="FunctionUrl" attribute="Normal Text" fallthroughContext="UrlValue">
+                <DetectSpaces/>
+                <IncludeRules context="FindStrings"/>
+            </context>
+            <context name="UrlValue" attribute="String">
+                <DetectChar attribute="Function" context="#pop#pop#pop" char=")"/>
+                <AnyChar String=";{}" context="#pop#pop" lookAhead="1"/>
+            </context>
+
+            <context name="FunctionParameters" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <!-- string contexts -->
+            <context name="StringDQ" attribute="String" lineEndContext="#pop">
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="StringSQ" attribute="String" lineEndContext="#pop">
+                <DetectChar attribute="String" context="#pop" char="'"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="InsideString" attribute="String">
+                <RegExpr attribute="SpecialChar" String="\\([0-9A-Fa-f]{1,6}|.?)"/>
+                <RegExpr attribute="String" String="\\?[^&quot;'\\]+"/>
+            </context>
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
+            <itemData name="At Rule Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Media Type" defStyleNum="dsAnnotation" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Vendor Property" defStyleNum="dsKeyword" spellChecking="false" italic="1"/>
+            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Property Separator" defStyleNum="dsChar" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
+            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Block Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Named Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Unknown Function" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Calc Constant" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Condition Open/Close" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Condition Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
+            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
+            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Selector Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Attribute Name" defStyleNum="dsSpecialString" spellChecking="false"/>
+            <itemData name="Attribute Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment"/>
+            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="0" weakDeliminator="-%@"/>
+        <comments>
+            <comment name="multiLine" start="/*" end="*/" region="comment"/>
         </comments>
     </general>
 
diff --git a/xml/djangotemplate.xml b/xml/djangotemplate.xml
--- a/xml/djangotemplate.xml
+++ b/xml/djangotemplate.xml
@@ -4,7 +4,7 @@
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="Django HTML Template" version="7" kateversion="5.53" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="8" kateversion="5.79" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
 
 <!--
     Based off of the katepart html syntax highlighting by Wilbert Berendsen.
@@ -131,17 +131,17 @@
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+    <WordDetect attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE" beginRegion="doctype" />
     <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
-    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
-    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />
+    <WordDetect attribute="Element" context="CSS" String="&lt;style" insensitive="true" beginRegion="style" />
+    <WordDetect attribute="Element" context="JS" String="&lt;script" insensitive="true" beginRegion="script" />
+    <WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />
+    <WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />
+    <WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />
     <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="true" endRegion="pre" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="true" endRegion="div" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="true" endRegion="table" />
+    <WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />
+    <WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />
+    <WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />
     <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
     <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
     <IncludeRules context="FindEntityRefs" />
@@ -249,7 +249,7 @@
   </context>
 
   <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />
+    <WordDetect attribute="Element" context="El Close 2" String="&lt;/style" insensitive="true" endRegion="style" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="##CSS" includeAttrib="true"/>
   </context>
@@ -263,25 +263,25 @@
   </context>
 
   <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <WordDetect attribute="Element" context="El Close 2" String="&lt;/script" insensitive="true" endRegion="script" />
     <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
   </context>
 
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
-    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <WordDetect attribute="Element" context="El Close 3" String="&lt;/script" insensitive="true" endRegion="script" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="##Comments" />
   </context>
 
-  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Value NQ">
     <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
     <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
     <DetectSpaces />
   </context>
 
-  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
     <IncludeRules context="FindEntityRefs" />
     <IncludeRules context="FindTemplate" />
     <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
diff --git a/xml/dosbat.xml b/xml/dosbat.xml
--- a/xml/dosbat.xml
+++ b/xml/dosbat.xml
@@ -7,7 +7,7 @@
   <!ENTITY eop      "(?=([\s\\;&quot;&#37;]|$))">         <!-- end of path -->
   <!ENTITY pathpart "[^\s\\&#37;!;/:*?&quot;&gt;&lt;|&amp;]">   <!-- valid character in a file name -->
 ]>
-<language name="MS-DOS Batch" version="8" kateversion="5.62" section="Scripts" extensions="*.bat;*.cmd" mimetype="application/x-dos" casesensitive="0" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
+<language name="MS-DOS Batch" version="9" kateversion="5.62" section="Scripts" extensions="*.bat;*.cmd" mimetype="application/x-dos" casesensitive="0" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
 
 <!-- (c) 2006, 2009, 2010 Matthew Woehlke (mw_triad@users.sourceforge.net)
     Released under the LGPL -->
@@ -340,6 +340,7 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="FindUnquotedStringEscape">
+        <LineContinue attribute="Escape" char="^"/>
         <RegExpr attribute="Escape" context="#stay" String="\^."/>
       </context>
 
diff --git a/xml/groovy.xml b/xml/groovy.xml
--- a/xml/groovy.xml
+++ b/xml/groovy.xml
@@ -10,7 +10,7 @@
 <!--
     Based on the java syntax file 1.19 by Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)
 -->
-<language name="Groovy" version="11" kateversion="5.62" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">
+<language name="Groovy" version="12" kateversion="5.79" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">
 	<highlighting>
 		<list name="java15">
 			<include>java15##Java</include>
diff --git a/xml/html.xml b/xml/html.xml
--- a/xml/html.xml
+++ b/xml/html.xml
@@ -5,7 +5,7 @@
 	<!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">
 	<!ENTITY entref        "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="HTML" version="17" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="18" kateversion="5.79" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
 <highlighting>
 <contexts>
@@ -18,7 +18,7 @@
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype" />
+    <WordDetect attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE" insensitive="true" beginRegion="doctype" />
     <IncludeRules context="FindElements" />
     <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
 
@@ -211,13 +211,13 @@
     <IncludeRules context="##Comments" />
   </context>
 
-  <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+  <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="Value NQ">
     <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
     <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
     <DetectSpaces />
   </context>
 
-  <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+  <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
     <!-- '{' and '}' are valid, but used with twig -->
     <RegExpr attribute="Value" String="[^&gt;&lt;&quot;&apos;&amp;\s=`{}]+" />
     <IncludeRules context="FindEntityRefs" />
@@ -238,11 +238,11 @@
   <!-- Read content from the "type" attribute to change the language to
        highlight in the <script> tag. The default language is JavaScript. -->
 
-  <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+  <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">
     <DetectSpaces />
     <DetectChar attribute="Attribute" context="#pop!Script-Type Value" char="=" />
   </context>
-  <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Value">
+  <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">
     <DetectSpaces />
     <!-- TypeScript -->
     <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="&quot;text/typescript&quot;"/>
@@ -293,7 +293,7 @@
   <context name="MustacheJS content" attribute="Other Text" lineEndContext="#stay">
     <IncludeRules context="FindScriptTagClose" />
     <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
-    <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
+    <WordDetect attribute="Error" context="#stay" String="&lt;script" insensitive="true" />
     <IncludeRules context="Base##Mustache/Handlebars (HTML)" includeAttrib="true"/>
   </context>
 
@@ -304,7 +304,7 @@
   <context name="Script HTML template content" attribute="Other Text" lineEndContext="#stay">
     <IncludeRules context="FindScriptTagClose" />
     <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
-    <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
+    <WordDetect attribute="Error" context="#stay" String="&lt;script" insensitive="true" />
     <IncludeRules context="FindHTML" />
   </context>
 
diff --git a/xml/ini.xml b/xml/ini.xml
--- a/xml/ini.xml
+++ b/xml/ini.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language>
-<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc;.gitattributes*;.gitconfig*;.gitmodules*;.editorconfig*" mimetype="" version="12" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="INI Files" section="Configuration" extensions="*.ini;*.cfg;*.pls;*.kcfgc;.gitattributes*;.gitconfig*;.gitmodules*;.editorconfig*" mimetype="" version="13" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL" priority="1">
 
 <highlighting>
 <list name="keywords">
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -35,12 +35,12 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="29"
+    version="31"
     kateversion="5.79"
     indenter="cstyle"
     style="C++"
     mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
-    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.moc"
+    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc;*.mpp;*.ixx;*.cppm;*.cxxm;*.c++m;*.ccm"
     author="Alex Turbov (i.zaufi@gmail.com)"
     license="LGPL"
     priority="6"
@@ -370,11 +370,11 @@
         <Detect2Chars context="#pop!SelectStringPrefix" char="u" char1="&quot;" lookAhead="1"/>
         <Detect2Chars context="#pop!SelectStringPrefix" char="L" char1="&quot;" lookAhead="1"/>
         <StringDetect context="#pop!SelectStringPrefix" String="u8&quot;" lookAhead="1"/>
-        <Detect2Chars attribute="Raw String Delimiter" context="#pop!RawString" char="R" char1="&quot;" />
-        <StringDetect attribute="Raw String Delimiter" context="#pop!RawString" String="uR&quot;"/>
-        <StringDetect attribute="Raw String Delimiter" context="#pop!RawString" String="UR&quot;"/>
-        <StringDetect attribute="Raw String Delimiter" context="#pop!RawString" String="LR&quot;"/>
-        <StringDetect attribute="Raw String Delimiter" context="#pop!RawString" String="u8R&quot;"/>
+        <StringDetect context="#pop!RawString" String="R&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="uR&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="UR&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="LR&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="u8R&quot;" lookAhead="1"/>
         <Detect2Chars context="#pop!SelectCharPrefix" char="U" char1="'" lookAhead="1"/>
         <Detect2Chars context="#pop!SelectCharPrefix" char="u" char1="'" lookAhead="1"/>
         <Detect2Chars context="#pop!SelectCharPrefix" char="L" char1="'" lookAhead="1"/>
@@ -637,8 +637,12 @@
         <DetectIdentifier />
       </context>
 
-      <context name="RawString" attribute="String" lineEndContext="#stay" fallthroughContext="#pop!LineError">
-        <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String="([^\(]{0,16})\(" beginRegion="Raw String" />
+      <context name="RawString" attribute="String" lineEndContext="#stay">
+        <AnyChar attribute="Raw String Literal Prefix" String="uUL8R"/>
+        <!-- A sequence of one or more basic character set, except parentheses, backslash and spaces,
+             at most 16 characters long -->
+        <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String="&quot;([\x21-\x27\x2A-\x5B\x5D-\x7E]{0,16})\(" beginRegion="Raw String"/>
+        <RegExpr attribute="Error" context="#pop" String="&quot;(\s+|\w+\s*|&quot;|[^\s\w]+)?"/>
       </context>
 
       <context name="InRawString" attribute="Raw String" lineEndContext="#stay" dynamic="true">
@@ -893,6 +897,7 @@
       <itemData name="String Literal Prefix" defStyleNum="dsString" spellChecking="true" />
       <itemData name="Raw String"         defStyleNum="dsVerbatimString" spellChecking="true" />
       <itemData name="Raw String Delimiter" defStyleNum="dsString"  spellChecking="false" />
+      <itemData name="Raw String Literal Prefix" defStyleNum="dsString" spellChecking="false" />
       <itemData name="Comment"            defStyleNum="dsComment"   spellChecking="true"  />
       <itemData name="Symbol"             defStyleNum="dsOperator"  spellChecking="false" />
       <itemData name="Separator Symbol"   defStyleNum="dsOperator"  spellChecking="false" />
@@ -908,8 +913,8 @@
       <itemData name="Boost Stuff"        defStyleNum="dsExtension" spellChecking="false" />
       <itemData name="Internals"          defStyleNum="dsNormal"    spellChecking="false" color="#808080" selColor="#808080" />
       <itemData name="Region Marker"      defStyleNum="dsRegionMarker" spellChecking="false" />
-      <itemData name="UDL Numeric Suffix" defStyleNum="dsDecVal"    spellChecking="false" />
-      <itemData name="UDL String Suffix"  defStyleNum="dsString"    spellChecking="false" />
+      <itemData name="UDL Numeric Suffix" defStyleNum="dsOperator"  spellChecking="false" />
+      <itemData name="UDL String Suffix"  defStyleNum="dsOperator"  spellChecking="false" />
       <itemData name="Standard Suffix"    defStyleNum="dsBuiltIn"   spellChecking="false" />
       <itemData name="Error"              defStyleNum="dsError"     spellChecking="false" />
     </itemDatas>
diff --git a/xml/java.xml b/xml/java.xml
--- a/xml/java.xml
+++ b/xml/java.xml
@@ -7,7 +7,7 @@
 	<!ENTITY float "(\b&int;(\.((&int;&exp;?+|&exp;)[fFdD]?\b|[fFdD]\b)?|&exp;[fFdD]?\b|[fFdD]\b)|\.&int;&exp;?[fFdD]?\b)">
 	<!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fFdD]?\b">
 ]>
-<language name="Java" version="12" kateversion="5.62" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Java" version="13" kateversion="5.79" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<list name="java15">
 			<item>ACTIVE</item>
diff --git a/xml/javadoc.xml b/xml/javadoc.xml
--- a/xml/javadoc.xml
+++ b/xml/javadoc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language>
-<language name="Javadoc" version="6" kateversion="5.62" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Javadoc" version="7" kateversion="5.79" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<contexts>
 			<context name="Start" attribute="Normal Text" lineEndContext="#stay">
diff --git a/xml/json.xml b/xml/json.xml
--- a/xml/json.xml
+++ b/xml/json.xml
@@ -13,7 +13,7 @@
  ** https://www.json.org/json-en.html
  ***************************************************************************
 -->
-<language name="JSON" section="Markup" version="7" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
+<language name="JSON" section="Markup" version="8" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
   <highlighting>
     <list name="Constants">
       <item>null</item>
@@ -40,9 +40,14 @@
 
       <context name="String_Key" lineEndContext="#stay" attribute="Style_String_Key">
         <DetectChar char="&quot;"  context="#pop" attribute="Style_String_Key" />
-        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" attribute="Style_String_Key_Char" />
+        <DetectChar char="\"       context="String_Key_Char" lookAhead="1"/>
       </context>
 
+      <context name="String_Key_Char" lineEndContext="#stay" attribute="Style_Normal">
+        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#pop" attribute="Style_String_Key_Char" />
+        <RegExpr String="\\(u[0-9a-fA-f]+|.)?" context="#pop" attribute="Style_Error" />
+      </context>
+
       <context name="Value" lineEndContext="#stay" attribute="Style_Error" >
         <AnyChar String="},"       context="#pop" lookAhead="true" />
         <IncludeRules context="JsonValue"/>
@@ -57,13 +62,18 @@
 
         <keyword String="Constants" context="#stay" attribute="Style_Keyword" />
 
-        <RegExpr String="-?[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" attribute="Style_Float" />
-        <RegExpr String="-?[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" attribute="Style_Decimal" />
+        <RegExpr String="-?\b([1-9][0-9]*\.[0-9]+(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Float" />
+        <RegExpr String="-?\b(0\b|[1-9][0-9]*(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Decimal" />
       </context>
 
       <context name="String_Value" lineEndContext="#stay" attribute="Style_String_Value">
         <DetectChar char="&quot;"  context="#pop" attribute="Style_String_Value" />
-        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" attribute="Style_String_Value_Char" />
+        <DetectChar char="\"       context="String_Key_Value" lookAhead="1" />
+      </context>
+
+      <context name="String_Key_Value" lineEndContext="#stay" attribute="Style_Normal">
+        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#pop"  attribute="Style_String_Value_Char" />
+        <RegExpr String="\\(u[0-9a-fA-f]+|.)?" context="#pop" attribute="Style_Error" />
       </context>
 
       <context name="Array" lineEndContext="#stay" attribute="Style_Error">
diff --git a/xml/jsp.xml b/xml/jsp.xml
--- a/xml/jsp.xml
+++ b/xml/jsp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language>
-<language version="9" kateversion="5.62" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
+<language version="11" kateversion="5.79" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
   <highlighting>
 
     <list name="jsp-reserved-words">
@@ -27,15 +27,13 @@
         <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
         <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
         <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment" beginRegion="HtmlComment"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
         <StringDetect String="]]&gt;" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="&lt;script\b" attribute="Normal Text" context="JS" beginRegion="script" />
-        <RegExpr String="&lt;style\b" attribute="Normal Text" context="CSS" beginRegion="style" />
+        <WordDetect String="&lt;script" attribute="Normal Text" context="JS" beginRegion="script" />
+        <WordDetect String="&lt;style" attribute="Normal Text" context="CSS" beginRegion="style" />
         <RegExpr String="&lt;\s*\/?\s*[a-zA-Z0-9_]*" attribute="Normal Text" context="Html Attribute"/>
       </context>
 
@@ -57,7 +55,7 @@
       </context>
 
       <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Normal Text" context="#pop#pop!Html Attribute" String="&lt;/script\b" endRegion="script" />
+        <WordDetect attribute="Normal Text" context="#pop#pop!Html Attribute" String="&lt;/script" endRegion="script" />
         <RegExpr attribute="Jsp Comment" context="JS comment close" String="//(?=.*&lt;/script)" />
         <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
       </context>
@@ -71,18 +69,14 @@
       <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
         <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
       </context>
 
       <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
         <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
@@ -94,33 +88,25 @@
       <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
         <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
         <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop#pop"/>
       </context>
 
       <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
         <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop#pop"/>
       </context>
 
       <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
         <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
@@ -128,30 +114,22 @@
 
       <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
         <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
         <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
         <DetectChar char="'" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
@@ -170,16 +148,12 @@
       <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Html Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
         <RegExpr String="('|&amp;#39;)" attribute="Types" context="Html Single Quoted Value"/>
         <RegExpr String="\s*#?-?_?\.?[a-zA-Z0-9]*" attribute="Types" context="Html Unquoted Value"/>
@@ -187,36 +161,38 @@
       </context>
 
       <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>
         <DetectSpaces attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop" endRegion="HtmlComment"/>
         <IncludeRules context="##Comments" />
+      </context>
+
+      <context name="FindJspScriptlet" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%[!=]?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
+      </context>
+
+      <context name="FindJspCustomTag" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
       </context>
 
     </contexts>
diff --git a/xml/julia.xml b/xml/julia.xml
--- a/xml/julia.xml
+++ b/xml/julia.xml
@@ -27,16 +27,16 @@
   Author: Timothy E. Holy, Washington University in St. Louis
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-  <!ENTITY int "[0-9]([0-9_]*[0-9])?">
-  <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
+  <!ENTITY int "[0-9]+(_[0-9]+)*">
+  <!ENTITY hex "[0-9a-fA-F]+(_[0-9a-fA-F]+)*">
   <!ENTITY function_disallowed_chars "\s.,(){}\[\];:&#37;'&quot;&amp;$=/?\|^#@">
   <!ENTITY function_disallowed_first_char "0-9!&function_disallowed_chars;">
   <!ENTITY function_begin_boundary "(?:(?&lt;=[&function_disallowed_chars;!]|^)(?=[^&function_disallowed_first_char;]))">
 ]>
 
-<language name="Julia" style="julia" indenter="julia" section="Sources" version="13" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" style="julia" indenter="julia" section="Sources" version="14" kateversion="5.62" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="cflow_begin">
@@ -493,14 +493,15 @@
         <keyword context="controlflow-block" attribute="Control Flow" String="cflow_begin"
                  beginRegion="block" />
         <keyword context="#stay" attribute="Control Flow" String="cflow"/>
-        <keyword context="#stay" attribute="Keyword" String="block_end"
-                 endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="end"
+                    endRegion="block" />
 
         <IncludeRules context="coderoot"/>
       </context>
 
       <context name="subsetting" attribute="Normal Text" lineEndContext="#stay">
-        <keyword context="#stay" attribute="Keyword" String="block_end"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect context="#stay" attribute="Keyword" String="end"/>
         <IncludeRules context="coderoot"/>
         <DetectChar attribute="Normal Text" context="#pop" char="]"/>
       </context>
@@ -543,718 +544,32 @@
         <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>
         <DetectChar attribute="Command String" context="Backtick-String" char="`"/>
 
-        <!-- Multi-character operators
-        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
-        <StringDetect context="#stay" attribute="Operator" String="..."/>
+        <!-- Subsetting. This is needed because the `end` keyword has a special meaning in subsetting operations and should not be used for folding -->
+        <DetectChar attribute="Normal Text" context="subsetting" char="["/>
+
         <Detect2Chars context="type-annotation" attribute="Operator" char=":" char1=":"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String="&lt;--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String=".//=" />
-        <StringDetect context="#stay" attribute="Operator" String="//=" />
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;=" />
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;=" />
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String=".--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String="--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;--" />
-        <StringDetect context="#stay" attribute="Operator" String="&lt;--" />
-        <StringDetect context="#stay" attribute="Operator" String=".===" />
-        <StringDetect context="#stay" attribute="Operator" String="===" />
-        <StringDetect context="#stay" attribute="Operator" String=".!==" />
-        <StringDetect context="#stay" attribute="Operator" String="!==" />
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String=".+=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".-=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="-" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".−=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="−" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".*=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="*" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String="./=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="/" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".\=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="\" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".^=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="^" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".÷=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="÷" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".%=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="%" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".|=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&amp;=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".⊻=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="⊻" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".:=" />
-        <Detect2Chars context="#stay" attribute="Operator" char=":" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".$=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="$" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".=&gt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&amp;&amp;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".||" />
-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".==" />
-        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".!=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="!" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;|" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="|"/>
-        <StringDetect context="#stay" attribute="Operator" String=".|&gt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="."/>
-        <StringDetect context="#stay" attribute="Operator" String=".++" />
-        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="+"/>
-        <StringDetect context="#stay" attribute="Operator" String=".//" />
-        <Detect2Chars context="#stay" attribute="Operator" char="/" char1="/"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="~"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="←"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="→"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&lt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="…"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⁝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="$"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="+"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="-"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="−"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="¦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="|"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="±"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⌿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="÷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="%"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&amp;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="×"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="\"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⅋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="▷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￬"/>
 
         <!-- subtype operator -->
         <Detect2Chars context="type-annotation" attribute="Operator" char="&lt;" char1=":"/>
 
-        <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
-        <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
-        <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />
-        <!-- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> -->
+        <!-- Character operators
+        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
+        <RegExpr context="#stay" attribute="Operator" String="\.\.\.?|[:$]=?|\.?(?:&gt;&gt;&gt;=|&lt;--&gt;|//=|&lt;&lt;=|&gt;&gt;=|--&gt;|&lt;--|===|!==|&gt;&gt;&gt;|[-+*/\\^÷%|&amp;⊻]=|=&gt;|&amp;&amp;|\|\|?|&gt;=|&lt;=|==|!=|&lt;\||\|&gt;|\+\+|//|&lt;&lt;|&gt;&gt;|&lt;:|&gt;:|[\Q=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌￩￫⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻&gt;&lt;≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&amp;··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯￪￬\E])" />
 
+        <!-- Identifiers, numbers -->
+        <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
+        <DetectIdentifier context="_adjoint" attribute="Variable" />
+        <RegExpr context="_adjoint" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?[0-9]+(im)?"/>
+        <RegExpr context="_adjoint" attribute="Hex" String="0x&hex;(im)?" />
+        <RegExpr context="_adjoint" attribute="Octal" String="0o[0-7]+(_[0-7]+)*(im)?" />
+        <RegExpr context="_adjoint" attribute="Binary" String="0b[01]+(_[01]+)*(im)?" />
+        <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
+
         <!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->
         <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
         <RegExpr context="#stay" attribute="Incomplete Char" String="'[^']*(''[^']*)*" />
 
         <RegExpr context="#stay" attribute="Macro" String="@[a-zA-Z_]\w*" />
-
-        <!-- Identifiers, numbers and braces -->
-        <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
-        <DetectIdentifier context="#stay" attribute="Variable" />
-        <RegExpr context="#stay" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?\d+(im)?"/>
-        <RegExpr context="#stay" attribute="Hex" String="0x&hex;(im)?" />
-        <RegExpr context="#stay" attribute="Octal" String="0o[0-7]([0-7_]*[0-7])?(im)?" />
-        <RegExpr context="#stay" attribute="Binary" String="0b[01]([01_]*[01])?(im)?" />
-        <RegExpr context="#stay" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
-
-        <!-- Single-character operators
-        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
-        <AnyChar context="#stay" attribute="Operator" String="=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌￩￫⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻&gt;&lt;≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯:$+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&amp;··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯￪￬"/>
-
-        <!-- Subsetting. This is needed because the `end` keyword has a special meaning in subsetting operations and should not be used for folding -->
-        <DetectChar attribute="Normal Text" context="subsetting" char="["/>
       </context>
 
       <!-- Context for user block (#BEGIN...#END) -->
@@ -1262,9 +577,9 @@
         <IncludeRules context="1-comment" />
       </context>
 
-      <!-- Context entered after encountering an ' adjoint operator -->
-      <context name="_adjoint" attribute="Operator" lineEndContext="#pop">
-        <RegExpr context="#pop" attribute="Operator" String="'+" />
+      <!-- Context entered after encountering an identifier or a number -->
+      <context name="_adjoint" attribute="Operator" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Operator" char="'" />
       </context>
 
       <!-- Context entered after encountering an " (string) -->
@@ -1361,16 +676,18 @@
 
       <!-- 1-line comment: #pop@EOL  -->
       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
-        <DetectSpaces />
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
 
       <context name="block-comment" lineEndContext="#stay" attribute="Comment">
-        <DetectSpaces />
         <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>
+        <IncludeRules context="1-comment" />
       </context>
       <context name="controlflow-block" lineEndContext="#stay" attribute="Normal Text">
         <keyword context="#stay" attribute="Control Flow" String="cflow_eb" endRegion="block" beginRegion="block" />
-        <keyword context="#pop" attribute="Control Flow" String="block_end" endRegion="block" />
+        <WordDetect context="#pop" attribute="Control Flow" String="end" endRegion="block" />
         <IncludeRules context="_normal" />
       </context>
       <context name="parametric-type" lineEndContext="#stay" attribute="Data Type">
@@ -1401,13 +718,19 @@
       </context>
 
       <!-- context for imports -->
-      <context name="import" lineEndContext="#stay" lineEmptyContext="#stay"  attribute="Normal Text">
+      <context name="import" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
+        <DetectSpaces attribute="Normal Text"/>
         <IncludeRules context="comment-rules"/>
-        <RegExpr attribute="Module" context="#stay" String="[^:,\s]+\s*(?=,)"/>
-        <RegExpr attribute="Module" context="import_vars" String="[^:,\s]+\s*(?=:)"/>
-        <RegExpr attribute="Module" context="#pop" String="[^:,\s]+\s*(?![,:])"/>
+        <RegExpr attribute="Module" context="import_list" String="[^:,\s]+"/>
       </context>
+      <context name="import_list" lineEndContext="#pop#pop" attribute="Normal Text">
+        <DetectSpaces attribute="Normal Text"/>
+        <IncludeRules context="comment-rules"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=","/>
+        <DetectChar attribute="Normal Text" context="#pop!import_vars" char=":"/>
+      </context>
       <context name="import_vars" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
+        <DetectSpaces attribute="Normal Text"/>
         <IncludeRules context="comment-rules"/>
         <!-- we don't know if these are types, variables, or functions,
         so no highlighting here -->
diff --git a/xml/latex.xml b/xml/latex.xml
--- a/xml/latex.xml
+++ b/xml/latex.xml
@@ -4,7 +4,7 @@
     <!ENTITY bullet "&#xd7;">
     <!ENTITY envname "[a-zA-Z]+\*?">
 ]>
-<language name="LaTeX" version="22" section="Markup" kateversion="5.79" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<language name="LaTeX" version="23" section="Markup" kateversion="5.79" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
   <highlighting>
     <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
          Using a DetectChar rule with lookAhead to detect "\" at the beginning
@@ -850,6 +850,13 @@
       <item>longtable</item>
     </list>
 
+    <list name="TabuEnv">
+      <item>tabu*</item>
+      <item>tabu</item>
+      <item>longtabu*</item>
+      <item>longtabu</item>
+    </list>
+
     <list name="MathModeText">
       <item>\text</item>
       <item>\textit</item>
@@ -887,8 +894,8 @@
       </context>
 
       <context name="LatexMacro" attribute="Normal Text" lineEndContext="#pop">
-        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>
-        <keyword String="endEnv" attribute="Structure" context="#pop!FindEndEnvironment"/>
+        <WordDetect String="\begin" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block" additionalDeliminator="\"/>
+        <WordDetect String="\end" attribute="Structure" context="#pop!FindEndEnvironment" additionalDeliminator="\"/>
         <keyword String="Label" attribute="Structure" context="#pop!Label"/>
         <keyword String="macroFancyLabel" attribute="Builtin Macro" context="#pop!FancyLabel"/>
         <keyword String="FancyLabel" attribute="Structure" context="#pop!FancyLabel"/>
@@ -913,8 +920,7 @@
       <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectSpaces/>
         <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="#pop!SectioningInside"/>
         <IncludeRules context="FindComments"/>
       </context>
       <context name="SectioningInside" attribute="Sectioning Text" lineEndContext="#stay">
@@ -1129,6 +1135,7 @@
         <keyword String="MathEnvParam" attribute="Environment" context="MathEnvWithParam"/>
         <keyword String="MathEnv" attribute="Environment" context="MathEnv"/>
         <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
+        <keyword String="TabuEnv" attribute="Environment" context="TabuEnv"/>
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <RegExpr String="(\w+)code\b" attribute="Environment" context="MintedCodeEnv" lookAhead="true"/>
         <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
@@ -2229,7 +2236,7 @@
         <DetectSpaces/>
         <RegExpr String=".+" attribute="Error" context="#stay"/>
       </context>
-      <context name="HighlightingBash" attribute="Normal Text" lineEndContext="#stay">
+      <context name="HighlightingBash" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Command##Bash">
         <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##Bash" includeAttrib="true"/>
       </context>
@@ -5245,7 +5252,7 @@
         <DetectSpaces/>
         <RegExpr String=".+" attribute="Error" context="#stay"/>
       </context>
-      <context name="HighlightingSCSS" attribute="Normal Text" lineEndContext="#stay">
+      <context name="HighlightingSCSS" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Selector##SCSS">
         <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##SCSS" includeAttrib="true"/>
       </context>
@@ -6094,8 +6101,8 @@
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
       <context name="BackslashMathModeEnv" attribute="Math" lineEndContext="#pop">
-        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>
-        <keyword String="endEnv" attribute="Structure" context="#pop!MathFindEnd"/>
+        <WordDetect String="\begin" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block" additionalDeliminator="\"/>
+        <WordDetect String="\end" attribute="Structure" context="#pop!MathFindEnd" additionalDeliminator="\"/>
         <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText"/>
         <Detect2Chars char="\" char1="(" attribute="Error" context="#pop"/>
         <Detect2Chars char="\" char1=")" attribute="Error" context="#pop"/>
@@ -6147,8 +6154,33 @@
         <DetectChar char="{" attribute="Normal Text" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
         <keyword String="TabEnv" attribute="Environment" context="#stay"/>
+        <keyword String="TabuEnv" attribute="Environment" context="#stay"/>
       </context>
 
+      <!-- environment type 10: tabu -->
+      <context name="TabuEnv" attribute="Environment" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Tabu"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+
+      <!-- parse tabu options
+        \begin {tabu} [pos] {tabular preamble}
+        \begin {tabu} to <dimen> [pos] {tabular preamble}
+        \begin {tabu} spread <dimen> [pos] {tabular preamble}
+      -->
+      <context name="Tabu" attribute="Normal Text" lineEndContext="#pop!Tab">
+        <DetectChar char="{" attribute="Normal Text" context="TabuPreambule"/>
+        <DetectChar char="\" context="#pop!Tab" lookAhead="1"/>
+      </context>
+      <context name="TabuPreambule" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop!Tab"/>
+        <DetectChar char="{" attribute="Normal Text" context="TabuPreambuleInside"/>
+      </context>
+      <context name="TabuPreambuleInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="TabuPreambuleInside"/>
+      </context>
+
       <!-- math mode: starting with $ -->
       <context name="MathModeTex" attribute="Math" lineEndContext="#stay" fallthroughContext="#pop!MathMode">
         <DetectChar char="$" attribute="Math" context="#pop!MathModeDisplay" beginRegion="mathMode"/>
@@ -6198,8 +6230,8 @@
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
       <context name="BackslashMathModeCommon" attribute="Math" lineEndContext="#pop">
-        <keyword String="beginEnv" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block"/>
-        <keyword String="endEnv" attribute="Structure" context="#pop!MathEnvironmentEnd"/>
+        <WordDetect String="\begin" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block" additionalDeliminator="\"/>
+        <WordDetect String="\end" attribute="Structure" context="#pop!MathEnvironmentEnd" additionalDeliminator="\"/>
         <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText" />
         <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
       </context>
@@ -6210,6 +6242,7 @@
       </context>
       <context name="MathEnvironmentInside" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <keyword String="TabuEnv" attribute="Environment" context="MathTabuEnv"/>
         <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
         <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#stay"/>
       </context>
@@ -6223,6 +6256,25 @@
         <WordDetect String="ensuremath" attribute="Environment" context="#pop!LatexEnvEnd"/>
         <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
         <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#pop#pop"/>
+      </context>
+
+      <!-- tabu in mathmode
+        \begin {tabu} [pos] {tabular preamble}
+        \begin {tabu} to <dimen> [pos] {tabular preamble}
+        \begin {tabu} spread <dimen> [pos] {tabular preamble}
+      -->
+      <context name="MathTabuEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathTabu"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="MathTabu" attribute="Math" lineEndContext="#pop#pop#pop#pop">
+        <DetectChar char="{" attribute="Normal Text" context="#pop#pop#pop#pop!MathTabuPreambule"/>
+        <DetectChar char="\" context="#pop#pop#pop#pop" lookAhead="1"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop"/>
+      </context>
+      <context name="MathTabuPreambule" attribute="Math" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathTabuPreambule"/>
       </context>
 
       <!-- command in mathmode -->
diff --git a/xml/makefile.xml b/xml/makefile.xml
--- a/xml/makefile.xml
+++ b/xml/makefile.xml
@@ -15,7 +15,7 @@
 <!-- v10 by Peter J. Mello <admin@petermello.net>
      Add recognition of POSIX 2013 '::=' operator for variable assignment -->
 <language name="Makefile" section="Other"
-          version="16" kateversion="5.79"
+          version="17" kateversion="5.79"
           extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"
           mimetype="text/x-makefile" priority="11"
           author="Per Wigren (wigren@home.se)" license="">
@@ -548,14 +548,27 @@
 
       <context name="callFunc(" attribute="FuncParam" lineEndContext="#stay">
         <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/>
-        <DetectChar attribute="Operator" context="dollar" char="$"/>
-        <DetectChar attribute="Keyword" context="#stay" char=","/>
-        <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
-        <DetectChar attribute="String" context="string'" char="'"/>
+        <DetectChar attribute="FuncParam" char="(" context="callFuncSub("/>
+        <IncludeRules context="callFuncCommon"/>
       </context>
+      <context name="callFuncSub(" attribute="FuncParam" lineEndContext="#stay">
+        <DetectChar attribute="FuncParam" char=")" context="#pop"/>
+        <DetectChar attribute="FuncParam" char="(" context="callFuncSub("/>
+        <IncludeRules context="callFuncCommon"/>
+      </context>
 
       <context name="callFunc{" attribute="FuncParam" lineEndContext="#stay">
         <DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/>
+        <DetectChar attribute="FuncParam" char="{" context="callFuncSub{"/>
+        <IncludeRules context="callFuncCommon"/>
+      </context>
+      <context name="callFuncSub{" attribute="FuncParam" lineEndContext="#stay">
+        <DetectChar attribute="FuncParam" char="}" context="#pop"/>
+        <DetectChar attribute="FuncParam" char="{" context="callFuncSub{"/>
+        <IncludeRules context="callFuncCommon"/>
+      </context>
+
+      <context name="callFuncCommon" attribute="FuncParam" lineEndContext="#stay">
         <DetectChar attribute="Operator" context="dollar" char="$"/>
         <DetectChar attribute="Keyword" context="#stay" char=","/>
         <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
diff --git a/xml/mustache.xml b/xml/mustache.xml
--- a/xml/mustache.xml
+++ b/xml/mustache.xml
@@ -43,7 +43,7 @@
      * v1 [2019-02-10]: Initial version
 -->
 
-<language name="Mustache/Handlebars (HTML)" version="8" kateversion="5.53"
+<language name="Mustache/Handlebars (HTML)" version="9" kateversion="5.79"
           section="Markup" priority="1" mimetype=""
           extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"
           author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"
@@ -54,8 +54,8 @@
 	<contexts>
 
 		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="CSS" attribute="Element Tag" String="&lt;style\b" insensitive="true" beginRegion="style" />
-			<RegExpr context="JS" attribute="Element Tag" String="&lt;script\b" insensitive="true" beginRegion="script" />
+			<WordDetect context="CSS" attribute="Element Tag" String="&lt;style" insensitive="true" beginRegion="style" />
+			<WordDetect context="JS" attribute="Element Tag" String="&lt;script" insensitive="true" beginRegion="script" />
 			<IncludeRules context="Base" />
 		</context>
 
@@ -64,7 +64,7 @@
 			<IncludeRules context="MustacheVariables" />
 
 			<StringDetect context="CDATA" attribute="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-			<RegExpr context="Doctype" attribute="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
+			<WordDetect context="Doctype" attribute="Doctype" String="&lt;!DOCTYPE" insensitive="true" beginRegion="doctype" />
 			<IncludeRules context="FindPI" />
 
 			<IncludeRules context="FindTags" />
@@ -153,11 +153,11 @@
 			<LineContinue context="#stay" attribute="Escape" />
 			<HlCStringChar context="#stay" attribute="Escape" />
 		</context>
-		<context name="MustacheSymbolValue" attribute="Mustache Inside" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+		<context name="MustacheSymbolValue" attribute="Mustache Inside" lineEndContext="#pop" fallthroughContext="#pop">
 			<DetectChar context="#pop!MustacheValue" attribute="Symbol" char="=" />
 			<DetectSpaces />
 		</context>
-		<context name="MustacheValue" attribute="Mustache Inside" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+		<context name="MustacheValue" attribute="Mustache Inside" lineEndContext="#pop" fallthroughContext="#pop">
 			<DetectSpaces />
 			<RegExpr context="#pop" attribute="Number" String="\d+(?=[\s\}\)\]]|$)" />
 		</context>
@@ -243,7 +243,7 @@
 			<DetectChar context="Value" attribute="Symbol" char="=" />
 		</context>
 
-		<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!ValueNQ">
+		<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!ValueNQ">
 			<DetectChar context="#pop!ValueDQ" attribute="Value" char="&quot;" />
 			<DetectChar context="#pop!ValueSQ" attribute="Value" char="&apos;" />
 			<RegExpr context="#pop" attribute="Number" String="\d+(?=\s|/?&gt;|$)" />
@@ -259,7 +259,7 @@
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindEntityRefs" />
 		</context>
-		<context name="ValueNQ" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+		<context name="ValueNQ" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindEntityRefs" />
 			<RegExpr context="#stay" attribute="Value" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
@@ -343,7 +343,7 @@
 			<RegExpr context="#stay" attribute="Error" String="\S" />
 		</context>
 		<context name="CSSContent" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/style\b" insensitive="true" endRegion="style" />
+			<WordDetect context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/style" insensitive="true" endRegion="style" />
 			<IncludeRules context="MustacheVariables" />
 
 			<DetectChar context="CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
@@ -352,11 +352,23 @@
 		</context>
 
 		<!-- Overwrite some rules of 'css.xml' to add Mustache variables -->
-		<context name="CSS-RuleSet" attribute="Normal Text" lineEndContext="#stay">
+		<context name="CSS-RuleSet" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="CSS-Rule">
+			<IncludeRules context="MustacheVariables" />
+			<DetectChar context="CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
 			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="ruleset" />
+         <AnyChar context="CSS-Selector" String=".#:,[*>+~|&amp;" lookAhead="1" />
+		</context>
+		<context name="CSS-Selector" attribute="Normal Text" lineEndContext="#stay">
 			<IncludeRules context="MustacheVariables" />
-			<IncludeRules context="RuleSet##CSS" />
+			<DetectChar context="#pop!CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
+			<DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset"/>
+			<IncludeRules context="Selector##CSS" />
 		</context>
+		<context name="CSS-Rule" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="MustacheVariables" />
+			<AnyChar context="#pop!CSS-Selector" String=".#,[*>+~|&amp;@{}" lookAhead="1"/>
+			<IncludeRules context="Rule##CSS" />
+		</context>
 		<context name="CSS-SelectorAttr" attribute="CSS: Selector Attribute" lineEndContext="#stay">
 			<DetectChar context="#pop" attribute="CSS: Selector Attribute" char="]" />
 			<IncludeRules context="MustacheVariables" />
@@ -374,14 +386,14 @@
 		</context>
 
 		<context name="JSContent" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+			<WordDetect context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script" insensitive="true" endRegion="script" />
 			<RegExpr context="JSCommentClose" attribute="Comment" String="//(?=.*&lt;/script\b)" insensitive="true" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="OverwriteJavaScript" />
 			<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
 		</context>
 		<context name="JSCommentClose" attribute="Comment" lineEndContext="#pop">
-			<RegExpr context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+			<WordDetect context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script" insensitive="true" endRegion="script" />
 			<DetectSpaces />
 			<IncludeRules context="##Comments" />
 		</context>
diff --git a/xml/php.xml b/xml/php.xml
--- a/xml/php.xml
+++ b/xml/php.xml
@@ -77,10 +77,10 @@
   <!ENTITY float "\b&LNUM;(\.(&LNUM;)?(&EXPONENT;)?|&EXPONENT;)|\.&LNUM;(&EXPONENT;)?">
 ]>
 
-<language name="PHP/PHP" indenter="cstyle" version="25" kateversion="5.53" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="27" kateversion="5.79" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
   <highlighting>
     <!-- https://php.watch/versions -->
-    <!-- Based on 8.1 -->
+    <!-- Based on 8.3 (https://php.watch/versions/8.3 and https://stitcher.io/blog/new-in-php-83) -->
 
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <list name="control structures">
@@ -7492,6 +7492,7 @@
       <item>json_encode</item>
       <item>json_last_error</item>
       <item>json_last_error_msg</item>
+      <item>json_validate</item>
       <item>judy_type</item>
       <item>judy_version</item>
       <item>juliantojd</item>
@@ -7777,6 +7778,8 @@
       <item>mb_scrub</item>
       <item>mb_send_mail</item>
       <item>mb_split</item>
+      <item>mb_str_pad</item>
+      <item>mb_str_split</item>
       <item>mb_strcut</item>
       <item>mb_strimwidth</item>
       <item>mb_stripos</item>
@@ -8880,7 +8883,9 @@
       <item>pos</item>
       <item>posix_access</item>
       <item>posix_ctermid</item>
+      <item>posix_eaccess</item>
       <item>posix_errno</item>
+      <item>posix_fpathconf</item>
       <item>posix_getcwd</item>
       <item>posix_getegid</item>
       <item>posix_geteuid</item>
@@ -8904,6 +8909,7 @@
       <item>posix_kill</item>
       <item>posix_mkfifo</item>
       <item>posix_mknod</item>
+      <item>posix_pathconf</item>
       <item>posix_setegid</item>
       <item>posix_seteuid</item>
       <item>posix_setgid</item>
@@ -8912,6 +8918,7 @@
       <item>posix_setsid</item>
       <item>posix_setuid</item>
       <item>posix_strerror</item>
+      <item>posix_sysconf</item>
       <item>posix_times</item>
       <item>posix_ttyname</item>
       <item>posix_uname</item>
@@ -9637,6 +9644,7 @@
       <item>stream_context_get_options</item>
       <item>stream_context_get_params</item>
       <item>stream_context_set_default</item>
+      <item>stream_context_set_options</item>
       <item>stream_context_set_option</item>
       <item>stream_context_set_params</item>
       <item>stream_copy_to_stream</item>
@@ -10490,7 +10498,10 @@
         <item>CurlShareHandle</item>
         <item>CURLStringFile</item>
         <item>DateInterval</item>
+        <item>DateInvalidOperationException</item>
+        <item>DateMalformedIntervalStringException</item>
         <item>DatePeriod</item>
+        <item>DateRangeError</item>
         <item>DateTime</item>
         <item>DateTimeImmutable</item>
         <item>DateTimeInterface</item>
@@ -10680,6 +10691,7 @@
         <item>QuickHashIntSet</item>
         <item>QuickHashIntStringHash</item>
         <item>QuickHashStringIntHash</item>
+        <item>Randomizer</item>
         <item>RangeException</item>
         <item>RecursiveArrayIterator</item>
         <item>RecursiveCachingIterator</item>
@@ -11180,7 +11192,7 @@
         <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
       </context>
 
-      <context name="MatchComment" attribute="PHP Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="MatchComment" attribute="PHP Text" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />
         <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />
@@ -11213,11 +11225,11 @@
         $var[$ident]
              ^_ error
       -->
-      <context name="dqaftervarname" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqaftervarname" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">
         <DetectChar attribute="Symbol" context="#pop!dqarray" char="["/>
         <Detect2Chars context="#pop!dqobject" char="-" char1=">" lookAhead="1"/>
       </context>
-      <context name="dqarray" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqarray" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectIdentifier attribute="String" context="#pop!dqarrayclose"/>
         <Int attribute="Decimal" context="#pop!dqarrayclose"/>
         <DetectChar attribute="Operator" context="#stay" char="-"/>
@@ -11225,25 +11237,25 @@
         <RegExpr attribute="Variable" context="#pop!dqarrayclose" String="\$&varid;"/>
         <IncludeRules context="finddqarraycharerror"/>
       </context>
-      <context name="dqarrayclose" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqarrayclose" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectChar attribute="Symbol" context="#pop" char="]"/>
         <IncludeRules context="finddqarraycharerror"/>
       </context>
-      <context name="dqobject" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqobject" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">
         <RegExpr attribute="Symbol" context="#pop!dqobjectmem" String="->(?=&varid;)"/>
       </context>
       <context name="dqobjectmem" attribute="Variable" lineEndContext="#pop">
         <DetectIdentifier attribute="PHP Text" context="#pop"/>
       </context>
-      <context name="finddqarraycharerror" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="finddqarraycharerror" attribute="String" lineEndContext="#stay" fallthroughContext="#pop">
         <RegExpr attribute="Error" context="#pop" String="[^&quot;`]"/>
       </context>
 
-      <context name="dqcomplexvariable" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">
+      <context name="dqcomplexvariable" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop!finddqarraycharerror">
         <DetectChar attribute="Symbol" context="#stay" char="{"/>
         <DetectChar attribute="Variable" context="#pop!dqcomplexvariable2" char="$"/>
       </context>
-      <context name="dqcomplexvariable2" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">
+      <context name="dqcomplexvariable2" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop!finddqarraycharerror">
         <DetectIdentifier attribute="Variable" context="#pop!dqaftercomplexvariable"/>
         <DetectChar attribute="Variable" context="#stay" char="$"/>
         <IncludeRules context="finddqarraycharerror"/>
@@ -11376,7 +11388,7 @@
         <!--/ Alternate PHP Block Syntax -->
         <DetectIdentifier attribute="Control Structures" context="#pop"/>
       </context>
-      <context name="yield" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="yield" attribute="PHP Text" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectSpaces attribute="PHP Text" context="#stay"/>
         <WordDetect attribute="Control Structures" context="#pop" String="from"/>
       </context>
@@ -11384,7 +11396,7 @@
         <DetectIdentifier attribute="Control Structures" context="#pop" endRegion="Alternate Block"/>
       </context>
 
-      <context name="MaybeAlternateBlock" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="MaybeAlternateBlock" attribute="PHP Text" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectChar attribute="Symbol" context="#pop!MaybeAlternateBlockOpen" char="("/>
         <DetectSpaces attribute="PHP Text"/>
         <IncludeRules context="FindComment"/>
@@ -11399,7 +11411,7 @@
         <DetectChar attribute="Symbol" context="#pop" char=")"/>
         <IncludeRules context="phpsource"/>
       </context>
-      <context name="MaybeAlternateBlockClose" attribute="PHP Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+      <context name="MaybeAlternateBlockClose" attribute="PHP Text" lineEndContext="#pop" fallthroughContext="#pop">
         <DetectChar attribute="Other" context="#pop" char=":" beginRegion="Alternate Block"/>
         <DetectSpaces attribute="PHP Text"/>
       </context>
diff --git a/xml/powershell.xml b/xml/powershell.xml
--- a/xml/powershell.xml
+++ b/xml/powershell.xml
@@ -1,48 +1,54 @@
-<!DOCTYPE language>
+<!DOCTYPE language [
+  <!ENTITY varscope "(?:global|local|private|script|using|workflow|alias|env|function|variable)">
+  <!ENTITY varname  "(?:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)">
+]>
 <language
   name="PowerShell"
-  version="13"
-  kateversion="5.0"
+  version="14"
+  kateversion="5.79"
   extensions="*.ps1;*.psm1;*.psd1"
   section="Scripts"
   author="Motoki Kashihara (motoki8791@gmail.com); Michael Lombardi (Michael.T.Lombardi@outlook.com)"
   casesensitive="0"
   license="MIT">
   <highlighting>
-    <list name="keywords">
-      <item>Begin</item>
+    <list name="control-flow">
       <item>Exit</item>
       <item>Process</item>
       <item>Break</item>
-      <item>Filter</item>
       <item>Return</item>
       <item>Catch</item>
       <item>Finally</item>
-      <item>Sequence</item>
       <item>Class</item>
       <item>For</item>
       <item>Switch</item>
       <item>Continue</item>
       <item>ForEach</item>
       <item>Throw</item>
+      <item>Try</item>
+      <item>Do</item>
+      <item>If</item>
+      <item>Until</item>
+      <item>Else</item>
+      <item>ElseIf</item>
+      <item>While</item>
+    </list>
+
+    <list name="keywords">
+      <item>Begin</item>
+      <item>Filter</item>
+      <item>Sequence</item>
       <item>Data</item>
       <item>From</item>
       <item>Trap</item>
       <item>Define</item>
       <item>Function</item>
-      <item>Try</item>
-      <item>Do</item>
-      <item>If</item>
-      <item>Until</item>
       <item>DynamicParam</item>
       <item>In</item>
       <item>Using</item>
-      <item>Else</item>
       <item>InlineScript</item>
       <item>Var</item>
-      <item>ElseIf</item>
       <item>Parallel</item>
-      <item>While</item>
       <item>End</item>
       <item>Param</item>
       <item>Workflow</item>
@@ -75,69 +81,6 @@
       <item>ulong</item>
       <item>ushort</item>
     </list>
-<!-- TODO: Seems unused?!
-      <list name="operators">
-      <item>-split</item>
-      <item>-isplit</item>
-      <item>-csplit</item>
-      <item>-join</item>
-      <item>-is</item>
-      <item>-isnot</item>
-      <item>-as</item>
-      <item>-eq</item>
-      <item>-ieq</item>
-      <item>-ceq</item>
-      <item>-ne</item>
-      <item>-ine</item>
-      <item>-cne</item>
-      <item>-gt</item>
-      <item>-igt</item>
-      <item>-cgt</item>
-      <item>-ge</item>
-      <item>-ige</item>
-      <item>-cge</item>
-      <item>-lt</item>
-      <item>-ilt</item>
-      <item>-clt</item>
-      <item>-le</item>
-      <item>-ile</item>
-      <item>-cle</item>
-      <item>-like</item>
-      <item>-ilike</item>
-      <item>-clike</item>
-      <item>-notlike</item>
-      <item>-inotlike</item>
-      <item>-cnotlike</item>
-      <item>-match</item>
-      <item>-imatch</item>
-      <item>-cmatch</item>
-      <item>-notmatch</item>
-      <item>-inotmatch</item>
-      <item>-cnotmatch</item>
-      <item>-contains</item>
-      <item>-icontains</item>
-      <item>-ccontains</item>
-      <item>-notcontains</item>
-      <item>-inotcontains</item>
-      <item>-cnotcontains</item>
-      <item>-replace</item>
-      <item>-ireplace</item>
-      <item>-creplace</item>
-      <item>-band</item>
-      <item>-bor</item>
-      <item>-bxor</item>
-      <item>-and</item>
-      <item>-or</item>
-      <item>-xor</item>
-      <item>.</item>
-      <item>&amp;</item>
-      <item>=</item>
-      <item>+=</item>
-      <item>-=</item>
-      <item>*=</item>
-      <item>/=</item>
-      <item>%=</item>
-    </list>-->
     <list name="cmdlets">
       <item>Add-Content</item>
       <item>Add-ADComputerServiceAccount</item>
@@ -847,11 +790,23 @@
       <item>\%</item>
       <item>\?</item>
     </list>
+
     <list name="special-variables">
+      <!-- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes?view=powershell-7.3#scope-modifiers -->
+      <item>$Global:</item>
+      <item>$Local:</item>
+      <item>$Private:</item>
+      <item>$Script:</item>
+      <item>$Using:</item>
+      <item>$Workflow:</item>
+      <item>$Alias:</item>
+      <item>$Env:</item>
+      <item>$Function:</item>
+      <item>$Variable:</item>
+
       <item>$_</item>
       <item>$True</item>
       <item>$False</item>
-      <item>$Env</item>
       <item>$Null</item>
       <item>$^</item>
       <item>$$</item>
@@ -873,75 +828,176 @@
       <item>$Host</item>
       <item>$OFS</item>
     </list>
+
+    <!-- https://learn.microsoft.com/en-us/powershell/scripting/developer/help/comment-based-help-keywords?view=powershell-7.3 -->
+    <list name="comment-based-help">
+      <item>.SYNOPSIS</item>
+      <item>.DESCRIPTION</item>
+      <item>.PARAMETER</item>
+      <item>.EXAMPLE</item>
+      <item>.INPUTS</item>
+      <item>.OUTPUTS</item>
+      <item>.NOTES</item>
+      <item>.LINK</item>
+      <item>.COMPONENT</item>
+      <item>.ROLE</item>
+      <item>.FUNCTIONALITY</item>
+      <item>.FORWARDHELPTARGETNAME</item>
+      <item>.FORWARDHELPCATEGORY</item>
+      <item>.REMOTEHELPRUNSPACE</item>
+      <item>.EXTERNALHELP</item>
+    </list>
+
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces attribute="Normal Text"/>
+        <IncludeRules context="FindSpecialSymbol"/>
+        <DetectChar attribute="Symbol" context="Attribute" char="["/>
+        <IncludeRules context="FindSpecialOtherSymbol"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Data Type" context="#stay" String="types" />
-        <IncludeRules context="Cmdlet" />
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <DetectChar attribute="String" context="StringQ" char="'"/>
-        <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1="&quot;" beginRegion="StringRegion"/>
+        <keyword attribute="Control Flow" context="#stay" String="control-flow"/>
+        <keyword attribute="Function" context="#stay" String="cmdlets"/>
+        <IncludeRules context="FindIdentifiant"/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+
+      <context attribute="Attribute" name="Attribute">
+        <DetectSpaces attribute="Normal Text"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <IncludeRules context="FindIdentifiant"/>
+        <DetectChar attribute="Symbol" context="#pop" char="]"/>
+        <IncludeRules context="FindSpecialSymbol"/>
+        <IncludeRules context="FindSpecialOtherSymbol"/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+
+      <context attribute="Normal Text" name="FindSpecialSymbol">
+        <DetectChar attribute="String" context="StringDQ" char="&quot;"/>
+        <DetectChar attribute="String" context="StringSQ" char="'"/>
+        <StringDetect attribute="HereString" context="HereStringDQ" String="@&quot;" beginRegion="StringRegion"/>
+        <StringDetect attribute="HereString" context="HereStringSQ" String="@'" beginRegion="StringRegion"/>
+        <StringDetect attribute="Symbol" String="@("/>
         <DetectChar attribute="Comment" context="Commentar 1" char="#"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="&lt;" char1="#" beginRegion="CommentRegion"/>
+        <StringDetect attribute="Comment" context="Commentar 2" String="&lt;#" beginRegion="CommentRegion"/>
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b\$(global|script)(?=\s+(:))"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
-        <keyword attribute="Special Variable" context="#stay" String="special-variables"/>
-        <DetectChar attribute="Symbol" context="Member" char="." />
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
+        <DetectChar attribute="Symbol" context="Member" char="."/>
       </context>
-      <context attribute="String Char" lineEndContext="#stay" name="StringEscape">
-        <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv\$]|`u\{[0-9A-Fa-f]+\}" context="#stay"/>
+
+      <context attribute="Normal Text" name="FindSpecialOtherSymbol">
+        <RegExpr attribute="Operator" String="(?&lt;=^|[\s(){}])-([ic]?(split|eq|ne|gt|ge|lt|le|like|notlike|match|notmatch|contains|notcontains|replace)|b?(and|or|xor)|join|not|isnot|is|as)(?=[\s(){}$]|$)"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^;"/>
+        <IncludeRules context="FindVariable"/>
       </context>
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <IncludeRules context="StringEscape"/>
-        <Detect2Chars attribute="Variable Substitution" context="#stay" char="$" char1="_" />
-        <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" />
-        <LineContinue attribute="String" context="#pop"/>
+
+      <context attribute="Normal Text" name="FindEscape">
+        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}|`."/>
+        <RegExpr attribute="Escape" String="(?&lt;=\s)`"/>
+      </context>
+
+      <context attribute="Normal Text" name="FindVariable">
+        <StringDetect attribute="Variable Substitution" context="VarSubst" String="${" />
+        <StringDetect attribute="Symbol" context="VarCmd" String="$(" />
+        <RegExpr attribute="Variable" context="VariableScopeModifier" String="\$(?=&varscope;:)" insensitive="1"/>
+        <RegExpr attribute="Variable" String="\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*|[?^$])"/>
+      </context>
+
+      <context attribute="Normal Text" name="FindIdentifiant">
+        <RegExpr attribute="Number" context="NumericSuffix" String="\b(0b[01]+|0x[0-9a-fA-F]+|([0-9]+(\.[0-9]*)?|\.[0-9]+)(e([-+][0-9]+|[0-9]*))?)(?=(u?[ysl]|[und])?([kmgtp]b)?\b)" insensitive="1"/>
+        <RegExpr String="[-\w]+"/>
+      </context>
+      <context attribute="Numeric Suffix" name="NumericSuffix" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Numeric Suffix" context="#pop"/>
+      </context>
+
+      <!-- $( -->
+      <context attribute="Normal Text" name="VarCmd">
+        <DetectChar attribute="Symbol" context="#pop" char=")"/>
+        <IncludeRules context="Normal"/>
+      </context>
+
+      <!-- ${ -->
+      <context attribute="Variable" name="VarSubst" fallthroughContext="VarNameSubst">
+        <DetectChar attribute="Variable Substitution" context="#pop" char="}"/>
+        <RegExpr attribute="Scope Modifier" context="VariableName" String="&varscope;:" insensitive="1"/>
+      </context>
+      <context attribute="Variable" name="VarNameSubst">
+        <DetectChar attribute="Variable Substitution" context="#pop#pop" char="}"/>
+      </context>
+
+      <!-- $xxx:varname -->
+      <context attribute="Normal Text" name="VariableScopeModifier" lineEndContext="#pop">
+        <DetectChar attribute="Symbol" context="#pop!VariableName" char=":"/>
+        <DetectIdentifier attribute="Scope Modifier"/>
+      </context>
+      <context attribute="Normal Text" name="VariableName" lineEndContext="#pop">
+        <RegExpr attribute="Variable" context="#pop" String="&varname;(:&varname;)*"/>
+      </context>
+
+      <context attribute="String" name="StringDQ">
+        <IncludeRules context="FindVariable"/>
+        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}|`.|`$|&quot;&quot;"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
-      <context attribute="String" lineEndContext="#pop" name="StringQ">
-        <IncludeRules context="StringEscape"/>
-        <LineContinue attribute="String" context="#pop"/>
+      <context attribute="String" name="StringSQ">
+        <StringDetect attribute="String Char" String="''"/>
         <DetectChar attribute="String" context="#pop" char="'"/>
       </context>
-      <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">
-        <DetectIdentifier />
-        <DetectChar attribute="Variable Substitution" context="#pop" char="}" />
+
+      <context attribute="HereString" lineEndContext="#stay" name="HereStringDQ">
+        <IncludeRules context="FindVariable"/>
+        <StringDetect attribute="HereString" context="#pop" String="&quot;@" endRegion="StringRegion" column="0"/>
       </context>
-      <context attribute="HereString" lineEndContext="#stay" name="HereStringer">
-        <Detect2Chars attribute="HereString" context="#pop" char="&quot;" char1="@" endRegion="StringRegion"/>
+      <context attribute="HereString" lineEndContext="#stay" name="HereStringSQ">
+        <StringDetect attribute="HereString" context="#pop" String="'@" endRegion="StringRegion" column="0"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="[_[:alpha:]]\w*" />
       </context>
+
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <DetectSpaces />
         <IncludeRules context="##Comments"/>
       </context>
+
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="#" char1="&gt;" endRegion="CommentRegion"/>
+        <!-- no delimiter except spaces -->
+        <keyword context="CommentHelp" String="comment-based-help" weakDeliminator="!%&amp;()*+,-./:;$lt;=>?[\]^{|}~" firstNonSpace="1" lookAhead="1" insensitive="0"/>
         <IncludeRules context="##Comments"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Cmdlet">
-        <keyword attribute="Function" context="#stay" String="cmdlets"/>
+      <context attribute="Comment-Based Help Keyword" lineEndContext="#pop" name="CommentHelp">
+        <DetectChar attribute="Symbol" char="."/>
+        <DetectIdentifier attribute="Comment-Based Help Keyword" context="CommentHelpParam"/>
       </context>
+      <context attribute="Comment-Based Help Paramater" lineEndContext="#pop#pop" name="CommentHelpParam">
+      </context>
+
     </contexts>
+
     <itemDatas>
       <itemData name="Normal Text"           defStyleNum="dsNormal"   spellChecking="false"/>
+      <itemData name="Attribute"             defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Escape"                defStyleNum="dsChar"     spellChecking="false"/>
       <itemData name="Keyword"               defStyleNum="dsKeyword"  spellChecking="false"/>
+      <itemData name="Control Flow"          defStyleNum="dsControlFlow" spellChecking="false"/>
       <itemData name="Function"              defStyleNum="dsFunction" spellChecking="false"/>
       <itemData name="Data Type"             defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="String"                defStyleNum="dsString"/>
       <itemData name="String Char"           defStyleNum="dsChar"     spellChecking="false"/>
       <itemData name="HereString"            defStyleNum="dsVerbatimString"/>
+      <itemData name="Number"                defStyleNum="dsDecVal"   spellChecking="false"/>
+      <itemData name="Numeric Suffix"        defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="Comment"               defStyleNum="dsComment"/>
+      <itemData name="Comment-Based Help Keyword" defStyleNum="dsDocumentation" spellChecking="false"/>
+      <itemData name="Comment-Based Help Paramater" defStyleNum="dsSpecialString" spellChecking="false"/>
       <itemData name="Symbol"                defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Operator"              defStyleNum="dsOperator" spellChecking="false"/>
       <itemData name="Variable"              defStyleNum="dsVariable" spellChecking="false"/>
-      <itemData name="Special Variable"      defStyleNum="dsVariable" spellChecking="false" bold="1"/>
-      <itemData name="Variable Substitution" defStyleNum="dsString"   spellChecking="false" />
+      <itemData name="Scope Modifier"        defStyleNum="dsVariable" spellChecking="false" bold="1"/>
+      <itemData name="Variable Substitution" defStyleNum="dsPreprocessor" spellChecking="false"/>
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/raku.xml b/xml/raku.xml
--- a/xml/raku.xml
+++ b/xml/raku.xml
@@ -7,1749 +7,2064 @@
     Alphanumeric characters additionally include characters with the Unicode General Category value Number, Decimal Digit (Nd).
   -->
   <!-- Large values -->
-  <!ENTITY _rangealphabetic "A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\x{2c1}\x{2C6}-\x{2D1}\x{2E0}-\x{2EE}\x{370}-\x{588}\x{5d0}-\x{17dc}\x{1820}-\x{1aa7}\x{1b05}-\x{2139}\x{2c00}-\x{31ff}\x{3400}\x{4db5}\x{4db5}\x{4e00}-\x{ac00}\x{d7a3}-\x{d7fb}\x{f900}-\x{FD3D}\x{FF64}\x{100fa}\x{10000}-\x{100fa}\x{10280}-\x{20000}\x{2a6d6}-\x{2fa1d}">
-  <!ENTITY rangealphabetic "_&_rangealphabetic;">
-  <!ENTITY rangenumeric "0-9">
-  <!ENTITY alphabetic "[&rangealphabetic;]">
-  <!ENTITY numeric "[&rangenumeric;]">
-  <!ENTITY alnum "[&rangealphabetic;&rangenumeric;]">
-  <!ENTITY ident "(?:&alphabetic;(?:&alnum;+|[-']&alphabetic;)*)">
-
-  <!ENTITY prefixdollarvarname "(?:[&rangealphabetic;0-9/!]|\(\))">
-  <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">
-  <!ENTITY twigils "*?!.&lt;^:=~">
-
-  <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
-  <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
-  <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
-  <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
-  <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
-
-  <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">
-  <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>｣\]}a-zA-Z0-9]|$))">
-  <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
-
-  <!ENTITY int10 "(?:[0-9]+(?:_[0-9]+)*)">
-  <!ENTITY intN "(?:[0-9a-zA-Z]+(?:_[0-9a-zA-Z]+)*)">
-
-  <!-- <!ENTITY operators "(?:\b(?:X[*~]|Z=|xx=)|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\)|\+[&amp;+&lt;=>^|]?|~[&amp;&lt;>^|~]?|\.(?::&lt;[^>]+>|\.\.?\^?|[=?^*+.])?|\^(?:fff?\b|\.\.)?\^?|(?:[?…]|f?ff)\^|\[[*+]\]|=(?:==?|=>>?|>|~=)?|&lt;(?:&lt;==|=[=>]?)?|\*\*=?|\?[?|]?|!(?:[=]|eqv\b)?|&#37;&#37;?|&amp;&amp;?|//?|\|\|?|>=?|-[-=]?|::|[−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…])"> -->
-  <!-- <!ENTITY hyperoperators "(?:[«»]|&lt;&lt;|&gt;&gt;)"> -->
-  <!ENTITY safesymboloperators "−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…?.+-/=!~&amp;|^&#37;">
-  <!ENTITY unsafesymboloperators "&lt;>«»">
-  <!ENTITY symboloperators "&safesymboloperators;&unsafesymboloperators;">
-  <!ENTITY bracehyperoperator "(?:\[[^\s]+\]|\([^\s]+\))">
-  <!ENTITY prefixoperator "R?(?:[XZ]|xx)?">
-  <!ENTITY extrasymboloperators "(?:\^fff?\b\^?|\bf?ff\^|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\))">
-  <!ENTITY hyperoperators1 "[«»]&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;&lt;>]+|&bracehyperoperator;)[«»]">
-  <!ENTITY hyperoperators2 "(?:&lt;&lt;|&gt;&gt;)&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;«»]+|&bracehyperoperator;)(?:&lt;&lt;|&gt;&gt;)">
-  <!ENTITY hyperoperators "&hyperoperators1;|&hyperoperators2;">
-  <!ENTITY startstringasoperator "&prefixoperator;&lt;[&symboloperators;]*(?=\s|$)">
-  <!ENTITY funcoperator "\[\[\&amp;&ident;\]\]">
-  <!ENTITY reductionoperator "\[&prefixoperator;[&symboloperators;]+\]">
-  <!ENTITY innerbraceoperator "[&symboloperators;'&quot;]+">
-  <!ENTITY operators "&prefixoperator;(?:(?:[&safesymboloperators;>]|&extrasymboloperators;)[&symboloperators;]*|\(&innerbraceoperator;\)|\[&innerbraceoperator;\]|&lt;[&safesymboloperators;'&quot;]+>)">
-
-  <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
-  <!ENTITY regadverb "(?!\()\s*(?=[^\w\s])">
-]>
-<language name="Raku" version="8" kateversion="5.53" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
-  <highlighting>
-
-    <list name="pod">
-      <item>begin</item>
-      <item>end</item>
-      <item>finish</item>
-      <item>for</item>
-      <include>podtypename</include>
-    </list>
-
-    <list name="podblocktypename">
-      <item>pod</item>
-      <include>podtypename</include>
-    </list>
-
-    <list name="podvalue">
-      <item>True</item>
-      <item>False</item>
-    </list>
-
-    <list name="podtypename">
-      <item>head1</item>
-      <item>head2</item>
-      <item>head3</item>
-      <item>head4</item>
-      <item>head5</item>
-      <item>head6</item>
-      <item>item</item>
-      <item>item1</item>
-      <item>item2</item>
-      <item>item3</item>
-      <item>item4</item>
-      <item>item5</item>
-      <item>item6</item>
-      <item>para</item>
-      <item>code</item>
-      <item>defn</item>
-      <item>comment</item>
-      <item>table</item>
-      <item>input</item>
-      <item>output</item>
-    </list>
-
-    <list name="quoting">
-      <item>exec</item>
-      <item>words</item>
-      <item>quotewords</item>
-      <item>scalar</item>
-      <item>array</item>
-      <item>hash</item>
-      <item>function</item>
-      <item>closure</item>
-      <item>backslash</item>
-      <item>heredoc</item>
-      <item>val</item>
-    </list>
-
-    <list name="declareRoutine">
-      <item>macro</item>
-      <item>sub</item>
-      <item>submethod</item>
-      <item>method</item>
-      <item>multi</item>
-      <item>proto</item>
-      <item>only</item>
-      <item>category</item>
-    </list>
-
-    <list name="regexKeyword">
-      <item>rule</item>
-      <item>token</item>
-      <item>regex</item>
-    </list>
-
-    <list name="value">
-      <include>podvalue</include>
-      <item>self</item>
-    </list>
-
-    <list name="varStorage">
-      <item>let</item>
-      <item>my</item>
-      <item>our</item>
-      <item>state</item>
-      <item>temp</item>
-      <item>has</item>
-      <item>constant</item>
-    </list>
-
-    <list name="controlFlow">
-      <!-- conditional -->
-      <item>if</item>
-      <item>else</item>
-      <item>elsif</item>
-      <item>unless</item>
-      <!-- repeat -->
-      <item>for</item>
-      <item>loop</item>
-      <item>repeat</item>
-      <item>while</item>
-      <item>until</item>
-      <item>gather</item>
-      <item>given</item>
-      <!-- control flow -->
-      <item>take</item>
-      <item>do</item>
-      <item>when</item>
-      <item>next</item>
-      <item>last</item>
-      <item>redo</item>
-      <item>return</item>
-      <item>contend</item>
-      <item>maybe</item>
-      <item>defer</item>
-      <item>default</item>
-      <item>exit</item>
-      <item>make</item>
-      <item>continue</item>
-      <item>break</item>
-      <item>goto</item>
-      <item>leave</item>
-      <item>async</item>
-      <item>lift</item>
-      <!-- exception -->
-      <item>die</item>
-      <item>fail</item>
-      <item>try</item>
-      <item>warn</item>
-    </list>
-
-    <list name="keyword">
-      <!-- include -->
-      <item>no</item>
-      <item>use</item>
-      <item>require</item>
-      <!-- typeConstraint -->
-      <item>is</item>
-      <item>as</item>
-      <item>but</item>
-      <item>trusts</item>
-      <item>of</item>
-      <item>returns</item>
-      <item>handles</item>
-      <item>where</item>
-      <item>augment</item>
-      <item>supersede</item>
-      <!-- module -->
-      <item>module</item>
-      <item>class</item>
-      <item>role</item>
-      <item>package</item>
-      <item>enum</item>
-      <item>grammar</item>
-      <item>slang</item>
-      <item>subset</item>
-      <!-- closure trait -->
-      <item>BEGIN</item>
-      <item>CHECK</item>
-      <item>INIT</item>
-      <item>START</item>
-      <item>FIRST</item>
-      <item>ENTER</item>
-      <item>LEAVE</item>
-      <item>KEEP</item>
-      <item>UNDO</item>
-      <item>NEXT</item>
-      <item>LAST</item>
-      <item>PRE</item>
-      <item>POST</item>
-      <item>END</item>
-      <item>CATCH</item>
-      <item>CONTROL</item>
-      <item>TEMP</item>
-    </list>
-
-    <list name="property">
-      <item>prec</item>
-      <item>irs</item>
-      <item>ofs</item>
-      <item>ors</item>
-      <item>export</item>
-      <item>deep</item>
-      <item>binary</item>
-      <item>unary</item>
-      <item>reparsed</item>
-      <item>rw</item>
-      <item>parsed</item>
-      <item>cached</item>
-      <item>readonly</item>
-      <item>defequiv</item>
-      <item>will</item>
-      <item>ref</item>
-      <item>copy</item>
-      <item>inline</item>
-      <item>tighter</item>
-      <item>looser</item>
-      <item>equiv</item>
-      <item>assoc</item>
-      <item>required</item>
-    </list>
-
-    <list name="isProperty">
-      <include>property</include>
-      <item>signature</item>
-      <item>context</item>
-      <item>also</item>
-      <item>shape</item>
-    </list>
-
-    <list name="Number">
-      <item>NaN</item>
-      <item>Inf</item>
-    </list>
-
-    <list name="type">
-      <item>Object</item>
-      <item>Any</item>
-      <item>Junction</item>
-      <item>Whatever</item>
-      <item>Capture</item>
-      <item>Match</item>
-      <item>Signature</item>
-      <item>Proxy</item>
-      <item>Matcher</item>
-      <item>Package</item>
-      <item>Module</item>
-      <item>Class</item>
-      <item>Grammar</item>
-      <item>Scalar</item>
-      <item>Array</item>
-      <item>Hash</item>
-      <item>KeyHash</item>
-      <item>KeySet</item>
-      <item>KeyBag</item>
-      <item>Pair</item>
-      <item>List</item>
-      <item>Seq</item>
-      <item>Range</item>
-      <item>Set</item>
-      <item>Bag</item>
-      <item>Mapping</item>
-      <item>Void</item>
-      <item>Undef</item>
-      <item>Failure</item>
-      <item>Exception</item>
-      <item>Code</item>
-      <item>Block</item>
-      <item>Routine</item>
-      <item>Sub</item>
-      <item>Macro</item>
-      <item>Method</item>
-      <item>Submethod</item>
-      <item>Regex</item>
-      <item>Str</item>
-      <item>Blob</item>
-      <item>Char</item>
-      <item>Byte</item>
-      <item>Codepoint</item>
-      <item>Grapheme</item>
-      <item>StrPos</item>
-      <item>StrLen</item>
-      <item>Version</item>
-      <item>Num</item>
-      <item>Complex</item>
-      <item>num</item>
-      <item>complex</item>
-      <item>Bit</item>
-      <item>bit</item>
-      <item>bool</item>
-      <item>True</item>
-      <item>False</item>
-      <item>Increasing</item>
-      <item>Decreasing</item>
-      <item>Ordered</item>
-      <item>Callable</item>
-      <item>AnyChar</item>
-      <item>Positional</item>
-      <item>Associative</item>
-      <item>Ordering</item>
-      <item>KeyExtractor</item>
-      <item>Comparator</item>
-      <item>OrderingPair</item>
-      <item>IO</item>
-      <item>KitchenSink</item>
-      <item>Role</item>
-      <item>Int</item>
-      <item>int</item>
-      <item>int1</item>
-      <item>int2</item>
-      <item>int4</item>
-      <item>int8</item>
-      <item>int16</item>
-      <item>int32</item>
-      <item>int64</item>
-      <item>Rat</item>
-      <item>rat</item>
-      <item>rat1</item>
-      <item>rat2</item>
-      <item>rat4</item>
-      <item>rat8</item>
-      <item>rat16</item>
-      <item>rat32</item>
-      <item>rat64</item>
-      <item>Buf</item>
-      <item>buf</item>
-      <item>buf1</item>
-      <item>buf2</item>
-      <item>buf4</item>
-      <item>buf8</item>
-      <item>buf16</item>
-      <item>buf32</item>
-      <item>buf64</item>
-      <item>UInt</item>
-      <item>uint</item>
-      <item>uint1</item>
-      <item>uint2</item>
-      <item>uint4</item>
-      <item>uint8</item>
-      <item>uint16</item>
-      <item>uint32</item>
-      <item>uint64</item>
-      <item>Abstraction</item>
-      <item>utf8</item>
-      <item>utf16</item>
-      <item>utf32</item>
-    </list>
-
-    <list name="operator">
-      <item>X</item>
-      <item>gcd</item>
-      <item>ge</item>
-      <item>gt</item>
-      <item>lcm</item>
-      <item>le</item>
-      <item>leg</item>
-      <item>let</item>
-      <item>lt</item>
-      <item>map</item>
-      <item>max</item>
-      <item>min</item>
-      <item>minmax</item>
-      <item>mod</item>
-      <item>ne</item>
-      <item>not</item>
-      <item>notandthen</item>
-      <item>o</item>
-      <item>or</item>
-      <item>orelse</item>
-      <item>print</item>
-      <item>push</item>
-      <item>say</item>
-      <item>so</item>
-      <item>substr</item>
-      <item>temp</item>
-      <item>unicmp</item>
-      <item>x</item>
-      <item>xor</item>
-      <item>xx</item>
-      <item>Xeqv</item>
-      <item>Z</item>
-      <item>and</item>
-      <item>andthen</item>
-      <item>any</item>
-      <item>but</item>
-      <item>cmp</item>
-      <item>coll</item>
-      <item>die</item>
-      <item>div</item>
-      <item>does</item>
-      <item>eq</item>
-      <item>eqv</item>
-      <item>ff</item>
-      <item>fff</item>
-    </list>
-
-    <list name="unicodeGeneralCategories">
-      <item>L</item>  <item>Letter</item>
-      <item>LC</item> <item>Cased_Letter</item>
-      <item>Lu</item> <item>Uppercase_Letter</item>
-      <item>Ll</item> <item>Lowercase_Letter</item>
-      <item>Lt</item> <item>Titlecase_Letter</item>
-      <item>Lm</item> <item>Modifier_Letter</item>
-      <item>Lo</item> <item>Other_Letter</item>
-      <item>M</item>  <item>Mark</item>
-      <item>Mn</item> <item>Nonspacing_Mark</item>
-      <item>Mc</item> <item>Spacing_Mark</item>
-      <item>Me</item> <item>Enclosing_Mark</item>
-      <item>N</item>  <item>Number</item>
-      <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
-      <item>Nl</item> <item>Letter_Number</item>
-      <item>No</item> <item>Other_Number</item>
-      <item>P</item>  <item>Punctuation</item> <item>punct</item>
-      <item>Pc</item> <item>Connector_Punctuation</item>
-      <item>Pd</item> <item>Dash_Punctuation</item>
-      <item>Ps</item> <item>Open_Punctuation</item>
-      <item>Pe</item> <item>Close_Punctuation</item>
-      <item>Pi</item> <item>Initial_Punctuation</item>
-      <item>Pf</item> <item>Final_Punctuation</item>
-      <item>Po</item> <item>Other_Punctuation</item>
-      <item>S</item>  <item>Symbol</item>
-      <item>Sm</item> <item>Math_Symbol</item>
-      <item>Sc</item> <item>Currency_Symbol</item>
-      <item>Sk</item> <item>Modifier_Symbol</item>
-      <item>So</item> <item>Other_Symbol</item>
-      <item>Z</item>  <item>Separator</item>
-      <item>Zs</item> <item>Space_Separator</item>
-      <item>Zl</item> <item>Line_Separator</item>
-      <item>Zp</item> <item>Paragraph_Separator</item>
-      <item>C</item>  <item>Other</item>
-      <item>Cc</item> <item>Control</item> <item>cntrl</item>
-      <item>Cf</item> <item>Format</item>
-      <item>Cs</item> <item>Surrogate</item>
-      <item>Co</item> <item>Private_Use</item>
-      <item>Cn</item> <item>Unassigned</item>
-    </list>
-
-    <list name="assertion">
-      <item>before</item>
-      <item>after</item>
-    </list>
-
-    <contexts>
-
-      <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthrough="1" fallthroughContext="#pop!base">
-        <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
-      </context>
-
-      <context name="base" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar attribute="Comment" context="StartComment" char="#"/>
-        <!-- <DetectChar attribute="Unspace" context="#stay" char="\"/> -->
-        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
-        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
-        <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
-        <RegExpr String="(?:s|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Operator"/>
-        <RegExpr String="(?:rx|m)&regadverb;" context="Regex" attribute="Operator"/>
-        <IncludeRules context="find_Variable"/>
-        <DetectChar attribute="Pod" context="StartPod" char="=" firstNonSpace="1"/>
-        <RegExpr String="»\.|&lt;&lt;\.|&hyperoperators;|&startstringasoperator;|&funcoperator;|&reductionoperator;|&operators;" context="MaybeRegex" attribute="Operator"/>
-        <DetectChar char="(" context="SubExpression(" attribute="Operator" beginRegion="block"/>
-        <DetectChar char="[" context="SubExpression[" attribute="Operator" beginRegion="block"/>
-        <AnyChar String=",;" context="#stay" attribute="Separator Symbol"/>
-        <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
-        <Detect2Chars attribute="String Delimiter" context="qq_String&lt;&lt;" char="&lt;" char1="&lt;"/>
-        <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
-        <DetectChar attribute="String Delimiter" context="Q_String｢" char="｢"/>
-        <RegExpr String="Q(\s++(?=['(_]|$)|\s*+(?=[^()>｣\]}'&rangealphabetic;&rangenumeric;]|$))" context="Q_String" attribute="String"/>
-        <DetectChar char=":" context="MaybeAttribute" attribute="Operator"/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <RegExpr attribute="Operator" context="q_QuotingForm" String="q(?=&quotingform_q;&quotingform_q_assert;)"/>
-        <keyword String="operator" context="#stay" attribute="Operator"/>
-        <keyword String="varStorage" context="#stay" attribute="Variable Storage"/>
-        <keyword String="type" context="#stay" attribute="Data Type"/>
-        <keyword String="controlFlow" context="#stay" attribute="Control Flow"/>
-        <WordDetect String="is" context="Is" attribute="Keyword"/>
-        <keyword String="keyword" context="#stay" attribute="Keyword"/>
-        <keyword String="declareRoutine" context="#stay" attribute="Declare Routine"/>
-        <keyword String="property" context="#stay" attribute="Property"/>
-        <keyword String="regexKeyword" context="RegexKeyword" attribute="Keyword"/>
-        <keyword String="value" context="#stay" attribute="Keyword Value"/>
-        <keyword String="Number" context="#stay" attribute="Float"/>
-        <RegExpr String="[A-Z](?:[a-z]+[a-zA-Z0-9]*)+" context="#stay" attribute="Data Type"/>
-        <RegExpr String="&ident;" context="#stay" attribute="Normal Text"/>
-      </context>
-
-      <context name="Is" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <keyword String="isProperty" context="#pop" attribute="Property"/>
-      </context>
-
-      <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="Operator" endRegion="block"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="base"/>
-        <DetectChar char=")" context="#pop" attribute="Operator" endRegion="block"/>
-      </context>
-
-      <context name="SubExpression[" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="base"/>
-        <DetectChar char="]" context="#pop" attribute="Operator" endRegion="block"/>
-      </context>
-
-      <context name="find_Variable" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="[%&amp;](?=[?*]&alphabetic;)|(?:\$[&twigils;]|::\?)(?=&alphabetic;)" context="Twigil" attribute="Variable"/>
-        <RegExpr String="[$@]\(\)|[%@]?\$/|\$!|\$[0-9]+|[\\@%&amp;$]&ident;" context="#stay" attribute="Variable"/>
-      </context>
-
-      <context name="MaybeRegex" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="/" context="#pop!Regex" attribute="Operator" lookAhead="1"/>
-      </context>
-
-      <context name="Twigil" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
-        <RegExpr String="&ident;" context="#pop" attribute="Variable"/>
-      </context>
-
-      <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#pop">
-        <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Operator" beginRegion="regex"/>
-      </context>
-      <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <!-- Regex -->
-
-      <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <IncludeRules context="find_RegexClosure"/>
-        <RegExpr String="([^\w\s])" context="Pattern" attribute="Operator" beginRegion="regex"/>
-      </context>
-
-      <context name="find_RegexClosure" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
-        <DetectChar char="{" context="Pattern{" attribute="Operator" beginRegion="regex"/>
-        <DetectChar char="(" context="Pattern(" attribute="Operator" beginRegion="regex"/>
-        <DetectChar char="[" context="Pattern[" attribute="Operator" beginRegion="regex"/>
-        <DetectChar char="&lt;" context="Pattern&lt;" attribute="Operator" beginRegion="regex"/>
-        <DetectSpaces/>
-      </context>
-
-      <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <Detect2Chars char="P" char1="5" context="RegexPerl5" attribute="Pattern Modifier"/>
-        <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
-        <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
-      </context>
-
-      <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
-        <DetectSpaces/>
-      </context>
-
-      <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
-        <IncludeRules context="find_pattern##Perl"/>
-      </context>
-
-      <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar attribute="Operator" context="SubPattern" char="("/>
-        <DetectChar char="\" context="PatternMetaChar" attribute="Pattern Character Class"/>
-        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
-        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
-        <DetectChar attribute="Pattern Modifier" context="PatternModifier" char=":" lookAhead="1"/>
-        <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
-        <Detect2Chars attribute="Operator" context="RecursivePattern" char="&lt;" char1="("/>
-        <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="?"/>
-        <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="!"/>
-        <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="&lt;"/>
-        <Detect2Chars attribute="Operator" context="#stay" char=">" char1=">"/>
-        <DetectChar attribute="Pattern Meta Character" context="RegexClass" char="&lt;"/>
-        <AnyChar attribute="Pattern Quantifier" context="#stay" String="?*+%"/>
-        <Detect2Chars attribute="Pattern Quantifier" context="#stay" char="." char1="."/>
-        <AnyChar attribute="Operator" context="#stay" String="[]«»~"/>
-        <DetectChar attribute="Pattern Special Character" context="#stay" char="."/>
-        <Detect2Chars attribute="Variable" context="PatternVariable" char="$" char1="&lt;"/>
-        <AnyChar attribute="Pattern Control Flow" context="#stay" String="&amp;|^$"/>
-        <DetectChar attribute="Comment" context="StartComment" char="#"/>
-        <IncludeRules context="find_Variable"/>
-        <RegExpr    String="[&rangealphabetic;&rangenumeric;\s]+" context="#stay" attribute="Pattern"/>
-      </context>
-
-      <context name="SubPattern" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="Operator"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="RecursivePattern" attribute="Variable" lineEndContext="#stay">
-        <Detect2Chars attribute="Operator" context="#pop" char=")" char1=">"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <RegExpr context="#pop" attribute="Pattern Modifier" String=":\w+"/>
-        <DetectChar attribute="Pattern Control Flow" context="#pop" char=":"/>
-      </context>
-
-      <context name="PatternVariable" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <RegExpr String="&ident;>?" context="#pop" attribute="Variable"/>
-      </context>
-
-      <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!RegexClass">
-        <DetectChar attribute="Operator" context="#pop" char=">"/>
-        <DetectChar attribute="Operator" context="PatternAssertionCond" char="{"/>
-        <keyword attribute="Keyword" String="assertion" context="SubPatternAssertion"/>
-      </context>
-      <context name="SubPatternAssertion" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop#pop" attribute="Operator"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="PatternAssertionCond" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars attribute="Operator" context="#pop#pop" char="}" char1=">"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="PatternMetaChar" attribute="Pattern Meta Character" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!CharError">
-        <AnyChar attribute="Pattern Character Class" context="#pop" String="nthvsdwNTHVSDW"/>
-        <RegExpr String="[^&rangealphabetic;&rangenumeric;]" context="#pop" attribute="Pattern Meta Character"/>
-      </context>
-
-
-      <!-- Pattern Character Classes -->
-
-      <context name="RegexClass" attribute="Pattern Meta Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <AnyChar    attribute="Operator" context="#stay" String="-!+()"/>
-        <DetectChar attribute="Pattern Meta Character" context="RegexClassRange" char="["/>
-        <DetectChar attribute="Pattern Unicode Property" context="RegexClassName" char=":"/>
-        <DetectChar attribute="Pattern Meta Character" context="#pop" char=">"/>
-        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
-        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
-        <DetectChar attribute="String Delimiter" context="Q_String｢" char="｢"/>
-        <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
-        <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
-        <RegExpr attribute="String" context="#stay" String="[^-!+()?:&lt;>'&quot;｢«]+"/>
-      </context>
-
-      <context name="RegexClassName" attribute="Pattern Unicode Property" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <RegExpr String="\w+" context="#pop" attribute="Pattern Unicode Property"/>
-        <!-- auto-completion only -->
-        <keyword attribute="Pattern Unicode Property" context="#pop" String="unicodeGeneralCategories"/>
-      </context>
-
-      <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="\" context="RegexClassRangeMetaChar" attribute="Pattern Character Class"/>
-        <Detect2Chars char="." char1="." context="#stay" attribute="Pattern Quantifier"/>
-        <DetectChar attribute="Pattern Meta Character" context="#pop" char="]"/>
-      </context>
-
-      <context name="RegexClassRangeMetaChar" attribute="Pattern Meta Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <IncludeRules context="find_SpecialChar"/>
-        <IncludeRules context="PatternMetaChar"/>
-      </context>
-
-
-      <!-- Regex Substitution -->
-
-      <context name="RegexSubstitution" attribute="Operator" lineEndContext="#stay">
-        <IncludeRules context="find_RegexClosure"/>
-        <RegExpr String="([^\w\s])" context="RegexSubstitutionPattern" attribute="Operator" beginRegion="regex"/>
-      </context>
-
-      <context name="RegexSubstitutionPattern" attribute="Pattern" lineEndContext="#stay">
-        <RegExpr String="(%1)" dynamic="1" context="RegexSubstitutionString" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="RegexSubstitutionString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop#pop#pop" attribute="Operator"/>
-      </context>
-
-
-      <!-- Number -->
-
-      <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!CharErrorIfNoSep">
-        <RegExpr String="&int10;(?:\.&int10;(?:[eE][+-]?&int10;)?|[eE][+-]?&int10;)i?|\.&int10;(?:[eE][+-]?&int10;)?i?" context="CheckNumberError" attribute="Float"/>
-        <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
-        <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
-        <RegExpr String="&int10;i?" context="CheckNumberError" attribute="Decimal"/>
-        <DetectChar char="." context="#pop" attribute="Operator"/>
-      </context>
-
-      <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
-        <RegExpr String="[a-fA-F0-9]+(?:_[a-fA-F0-9]+)*i?" context="#pop!CheckNumberError" attribute="Hex"/>
-      </context>
-
-      <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
-        <RegExpr String="[0-7]+(?:_[0-7]+)*i?" context="#pop!CheckNumberError" attribute="Octal"/>
-      </context>
-
-      <context name="BaseNumber" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!CharErrorIfNoSep">
-        <DetectChar char="&gt;" context="#pop#pop#pop" attribute="Error"/>
-        <RegExpr String="&intN;\.&intN;|\.&intN;" context="#pop#pop!BaseNumberClose" attribute="Float"/>
-        <RegExpr String="&intN;" context="#pop#pop!BaseNumberClose" attribute="Decimal"/>
-      </context>
-      <context name="BaseNumberClose" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
-        <DetectChar char="&gt;" context="#pop#pop" attribute="Operator"/>
-        <IncludeRules context="CheckNumberError"/>
-      </context>
-
-      <context name="CheckNumberError" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
-      </context>
-
-
-      <!-- Attribute or Key -->
-
-      <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <Int context="MaybeAttribute2" attribute="Decimal"/>
-        <DetectChar char="!" context="#pop" attribute="Operator"/>
-        <RegExpr String="&ident;" context="#pop" attribute="Attribute"/>
-      </context>
-
-      <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar char="&lt;" context="BaseNumber" attribute="Operator"/>
-      </context>
-
-
-      <!-- Pod -->
-
-      <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
-        <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>
-        <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>
-        <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
-        <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
-      </context>
-
-      <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
-      </context>
-
-      <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
-        <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
-      </context>
-
-      <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
-      </context>
-
-
-      <!-- Pod formatting -->
-
-      <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
-        <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
-        <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>
-        <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
-        <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>
-        <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
-        <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
-        <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
-        <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>
-        <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
-        <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
-        <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
-        <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>
-        <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
-        <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>
-        <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
-        <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>
-        <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
-        <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
-        <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
-        <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
-        <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-      </context>
-
-      <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatB1">
-        <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
-      </context>
-      <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
-        <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
-      </context>
-      <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
-        <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
-      </context>
-      <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
-      </context>
-
-      <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatE1">
-        <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
-      </context>
-      <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
-        <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
-      </context>
-      <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
-        <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
-      </context>
-      <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
-      </context>
-
-      <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatI1">
-        <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
-      </context>
-      <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
-        <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
-      </context>
-      <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
-        <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
-      </context>
-      <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
-      </context>
-
-      <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatL1">
-        <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
-      </context>
-      <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
-        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
-        <DetectChar char=">" attribute="Pod Link" context="#pop"/>
-      </context>
-      <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
-        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
-        <DetectChar char="»" attribute="Pod Link" context="#pop"/>
-      </context>
-      <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
-        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
-      </context>
-
-      <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatN1">
-        <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
-      </context>
-      <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
-        <DetectChar char=">" attribute="Pod Note" context="#pop"/>
-      </context>
-      <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
-        <DetectChar char="»" attribute="Pod Note" context="#pop"/>
-      </context>
-      <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
-      </context>
-
-      <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatU1">
-        <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
-      </context>
-      <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
-        <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
-      </context>
-      <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
-        <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
-      </context>
-      <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
-      </context>
-
-      <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatV1">
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
-      </context>
-      <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
-        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
-        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-
-      <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatVT1">
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
-      </context>
-      <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
-        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
-        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-
-      <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatZ1">
-        <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
-      </context>
-      <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
-        <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
-      </context>
-      <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
-        <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
-      </context>
-      <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
-      </context>
-
-      <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatX1">
-        <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
-      </context>
-      <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
-        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
-        <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
-      </context>
-      <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
-        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
-        <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
-        <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
-      </context>
-      <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
-        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
-      </context>
-
-      <!-- Pod =begin -->
-
-      <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
-        <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
-        <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
-        <!-- auto-completion only -->
-        <keyword String="podblocktypename" context="#stay" attribute="Pod Typename Value"/>
-      </context>
-
-      <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
-        <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
-      </context>
-
-      <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodCode">
-        <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
-      </context>
-      <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
-
-      <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
-      </context>
-      <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
-      </context>
-
-
-      <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
-      </context>
-
-      <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodComment">
-        <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
-      </context>
-      <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
-
-      <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
-      </context>
-      <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
-      </context>
-
-
-      <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
-        <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
-        <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
-      </context>
-
-      <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodInnerBlockFormat">
-        <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
-        <DetectSpaces/>
-        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
-        <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
-      </context>
-
-      <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
-        <IncludeRules context="PodFormat"/>
-      </context>
-
-      <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char="=" context="#stay" attribute="Pod"/>
-        <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
-      </context>
-      <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
-        <DetectSpaces attribute="Normal Text"/>
-        <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
-      </context>
-
-      <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
-      </context>
-
-      <!-- Pod configuration for =begin -->
-
-      <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
-
-      <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthrough="1" fallthroughContext="PodBlockConfigError">
-        <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
-        <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
-        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodBlockConfigError">
-        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthrough="1" fallthroughContext="#pop!PodBlockConfigError">
-        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
-        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
-        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
-        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
-      </context>
-
-
-      <!-- Pod =for -->
-
-      <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthrough="1" fallthroughContext="#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
-      </context>
-
-      <!-- Pod configuration for =for -->
-
-      <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
-
-      <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodConfigError">
-        <DetectSpaces/>
-        <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
-      </context>
-
-      <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
-        <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
-        <Int context="PodConfigKeyIntName" attribute="Decimal"/>
-        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
-        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthrough="1" fallthroughContext="#pop#pop!PodConfigError">
-        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
-        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
-        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
-      </context>
-
-      <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
-        <DetectSpaces/>
-        <keyword String="podvalue" context="#stay" attribute="Data Type"/>
-        <DetectIdentifier/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
-        <DetectChar char="'" context="PodSQString" attribute="String"/>
-        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
-      </context>
-
-      <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
-        <DetectSpaces/>
-        <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
-        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
-        <keyword String="podvalue" context="#stay" attribute="Data Type"/>
-        <DetectIdentifier/>
-        <DetectChar char="'" context="PodSQString" attribute="String"/>
-        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
-      </context>
-
-      <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
-        <keyword String="podvalue" context="#stay" attribute="Data Type"/>
-        <DetectIdentifier/>
-        <DetectChar char="'" context="PodSQString" attribute="String"/>
-        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
-      </context>
-
-
-      <!-- Pod String -->
-
-      <context name="PodSQString" attribute="String" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
-        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
-        <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="PodQString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
-        <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="find_SpecialChar" attribute="String Special Character" lineEndContext="#stay">
-        <Detect2Chars char="c" char1="[" context="UnicodeCodepoint" attribute="String Special Character"/>
-        <DetectChar char="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
-        <DetectChar char="x" context="HexaString" attribute="String Special Character"/>
-        <DetectChar char="o" context="OctalString" attribute="String Special Character"/>
-      </context>
-
-      <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop">
-        <IncludeRules context="find_SpecialChar"/>
-        <RegExpr String="." context="#pop" attribute="String"/>
-      </context>
-
-      <context name="UnicodeCodepoint" attribute="String Special Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
-        <DetectChar char="," context="#stay" attribute="Separator Symbol"/>
-      </context>
-
-      <context name="UnicodeCodepointDecimal" attribute="String Special Character" lineEndContext="#pop#pop">
-        <!-- 0 to 1114111 -->
-        <RegExpr String="0*(?:1(?:0\d{5}|1(?:O\d{4}|(?:1[0-3]\d{3}|4(?:0\d\d|1(?:0\d|1[01]))))))|\d{1,6}|0+" context="UnicodeCodepointDecimalCheck" attribute="String Special Character"/>
-        <RegExpr String="[^&quot;]" context="#pop" attribute="Error"/>
-      </context>
-      <context name="UnicodeCodepointDecimalCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
-        <AnyChar String="0123456789" context="#pop#pop#pop" attribute="Error"/>
-      </context>
-
-      <context name="HexaString" attribute="String Special Character" lineEndContext="#pop#pop">
-        <DetectChar char="[" context="HexaStringBracket" attribute="String Special Character"/>
-        <!-- 0 to 0x10FFFF -->
-        <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringCheck" attribute="String Special Character"/>
-        <RegExpr String="[^&quot;]" context="#pop#pop" attribute="Error"/>
-      </context>
-      <context name="HexaStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
-        <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop#pop" attribute="Error"/>
-      </context>
-      <context name="HexaStringBracket" attribute="String Special Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
-        <!-- 0 to 0x10FFFF -->
-        <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringBracketCheck" attribute="String Special Character"/>
-      </context>
-      <context name="HexaStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
-        <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
-        <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
-      </context>
-
-      <context name="OctalString" attribute="String Special Character" lineEndContext="#pop#pop">
-        <DetectChar char="[" context="OctalStringBracket" attribute="String Special Character"/>
-        <!-- 0 to 0o4177777 -->
-        <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringCheck" attribute="String Special Character"/>
-        <RegExpr String="[^&quot;]" context="#stay" attribute="Error"/>
-      </context>
-      <context name="OctalStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
-        <AnyChar String="01234567" context="#pop#pop#pop" attribute="Error"/>
-      </context>
-      <context name="OctalStringBracket" attribute="String Special Character" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
-        <!-- 0 to 0o4177777 -->
-        <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringBracketCheck" attribute="String Special Character"/>
-      </context>
-      <context name="OctalStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
-        <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
-        <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
-      </context>
-
-
-      <!-- Q String -->
-
-      <context name="Q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces attribute="String"/>
-        <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
-        <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
-        <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
-        <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
-        <DetectChar char="｢" context="#pop!Q_String｢" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="([^()>｣\]}'&_rangealphabetic;&rangenumeric;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
-      </context>
-
-      <context name="Q_String(" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
-        <RegExpr String="[^()]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String[" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
-        <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String{" attribute="String" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
-        <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String｢" attribute="String" lineEndContext="#stay">
-        <DetectChar char="｣" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="｢" context="Q_String｢" attribute="String Delimiter"/>
-        <RegExpr String="[^｢｣]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
-        <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!q_String">
-        <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
-      </context>
-
-      <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!qq_String">
-        <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
-        <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
-        <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
-        <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
-      </context>
-
-      <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
-        <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
-        <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
-      </context>
-      <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="q_String">
-        <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
-        <keyword String="quoting" context="#stay" attribute="Operator"/>
-        <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
-        <!-- :closure as qq -->
-        <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
-        <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
-      </context>
-
-      <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="qq_String">
-        <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
-        <keyword String="quoting" context="#stay" attribute="Operator"/>
-        <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
-        <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
-      </context>
-
-
-      <!-- q and qq Heredoc -->
-
-      <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
-      </context>
-      <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
-        <DetectSpaces/>
-        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
-        <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
-      </context>
-      <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
-        <DetectSpaces/>
-        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-
-      <!-- q String -->
-
-      <context name="q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectSpaces/>
-        <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
-        <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
-        <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
-      </context>
-
-      <context name="q_String(" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_String[" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_String{" attribute="String" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_StringAny" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
-        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_RawString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <!-- qq String -->
-
-      <context name="qq_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectSpaces/>
-        <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
-        <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
-        <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
-      </context>
-
-      <context name="qq_String(" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String[" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String{" attribute="String" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String«" attribute="String" lineEndContext="#stay">
-        <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
-        <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
-        <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
-        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_RawString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
-        <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
-        <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
-        <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
-        <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
-        <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
-      </context>
-
-      <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
-        <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
-        <Detect2Chars char="\" char1="x" context="HexaString" attribute="String Special Character"/>
-        <StringDetect String="\c[" context="UnicodeCodepoint" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="o" context="OctalString" attribute="String Special Character"/>
-        <RegExpr String="\\.?" context="#pop" attribute="String Special Character"/>
-      </context>
-
-      <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
-        <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
-        <DetectChar char="&amp;" context="#pop" attribute="String"/>
-      </context>
-
-      <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
-        <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
-        <DetectChar char="$" context="#pop" attribute="String"/>
-      </context>
-
-      <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
-        <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
-        <AnyChar String="@%" context="#pop" attribute="String"/>
-      </context>
-
-      <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
-        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
-        <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
-      </context>
-
-      <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
-        <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
-      </context>
-
-      <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
-        <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
-        <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
-      </context>
-
-      <context name="FunctionParameters" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="Function"/>
-        <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
-        <IncludeRules context="base"/>
-      </context>
-
-
-      <!-- Comment -->
-
-      <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthrough="1" fallthroughContext="SingleLineComment">
-        <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
-        <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
-      </context>
-
-      <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop!SingleLineComment">
-        <!-- TODO a new rule is needed to find the corresponding closures -->
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
-        <!-- etc -->
-      </context>
-
-      <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
-        <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
-        <IncludeRules context="SingleLineComment"/>
-      </context>
-      <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
-      </context>
-
-      <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
-      </context>
-
-      <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
-      </context>
-
-      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
-        <DetectSpaces/>
-        <IncludeRules context="##Comments"/>
-        <DetectIdentifier/>
-      </context>
-
-
-      <!-- Error -->
-
-      <context name="Error" attribute="Error" lineEndContext="#pop"/>
-
-      <context name="CharErrorIfNoSep" attribute="Error" lineEndContext="#pop">
-        <RegExpr String="[^;)]" context="#pop" attribute="Error"/>
-      </context>
-
-      <context name="CharError" attribute="Error" lineEndContext="#pop">
-        <RegExpr String="." context="#pop" attribute="Error"/>
-      </context>
-
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text"               defStyleNum="dsNormal"/>
-      <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>
-      <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>
-      <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
-      <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
-      <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>
-      <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
-      <itemData name="Operator"                  defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
-      <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>
-      <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
-      <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
-      <itemData name="String"                    defStyleNum="dsString"/>
-      <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="String (interpolated)"     defStyleNum="dsString"/>
-      <itemData name="String Special Character"  defStyleNum="dsChar"/>
-      <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>
-      <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Pattern Character"         defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
+  <!ENTITY rangealnum "_\p{L}\p{N}">
+  <!ENTITY _alnum "_\p{L}\p{N}">
+  <!ENTITY alnum "[&_alnum;]">
+  <!ENTITY _ident "&alnum;*+(?:[-']&alnum;*+)*+">
+  <!ENTITY ident "(?:[_\p{L}]&_ident;)">
+  <!ENTITY datatype "(?:[_\p{Lu}\p{Lt}]&_ident;)">
+
+  <!-- 0 to 0x10FFFF -->
+  <!ENTITY unicode_hex_point "(?:0*+(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5}+)|0++)">
+  <!-- 0 to 1114111 -->
+  <!ENTITY unicode_dec_point "(?:0*+(?:1(?:0[0-9]{5}|1(?:0[0-9]{4}|(?:1[0-3][0-9]{3}|4(?:0[0-9]{2}|1(?:0[0-9]|1[01]))))))|[0-9]{1,6}+|0++)">
+  <!-- 0 to 0o4177777 -->
+  <!ENTITY unicode_oct_point "(?:0*+(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}+|0++)">
+
+  <!ENTITY prefixdollarvarname "(?:[_\p{L}0-9/!]|\(\))">
+  <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">
+  <!ENTITY twigils "*?!.^:=~">
+
+  <!ENTITY twigil_variable "[&#37;&amp;](?=[?*][_\p{L}])|[$@](?=[&twigils;][_\p{L}])">
+  <!ENTITY variable "[&#37;@]?\$/|\$!|\$[0-9]+|[\\@&#37;&amp;$]&ident;">
+
+  <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
+  <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
+  <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
+  <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
+  <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
+
+  <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">
+  <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>｣\]}a-zA-Z0-9]|$))">
+  <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
+
+  <!ENTITY int10 "(?:[0-9]++(?:_[0-9]++)*+)">
+  <!ENTITY exp "(?:[eE][+-]?&int10;)">
+  <!ENTITY intN "(?:[0-9a-zA-Z]++(?:_[0-9a-zA-Z]++)*+)">
+
+  <!-- https://docs.raku.org/language/operators -->
+
+  <!--
+    42.&f;
+      ~~ access
+    expr.&?BLOCK
+        ~ access
+         ~~~~~~~~ variable
+  -->
+  <!ENTITY method_ops "\.([=^?+*:]|&amp;(?![?][_\p{L}]))?">
+
+  <!ENTITY postfix_ops "⚛?(\+\+|\-\-)">
+
+  <!ENTITY prefix_unary_ops "(\+\+⚛?|\-\-⚛?|//|[+~?]\^|[-+~|?!^⚛]|\b(not|so)\b)">
+
+  <!ENTITY _infix_simple_ops "\*\*|&#37;&#37;|[+~][&amp;&lt;>|^]|\?[&amp;^|]|=>|==>|&lt;==|::?=|//|\^\^|\([-+&amp;.|]\)|\^?…\^?|\^?\.\.\.\^?|[-+*/&#37;~∘&amp;∩⊍|∪⊎^⊖=]|\b(div|mod|gcd|lcm|xx?|min|max|minmax|andthen|notandthen|orelse|o)\b">
+  <!ENTITY _infix_chaining_ops "\((elem|cont|[=&lt;>]=|[&lt;>])\)|\.\.[\^]?|\^\.\.\^?|&lt;=>|===|=:=|=~=|~~|[=&lt;>]=|[⩵≠≤≥⩶∈∉≡≢∋∌⊂⊄⊆⊈⊃⊅⊇⊉]|&lt;(?!&lt;)|>(?!>)|&amp;&amp;|\|\||\b(eq|ne|gt|ge|lt|le|before|after|eqv|and|or|xor)\b">
+  <!-- "does" is an operator, but also a trait (separate treatment) -->
+  <!ENTITY _infix_structural "\b(but|cmp|coll|unicmp|leg)\b">
+  <!ENTITY _infix_other_ops "\^fff?\b|\bfff?\^|\bfff?\b|!!|\?\?">
+  <!ENTITY _infix_ops1 "(\b[RXZS]+)?((&_infix_simple_ops;)=?|⚛[-+]?=|\\(?=\s|$)|&_infix_structural;)">
+  <!ENTITY _infix_ops2 "\b[RXZS]+does">
+  <!ENTITY _infix_ops3 "((\b[RXZS]|!)[RXZS!]*+)?(&_infix_chaining_ops;|=)|[XZ]+">
+  <!ENTITY _infix_ops "&_infix_ops1;|&_infix_ops2;|&_infix_ops3;">
+  <!ENTITY infix_ops "(&_infix_ops;|&_infix_other_ops;|->)">
+
+  <!ENTITY list_ops "!!!|\?\?\?|\.\.\.">
+
+  <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
+  <!ENTITY regadverb "(?!\()\s*(?=[^\p{L}\p{N}\s])">
+]>
+<language name="Raku" version="9" kateversion="5.62" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+  <highlighting>
+
+    <!-- https://docs.raku.org/routines -->
+
+    <list name="pod">
+      <item>begin</item>
+      <item>end</item>
+      <item>finish</item>
+      <item>for</item>
+      <include>podtypename</include>
+    </list>
+
+    <list name="podblocktypename">
+      <item>pod</item>
+      <include>podtypename</include>
+    </list>
+
+    <list name="pod values">
+      <item>True</item>
+      <item>False</item>
+    </list>
+
+    <list name="podtypename">
+      <item>head1</item>
+      <item>head2</item>
+      <item>head3</item>
+      <item>head4</item>
+      <item>head5</item>
+      <item>head6</item>
+      <item>item</item>
+      <item>item1</item>
+      <item>item2</item>
+      <item>item3</item>
+      <item>item4</item>
+      <item>item5</item>
+      <item>item6</item>
+      <item>para</item>
+      <item>code</item>
+      <item>defn</item>
+      <item>comment</item>
+      <item>table</item>
+      <item>input</item>
+      <item>output</item>
+    </list>
+
+    <list name="quoting">
+      <item>exec</item>
+      <item>words</item>
+      <item>quotewords</item>
+      <item>scalar</item>
+      <item>array</item>
+      <item>hash</item>
+      <item>function</item>
+      <item>closure</item>
+      <item>backslash</item>
+      <item>heredoc</item>
+      <item>val</item>
+    </list>
+
+    <list name="declare routine">
+      <item>macro</item>
+      <item>sub</item>
+      <item>submethod</item>
+      <item>method</item>
+      <item>multi</item>
+      <item>proto</item>
+      <item>only</item>
+      <item>category</item>
+    </list>
+
+    <!-- https://docs.raku.org/syntax/token -->
+    <list name="regex keywords">
+      <item>rule</item>
+      <item>token</item>
+      <item>regex</item>
+    </list>
+
+    <list name="values">
+      <include>pod values</include>
+      <item>self</item>
+    </list>
+
+    <list name="variable storages">
+      <item>my</item>
+      <item>our</item>
+      <item>has</item>
+      <item>state</item>
+      <item>anon</item>
+      <item>augment</item>
+      <item>supersede</item>
+      <item>let</item>
+      <item>temp</item>
+      <item>constant</item>
+    </list>
+
+    <!-- https://docs.raku.org/language/control -->
+    <list name="control flow">
+      <!-- conditional -->
+      <item>if</item>
+      <item>else</item>
+      <item>elsif</item>
+      <item>unless</item>
+      <item>when</item>
+      <item>with</item>
+      <item>orwith</item>
+      <item>without</item>
+      <item>given</item>
+      <item>default</item>
+      <!-- repeat -->
+      <item>for</item>
+      <item>loop</item>
+      <item>repeat</item>
+      <item>while</item>
+      <item>until</item>
+      <!-- control flow -->
+      <item>once</item>
+      <item>take</item>
+      <item>next</item>
+      <item>last</item>
+      <item>redo</item>
+      <item>return</item>
+      <item>return-rw</item>
+      <item>exit</item>
+      <item>goto</item>
+      <!-- exception -->
+      <item>die</item>
+      <item>fail</item>
+      <item>try</item>
+      <item>warn</item>
+      <!-- concurrency -->
+      <item>react</item>
+      <item>gather</item>
+      <item>proceed</item>
+      <item>succeed</item>
+      <item>whenever</item>
+      <item>supply</item>
+      <!-- asynchronous -->
+      <item>async</item>
+      <item>await</item>
+      <item>start</item>
+      <!-- phasers -->
+      <item>BEGIN</item>
+      <item>CHECK</item>
+      <item>QUIT</item>
+      <item>CLOSE</item>
+      <item>INIT</item>
+      <item>FIRST</item>
+      <item>ENTER</item>
+      <item>LEAVE</item>
+      <item>KEEP</item>
+      <item>UNDO</item>
+      <item>NEXT</item>
+      <item>LAST</item>
+      <item>END</item>
+      <item>CATCH</item>
+      <item>CONTROL</item>
+    </list>
+
+    <list name="keywords">
+      <item>do</item>
+      <item>no</item>
+      <item>use</item>
+      <item>require</item>
+      <!-- typeConstraint -->
+      <item>as</item>
+      <item>does</item>
+      <item>handles</item>
+      <item>is</item>
+      <item>of</item>
+      <item>trusts</item>
+      <item>where</item>
+      <!-- module -->
+      <item>module</item>
+      <item>class</item>
+      <item>role</item>
+      <item>package</item>
+      <item>enum</item>
+      <item>grammar</item>
+      <item>slang</item>
+      <item>subset</item>
+      <!-- phasers -->
+      <item>PRE</item>
+      <item>POST</item>
+      <item>COMPOSE</item>
+      <item>DOC</item>
+    </list>
+
+    <list name="properties">
+      <item>DEPRECATED</item>
+      <item>assoc</item>
+      <item>binary</item>
+      <item>built</item>
+      <item>cached</item>
+      <item>copy</item>
+      <item>deep</item>
+      <item>default</item>
+      <item>defequiv</item>
+      <item>dynamic</item>
+      <item>equiv</item>
+      <item>export</item>
+      <item>hidden-from-backtrace</item>
+      <item>inline</item>
+      <item>irs</item>
+      <item>looser</item>
+      <item>ofs</item>
+      <item>ors</item>
+      <item>parsed</item>
+      <item>prec</item>
+      <item>pure</item>
+      <item>raw</item>
+      <item>readonly</item>
+      <item>ref</item>
+      <item>reparsed</item>
+      <item>required</item>
+      <item>rw</item>
+      <item>test-assertion</item>
+      <item>tighter</item>
+      <item>unary</item>
+      <item>will</item>
+    </list>
+
+    <list name="number">
+      <item>NaN</item>
+      <item>Inf</item>
+    </list>
+
+    <list name="types">
+      <item>Any</item>
+      <item>Array</item>
+      <item>Associative</item>
+      <item>Bag</item>
+      <item>Blob</item>
+      <item>Block</item>
+      <item>Bool</item>
+      <item>Buf</item>
+      <item>Callable</item>
+      <item>Capture</item>
+      <item>Char</item>
+      <item>Class</item>
+      <item>Code</item>
+      <item>Complex</item>
+      <item>Cool</item>
+      <item>Exception</item>
+      <item>Failure</item>
+      <item>False</item>
+      <item>Grammar</item>
+      <item>Hash</item>
+      <item>IO</item>
+      <item>Int</item>
+      <item>Junction</item>
+      <item>Bag</item>
+      <item>List</item>
+      <item>Macro</item>
+      <item>Match</item>
+      <item>Method</item>
+      <item>Mu</item>
+      <item>Num</item>
+      <item>Numeric</item>
+      <item>Order</item>
+      <item>Pair</item>
+      <item>Positional</item>
+      <item>Proxy</item>
+      <item>Range</item>
+      <item>Rat</item>
+      <item>Rational</item>
+      <item>Real</item>
+      <item>Regex</item>
+      <item>Routine</item>
+      <item>Scalar</item>
+      <item>Seq</item>
+      <item>Set</item>
+      <item>Signature</item>
+      <item>Str</item>
+      <item>Sub</item>
+      <item>Submethod</item>
+      <item>True</item>
+      <item>UInt</item>
+      <item>Version</item>
+      <item>Whatever</item>
+      <item>buf8</item>
+      <item>buf16</item>
+      <item>buf32</item>
+      <item>buf64</item>
+      <item>int</item>
+      <item>int8</item>
+      <item>int16</item>
+      <item>int32</item>
+      <item>int64</item>
+      <item>num</item>
+      <item>uint</item>
+      <item>uint8</item>
+      <item>uint16</item>
+      <item>uint32</item>
+      <item>uint64</item>
+      <item>uint</item>
+      <item>utf8</item>
+      <item>utf16</item>
+      <item>utf32</item>
+    </list>
+
+    <list name="function operators">
+      <item>print</item>
+      <item>push</item>
+      <item>say</item>
+      <item>map</item>
+      <item>substr</item>
+      <item>die</item>
+      <item>any</item>
+    </list>
+
+    <list name="operators">
+      <item>X</item>
+      <item>gcd</item>
+      <item>ge</item>
+      <item>gt</item>
+      <item>lcm</item>
+      <item>le</item>
+      <item>leg</item>
+      <item>lt</item>
+      <item>max</item>
+      <item>min</item>
+      <item>minmax</item>
+      <item>mod</item>
+      <item>ne</item>
+      <item>not</item>
+      <item>notandthen</item>
+      <item>o</item>
+      <item>or</item>
+      <item>orelse</item>
+      <item>so</item>
+      <item>unicmp</item>
+      <item>x</item>
+      <item>xor</item>
+      <item>xx</item>
+      <item>Z</item>
+      <item>and</item>
+      <item>andthen</item>
+      <item>but</item>
+      <item>cmp</item>
+      <item>coll</item>
+      <item>div</item>
+      <item>does</item>
+      <item>eq</item>
+      <item>eqv</item>
+      <item>ff</item>
+      <item>fff</item>
+    </list>
+
+    <list name="unicode general categories">
+      <item>L</item>  <item>Letter</item>
+      <item>LC</item> <item>Cased_Letter</item>
+      <item>Lu</item> <item>Uppercase_Letter</item>
+      <item>Ll</item> <item>Lowercase_Letter</item>
+      <item>Lt</item> <item>Titlecase_Letter</item>
+      <item>Lm</item> <item>Modifier_Letter</item>
+      <item>Lo</item> <item>Other_Letter</item>
+      <item>M</item>  <item>Mark</item>
+      <item>Mn</item> <item>Nonspacing_Mark</item>
+      <item>Mc</item> <item>Spacing_Mark</item>
+      <item>Me</item> <item>Enclosing_Mark</item>
+      <item>N</item>  <item>Number</item>
+      <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
+      <item>Nl</item> <item>Letter_Number</item>
+      <item>No</item> <item>Other_Number</item>
+      <item>P</item>  <item>Punctuation</item> <item>punct</item>
+      <item>Pc</item> <item>Connector_Punctuation</item>
+      <item>Pd</item> <item>Dash_Punctuation</item>
+      <item>Ps</item> <item>Open_Punctuation</item>
+      <item>Pe</item> <item>Close_Punctuation</item>
+      <item>Pi</item> <item>Initial_Punctuation</item>
+      <item>Pf</item> <item>Final_Punctuation</item>
+      <item>Po</item> <item>Other_Punctuation</item>
+      <item>S</item>  <item>Symbol</item>
+      <item>Sm</item> <item>Math_Symbol</item>
+      <item>Sc</item> <item>Currency_Symbol</item>
+      <item>Sk</item> <item>Modifier_Symbol</item>
+      <item>So</item> <item>Other_Symbol</item>
+      <item>Z</item>  <item>Separator</item>
+      <item>Zs</item> <item>Space_Separator</item>
+      <item>Zl</item> <item>Line_Separator</item>
+      <item>Zp</item> <item>Paragraph_Separator</item>
+      <item>C</item>  <item>Other</item>
+      <item>Cc</item> <item>Control</item> <item>cntrl</item>
+      <item>Cf</item> <item>Format</item>
+      <item>Cs</item> <item>Surrogate</item>
+      <item>Co</item> <item>Private_Use</item>
+      <item>Cn</item> <item>Unassigned</item>
+    </list>
+
+    <list name="assertion">
+      <item>before</item>
+      <item>after</item>
+    </list>
+
+    <contexts>
+
+      <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthroughContext="#pop!base">
+        <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
+      </context>
+
+      <context name="base" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectSpaces/>
+        <AnyChar String="{(" attribute="Symbol" beginRegion="block"/>
+        <AnyChar String="])" context="postfix_op" attribute="Symbol" endRegion="block"/>
+        <AnyChar String=",;" attribute="Separator Symbol"/>
+        <DetectChar char="}" endRegion="block" attribute="Symbol"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
+        <IncludeRules context="find_boxed_op"/>
+        <RegExpr String="&prefix_unary_ops;(\s*&prefix_unary_ops;)*+|&list_ops;" context="postfix_hyper_op" attribute="Operator"/>
+      </context>
+
+      <context name="find_boxed_op" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar char="[" context="boxed_op" attribute="Symbol" beginRegion="block"/>
+        <RegExpr String="(\b[RXZS]+)?(?=\\?\[)" context="start_boxed_op" attribute="Operator"/>
+      </context>
+      <context name="start_boxed_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!boxed_op">
+        <DetectChar char="[" context="#pop!boxed_op" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="\" context="boxed_op"/>
+      </context>
+
+      <context name="boxed_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!boxed_op2">
+        <RegExpr String="&lt;(?![\]&lt;])" context="boxed_op_string" attribute="String Delimiter" beginRegion="block"/>
+      </context>
+      <context name="boxed_op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar char="]" context="#pop" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="boxed_op_elem"/>
+      </context>
+      <!-- [<...>] -->
+      <context name="boxed_op_string" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="q_String&lt;_common"/>
+      </context>
+
+      <context name="boxed_op_elem_before" attribute="Normal Text" lineEndContext="#pop">
+        <IncludeRules context="find_boxed_op"/>
+        <RegExpr String="(\b[RXZS]+)?(&lt;&lt;|>>|«|»)" context="hyper_op_dispatch" lookAhead="1"/>
+        <RegExpr String="[\\&amp;]&ident;" attribute="Variable"/>
+      </context>
+      <context name="boxed_op_elem" attribute="Normal Text" lineEndContext="#pop">
+        <IncludeRules context="boxed_op_elem_before"/>
+        <RegExpr String="\bdoes\b|&infix_ops;" attribute="Operator"/>
+        <IncludeRules context="boxed_op_elem_after"/>
+      </context>
+      <context name="boxed_op_elem_after" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr String="&ident;"/>
+      </context>
+
+      <context name="postfix_hyper_op" attribute="Normal Text" lineEndContext="#pop!term" fallthroughContext="#pop!term">
+        <StringDetect String="&lt;&lt;" context="#pop!term" attribute="Hyper Operator"/>
+        <StringDetect String="«" context="#pop!term" attribute="Hyper Operator"/>
+      </context>
+
+      <context name="postfix_op" attribute="Normal Text" lineEndContext="#pop!infix_op" fallthroughContext="#pop!infix_op">
+        <StringDetect String="[" context="#pop" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="!" context="#pop" attribute="Member Operator"/>
+        <StringDetect String="&lt;&lt;" context="#pop" attribute="Hyper Operator"/>
+        <StringDetect String="«" context="#pop" attribute="Hyper Operator"/>
+        <StringDetect String="&lt;" context="#pop!q_String&lt;_term" attribute="String Delimiter"/>
+        <RegExpr String="&postfix_ops;" attribute="Operator"/>
+      </context>
+
+      <context name="infix_op" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <WordDetect String="does" context="#pop" attribute="Keyword"/>
+        <IncludeRules context="infix_regular_op"/>
+      </context>
+      <context name="infix_regular_op" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <RegExpr String="&infix_ops;(\s*&prefix_unary_ops;)*+" context="#pop!infix_postfix_hyper_op" attribute="Operator"/>
+        <RegExpr String="&method_ops;" context="#pop" attribute="Member Operator"/>
+        <RegExpr String="(\b[RXZS]+)?(&lt;&lt;|>>|«|»)" context="#pop!hyper_op_dispatch" lookAhead="1"/>
+      </context>
+
+      <!-- if infix operator is followed by hyper operator, then it is a postfix operator -->
+      <context name="infix_postfix_hyper_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <IncludeRules context="postfix_hyper_op"/>
+      </context>
+
+      <context name="hyper_op_dispatch" attribute="Normal Text" lineEndContext="#pop">
+        <AnyChar String="RXZS" attribute="Operator"/>
+        <StringDetect String="&lt;&lt;" context="#pop!hyper_op1" attribute="Hyper Operator"/>
+        <StringDetect String=">>" context="#pop!hyper_op1" attribute="Hyper Operator"/>
+        <AnyChar String="«»" context="#pop!hyper_op2" attribute="Hyper Operator"/>
+      </context>
+      <context name="hyper_op1" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String="&lt;&lt;" context="#pop" attribute="Hyper Operator"/>
+        <StringDetect String=">>" context="#pop" attribute="Hyper Operator"/>
+        <IncludeRules context="boxed_op_elem_before"/>
+        <!-- ignore > after infix operator -->
+        <RegExpr String="(\b[RXZS]+)?([+~][&amp;>|^]?|[-=])=?|\bdoes\b|&infix_ops;" attribute="Operator"/>
+        <IncludeRules context="boxed_op_elem_after"/>
+      </context>
+      <context name="hyper_op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar String="«»" context="#pop" attribute="Hyper Operator"/>
+        <IncludeRules context="boxed_op_elem"/>
+      </context>
+
+      <context name="term" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <AnyChar String="{([])},;" context="#pop" lookAhead="1"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <DetectChar char="&quot;" context="qq_RawString_term" attribute="String Delimiter"/>
+        <DetectChar char="'" context="q_RawString_term" attribute="String Delimiter"/>
+        <DetectChar char="«" context="qq_String«_term" attribute="String Delimiter"/>
+        <StringDetect String="&lt;&lt;" context="qq_String&lt;&lt;_term" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="q_String&lt;_term" attribute="String Delimiter"/>
+        <DetectChar char="｢" context="Q_String｢_term" attribute="String Delimiter"/>
+        <DetectChar char="/" context="Pattern/" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char=":" context="MaybeAttribute" attribute="Separator Symbol"/>
+
+        <RegExpr String="\b(?:s|S|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Pattern Delimiter"/>
+        <RegExpr String="\b(?:rx|m)&regadverb;" context="Regex" attribute="Pattern Delimiter"/>
+
+        <RegExpr String="&twigil_variable;" context="Twigil_term" attribute="Variable"/>
+        <!-- '*' -> Whatever variable: (* + *)(1, 2) == 3 -->
+        <RegExpr String="&variable;|\$(&lt;&ident;>)+|[$@](\(\))?|[*]" context="#pop!postfix_op" attribute="Variable"/>
+
+        <RegExpr String="\bQ(\s++(?=['(_]|$)|\s*+(?=[^()>｣\]}'&rangealnum;]|$))" context="Q_String" attribute="String"/>
+
+        <RegExpr String="\.?\p{N}" context="Number" lookAhead="1" minimal="1"/>
+
+        <RegExpr attribute="Operator" context="q_QuotingForm" String="\bq(?=&quotingform_q;&quotingform_q_assert;)"/>
+
+        <IncludeRules context="infix_regular_op"/>
+
+        <RegExpr String="(?&lt;=[.])(unless|when|with|without|given|default|for|loop|repeat|while|until|once|next|last|redo|goto|proceed|succeed|start|proceed|succeed)\b" context="#pop" attribute="Normal Text"/>
+
+        <keyword String="control flow" context="#pop" attribute="Control Flow"/>
+        <keyword String="variable storages" context="#stay" attribute="Variable Storage"/>
+        <WordDetect String="is" context="Is" attribute="Keyword"/>
+        <keyword String="keywords" context="#pop" attribute="Keyword"/>
+        <keyword String="function operators" context="#pop" attribute="Function"/>
+        <keyword String="declare routine" context="#stay" attribute="Declare Routine"/>
+        <keyword String="regex keywords" context="RegexKeyword" attribute="Keyword"/>
+        <keyword String="values" context="#pop!postfix_op" attribute="Keyword Value"/>
+        <keyword String="number" context="#pop!postfix_op" attribute="Float"/>
+        <RegExpr String="\b(u?int(8|16|32|64)?|utf(8|16|32)|buf(8|16|32|64)|num|&datatype;)\b" context="#pop" attribute="Data Type"/>
+        <!-- <RegExpr String="&ident;\s*+(?=\()" context="#pop" attribute="Function"/> -->
+        <RegExpr String="!?&ident;" context="#pop" attribute="Normal Text"/>
+
+        <DetectChar char="\"/>
+
+        <RegExpr String="." context="#pop" attribute="Normal Text"/>
+      </context>
+
+
+      <context name="Is" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!postfix_op">
+        <DetectSpaces/>
+        <keyword String="properties" context="#pop#pop!postfix_op" attribute="Property"/>
+      </context>
+
+      <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char="}" context="#pop" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="#pop" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="Twigil" attribute="Variable" lineEndContext="#pop">
+        <AnyChar String="&twigils;" attribute="Twigil"/>
+        <RegExpr String="&ident;" context="#pop#pop" attribute="Variable"/>
+      </context>
+
+      <context name="Twigil_term" attribute="Variable" lineEndContext="#pop">
+        <AnyChar String="&twigils;" attribute="Twigil"/>
+        <RegExpr String="&ident;" context="#pop#pop!postfix_op" attribute="Variable"/>
+      </context>
+
+      <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Symbol" beginRegion="regex"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <RegExpr String="&ident;"/>
+      </context>
+      <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="Symbol" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+
+      <!-- Regex Substitution -->
+
+      <context name="RegexSubstitution" attribute="Pattern Delimiter" lineEndContext="#stay">
+        <DetectChar char="/" context="PatternSubstitution/" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <IncludeRules context="find_RegexClosure"/>
+        <RegExpr String="([^\w\s])" context="PatternSubstitution" attribute="Pattern Delimiter" beginRegion="regex"/>
+      </context>
+
+      <context name="PatternSubstitution/" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="/" context="SubstitutionString/" attribute="Pattern Delimiter" endRegion="regex" beginRegion="substitution"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="PatternSubstitution" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr String="(%1)" dynamic="1" context="SubstitutionString" attribute="Pattern Delimiter" endRegion="regex" beginRegion="substitution"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="SubstitutionString/" attribute="String" lineEndContext="#stay">
+        <StringDetect String="/" context="#pop#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="substitution"/>
+        <StringDetect String="\/" attribute="String Special Character"/>
+        <RegExpr String="([^/\\]++|\\[^/])++" attribute="String"/>
+      </context>
+
+      <context name="SubstitutionString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="substitution"/>
+        <StringDetect String="\%1" dynamic="1" attribute="String Special Character"/>
+        <RegExpr String="([^%1\\]++|\\[^%1])++" dynamic="1" attribute="String"/>
+      </context>
+
+
+      <!-- Regex -->
+
+      <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar char="/" context="Pattern/" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <IncludeRules context="find_RegexClosure"/>
+        <RegExpr String="([^\w\s])" context="Pattern" attribute="Pattern Delimiter" beginRegion="regex"/>
+      </context>
+
+      <context name="find_RegexClosure" attribute="Pattern Delimiter" lineEndContext="#stay">
+        <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
+        <StringDetect String="[[" context="Pattern[[" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <StringDetect String="{{" context="Pattern{{" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <StringDetect String="&lt;&lt;" context="Pattern&lt;&lt;" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="[" context="Pattern[" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="{" context="Pattern{" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="&lt;" context="Pattern&lt;" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="(" context="Pattern(" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <!-- some pairs are missing: https://github.com/Raku/roast/blob/aa4994a7f6b3f6b450a9d231bebd5fba172439b0/S02-literals/quoting-unicode.t#L49-L65 -->
+        <DetectSpaces/>
+      </context>
+
+      <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String="P5" context="RegexPerl5" attribute="Pattern Modifier"/>
+        <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
+        <DetectIdentifier context="RegexModifierCall" attribute="Pattern Modifier"/>
+      </context>
+
+      <!-- ':' adverb '(' expr ')' '('...')'
+                                    ^ pattern delimiter
+      -->
+      <context name="RegexModifierCall" attribute="Pattern Modifier" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar char="(" context="RegexModifier(" attribute="Symbol" beginRegion="block"/>
+      </context>
+      <context name="RegexModifier(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="RegexModifierPattern(" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+      <context name="RegexModifierPattern(" attribute="Pattern Delimiter" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectSpaces/>
+        <StringDetect String="((" context="#pop#pop#pop#pop!Pattern((" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="(" context="#pop#pop#pop#pop!Pattern(" attribute="Pattern Delimiter" beginRegion="regex"/>
+      </context>
+
+      <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
+        <DetectSpaces/>
+      </context>
+
+      <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
+        <IncludeRules context="find_pattern##Perl"/>
+      </context>
+
+      <context name="Pattern/" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="/" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern{{" attribute="Pattern" lineEndContext="#stay">
+        <StringDetect String="}}" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="]" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+      <context name="PatternSub[" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="Symbol" endRegion="regex"/>
+        <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern[[" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="]]" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char=")" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+      <context name="PatternSub(" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="Symbol" endRegion="regex"/>
+        <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern((" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="))" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern&lt;&lt;" attribute="Pattern" lineEndContext="#stay">
+        <StringDetect String=">>" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="." context="#stay" attribute="Pattern Special Character"/>
+        <DetectChar char="&quot;" attribute="String Delimiter" context="qq_RawString"/>
+        <DetectChar char="'" attribute="String Delimiter" context="q_RawString"/>
+        <DetectChar char="\" context="PatternMetaChar" lookAhead="1"/>
+        <DetectChar char=":" context="PatternModifier" attribute="Pattern Modifier"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <DetectChar char="{" context="Interpolation" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="&lt;&lt;" attribute="Operator"/>
+        <StringDetect String=">>" attribute="Operator"/>
+        <StringDetect String="&lt;(" context="PatternCaptureMarker" attribute="Pattern Meta Character"/>
+        <DetectChar char="&lt;" context="RegexClass" attribute="Pattern Meta Character"/>
+        <StringDetect String="**" context="PatternRangeQuantifier" attribute="Pattern Quantifier"/>
+        <AnyChar String="?*+" context="PatternAfterQuantifier" attribute="Pattern Quantifier"/>
+        <AnyChar String="([" attribute="Symbol" beginRegion="block"/>
+        <AnyChar String=")]" attribute="Symbol" endRegion="block"/>
+        <StringDetect String="$(" context="PatternVariable(" attribute="Pattern Meta Character" beginRegion="block"/>
+        <StringDetect String="@(" context="PatternVariable(" attribute="Pattern Meta Character" beginRegion="block"/>
+        <AnyChar String="«»~" attribute="Operator"/>
+        <RegExpr String="&twigil_variable;" context="Twigil" attribute="Variable"/>
+        <RegExpr String="&variable;|@" attribute="Variable"/>
+        <RegExpr String="\$&lt;&ident;>?" attribute="Pattern Named Capture"/>
+        <AnyChar String="&amp;|^$" attribute="Pattern Control Flow"/>
+        <RegExpr String="[&_alnum;\s]+" attribute="Pattern"/>
+        <AnyChar String=">)]" attribute="Error"/>
+      </context>
+
+      <context name="PatternVariable(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="#pop" attribute="Pattern Meta Character" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+
+
+      <!-- Pattern :... -->
+
+      <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
+      </context>
+
+
+      <!-- Pattern \... -->
+
+      <context name="PatternMetaChar" attribute="Pattern" lineEndContext="#pop">
+        <RegExpr String="\\[nthvsdwNTHVSDW]|\\[xX](&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|\\[cC](&unicode_dec_point;(?![0-9])|\[[0-9a-zA-Z\s]+\])|[oO](&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="Pattern Character Class"/>
+        <RegExpr String="\\[^\p{L}\p{N}]" context="#pop" attribute="Pattern Character"/>
+
+        <StringDetect String="\x[" context="PatternMetaCharX" attribute="Pattern Character Class" insensitive="1"/>
+        <StringDetect String="\c[" context="PatternMetaCharC" attribute="Pattern Character Class" insensitive="1"/>
+        <StringDetect String="\o[" context="PatternMetaCharO" attribute="Pattern Character Class" insensitive="1"/>
+
+        <!-- error or incomplete -->
+        <RegExpr String="\\[xX]&unicode_hex_point;|\\[oO]&unicode_oct_point;|\\[cC]&unicode_dec_point;" context="PatternMetaCharError" attribute="Pattern Character Class"/>
+        <RegExpr String="\\[xXcCoO]?" context="#pop" attribute="Error"/>
+      </context>
+
+      <context name="PatternMetaCharError" attribute="Pattern" fallthroughContext="#pop#pop">
+        <RegExpr String=",?\s+\]?|&alnum;*(\s*,)?\s*\]?" context="#pop#pop" attribute="Error"/>
+      </context>
+
+      <context name="X[]" attribute="Pattern">
+        <RegExpr String="\s*\b&unicode_hex_point;\s*"/>
+      </context>
+
+      <context name="O[]" attribute="Pattern">
+        <RegExpr String="\s*\b&unicode_oct_point;\s*"/>
+      </context>
+
+      <context name="C[]" attribute="Pattern">
+        <RegExpr String="\s*(\b[0-9a-zA-Z]+\s*)+"/>
+      </context>
+
+      <context name="PatternMetaCharMultipleCommon" attribute="Pattern">
+        <DetectChar char="]" context="#pop#pop" attribute="Pattern Character Class"/>
+        <DetectChar char="," attribute="Separator Symbol"/>
+      </context>
+
+      <context name="PatternMetaCharX" attribute="Pattern Character Class">
+        <IncludeRules context="PatternMetaCharMultipleCommon"/>
+        <IncludeRules context="X[]"/>
+        <RegExpr String="[^0-9a-fA-F\],\s]+|[0-9a-fA-F]+|." attribute="Error"/>
+      </context>
+
+      <context name="PatternMetaCharO" attribute="Pattern Character Class">
+        <IncludeRules context="PatternMetaCharMultipleCommon"/>
+        <IncludeRules context="O[]"/>
+        <RegExpr String="[^0-7\],\s]+|[0-7]+|." attribute="Error"/>
+      </context>
+
+      <context name="PatternMetaCharC" attribute="Pattern Character Class">
+        <IncludeRules context="PatternMetaCharMultipleCommon"/>
+        <IncludeRules context="C[]"/>
+        <RegExpr String="[^0-9a-zA-Z\],\s]+|[0-9a-zA-Z]+|." attribute="Error"/>
+      </context>
+
+
+      <!-- Pattern Capture Markers: <(...)> -->
+
+      <context name="PatternCaptureMarker" attribute="Pattern">
+        <StringDetect String=")>" context="#pop" attribute="Pattern Meta Character"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+
+      <!-- Pattern Character Classes : <...> -->
+
+      <context name="RegexClass" attribute="Pattern Unicode Property" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="Pattern Meta Character"/>
+        <AnyChar String=".:" attribute="Pattern Meta Character"/>
+        <AnyChar String="|+-" attribute="Pattern Quantifier"/>
+        <AnyChar String="!?" attribute="Pattern Control Flow" context="PatternAssertion"/>
+        <DetectIdentifier attribute="Pattern Unicode Property"/>
+        <DetectChar char="[" context="RegexClassRange" attribute="Pattern Bracket"/>
+        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
+        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
+        <DetectChar char="{" context="Interpolation" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="(" context="SubExpression(" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="\" context="PatternMetaChar" lookAhead="1"/>
+      </context>
+
+      <!-- after <? or <! -->
+      <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="PatternAssertionCond">
+        <DetectChar char=">" attribute="Pattern Meta Character" context="#pop#pop"/>
+        <WordDetect String="after" attribute="Pattern Meta Character" context="PatternAssertionCond"/>
+        <WordDetect String="before" attribute="Pattern Meta Character" context="PatternAssertionCond"/>
+      </context>
+      <context name="PatternAssertionCond" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char=">" attribute="Pattern Meta Character" context="#pop#pop#pop"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <!-- Pattern <[...]> -->
+      <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <StringDetect String="]" context="#pop" attribute="Pattern Bracket"/>
+        <StringDetect String="\" context="PatternMetaChar" lookAhead="1"/>
+        <StringDetect String=".." attribute="Pattern Quantifier"/>
+      </context>
+
+
+      <context name="PatternAfterQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="PatternModifierQuantifier">
+        <StringDetect String=":" context="PatternModifierQuantifier" attribute="Pattern Modifier"/>
+        <DetectSpaces context="PatternModifierQuantifier"/>
+      </context>
+      <context name="PatternModifierQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <StringDetect String="%%" context="#pop#pop" attribute="Pattern Quantifier"/>
+        <StringDetect String="%" context="#pop#pop" attribute="Pattern Quantifier"/>
+      </context>
+
+
+      <!-- General quantifier: ** min..max -->
+
+      <context name="PatternRangeQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <Int context="#pop!PatternRangeQuantifierRng" attribute="Pattern"/>
+        <DetectChar char="^" context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <AnyChar String=":!?" attribute="Pattern Quantifier"/>
+      </context>
+
+      <context name="PatternRangeQuantifierRng" attribute="Pattern" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String="..^" context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <StringDetect String=".." context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <StringDetect String="^..^" context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <StringDetect String="^.." context="PatternRangeQuantifierInt" attribute="Operator"/>
+      </context>
+
+      <context name="PatternRangeQuantifierInt" attribute="Pattern" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <Int context="#pop#pop" attribute="Pattern"/>
+      </context>
+
+
+      <!-- Number -->
+
+      <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthroughContext="#pop#pop!postfix_op">
+        <RegExpr String="&int10;(?:\.&int10;&exp;?|&exp;)|\.&int10;&exp;?" context="NumberSuffix" attribute="Float"/>
+        <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
+        <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
+        <RegExpr String="\p{N}++(?:_\p{N}++)*+" context="NumberSuffix" attribute="Decimal"/>
+      </context>
+
+      <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="NumberCheckError">
+        <RegExpr String="[a-fA-F0-9]++(?:_[a-fA-F0-9]++)*+" context="#pop!NumberSuffix" attribute="Hex"/>
+      </context>
+
+      <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="NumberCheckError">
+        <RegExpr String="[0-7]++(?:_[0-7]++)*+" context="#pop!NumberSuffix" attribute="Octal"/>
+      </context>
+
+      <context name="NumberSuffix" attribute="Decimal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="#pop#pop#pop!postfix_op">
+        <DetectChar char="i" context="#pop!NumberCheckError" attribute="Number Suffix"/>
+        <IncludeRules context="NumberCheckError"/>
+      </context>
+      <context name="NumberCheckError" attribute="Decimal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="#pop#pop#pop!postfix_op">
+        <RegExpr String="&alnum;+" context="#pop#pop#pop!postfix_op" attribute="Error"/>
+      </context>
+
+
+      <!-- Attribute or Key -->
+
+      <!--
+        :11a
+        :!false
+        :attr
+      -->
+      <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String=":?" context="#pop" attribute="Separator Symbol"/>
+        <DetectChar char=":" attribute="Separator Symbol"/>
+        <DetectChar char="!" context="#pop" attribute="Operator"/>
+        <Int context="MaybeAttribute2" attribute="Decimal"/>
+        <RegExpr String="&datatype;" context="#pop" attribute="Data Type"/>
+        <RegExpr String="\\?&ident;" context="#pop#pop!postfix_op" attribute="Attribute"/>
+      </context>
+
+      <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop#pop!postfix_op">
+        <DetectChar char="&lt;" context="NumberWithRadix" attribute="String Delimiter"/>
+      </context>
+
+
+      <!-- ':base<NNN>' -->
+
+      <context name="NumberWithRadix" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!postfix_op">
+        <DetectChar char="&gt;" context="#pop#pop#pop#pop!postfix_op" attribute="Error"/>
+        <DetectSpaces context="#pop#pop#pop#pop!postfix_op" attribute="Error"/>
+        <RegExpr String="&intN;\.&intN;|\.&intN;" context="NumberWithRadixClose" attribute="Float"/>
+        <RegExpr String="&intN;" context="NumberWithRadixClose" attribute="Decimal"/>
+      </context>
+      <context name="NumberWithRadixClose" attribute="Decimal"
+               lineEndContext="#pop#pop#pop#pop#pop!postfix_op"
+               fallthroughContext="#pop#pop#pop#pop#pop!postfix_op">
+        <DetectChar char="&gt;" context="NumberWithRadixSuffix" attribute="String Delimiter"/>
+        <RegExpr String=" +|&alnum;+" context="#pop#pop#pop#pop#pop!postfix_op" attribute="Error"/>
+      </context>
+      <context name="NumberWithRadixSuffix" attribute="Decimal"
+               lineEndContext="#pop#pop#pop#pop#pop#pop!postfix_op"
+               fallthroughContext="#pop#pop#pop#pop#pop#pop!postfix_op">
+        <WordDetect String="i" context="#pop#pop#pop#pop#pop#pop!postfix_op" attribute="Number Suffix"/>
+      </context>
+
+
+      <!-- Pod -->
+
+      <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthroughContext="#pop">
+        <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
+        <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>
+        <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>
+        <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
+        <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
+      </context>
+
+      <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
+      </context>
+
+      <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
+        <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
+      </context>
+
+      <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
+      </context>
+
+
+      <!-- Pod formatting -->
+
+      <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
+        <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
+        <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>
+        <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
+        <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>
+        <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
+        <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
+        <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
+        <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>
+        <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
+        <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
+        <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
+        <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>
+        <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
+        <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>
+        <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
+        <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>
+        <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
+        <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
+        <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
+        <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
+        <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+      </context>
+
+      <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="#pop!PodFormatB1">
+        <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
+      </context>
+      <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
+        <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
+      </context>
+      <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
+        <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
+      </context>
+      <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
+      </context>
+
+      <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="#pop!PodFormatE1">
+        <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
+      </context>
+      <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
+        <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
+      </context>
+      <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
+        <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
+      </context>
+      <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
+      </context>
+
+      <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="#pop!PodFormatI1">
+        <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
+      </context>
+      <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
+        <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
+      </context>
+      <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
+        <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
+      </context>
+      <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
+      </context>
+
+      <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="#pop!PodFormatL1">
+        <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
+      </context>
+      <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+        <DetectChar char=">" attribute="Pod Link" context="#pop"/>
+      </context>
+      <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+        <DetectChar char="»" attribute="Pod Link" context="#pop"/>
+      </context>
+      <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
+      </context>
+
+      <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="#pop!PodFormatN1">
+        <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
+      </context>
+      <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
+        <DetectChar char=">" attribute="Pod Note" context="#pop"/>
+      </context>
+      <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
+        <DetectChar char="»" attribute="Pod Note" context="#pop"/>
+      </context>
+      <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
+      </context>
+
+      <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="#pop!PodFormatU1">
+        <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
+      </context>
+      <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
+        <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
+      </context>
+      <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
+        <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
+      </context>
+      <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
+      </context>
+
+      <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="#pop!PodFormatV1">
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
+      </context>
+      <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
+        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
+        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+
+      <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="#pop!PodFormatVT1">
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
+      </context>
+      <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
+        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
+        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+
+      <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="#pop!PodFormatZ1">
+        <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
+      </context>
+      <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
+        <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
+      </context>
+      <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
+        <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
+      </context>
+      <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
+      </context>
+
+      <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="#pop!PodFormatX1">
+        <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
+      </context>
+      <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+        <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
+      </context>
+      <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+        <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
+        <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
+      </context>
+      <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
+      </context>
+
+      <!-- Pod =begin -->
+
+      <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
+        <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
+        <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
+      </context>
+
+      <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
+        <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
+      </context>
+
+      <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodCode">
+        <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+      </context>
+      <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
+
+      <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
+      </context>
+      <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+      </context>
+
+
+      <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
+      </context>
+
+      <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="PodComment">
+        <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+      </context>
+      <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
+
+      <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
+      </context>
+      <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+      </context>
+
+
+      <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
+        <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
+        <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
+      </context>
+
+      <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthroughContext="PodInnerBlockFormat">
+        <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+        <DetectSpaces/>
+        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
+        <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
+      </context>
+
+      <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
+        <IncludeRules context="PodFormat"/>
+      </context>
+
+      <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="=" context="#stay" attribute="Pod"/>
+        <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
+      </context>
+      <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+      </context>
+
+      <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
+      </context>
+
+      <!-- Pod configuration for =begin -->
+
+      <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
+
+      <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthroughContext="PodBlockConfigError">
+        <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
+        <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
+        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthroughContext="PodBlockConfigError">
+        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthroughContext="#pop!PodBlockConfigError">
+        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthroughContext="#pop">
+        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
+        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
+        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
+      </context>
+
+
+      <!-- Pod =for -->
+
+      <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthroughContext="#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
+      </context>
+
+      <!-- Pod configuration for =for -->
+
+      <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
+
+      <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthroughContext="PodConfigError">
+        <DetectSpaces/>
+        <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
+      </context>
+
+      <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthroughContext="#pop!PodConfigError">
+        <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
+        <Int context="PodConfigKeyIntName" attribute="Decimal"/>
+        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthroughContext="#pop!PodConfigError">
+        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthroughContext="#pop#pop!PodConfigError">
+        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
+        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
+        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
+      </context>
+
+      <context name="find_PodNumber" attribute="Pod Config" lineEndContext="#stay">
+        <RegExpr String="\.?\p{N}" context="PodNumber" lookAhead="1" minimal="1"/>
+      </context>
+
+      <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
+        <DetectSpaces/>
+        <keyword String="pod values" context="#stay" attribute="Data Type"/>
+        <DetectIdentifier/>
+        <IncludeRules context="find_PodNumber"/>
+        <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
+        <DetectChar char="'" context="PodSQString" attribute="String"/>
+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+      </context>
+
+      <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
+        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
+        <keyword String="pod values" context="#stay" attribute="Data Type"/>
+        <DetectIdentifier/>
+        <DetectChar char="'" context="PodSQString" attribute="String"/>
+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+        <IncludeRules context="find_PodNumber"/>
+        <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
+      </context>
+
+      <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
+        <keyword String="pod values" context="#stay" attribute="Data Type"/>
+        <DetectIdentifier/>
+        <DetectChar char="'" context="PodSQString" attribute="String"/>
+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+        <IncludeRules context="find_PodNumber"/>
+        <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
+      </context>
+
+
+      <!-- Pod Number (same as Number with different context pop) -->
+
+      <context name="PodNumber" attribute="Decimal" lineEndContext="#stay" fallthroughContext="#pop">
+        <RegExpr String="&int10;(?:\.&int10;&exp;?|&exp;)|\.&int10;&exp;?" context="PodNumberSuffix" attribute="Float"/>
+        <Detect2Chars char="0" char1="x" context="HexPodNumber" attribute="Hex"/>
+        <Detect2Chars char="0" char1="o" context="OctalPodNumber" attribute="Octal"/>
+        <RegExpr String="\p{N}++(?:_\p{N}++)*+" context="PodNumberSuffix" attribute="Decimal"/>
+      </context>
+
+      <context name="HexPodNumber" attribute="Hex" lineEndContext="#pop#pop" fallthroughContext="PodNumberCheckError">
+        <RegExpr String="[a-fA-F0-9]++(?:_[a-fA-F0-9]++)*+" context="#pop!PodNumberSuffix" attribute="Hex"/>
+      </context>
+
+      <context name="OctalPodNumber" attribute="Octal" lineEndContext="#pop#pop" fallthroughContext="PodNumberCheckError">
+        <RegExpr String="[0-7]++(?:_[0-7]++)*+" context="#pop!PodNumberSuffix" attribute="Octal"/>
+      </context>
+
+      <context name="PodNumberSuffix" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char="i" context="#pop!PodNumberCheckError" attribute="Number Suffix"/>
+        <IncludeRules context="PodNumberCheckError"/>
+      </context>
+      <context name="PodNumberCheckError" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
+      </context>
+
+
+      <!-- Pod String -->
+
+      <context name="PodSQString" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
+        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
+        <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="PodQString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
+        <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="SpecialCharPre" attribute="String Special Character" lineEndContext="#pop">
+        <RegExpr String="[abefnrtv]|x(&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|c(&unicode_dec_point;(?![0-9])|\[[a-zA-Z\s]+\])|o(&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="String Special Character"/>
+      </context>
+      <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop" fallthroughContext="#pop">
+        <IncludeRules context="SpecialCharPre"/>
+        <RegExpr String="[^xco]" context="#pop" attribute="String"/>
+        <IncludeRules context="SpecialCharPost"/>
+      </context>
+      <context name="SpecialCharPost" attribute="String Special Character" lineEndContext="#pop">
+        <StringDetect String="x[" context="SpecialCharX" attribute="String Special Character"/>
+        <StringDetect String="c[" context="SpecialCharC" attribute="String Special Character"/>
+        <StringDetect String="o[" context="SpecialCharO" attribute="String Special Character"/>
+
+        <RegExpr String="x&unicode_hex_point;|c&unicode_dec_point;|o&unicode_oct_point;" context="SpecialCharError" attribute="String Special Character"/>
+
+        <AnyChar String="xco" context="#pop" attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharError" attribute="String Special Character" fallthroughContext="#pop#pop">
+        <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop" attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharPreCommon" attribute="String Special Character">
+        <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
+        <DetectChar char="," attribute="Separator Symbol"/>
+        <DetectChar char="&quot;" context="#pop#pop#pop" attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharX" attribute="String Special Character">
+        <IncludeRules context="SpecialCharPreCommon"/>
+        <IncludeRules context="X[]"/>
+        <RegExpr String="[^0-9a-fA-F\],\s&quot;]+|[0-9a-fA-F]+|." attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharO" attribute="String Special Character">
+        <IncludeRules context="SpecialCharPreCommon"/>
+        <IncludeRules context="O[]"/>
+        <RegExpr String="[^0-7\],\s&quot;]+|[0-7]+|." attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharC" attribute="String Special Character">
+        <IncludeRules context="SpecialCharPreCommon"/>
+        <IncludeRules context="C[]"/>
+        <RegExpr String="[^0-9a-zA-Z\],\s&quot;]+|[0-9a-zA-Z]+|." attribute="Error"/>
+      </context>
+
+
+      <!-- Q String -->
+
+      <context name="Q_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="String"/>
+        <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
+        <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
+        <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
+        <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
+        <DetectChar char="｢" context="#pop!Q_String｢" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="([^()>｣\]}'&rangealnum;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
+      </context>
+
+      <context name="Q_String(" attribute="String" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
+        <RegExpr String="[^()]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String[" attribute="String" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
+        <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String{" attribute="String" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
+        <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String｢" attribute="String" lineEndContext="#stay">
+        <DetectChar char="｣" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="Q_String｢_common"/>
+      </context>
+      <context name="Q_String｢_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="｣" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="Q_String｢_common"/>
+      </context>
+      <context name="Q_String｢_common" attribute="String" lineEndContext="#stay">
+        <DetectChar char="｢" context="Q_String｢" attribute="String Delimiter"/>
+        <RegExpr String="[^｢｣]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+        <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop#pop!q_String">
+        <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
+      </context>
+
+      <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop#pop!qq_String">
+        <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop!q_QuotingForm2">
+        <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
+        <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
+        <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
+      </context>
+
+      <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthroughContext="#pop!q_QuotingForm2">
+        <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
+        <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
+      </context>
+      <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthroughContext="q_String">
+        <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
+        <keyword String="quoting" context="#stay" attribute="Operator"/>
+        <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
+        <!-- :closure as qq -->
+        <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
+        <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
+      </context>
+
+      <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthroughContext="qq_String">
+        <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
+        <keyword String="quoting" context="#stay" attribute="Operator"/>
+        <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
+        <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
+      </context>
+
+
+      <!-- q and qq Heredoc -->
+
+      <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
+      </context>
+      <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
+        <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
+      </context>
+      <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+
+      <!-- q String -->
+
+      <context name="q_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
+        <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
+        <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
+      </context>
+
+      <context name="q_String(" attribute="String" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_String[" attribute="String" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_String{" attribute="String" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="q_String&lt;_common"/>
+      </context>
+      <context name="q_String&lt;_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="q_String&lt;_common"/>
+      </context>
+      <context name="q_String&lt;_common" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_StringAny" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_RawString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="q_RawString_common"/>
+      </context>
+      <context name="q_RawString_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="'" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="q_RawString_common"/>
+      </context>
+      <context name="q_RawString_common" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <!-- qq String -->
+
+      <context name="qq_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
+        <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
+        <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
+      </context>
+
+      <context name="qq_String(" attribute="String" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String[" attribute="String" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String{" attribute="String" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String«" attribute="String" lineEndContext="#stay">
+        <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String«_common"/>
+      </context>
+      <context name="qq_String«_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="»" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String«_common"/>
+      </context>
+      <context name="qq_String«_common" attribute="String" lineEndContext="#stay">
+        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String&lt;&lt;_common"/>
+      </context>
+      <context name="qq_String&lt;&lt;_term" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char=">" char1=">" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String&lt;&lt;_common"/>
+      </context>
+      <context name="qq_String&lt;&lt;_common" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_RawString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="qq_RawString_common"/>
+      </context>
+      <context name="qq_RawString_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="qq_RawString_common"/>
+      </context>
+      <context name="qq_RawString_common" attribute="String" lineEndContext="#stay">
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
+        <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
+        <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
+        <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
+        <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
+        <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
+      </context>
+
+      <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
+        <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
+        <DetectChar char="\" context="#pop!qq_StringSpecialChar" attribute="String Special Character"/>
+      </context>
+      <context name="qq_StringSpecialChar" attribute="String Special Character" lineEndContext="#pop">
+        <IncludeRules context="SpecialCharPre"/>
+        <RegExpr String="[^xco]" context="#pop" attribute="String Special Character"/>
+        <IncludeRules context="SpecialCharPost"/>
+      </context>
+
+      <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
+        <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
+        <DetectChar char="&amp;" context="#pop" attribute="String"/>
+      </context>
+
+      <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
+        <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
+        <DetectChar char="$" context="#pop" attribute="String"/>
+      </context>
+
+      <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
+        <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
+        <AnyChar String="@%" context="#pop" attribute="String"/>
+      </context>
+
+      <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
+        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
+        <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
+      </context>
+
+      <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
+        <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
+      </context>
+
+      <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
+        <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
+        <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
+      </context>
+
+      <context name="FunctionParameters" attribute="String" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="#pop" attribute="Function"/>
+        <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
+        <IncludeRules context="base"/>
+      </context>
+
+
+      <!-- Comment -->
+
+      <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="SingleLineComment">
+        <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
+        <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
+      </context>
+
+      <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop!SingleLineComment">
+        <!-- TODO a new rule is needed to find the corresponding closures -->
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
+        <!-- etc -->
+      </context>
+
+      <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
+        <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
+        <IncludeRules context="SingleLineComment"/>
+      </context>
+      <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
+      </context>
+
+      <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
+      </context>
+
+      <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
+      </context>
+
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <!-- Error -->
+
+      <context name="Error" attribute="Error" lineEndContext="#pop"/>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"               defStyleNum="dsNormal"/>
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
+      <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
+      <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Symbol"                    defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Operator"                  defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Member Operator"           defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Hyper Operator"            defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Number Suffix"             defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="String"                    defStyleNum="dsString"/>
+      <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="String (interpolated)"     defStyleNum="dsString"/>
+      <itemData name="String Special Character"  defStyleNum="dsChar"/>
+      <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Pattern Delimiter"         defStyleNum="dsVerbatimString" spellChecking="false"/>
+      <itemData name="Pattern Bracket"           defStyleNum="dsExtension" spellChecking="false"/>
+      <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Pattern Character"         defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Pattern Named Capture"     defStyleNum="dsAnnotation" spellChecking="false"/>
       <itemData name="Comment"                   defStyleNum="dsComment"/>
       <itemData name="Error"                     defStyleNum="dsError" spellChecking="false"/>
       <itemData name="Pod"                       defStyleNum="dsDocumentation" spellChecking="false"/>
diff --git a/xml/raku.xml.patch b/xml/raku.xml.patch
new file mode 100644
--- /dev/null
+++ b/xml/raku.xml.patch
@@ -0,0 +1,21 @@
+--- raku.xml	2023-12-02 17:57:32.000000000 -0800
++++ raku.new	2023-12-02 17:57:07.000000000 -0800
+@@ -8,7 +8,8 @@
+   -->
+   <!-- Large values -->
+   <!ENTITY rangealnum "_\p{L}\p{N}">
+-  <!ENTITY alnum "[_\p{L}\p{N}]">
++  <!ENTITY _alnum "_\p{L}\p{N}">
++  <!ENTITY alnum "[&_alnum;]">
+   <!ENTITY _ident "&alnum;*+(?:[-']&alnum;*+)*+">
+   <!ENTITY ident "(?:[_\p{L}]&_ident;)">
+   <!ENTITY datatype "(?:[_\p{Lu}\p{Lt}]&_ident;)">
+@@ -828,7 +829,7 @@
+         <RegExpr String="&variable;|@" attribute="Variable"/>
+         <RegExpr String="\$&lt;&ident;>?" attribute="Pattern Named Capture"/>
+         <AnyChar String="&amp;|^$" attribute="Pattern Control Flow"/>
+-        <RegExpr String="[&alnum;\s]+" attribute="Pattern"/>
++        <RegExpr String="[&_alnum;\s]+" attribute="Pattern"/>
+         <AnyChar String=">)]" attribute="Error"/>
+       </context>
+ 
diff --git a/xml/rest.xml b/xml/rest.xml
--- a/xml/rest.xml
+++ b/xml/rest.xml
@@ -14,7 +14,7 @@
   Copyright 2010 Matt Williams (matt@milliams.com)
   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
   -->
-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="9" kateversion="5.0" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="10" kateversion="5.0" casesensitive="1">
 
   <highlighting>
 
@@ -44,7 +44,7 @@
         <RegExpr attribute="SubstitutionReference" context="#stay" String="&inlinestart;\|[^\s].*\|&inlineend;" minimal="true"/>
         <RegExpr attribute="InlineInternalTarget" context="#stay" String="&inlinestart;_`[^\s].*`&inlineend;" minimal="true"/>
         <RegExpr attribute="FootnoteReference" context="#stay" String="&inlinestart;\[[&SimpleReferenceNameChars;]+\]_&inlineend;" minimal="true"/>
-        <RegExpr attribute="HyperlinkReference" context="#stay" String="&inlinestart;(`[^\s].*`|\w+)_&inlineend;" minimal="true"/>
+        <RegExpr attribute="HyperlinkReference" context="#stay" String="&inlinestart;(`[^\s].*`|\w+)_{1,2}&inlineend;" minimal="true"/>
         <RegExpr attribute="InterpretedText" context="TrailingRole" String="&inlinestart;`[^\s].*`(?=:([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:)" minimal="true"/>
         <RegExpr attribute="Role" String=":([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:(?=`)" context="Role"/>
         <RegExpr attribute="DefaultRole" context="#stay" String="&inlinestart;`[^\s].*`&inlineend;" minimal="true"/>
diff --git a/xml/rhtml.xml b/xml/rhtml.xml
--- a/xml/rhtml.xml
+++ b/xml/rhtml.xml
@@ -44,7 +44,7 @@
 -->
 	
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
-<language name="Ruby/Rails/RHTML" version="14" kateversion="5.63" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
+<language name="Ruby/Rails/RHTML" version="15" kateversion="5.79" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
 	
 	<highlighting>
 	
diff --git a/xml/sass.xml b/xml/sass.xml
--- a/xml/sass.xml
+++ b/xml/sass.xml
@@ -6,26 +6,23 @@
   <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
 ]>
 
-<language name="SASS" version="8" kateversion="5.53" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
+<language name="SASS" version="8" kateversion="5.79" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
 
     <highlighting>
-        <list name="properties">
-            <include>properties##SCSS</include>
-            <include>sub-properties##SCSS</include>
-        </list>
+        <list name="properties"><include>properties##SCSS</include></list>
+        <list name="vendor properties"><include>vendor properties##SCSS</include></list>
+        <list name="sub-properties"><include>sub-properties##SCSS</include></list>
         <list name="special values"><include>special values##SCSS</include></list>
         <list name="value keywords"><include>value keywords##SCSS</include></list>
         <list name="values"><include>values##SCSS</include></list>
         <list name="colors"><include>colors##SCSS</include></list>
         <list name="functions"><include>functions##SCSS</include></list>
-        <list name="medias"><include>medias##SCSS</include></list>
-        <list name="pseudoelements"><include>pseudoelements##SCSS</include></list>
-        <list name="pseudoclasses"><include>pseudoclasses##SCSS</include></list>
-        <list name="pseudoclass-selector"><include>pseudoclass-selector##SCSS</include></list>
-        <list name="pseudoclasses-@page"><include>pseudoclasses-@page##SCSS</include></list>
+        <list name="media types"><include>media types##SCSS</include></list>
+        <list name="media features"><include>media features##SCSS</include></list>
+        <list name="pseudo-elements"><include>pseudo-elements##SCSS</include></list>
+        <list name="pseudo-classes"><include>pseudo-classes##SCSS</include></list>
+        <list name="@page pseudo-classes"><include>@page pseudo-classes##SCSS</include></list>
         <list name="at-rules"><include>at-rules##SCSS</include></list>
-        <list name="nested at-rules"><include>nested at-rules##SCSS</include></list>
-        <list name="other at-rules"><include>other at-rules##SCSS</include></list>
         <list name="media operators"><include>media operators##SCSS</include></list>
         <list name="operators"><include>operators##SCSS</include></list>
         <list name="annotations"><include>annotations##SCSS</include></list>
@@ -94,24 +91,24 @@
                 <DetectChar attribute="Annotation" context="Annotation" char="!" />
                 <keyword attribute="Operator" context="#stay" String="operators" />
                 <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
+                <keyword attribute="Value Keyword" context="#stay" String="special values" />
                 <keyword attribute="Value" context="#stay" String="values" />
                 <keyword attribute="Color" context="#stay" String="colors" />
                 <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
                 <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
                 <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
-                <keyword attribute="Value Keyword" context="#stay" String="special values" />
                 <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
                 <AnyChar attribute="Operator" context="#stay" String="*/+%-" />
                 <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
                 <keyword attribute="Annotation" context="#pop" String="annotations" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
                 <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)" />
             </context>
 
@@ -135,7 +132,7 @@
                 <Detect2Chars attribute="Comment" context="IsInlineComment2" char="/" char1="*" />
             </context>
 
-            <context name="Comment" attribute="Comment" lineEndContext="#stay" dynamic="true" fallthrough="true" fallthroughContext="IsInlineComment">
+            <context name="Comment" attribute="Comment" lineEndContext="#stay" dynamic="true" fallthroughContext="IsInlineComment">
                 <RegExpr attribute="Comment" context="IsInlineComment" String="^%1\s|^\s*$" dynamic="true" column="0" />
                 <DetectSpaces attribute="Normal Text" context="#pop" lookAhead="true" column="0" />
                 <RegExpr attribute="Comment" context="#pop" String="." lookAhead="true" column="0"/>
@@ -155,7 +152,6 @@
             </context>
 
             <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
-                <keyword attribute="At Rule" context="#pop!AtRule" String="nested at-rules" />
                 <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
                 <!-- CSS: inline -->
                 <!-- SCSS: inline or block -->
@@ -225,8 +221,8 @@
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
             </context>
 
-            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
+            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthroughContext="#pop">
+                <keyword attribute="Selector Pseudo" context="#pop" String="@page pseudo-classes" />
                 <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
 
@@ -238,7 +234,8 @@
                 <IncludeRules context="FindFunctions" />
                 <keyword attribute="Keyword" context="#stay" String="media operators" />
                 <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
-                <keyword attribute="Value" context="#stay" String="medias" />
+                <keyword attribute="Value" context="#stay" String="media types" />
+                <keyword attribute="Value" context="#stay" String="media features" />
                 <IncludeRules context="FindValues" />
             </context>
 
@@ -264,30 +261,18 @@
             <!-- same as SCSS -->
             <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudo-classes" />
                 <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
 
             <!-- same as SCSS -->
             <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
-                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
+                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudo-elements" />
                 <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#pop#pop#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <!-- same as SCSS -->
-            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
             </context>
 
@@ -303,6 +288,7 @@
                 <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
                 <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
                 <keyword attribute="Property" context="#stay" String="properties" />
+                <keyword attribute="Property" context="#stay" String="sub-properties" />
                 <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
             </context>
 
@@ -333,7 +319,7 @@
             </context>
 
             <!-- same as SCSS -->
-            <context name="FunctionVar" attribute="Variable" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
+            <context name="FunctionVar" attribute="Variable" lineEndContext="#pop#pop" fallthroughContext="#pop!FunctionParameters">
                 <DetectSpaces />
                 <IncludeRules context="FindComments" />
                 <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
@@ -365,7 +351,7 @@
             </context>
 
             <!-- same as SCSS -->
-            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="UrlValue">
+            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="UrlValue">
                 <DetectSpaces />
                 <IncludeRules context="FindStrings" />
                 <DetectChar attribute="Function" context="#pop#pop" char=")" />
diff --git a/xml/scala.xml b/xml/scala.xml
--- a/xml/scala.xml
+++ b/xml/scala.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language>
-<language name="Scala" version="11" kateversion="5.62" section="Sources"
+<language name="Scala" version="12" kateversion="5.79" section="Sources"
           extensions="*.scala;*.sbt" mimetype="text/x-scala" license="LGPL"
           author="Stephane Micheloud (stephane.micheloud@epfl.ch)">
 <!--
diff --git a/xml/scss.xml b/xml/scss.xml
--- a/xml/scss.xml
+++ b/xml/scss.xml
@@ -2,1044 +2,1495 @@
 <!DOCTYPE language
 [
   <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
-  <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-  <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-]>
-
-<!--
-
-Kate SCSS syntax highlighting definition
-
-Changelog:
-
-- Version 7, by Jonathan Poelen
-- fix tag followed by a pseudo-class in a nested rule (@media, ...)
-- fix constraint in a rule
-- fix Kate auto-completion for properties and rules
-- fix highlighting of pseudoclass/pseudoelement in a sub-rule
-- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Value Keyword, Color, Number, Unit, Selector Tag, Placeholder Selector
-
-- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
-- Remake for complex SCSS syntax, avoid errors
-
-- Version 2.06, by Guo Yunhe
-- Add all W3C Work Draft properties, inherit rules from css.xml
-
-- Version 1.2.03.6, by Mte90
-- Css3 Tag
-
-- Version 1.2.03.1, by Tijn Schuurmans
-- Added basic support for "@include mixin();"
-- Clean the indentation to use 4 spaces everywhere
-
--->
-
-<language name="SCSS" version="15" kateversion="5.53" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
-
-    <highlighting>
-        <list name="properties">
-            <include>properties##CSS</include>
-        </list>
-
-        <list name="sub-properties">
-            <item>action</item>
-            <item>adjust</item>
-            <item>after</item>
-            <item>align-all</item>
-            <item>align-last</item>
-            <item>align</item>
-            <item>alternates</item>
-            <item>anchor</item>
-            <item>area</item>
-            <item>areas</item>
-            <item>as</item>
-            <item>attachment</item>
-            <item>auto-columns</item>
-            <item>auto-flow</item>
-            <item>auto-rows</item>
-            <item>balance</item>
-            <item>baseline</item>
-            <item>basis</item>
-            <item>before</item>
-            <item>behavior-block</item>
-            <item>behavior-inlie</item>
-            <item>behavior-x</item>
-            <item>behavior-y</item>
-            <item>behavior</item>
-            <item>bidi</item>
-            <item>blend-mode</item>
-            <item>block-color</item>
-            <item>block-end-color</item>
-            <item>block-end-style</item>
-            <item>block-end-width</item>
-            <item>block-end</item>
-            <item>block-start-color</item>
-            <item>block-start-style</item>
-            <item>block-start-width</item>
-            <item>block-start</item>
-            <item>block-style</item>
-            <item>block-width</item>
-            <item>block</item>
-            <item>border-mode</item>
-            <item>border-outset</item>
-            <item>border-repeat</item>
-            <item>border-slice</item>
-            <item>border-source</item>
-            <item>bottom-color</item>
-            <item>bottom-left-radius</item>
-            <item>bottom-right-radius</item>
-            <item>bottom-style</item>
-            <item>bottom-width</item>
-            <item>boundary-detection</item>
-            <item>boundary-expansion</item>
-            <item>boundary</item>
-            <item>box</item>
-            <item>break</item>
-            <item>caps</item>
-            <item>cells</item>
-            <item>change</item>
-            <item>character</item>
-            <item>chars</item>
-            <item>clamp</item>
-            <item>clip-margin</item>
-            <item>collapse</item>
-            <item>color-adjust</item>
-            <item>column-end</item>
-            <item>column-start</item>
-            <item>column</item>
-            <item>combine-upright</item>
-            <item>composite</item>
-            <item>contain</item>
-            <item>count</item>
-            <item>decoration-break</item>
-            <item>decoration-color</item>
-            <item>decoration-line</item>
-            <item>decoration-skip-box</item>
-            <item>decoration-skip-ink</item>
-            <item>decoration-skip-inset</item>
-            <item>decoration-skip-self</item>
-            <item>decoration-skip-spaces</item>
-            <item>decoration-skip</item>
-            <item>decoration-style</item>
-            <item>decoration-thickness</item>
-            <item>decoration-width</item>
-            <item>decoration</item>
-            <item>defer</item>
-            <item>delay</item>
-            <item>detection</item>
-            <item>distance</item>
-            <item>down</item>
-            <item>duration</item>
-            <item>during</item>
-            <item>east-asian</item>
-            <item>edge</item>
-            <item>end-end-radius</item>
-            <item>end-radius</item>
-            <item>end-start-radius</item>
-            <item>end-style</item>
-            <item>end-width</item>
-            <item>end</item>
-            <item>events</item>
-            <item>expansion</item>
-            <item>family</item>
-            <item>feature-settings</item>
-            <item>fill-mode</item>
-            <item>filters</item>
-            <item>fit</item>
-            <item>flow</item>
-            <item>fragment</item>
-            <item>from</item>
-            <item>function</item>
-            <item>group-align</item>
-            <item>grow</item>
-            <item>gutter</item>
-            <item>header</item>
-            <item>height-step</item>
-            <item>image-outset</item>
-            <item>image-repeat</item>
-            <item>image-slice</item>
-            <item>image-source</item>
-            <item>image-threshold</item>
-            <item>image-transform</item>
-            <item>image-width</item>
-            <item>image</item>
-            <item>increment</item>
-            <item>indent</item>
-            <item>ink</item>
-            <item>inline-color</item>
-            <item>inline-end-color</item>
-            <item>inline-end-style</item>
-            <item>inline-end-width</item>
-            <item>inline-end</item>
-            <item>inline-start-color</item>
-            <item>inline-start-style</item>
-            <item>inline-start-width</item>
-            <item>inline-start</item>
-            <item>inline-style</item>
-            <item>inline-width</item>
-            <item>inline</item>
-            <item>insert</item>
-            <item>inside</item>
-            <item>interpolation-filters</item>
-            <item>into</item>
-            <item>intrinsic-block-size</item>
-            <item>intrinsic-sizing</item>
-            <item>items</item>
-            <item>iteration-count</item>
-            <item>justify</item>
-            <item>kerning</item>
-            <item>knockout-left</item>
-            <item>knockout-right</item>
-            <item>label</item>
-            <item>language-override</item>
-            <item>last</item>
-            <item>layout</item>
-            <item>left-color</item>
-            <item>left-radius</item>
-            <item>left-style</item>
-            <item>left-width</item>
-            <item>letter-align</item>
-            <item>letter-wrap</item>
-            <item>letter</item>
-            <item>level</item>
-            <item>ligatures</item>
-            <item>limit-chars</item>
-            <item>limit-last</item>
-            <item>limit-lines</item>
-            <item>limit-zone</item>
-            <item>line</item>
-            <item>lines</item>
-            <item>loop</item>
-            <item>max-size</item>
-            <item>merge</item>
-            <item>mid</item>
-            <item>min-size</item>
-            <item>mode</item>
-            <item>name</item>
-            <item>navigation-action</item>
-            <item>navigation-contain</item>
-            <item>navigation-function</item>
-            <item>numeral</item>
-            <item>numeric</item>
-            <item>optical-sizing</item>
-            <item>order</item>
-            <item>orientation-vertical</item>
-            <item>orientation</item>
-            <item>origin</item>
-            <item>outset</item>
-            <item>outside</item>
-            <item>overhang</item>
-            <item>override</item>
-            <item>palette</item>
-            <item>path</item>
-            <item>pattern</item>
-            <item>pitch</item>
-            <item>play-state</item>
-            <item>point</item>
-            <item>policy</item>
-            <item>property</item>
-            <item>punctuation</item>
-            <item>radius</item>
-            <item>range</item>
-            <item>rate</item>
-            <item>ratio</item>
-            <item>reference</item>
-            <item>rendering</item>
-            <item>repeat</item>
-            <item>reset</item>
-            <item>resolution</item>
-            <item>right-color</item>
-            <item>right-radius</item>
-            <item>right-style</item>
-            <item>right-width</item>
-            <item>round</item>
-            <item>row-end</item>
-            <item>row-start</item>
-            <item>row</item>
-            <item>rows</item>
-            <item>rule-color</item>
-            <item>rule-style</item>
-            <item>rule-width</item>
-            <item>rule</item>
-            <item>scheme</item>
-            <item>segment</item>
-            <item>select</item>
-            <item>self</item>
-            <item>set</item>
-            <item>settings</item>
-            <item>shadow</item>
-            <item>shape</item>
-            <item>shift</item>
-            <item>shrink</item>
-            <item>side</item>
-            <item>size-adjust</item>
-            <item>size</item>
-            <item>sizing</item>
-            <item>skip-box</item>
-            <item>skip-ink</item>
-            <item>skip-inset</item>
-            <item>skip-self</item>
-            <item>skip-spaces</item>
-            <item>skip</item>
-            <item>slice</item>
-            <item>small-caps</item>
-            <item>snap-align</item>
-            <item>snap-stop</item>
-            <item>snap-type</item>
-            <item>snap</item>
-            <item>source</item>
-            <item>space-collapse</item>
-            <item>space-trim</item>
-            <item>space</item>
-            <item>spaces</item>
-            <item>spacing</item>
-            <item>span</item>
-            <item>speed</item>
-            <item>start-color</item>
-            <item>start-end-radius</item>
-            <item>start-radius</item>
-            <item>start-start-radius</item>
-            <item>start-style</item>
-            <item>start-width</item>
-            <item>start</item>
-            <item>state</item>
-            <item>step-align</item>
-            <item>step-insert</item>
-            <item>step-round</item>
-            <item>step-size</item>
-            <item>step</item>
-            <item>stop</item>
-            <item>stress</item>
-            <item>stretch</item>
-            <item>style-image</item>
-            <item>style-position</item>
-            <item>style-type</item>
-            <item>style</item>
-            <item>synthesis-small-caps</item>
-            <item>synthesis-style</item>
-            <item>synthesis-weight</item>
-            <item>synthesis</item>
-            <item>template-areas</item>
-            <item>template-columns</item>
-            <item>template-rows</item>
-            <item>template</item>
-            <item>thickness</item>
-            <item>threshold</item>
-            <item>through</item>
-            <item>timing-function</item>
-            <item>top-color</item>
-            <item>top-left-radius</item>
-            <item>top-right-radius</item>
-            <item>top-style</item>
-            <item>top-width</item>
-            <item>trim</item>
-            <item>type</item>
-            <item>underline-offset</item>
-            <item>underline-position</item>
-            <item>up</item>
-            <item>upright</item>
-            <item>variant-alternates</item>
-            <item>variant-caps</item>
-            <item>variant-east-asian</item>
-            <item>variant-emoji</item>
-            <item>variant-ligatures</item>
-            <item>variant-numeric</item>
-            <item>variant-position</item>
-            <item>variant</item>
-            <item>variation-settings</item>
-            <item>vertical</item>
-            <item>weight</item>
-            <item>wrap</item>
-            <item>x</item>
-            <item>y</item>
-            <item>zone</item>
-        </list>
-
-        <list name="special values">
-            <item>true</item>
-            <item>false</item>
-            <item>null</item>
-        </list>
-
-        <list name="value keywords">
-            <include>value keywords##CSS</include>
-        </list>
-
-        <list name="values">
-            <include>values##CSS</include>
-        </list>
-
-        <list name="colors">
-            <include>colors##CSS</include>
-        </list>
-
-        <list name="functions">
-            <include>functions##CSS</include>
-
-            <!-- sass -->
-            <item>red</item>
-            <item>green</item>
-            <item>blue</item>
-            <item>mix</item>
-            <item>hue</item>
-            <item>saturation</item>
-            <item>lightness</item>
-            <item>adjust-hue</item>
-            <item>lighten</item>
-            <item>darken</item>
-            <item>saturate</item>
-            <item>desaturate</item>
-            <item>grayscale</item>
-            <item>complement</item>
-            <item>invert</item>
-            <item>alpha</item>
-            <item>opacify</item>
-            <item>transparentize</item>
-            <item>adjust-color</item>
-            <item>scale-color</item>
-            <item>change-color</item>
-            <item>ie-hex-str</item>
-            <item>unquote</item>
-            <item>quote</item>
-            <item>str-length</item>
-            <item>str-insert</item>
-            <item>str-index</item>
-            <item>str-slice</item>
-            <item>to-upper-case</item>
-            <item>to-lower-case</item>
-            <item>percentage</item>
-            <item>round</item>
-            <item>ceil</item>
-            <item>floor</item>
-            <item>abs</item>
-            <item>min</item>
-            <item>max</item>
-            <item>random</item>
-            <item>length</item>
-            <item>nth</item>
-            <item>set-nth</item>
-            <item>join</item>
-            <item>append</item>
-            <item>zip</item>
-            <item>index</item>
-            <item>list-separator</item>
-            <item>is-bracketed</item>
-            <item>map-get</item>
-            <item>map-merge</item>
-            <item>map-remove</item>
-            <item>map-keys</item>
-            <item>map-values</item>
-            <item>map-has-key</item>
-            <item>keywords</item>
-            <item>selector-nest</item>
-            <item>selector-append</item>
-            <item>selector-extend</item>
-            <item>selector-replace</item>
-            <item>selector-unify</item>
-            <item>is-superselector</item>
-            <item>simple-selectors</item>
-            <item>selector-parse</item>
-            <item>feature-exists</item>
-            <item>variable-exists</item>
-            <item>global-variable-exists</item>
-            <item>function-exists</item>
-            <item>mixin-exists</item>
-            <item>content-exists</item>
-            <item>inspect</item>
-            <item>type-of</item>
-            <item>unit</item>
-            <item>unitless</item>
-            <item>comparable</item>
-            <item>call</item>
-            <item>get-function</item>
-            <item>if</item>
-            <item>unique-id</item>
-        </list>
-
-        <list name="medias">
-            <include>medias##CSS</include>
-        </list>
-
-        <!-- prefixed by :: -->
-        <list name="pseudoelements">
-            <include>pseudoelements##CSS</include>
-        </list>
-
-        <!-- prefixed by : -->
-        <list name="pseudoclasses">
-            <include>pseudoclasses##CSS</include>
-        </list>
-
-        <list name="pseudoclass-selector">
-            <include>pseudoclass-selector##CSS</include>
-        </list>
-
-        <list name="pseudoclasses-@page">
-            <include>pseudoclasses-@page##CSS</include>
-        </list>
-
-        <list name="at-rules">
-            <include>at-rules##CSS</include>
-
-            <!-- scss -->
-            <item>@debug</item>
-            <item>@warn</item>
-            <item>@error</item>
-            <item>@content</item>
-            <item>@return</item>
-        </list>
-
-        <list name="nested at-rules">
-            <include>nested at-rules##CSS</include>
-
-            <!-- scss -->
-            <item>@at-rule</item>
-            <item>@for</item>
-            <item>@each</item>
-            <item>@while</item>
-        </list>
-
-        <list name="other at-rules">
-            <include>other at-rules##CSS</include>
-
-            <!-- scss -->
-            <item>@else</item>
-            <item>@extend</item>
-            <item>@function</item>
-            <item>@if</item>
-            <item>@include</item>
-            <item>@mixin</item>
-        </list>
-
-        <list name="within-@viewport">
-            <include>within-@viewport##CSS</include>
-        </list>
-
-        <list name="within-@page">
-            <include>within-@page##CSS</include>
-        </list>
-
-        <list name="within-@font-face">
-            <include>within-@font-face##CSS</include>
-        </list>
-
-        <list name="within-@keyframes">
-            <include>within-@keyframes##CSS</include>
-        </list>
-
-        <list name="media operators">
-            <include>media operators##CSS</include>
-        </list>
-
-        <list name="operators">
-            <item>and</item>
-            <item>or</item>
-            <item>not</item>
-        </list>
-
-        <list name="annotations">
-            <item>important</item>
-            <item>default</item>
-            <item>global</item>
-        </list>
-
-        <contexts>
-            <context name="Base" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
-                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <DetectChar attribute="Separator Symbol" context="IsSelectors" char="," />
-                <AnyChar attribute="Operator" context="IsSelectors" String="*>+~|&amp;" />
-                <RegExpr attribute="Selector Pseudo" context="SelectorPseudo" String=":(?=[a-z:])" />
-                <RegExpr attribute="Selector Id" context="IsSelectors" String="#[-]?(&nmstart;)(&nmchar;)*" />
-                <RegExpr attribute="Selector Class" context="IsSelectors" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Placeholder Selector" context="IsSelectors" String="%[_a-zA-Z][_a-zA-Z\-]*" />
-                <RegExpr attribute="Selector Tag" context="IsSelectors" String="[-]?(&nmstart;)(&nmchar;)*(?=\s|:?[#.&amp;{[*>+~|,]|:[a-z:])" />
-                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
-                <Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
-            </context>
-
-            <context name="IsSelectors" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="At Rule" context="#pop!SelectAtRule" char="@" lookAhead="true" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Error" context="#pop" char=";" />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|&amp;" />
-                <IncludeRules context="SelectorTypes" />
-            </context>
-
-            <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
-                <AnyChar attribute="Error" context="#stay" String=",&amp;" />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
-                <IncludeRules context="SelectorTypes" />
-            </context>
-
-            <context name="SelectorTypes" attribute="Normal Text" lineEndContext="#stay">
-                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
-                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Placeholder Selector" context="#stay" String="%[_a-zA-Z][_a-zA-Z\-]*" />
-                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
-            </context>
-
-            <context name="VariableDefine" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-            </context>
-
-            <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Interpolation" context="#pop" char="}" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-            </context>
-
-            <context name="InterpolationMaybeProperty" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Interpolation" context="#pop!MaybeProperty" char="}" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-            </context>
-
-            <context name="MaybeProperty" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Normal Text" context="Rule" String=":($|[/{\s0-9$&quot;'])" lookAhead="true"/>
-            </context>
-
-
-            <!-- find functions // rgba(255,255,255,0.75) -->
-            <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
-            </context>
-
-            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
-            <context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Annotation" context="Annotation" char="!" />
-                <keyword attribute="Operator" context="#stay" String="operators" />
-                <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
-                <keyword attribute="Value" context="#stay" String="values" />
-                <keyword attribute="Color" context="#stay" String="colors" />
-                <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
-                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
-                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
-                <keyword attribute="Value Keyword" context="#stay" String="special values" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-                <AnyChar attribute="Operator" context="#stay" String="*/+%-" />
-                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
-            </context>
-
-            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <keyword attribute="Annotation" context="#pop" String="annotations" />
-            </context>
-
-            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)" />
-            </context>
-
-            <!-- find strings // "some words" 'some words' -->
-            <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="String" context="StringDQ" char="&quot;" />
-                <DetectChar attribute="String" context="StringSQ" char="'" />
-            </context>
-
-            <!-- find comments // /* comment */ -->
-            <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="/" lookAhead="true"/>
-                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/>
-            </context>
-
-            <context name="IsComments" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Region Marker" context="#stay" String="/\*\s*BEGIN\b.*\*/|//\s*BEGIN\b.*" beginRegion="UserDefined" />
-                <RegExpr attribute="Region Marker" context="#stay" String="/\*\s*END\b.*\*/|//\s*END\b.*" endRegion="UserDefined" />
-                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
-                <Detect2Chars attribute="Comment" context="SassComment" char="/" char1="/" />
-            </context>
-
-            <context name="SassComment" attribute="Comment" lineEndContext="#pop#pop">
-                <DetectSpaces />
-                <IncludeRules context="##Comments" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
-                <keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" />
-                <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
-                <!-- CSS: inline -->
-                <!-- SCSS: inline or block -->
-                <WordDetect attribute="At Rule" context="#pop!UnknownAtRule" String="@include" />
-                <WordDetect attribute="At Rule" context="#pop!@extend" String="@extend" />
-                <WordDetect attribute="At Rule" context="#pop!@mixin" String="@mixin" />
-                <WordDetect attribute="At Rule" context="#pop!@mixin" String="@function" />
-                <WordDetect attribute="At Rule" context="#pop!@keyframes" String="@keyframes" />
-                <WordDetect attribute="At Rule" context="#pop!@viewport" String="@viewport" />
-                <WordDetect attribute="At Rule" context="#pop!@font-face" String="@font-face" />
-                <WordDetect attribute="At Rule" context="#pop!@if" String="@if" />
-                <WordDetect attribute="At Rule" context="#pop!@else" String="@else" />
-                <WordDetect attribute="At Rule" context="#pop!@page" String="@page" />
-                <RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" />
-            </context>
-
-            <context name="@if" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;" />
-            </context>
-
-            <context name="@else" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <WordDetect attribute="At Rule" context="#pop!@if" String="if" />
-                <DetectIdentifier attribute="Error" />
-            </context>
-
-            <context name="@extend" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <context name="@mixin" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Function" context="MixinParameter" String="[a-zA-Z0-9\-_]+" />
-            </context>
-
-            <context name="MixinParameter" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <AnyChar attribute="Normal Text" context="#stay" String="()" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
-                <StringDetect attribute="Operator" context="#stay" String="..." />
-            </context>
-
-            <context name="@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <keyword attribute="Value" context="#stay" String="within-@keyframes" />
-                <RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" />
-            </context>
-
-            <context name="@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@viewport" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <keyword attribute="Property" context="IsProperty" String="within-@font-face" />
-                <RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-            </context>
-
-            <context name="@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
-                <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="Within-@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@page" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="IsProperty" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-                <IncludeRules context="FindComments" />
-            </context>
-
-            <context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Operator" context="#stay" char="&amp;" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <keyword attribute="Keyword" context="#stay" String="media operators" />
-                <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
-                <keyword attribute="Value" context="#stay" String="medias" />
-                <IncludeRules context="FindValues" />
-            </context>
-
-            <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop" char="]" />
-                <IncludeRules context="FindStrings" />
-                <DetectChar   attribute="Operator" context="SelectorAttrValue" char="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorAttrValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
-                <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
-                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
-                <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="Comment" attribute="Comment" lineEndContext="#stay">
-                <DetectSpaces />
-                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
-                <IncludeRules context="##Comments" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="RuleSet" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+\s*:($|[/{\s0-9$&quot;'])" lookAhead="true" />
-                <IncludeRules context="Base" />
-            </context>
-
-            <context name="Rule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-                <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
-                <keyword attribute="Property" context="#stay" String="properties" />
-                <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
-                <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
-                <RegExpr attribute="Variable" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <!-- Jump out conditions -->
-                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="SubRule" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-            </context>
-
-            <context name="SubRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
-                <RegExpr attribute="Property" context="IsProperty" String="[A-Za-z_-]+(?=\s*:)" />
-                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
-                <Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
-                <DetectIdentifier />
-                <AnyChar attribute="Error" context="#stay" String="*>+~|.#" />
-            </context>
-
-            <context name="Function" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="FunctionParameters" char="(" />
-                <StringDetect attribute="Function" context="FunctionVar" String="var(" />
-                <StringDetect attribute="Function" context="FunctionUrl" String="url(" />
-                <StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
-                <keyword attribute="Function" context="#stay" String="functions" />
-                <RegExpr attribute="Function" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
-            </context>
-
-            <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="Calc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
-            </context>
-
-            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue">
-                <DetectSpaces />
-                <IncludeRules context="FindStrings" />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-            </context>
-
-            <context name="UrlValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
-            </context>
-
-            <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <StringDetect attribute="Operator" String="..." />
-            </context>
-
-            <!-- string contexts -->
-            <context name="StringDQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="&quot;" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="StringSQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="'" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="InsideString" attribute="String" lineEndContext="#stay">
-                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
-                <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
-                <RegExpr attribute="String" context="#stay" String="\\?[^#&quot;'\\]+" />
-            </context>
-
-        </contexts>
-
-        <itemDatas>
-            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
-            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="String" defStyleNum="dsString"/>
-            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
-            <itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
-            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
-            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
-            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
-            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
-            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
-            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
-            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
-            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
-            <itemData name="Comment" defStyleNum="dsComment" />
-            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
-            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
-        </itemDatas>
-    </highlighting>
-
-    <general>
-        <keywords casesensitive="0" weakDeliminator="-%@" />
-        <comments>
-            <comment name="singleLine" start="//" position="afterwhitespace" />
-            <comment name="multiLine" start="/*" end="*/" region="comment" />
+  <!ENTITY escaped "\\([0-9a-fA-F]{1,6}|[^\n\r\f0-9a-fA-F])">
+  <!-- identifiers starting with several - are invalid, but supported by browsers -->
+  <!ENTITY ident2  "([-\w]+|&escaped;)+">
+  <!ENTITY selector "(&ident2;|(?=\#\{))">
+  <!ENTITY ident   "-?([_a-zA-Z]+|&escaped;)([-_a-zA-Z0-9]+|&escaped;)*">
+  <!ENTITY var     "--[-\w]*">
+  <!ENTITY func    "[-_a-zA-Z][-_a-zA-Z0-9]*">
+  <!ENTITY propcheck "(?=\s*(/[*].*?[*]/\s*)?:)">
+
+  <!-- #{...} and #{...#{...}...} -->
+  <!ENTITY interpolation "#\{([^}#]*+|#\{[^}]*+\})*+\}">
+  <!ENTITY comment "/\*.*?\*/">
+  <!ENTITY spaces "(\s|&comment;)*+">
+  <!-- TODO -->
+  <!ENTITY pseudoclasses "active|any-link|autofill|buffering|checked|current|default|defined|dir|disabled|empty|enabled|first|first-child|first-of-type|focus|focus-visible|focus-within|fullscreen|has|host|host-context|hover|in-range|indeterminate|invalid|is|lang|last-child|last-of-type|left|link|local-link|modal|muted|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|optional|out-of-range|paused|picture-in-picture|placeholder-shown|playing|read-only|read-write|required|right|root|scope|seeking|stalled|target|user-invalid|user-valid|valid|visited|volume-locked|where">
+
+  <!ENTITY propvar1 "([-_a-zA-Z0-9]*+\.)?\$">
+  <!ENTITY propvar2 "--[-_a-zA-Z0-9]*+&spaces;:">
+  <!ENTITY maybeprop "([-a-zA-Z]++|&interpolation;)+&spaces;:(?!:)">
+  <!ENTITY assumeprop "([^-a-zA-Z]|$|((?!(&pseudoclasses;)\b)[^;{}:]*+(\s*[;}]|$)))">
+]>
+
+<!--
+
+Kate SCSS syntax highlighting definition
+
+Changelog:
+
+- Version 7, by Jonathan Poelen
+- fix tag followed by a pseudo-class in a nested rule (@media, ...)
+- fix constraint in a rule
+- fix Kate auto-completion for properties and rules
+- fix highlighting of pseudoclass/pseudoelement in a sub-rule
+- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Value Keyword, Color, Number, Unit, Selector Tag, Placeholder Selector
+
+- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
+- Remake for complex SCSS syntax, avoid errors
+
+- Version 2.06, by Guo Yunhe
+- Add all W3C Work Draft properties, inherit rules from css.xml
+
+- Version 1.2.03.6, by Mte90
+- Css3 Tag
+
+- Version 1.2.03.1, by Tijn Schuurmans
+- Added basic support for "@include mixin();"
+- Clean the indentation to use 4 spaces everywhere
+
+-->
+
+<language name="SCSS" version="17" kateversion="5.79" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+
+    <highlighting>
+        <list name="properties">
+            <include>properties##CSS</include>
+        </list>
+
+        <list name="vendor properties">
+            <include>vendor properties##CSS</include>
+        </list>
+
+        <list name="sub-properties">
+            <item>-webkit</item>
+            <item>-webkit-line</item>
+            <item>-webkit-text</item>
+            <item>-webkit-text-fill</item>
+            <item>accent</item>
+            <item>action</item>
+            <item>additive</item>
+            <item>adjust</item>
+            <item>after</item>
+            <item>align</item>
+            <item>align-last</item>
+            <item>alternates</item>
+            <item>anchor</item>
+            <item>animation-fill</item>
+            <item>animation-iteration</item>
+            <item>animation-play</item>
+            <item>animation-timing</item>
+            <item>area</item>
+            <item>areas</item>
+            <item>as</item>
+            <item>ascent</item>
+            <item>asian</item>
+            <item>aspect</item>
+            <item>attachment</item>
+            <item>auto</item>
+            <item>auto-columns</item>
+            <item>auto-flow</item>
+            <item>auto-rows</item>
+            <item>backdrop</item>
+            <item>backface</item>
+            <item>background-blend</item>
+            <item>base</item>
+            <item>basis</item>
+            <item>before</item>
+            <item>behavior</item>
+            <item>behavior-block</item>
+            <item>behavior-inline</item>
+            <item>behavior-x</item>
+            <item>behavior-y</item>
+            <item>bidi</item>
+            <item>blend</item>
+            <item>blend-mode</item>
+            <item>block</item>
+            <item>block-color</item>
+            <item>block-end</item>
+            <item>block-end-color</item>
+            <item>block-end-style</item>
+            <item>block-end-width</item>
+            <item>block-start</item>
+            <item>block-start-color</item>
+            <item>block-start-style</item>
+            <item>block-start-width</item>
+            <item>block-style</item>
+            <item>block-width</item>
+            <item>border-bottom-left</item>
+            <item>border-bottom-right</item>
+            <item>border-end</item>
+            <item>border-end-end</item>
+            <item>border-end-start</item>
+            <item>border-mode</item>
+            <item>border-outset</item>
+            <item>border-repeat</item>
+            <item>border-slice</item>
+            <item>border-source</item>
+            <item>border-start</item>
+            <item>border-start-end</item>
+            <item>border-start-start</item>
+            <item>border-top-left</item>
+            <item>border-top-right</item>
+            <item>bottom-color</item>
+            <item>bottom-left</item>
+            <item>bottom-left-radius</item>
+            <item>bottom-right</item>
+            <item>bottom-right-radius</item>
+            <item>bottom-style</item>
+            <item>bottom-width</item>
+            <item>box</item>
+            <item>box-decoration</item>
+            <item>break</item>
+            <item>caps</item>
+            <item>caption</item>
+            <item>caret</item>
+            <item>cells</item>
+            <item>change</item>
+            <item>character</item>
+            <item>chars</item>
+            <item>clamp</item>
+            <item>clip</item>
+            <item>clip-margin</item>
+            <item>collapse</item>
+            <item>color-adjust</item>
+            <item>colors</item>
+            <item>column</item>
+            <item>column-end</item>
+            <item>column-start</item>
+            <item>combine</item>
+            <item>combine-upright</item>
+            <item>composite</item>
+            <item>composition</item>
+            <item>contain-intrinsic</item>
+            <item>contain-intrinsic-block</item>
+            <item>contain-intrinsic-inline</item>
+            <item>count</item>
+            <item>counter</item>
+            <item>decoration</item>
+            <item>decoration-break</item>
+            <item>decoration-color</item>
+            <item>decoration-line</item>
+            <item>decoration-skip</item>
+            <item>decoration-skip-ink</item>
+            <item>decoration-style</item>
+            <item>decoration-thickness</item>
+            <item>delay</item>
+            <item>depth</item>
+            <item>descent</item>
+            <item>distance</item>
+            <item>duration</item>
+            <item>east</item>
+            <item>east-asian</item>
+            <item>emoji</item>
+            <item>emphasis</item>
+            <item>emphasis-color</item>
+            <item>emphasis-position</item>
+            <item>emphasis-style</item>
+            <item>empty</item>
+            <item>end</item>
+            <item>end-color</item>
+            <item>end-end</item>
+            <item>end-end-radius</item>
+            <item>end-radius</item>
+            <item>end-start</item>
+            <item>end-start-radius</item>
+            <item>end-style</item>
+            <item>end-width</item>
+            <item>events</item>
+            <item>family</item>
+            <item>feature</item>
+            <item>feature-settings</item>
+            <item>fill</item>
+            <item>fill-color</item>
+            <item>fill-mode</item>
+            <item>fit</item>
+            <item>flow</item>
+            <item>font-feature</item>
+            <item>font-language</item>
+            <item>font-optical</item>
+            <item>font-synthesis-small</item>
+            <item>font-variant-east</item>
+            <item>font-variation</item>
+            <item>forced</item>
+            <item>forced-color</item>
+            <item>function</item>
+            <item>gap-override</item>
+            <item>grid-auto</item>
+            <item>grow</item>
+            <item>gutter</item>
+            <item>hanging</item>
+            <item>hyphenate</item>
+            <item>hyphenate-limit</item>
+            <item>image</item>
+            <item>image-outset</item>
+            <item>image-repeat</item>
+            <item>image-slice</item>
+            <item>image-source</item>
+            <item>image-threshold</item>
+            <item>image-width</item>
+            <item>increment</item>
+            <item>indent</item>
+            <item>index</item>
+            <item>initial</item>
+            <item>ink</item>
+            <item>inline</item>
+            <item>inline-color</item>
+            <item>inline-end</item>
+            <item>inline-end-color</item>
+            <item>inline-end-style</item>
+            <item>inline-end-width</item>
+            <item>inline-start</item>
+            <item>inline-start-color</item>
+            <item>inline-start-style</item>
+            <item>inline-start-width</item>
+            <item>inline-style</item>
+            <item>inline-width</item>
+            <item>inside</item>
+            <item>intrinsic</item>
+            <item>intrinsic-block</item>
+            <item>intrinsic-block-size</item>
+            <item>intrinsic-height</item>
+            <item>intrinsic-inline</item>
+            <item>intrinsic-inline-size</item>
+            <item>intrinsic-size</item>
+            <item>intrinsic-width</item>
+            <item>items</item>
+            <item>iteration</item>
+            <item>iteration-count</item>
+            <item>justify</item>
+            <item>kerning</item>
+            <item>language</item>
+            <item>language-override</item>
+            <item>last</item>
+            <item>layout</item>
+            <item>left-color</item>
+            <item>left-radius</item>
+            <item>left-style</item>
+            <item>left-width</item>
+            <item>letter</item>
+            <item>ligatures</item>
+            <item>limit</item>
+            <item>limit-chars</item>
+            <item>line</item>
+            <item>line-clamp</item>
+            <item>line-gap</item>
+            <item>list</item>
+            <item>math</item>
+            <item>max</item>
+            <item>max-block</item>
+            <item>max-inline</item>
+            <item>min</item>
+            <item>min-block</item>
+            <item>min-inline</item>
+            <item>mix</item>
+            <item>mix-blend</item>
+            <item>mode</item>
+            <item>name</item>
+            <item>numeric</item>
+            <item>object</item>
+            <item>optical</item>
+            <item>optical-sizing</item>
+            <item>orientation</item>
+            <item>origin</item>
+            <item>outset</item>
+            <item>outside</item>
+            <item>overflow-clip</item>
+            <item>override</item>
+            <item>overscroll</item>
+            <item>page-break</item>
+            <item>paint</item>
+            <item>palette</item>
+            <item>path</item>
+            <item>place</item>
+            <item>play</item>
+            <item>play-state</item>
+            <item>pointer</item>
+            <item>position-x</item>
+            <item>position-y</item>
+            <item>print</item>
+            <item>print-color</item>
+            <item>property</item>
+            <item>punctuation</item>
+            <item>radius</item>
+            <item>ratio</item>
+            <item>rendering</item>
+            <item>repeat</item>
+            <item>reset</item>
+            <item>right-color</item>
+            <item>right-radius</item>
+            <item>right-style</item>
+            <item>right-width</item>
+            <item>row</item>
+            <item>row-end</item>
+            <item>row-start</item>
+            <item>rows</item>
+            <item>ruby</item>
+            <item>rule</item>
+            <item>rule-color</item>
+            <item>rule-style</item>
+            <item>rule-width</item>
+            <item>scheme</item>
+            <item>scroll</item>
+            <item>scroll-snap</item>
+            <item>scrollbar</item>
+            <item>select</item>
+            <item>self</item>
+            <item>set</item>
+            <item>settings</item>
+            <item>shadow</item>
+            <item>shape</item>
+            <item>shape-image</item>
+            <item>shrink</item>
+            <item>side</item>
+            <item>sizing</item>
+            <item>skip</item>
+            <item>skip-ink</item>
+            <item>slice</item>
+            <item>small</item>
+            <item>small-caps</item>
+            <item>snap</item>
+            <item>snap-align</item>
+            <item>snap-stop</item>
+            <item>snap-type</item>
+            <item>source</item>
+            <item>space</item>
+            <item>spacing</item>
+            <item>span</item>
+            <item>speak</item>
+            <item>start</item>
+            <item>start-color</item>
+            <item>start-end</item>
+            <item>start-end-radius</item>
+            <item>start-radius</item>
+            <item>start-start</item>
+            <item>start-start-radius</item>
+            <item>start-style</item>
+            <item>start-width</item>
+            <item>state</item>
+            <item>stop</item>
+            <item>stretch</item>
+            <item>stroke</item>
+            <item>stroke-color</item>
+            <item>stroke-width</item>
+            <item>style</item>
+            <item>style-image</item>
+            <item>style-position</item>
+            <item>style-type</item>
+            <item>synthesis</item>
+            <item>synthesis-position</item>
+            <item>synthesis-small</item>
+            <item>synthesis-small-caps</item>
+            <item>synthesis-style</item>
+            <item>synthesis-weight</item>
+            <item>tab</item>
+            <item>table</item>
+            <item>template</item>
+            <item>template-areas</item>
+            <item>template-columns</item>
+            <item>template-rows</item>
+            <item>text</item>
+            <item>text-combine</item>
+            <item>text-decoration-skip</item>
+            <item>text-fill</item>
+            <item>text-fill-color</item>
+            <item>text-stroke</item>
+            <item>text-stroke-color</item>
+            <item>text-stroke-width</item>
+            <item>text-underline</item>
+            <item>thickness</item>
+            <item>threshold</item>
+            <item>timing</item>
+            <item>timing-function</item>
+            <item>top-color</item>
+            <item>top-left</item>
+            <item>top-left-radius</item>
+            <item>top-right</item>
+            <item>top-right-radius</item>
+            <item>top-style</item>
+            <item>top-width</item>
+            <item>touch</item>
+            <item>transition-timing</item>
+            <item>type</item>
+            <item>underline</item>
+            <item>underline-offset</item>
+            <item>underline-position</item>
+            <item>unicode</item>
+            <item>upright</item>
+            <item>user</item>
+            <item>value</item>
+            <item>variant</item>
+            <item>variant-alternates</item>
+            <item>variant-caps</item>
+            <item>variant-east</item>
+            <item>variant-east-asian</item>
+            <item>variant-emoji</item>
+            <item>variant-ligatures</item>
+            <item>variant-numeric</item>
+            <item>variant-position</item>
+            <item>variation</item>
+            <item>variation-settings</item>
+            <item>vertical</item>
+            <item>weight</item>
+            <item>white</item>
+            <item>will</item>
+            <item>word</item>
+            <item>wrap</item>
+            <item>writing</item>
+            <item>x</item>
+            <item>y</item>
+            <item>z</item>
+        </list>
+
+        <list name="media types">
+            <include>media types##CSS</include>
+        </list>
+
+        <list name="media features">
+            <include>media features##CSS</include>
+        </list>
+
+        <list name="special values">
+            <item>true</item>
+            <item>false</item>
+            <item>null</item>
+        </list>
+
+        <list name="value keywords">
+            <include>value keywords##CSS</include>
+        </list>
+
+        <list name="values">
+            <include>values##CSS</include>
+        </list>
+
+        <list name="colors">
+            <include>colors##CSS</include>
+        </list>
+
+        <list name="functions">
+            <include>functions##CSS</include>
+
+            <!-- https://sass-lang.com/documentation/modules/ -->
+
+            <!-- color -->
+            <item>adjust-color</item>
+            <item>adjust-hue</item>
+            <item>alpha</item>
+            <item>blue</item>
+            <item>change-color</item>
+            <item>color.alpha</item>
+            <item>color.blackness</item>
+            <item>color.blue</item>
+            <item>color.complement</item>
+            <item>color.grayscale</item>
+            <item>color.green</item>
+            <item>color.hue</item>
+            <item>color.hwb</item>
+            <item>color.ie-hex-str</item>
+            <item>color.invert</item>
+            <item>color.lightness</item>
+            <item>color.mix</item>
+            <item>color.red</item>
+            <item>color.saturate</item>
+            <item>color.saturation</item>
+            <item>color.whiteness</item>
+            <item>complement</item>
+            <item>darken</item>
+            <item>desaturate</item>
+            <item>fade-in</item>
+            <item>fade-out</item>
+            <item>green</item>
+            <item>hue</item>
+            <item>ie-hex-str</item>
+            <item>lighten</item>
+            <item>lightness</item>
+            <item>mix</item>
+            <item>opacify</item>
+            <item>red</item>
+            <item>saturation</item>
+            <item>scale-color</item>
+            <item>transparentize</item>
+
+            <!-- index -->
+            <item>hsla</item>
+            <item>if</item>
+            <item>rgba</item>
+
+            <!-- list -->
+            <item>append</item>
+            <item>index</item>
+            <item>is-bracketed</item>
+            <item>join</item>
+            <item>length</item>
+            <item>list-separator</item>
+            <item>list.append</item>
+            <item>list.index</item>
+            <item>list.is-bracketed</item>
+            <item>list.join</item>
+            <item>list.length</item>
+            <item>list.nth</item>
+            <item>list.separator</item>
+            <item>list.set-nth</item>
+            <item>list.slash</item>
+            <item>list.zip</item>
+            <item>nth</item>
+            <item>set-nth</item>
+            <item>zip</item>
+
+            <!-- map -->
+            <item>map-get</item>
+            <item>map-has-key</item>
+            <item>map-keys</item>
+            <item>map-merge</item>
+            <item>map-remove</item>
+            <item>map-values</item>
+            <item>map.deep-merge</item>
+            <item>map.deep-remove</item>
+            <item>map.get</item>
+            <item>map.has-key</item>
+            <item>map.keys</item>
+            <item>map.merge</item>
+            <item>map.remove</item>
+            <item>map.set</item>
+            <item>map.values</item>
+
+            <!-- math -->
+            <item>ceil</item>
+            <item>comparable</item>
+            <item>floor</item>
+            <item>math.abs</item>
+            <item>math.acos</item>
+            <item>math.asin</item>
+            <item>math.atan</item>
+            <item>math.atan2</item>
+            <item>math.ceil</item>
+            <item>math.clamp</item>
+            <item>math.compatible</item>
+            <item>math.cos</item>
+            <item>math.div</item>
+            <item>math.floor</item>
+            <item>math.hypot</item>
+            <item>math.is-unitless</item>
+            <item>math.log</item>
+            <item>math.max</item>
+            <item>math.min</item>
+            <item>math.percentage</item>
+            <item>math.pow</item>
+            <item>math.random</item>
+            <item>math.round</item>
+            <item>math.sin</item>
+            <item>math.sqrt</item>
+            <item>math.tan</item>
+            <item>math.unit</item>
+            <item>percentage</item>
+            <item>random</item>
+            <item>unit</item>
+            <item>unitless</item>
+
+            <!-- meta -->
+            <item>call</item>
+            <item>content-exists</item>
+            <item>feature-exists</item>
+            <item>function-exists</item>
+            <item>get-function</item>
+            <item>global-variable-exists</item>
+            <item>inspect</item>
+            <item>keywords</item>
+            <item>meta.calc-args</item>
+            <item>meta.calc-name</item>
+            <item>meta.call</item>
+            <item>meta.content-exists</item>
+            <item>meta.feature-exists</item>
+            <item>meta.function-exists</item>
+            <item>meta.get-function</item>
+            <item>meta.global-variable-exists</item>
+            <item>meta.inspect</item>
+            <item>meta.keywords</item>
+            <item>meta.load-css</item>
+            <item>meta.mixin-exists</item>
+            <item>meta.module-functions</item>
+            <item>meta.module-variables</item>
+            <item>meta.type-of</item>
+            <item>meta.variable-exists</item>
+            <item>mixin-exists</item>
+            <item>type-of</item>
+            <item>variable-exists</item>
+
+            <!-- selector -->
+            <item>is-superselector</item>
+            <item>selector-append</item>
+            <item>selector-extend</item>
+            <item>selector-nest</item>
+            <item>selector-parse</item>
+            <item>selector-replace</item>
+            <item>selector-unify</item>
+            <item>selector.append</item>
+            <item>selector.extend</item>
+            <item>selector.is-superselector</item>
+            <item>selector.nest</item>
+            <item>selector.parse</item>
+            <item>selector.replace</item>
+            <item>selector.simple-selectors</item>
+            <item>selector.unify</item>
+            <item>simple-selectors</item>
+
+            <!-- string -->
+            <item>quote</item>
+            <item>str-index</item>
+            <item>str-insert</item>
+            <item>str-length</item>
+            <item>str-slice</item>
+            <item>string.index</item>
+            <item>string.insert</item>
+            <item>string.length</item>
+            <item>string.quote</item>
+            <item>string.slice</item>
+            <item>string.split</item>
+            <item>string.to-lower-case</item>
+            <item>string.to-upper-case</item>
+            <item>string.unique-id</item>
+            <item>string.unquote</item>
+            <item>to-lower-case</item>
+            <item>to-upper-case</item>
+            <item>unique-id</item>
+            <item>unquote</item>
+        </list>
+
+        <!-- prefixed by :: -->
+        <list name="pseudo-elements">
+            <include>pseudo-elements##CSS</include>
+        </list>
+
+        <!-- prefixed by : -->
+        <list name="pseudo-classes">
+            <include>pseudo-classes##CSS</include>
+        </list>
+
+        <list name="@page pseudo-classes">
+            <include>@page pseudo-classes##CSS</include>
+        </list>
+
+        <list name="at-rules">
+            <include>at-rules##CSS</include>
+
+            <!-- scss -->
+            <item>@at-root</item>
+            <item>@content</item>
+            <item>@debug</item>
+            <item>@each</item>
+            <item>@else</item>
+            <item>@error</item>
+            <item>@extend</item>
+            <item>@for</item>
+            <item>@forward</item>
+            <item>@function</item>
+            <item>@if</item>
+            <item>@import</item>
+            <item>@include</item>
+            <item>@mixin</item>
+            <item>@return</item>
+            <item>@use</item>
+            <item>@warn</item>
+            <item>@while</item>
+        </list>
+
+        <list name="at-rules definitions">
+            <include>at-rules definitions##CSS</include>
+        </list>
+
+        <list name="operators">
+            <item>and</item>
+            <item>or</item>
+            <item>not</item>
+        </list>
+
+        <list name="media operators">
+            <item>or</item>
+            <item>and</item>
+            <item>only</item>
+            <item>not</item>
+        </list>
+
+        <list name="annotations">
+            <item>important</item>
+            <item>default</item>
+            <item>global</item>
+            <item>optional</item>
+        </list>
+
+        <contexts>
+            <context name="Base" attribute="Normal Text" fallthroughContext="Selector">
+                <DetectSpaces attribute="Normal Text"/>
+                <Detect2Chars context="InterpolationPropertyOrSelector" char="#" char1="{" lookAhead="1"/>
+                <AnyChar context="Selector" String="*>+~|&amp;#.%,:[\" lookAhead="1"/>
+                <DetectChar attribute="Block Symbol" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" char="}" endRegion="ruleset"/>
+                <DetectChar context="SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <RegExpr context="Property" String="(&propvar1;|&propvar2;|&maybeprop;&assumeprop;)|" lookAhead="1"/>
+            </context>
+            <context name="InterpolationPropertyOrSelector" attribute="Normal Text" fallthroughContext="#pop!Selector">
+                <RegExpr context="#pop!Property" String="(&propvar1;|&propvar2;|&maybeprop;&assumeprop;)|" lookAhead="1"/>
+            </context>
+
+            <!-- selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+            <context name="Selector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <!-- selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+            <context name="FindSelector" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassOrElement" char=":"/>
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="["/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassSelector" char="("/>
+                <AnyChar attribute="Selector Symbol" String="*>+~|&amp;"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr attribute="Selector Class" String="\.&selector;" context="SelectorClass"/>
+                <RegExpr attribute="Selector Id" String="#&selector;" context="SelectorId"/>
+                <RegExpr attribute="Selector Tag" String="&ident;"/>
+                <RegExpr attribute="Placeholder Selector" String="%&selector;" context="SelectorPlaceholder"/>
+                <DetectChar attribute="Error" char="$"/>
+            </context>
+
+            <context name="SelectorClass" attribute="Selector Class" lineEndContext="#pop" fallthroughContext="#pop">
+                <Detect2Chars context="SelectorClass2" char="#" char1="{" lookAhead="1"/>
+            </context>
+            <context name="SelectorClass2" attribute="Selector Class" fallthroughContext="#pop#pop">
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr String="&ident2;"/>
+            </context>
+
+            <context name="SelectorId" attribute="Selector Id" lineEndContext="#pop" fallthroughContext="#pop">
+                <Detect2Chars context="SelectorId2" char="#" char1="{" lookAhead="1"/>
+            </context>
+            <context name="SelectorId2" attribute="Selector Id" fallthroughContext="#pop#pop">
+                <IncludeRules context="SelectorClass2"/>
+            </context>
+
+            <context name="SelectorPlaceholder" attribute="Placeholder Selector" lineEndContext="#pop" fallthroughContext="#pop">
+                <Detect2Chars context="SelectorPlaceholder2" char="#" char1="{" lookAhead="1"/>
+            </context>
+            <context name="SelectorPlaceholder2" attribute="Placeholder Selector" fallthroughContext="#pop#pop">
+                <IncludeRules context="SelectorClass2"/>
+            </context>
+
+
+            <context name="Property" attribute="Normal Text">
+                <DetectChar attribute="Property Separator" context="PropertyValues" char=":"/>
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <Detect2Chars attribute="Variable" context="Variable" char="-" char1="-"/>
+                <keyword attribute="Property" String="properties"/>
+                <keyword attribute="Property" String="sub-properties"/>
+                <IncludeRules context="FindVendorProperty"/>
+                <RegExpr attribute="Unknown Property" String="[-_a-zA-Z0-9]++(?!\.)"/>
+                <RegExpr attribute="Normal Text" String="[-_a-zA-Z0-9]+\."/>
+            </context>
+
+            <context name="PropertyValues" attribute="Normal Text">
+                <DetectSpaces attribute="Normal Text"/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop!SubProperty" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Symbol" char="&amp;"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="SubProperty" attribute="Normal Text">
+                <DetectSpaces attribute="Normal Text"/>
+                <DetectChar attribute="Error" char=";"/>
+                <DetectChar attribute="Block Symbol" context="SubProperty" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Property Separator" context="SubPropertyValues" char=":"/>
+                <IncludeRules context="Property"/>
+            </context>
+            <context name="SubPropertyValues" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop!SubProperty" char="{" beginRegion="ruleset"/>
+                <IncludeRules context="PropertyValues"/>
+            </context>
+
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindInterpolation" attribute="Normal Text">
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{"/>
+            </context>
+            <context name="FindInterpolationWithUnit" attribute="Normal Text">
+                <Detect2Chars attribute="Interpolation" context="InterpolationWithUnit" char="#" char1="{"/>
+            </context>
+
+            <!-- interpolation // #{...} -->
+
+            <context name="Interpolation" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Interpolation" context="#pop" char="}"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+            <context name="InterpolationWithUnit" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Interpolation" context="#pop!FindUnits" char="}"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+            <context name="FindValueInterpolation" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Value Keyword" char="&amp;"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/+%=&lt;>!"/>
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindFunctions"/>
+                <keyword attribute="Operator" String="operators"/>
+                <keyword attribute="Value Keyword" String="special values"/>
+                <IncludeRules context="FindNumber"/>
+                <DetectChar context="OperatorOrIdentifer" char="-" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="FindVariable" attribute="Normal Text">
+                <DetectChar attribute="Variable" context="Variable" char="$"/>
+            </context>
+            <context name="Variable" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Variable" context="#pop" String="[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <!-- find functions // rgba(255,255,255,0.75) -->
+            <context name="FindFunctions" attribute="Normal Text">
+                <RegExpr attribute="Function" context="Function" String="&func;\(" lookAhead="1"/>
+            </context>
+            <context name="FindNestedFunctions" attribute="Normal Text">
+                <RegExpr context="NestedFunction" String="(&func;)?\(" lookAhead="1"/>
+            </context>
+
+            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
+            <context name="FindValues" attribute="Normal Text">
+                <AnyChar attribute="Operator" String="*/+%=&lt;>"/>
+                <DetectChar attribute="Annotation" context="Annotation" char="!" lookAhead="1"/>
+                <IncludeRules context="FindVariable"/>
+                <keyword attribute="Operator" String="operators"/>
+                <keyword attribute="Value Keyword" String="value keywords" weakDeliminator="."/>
+                <keyword attribute="Value Keyword" String="special values" weakDeliminator="."/>
+                <keyword attribute="Value" String="values" weakDeliminator="."/>
+                <keyword attribute="Named Color" String="colors"/>
+                <RegExpr attribute="Color" String="#([0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{3,4})"/>
+                <IncludeRules context="FindNumber"/>
+                <DetectChar context="OperatorOrIdentifer" char="-" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="OperatorOrIdentifer" attribute="Normal Text">
+                <RegExpr context="#pop" String="-(?![0-9])&ident2;\.?\s*"/>
+                <DetectChar context="#pop" attribute="Operator" char="-"/>
+            </context>
+
+            <context name="FindNumber" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?"/>
+            </context>
+
+            <context name="FindIdentifier" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr String="&ident2;\.?\s*"/>
+            </context>
+
+            <context name="FindVendorProperty" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr attribute="Vendor Property" String="-(webkit|moz|o|ms)-[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop">
+                <WordDetect attribute="Annotation" context="#pop" String="!important"/>
+                <WordDetect attribute="Annotation" context="#pop" String="!default"/>
+                <WordDetect attribute="Annotation" context="#pop" String="!global"/>
+                <DetectChar attribute="Operator" context="#pop" char="!"/>
+            </context>
+
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|grad|rad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)"/>
+            </context>
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindStrings" attribute="Normal Text">
+                <DetectChar attribute="String" context="StringDQ" char="&quot;"/>
+                <DetectChar attribute="String" context="StringSQ" char="'"/>
+            </context>
+
+            <!-- find comments // /* comment */ -->
+            <context name="FindComments" attribute="Normal Text">
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="/" lookAhead="1"/>
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="1"/>
+            </context>
+
+            <context name="IsComments" attribute="Normal Text">
+                <RegExpr attribute="Region Marker" String="/\*\s*BEGIN\b.*\*/|//\s*BEGIN\b.*" beginRegion="UserDefined"/>
+                <RegExpr attribute="Region Marker" String="/\*\s*END\b.*\*/|//\s*END\b.*" endRegion="UserDefined"/>
+                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment"/>
+                <Detect2Chars attribute="Comment" context="SassComment" char="/" char1="/"/>
+            </context>
+
+            <context name="SassComment" attribute="Comment" lineEndContext="#pop#pop">
+                <DetectSpaces/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
+                <!-- scss -->
+                <WordDetect attribute="At Rule" context="@use" String="@use"/>
+                <WordDetect attribute="At Rule" context="@mixin" String="@include"/>
+                <WordDetect attribute="At Rule" context="@mixin" String="@function"/>
+                <WordDetect attribute="At Rule" context="@mixin" String="@mixin"/>
+                <WordDetect attribute="At Rule" context="@extend" String="@extend"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@content"/>
+                <WordDetect attribute="At Rule" context="@use" String="@forward"/>
+                <WordDetect attribute="At Rule" context="@expressionBlock" String="@if"/>
+                <WordDetect attribute="At Rule" context="@else" String="@else"/>
+                <WordDetect attribute="At Rule" context="@each" String="@each"/>
+                <WordDetect attribute="At Rule" context="@for" String="@for"/>
+                <WordDetect attribute="At Rule" context="@expressionBlock" String="@while"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@return"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@error"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@warn"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@debug"/>
+                <WordDetect attribute="At Rule" context="@at-root" String="@at-root"/>
+                <!-- css -->
+                <WordDetect attribute="At Rule" context="@keyframes" String="@keyframes"/>
+                <WordDetect attribute="At Rule" context="@layer" String="@layer"/>
+                <WordDetect attribute="At Rule" context="@page" String="@page"/>
+                <WordDetect attribute="At Rule" context="@supports" String="@supports"/>
+                <keyword attribute="At Rule" context="@property" String="at-rules definitions"/>
+                <RegExpr attribute="At Rule" context="@media" String="@[-a-zA-Z0-9_]*"/>
+            </context>
+
+            <context name="AtRuleEnd" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+            </context>
+            <context name="AtRuleEndLvl3" attribute="Normal Text">
+                <DetectChar attribute="Error" context="#pop#pop#pop" char=";"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+            </context>
+            <context name="AtRuleBlockEnd" attribute="Normal Text">
+                <DetectChar attribute="Error" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop" char="}" endRegion="ruleset"/>
+            </context>
+
+            <context name="AtRuleCommon" attribute="At Rule Text">
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="AtRuleEnd"/>
+            </context>
+            <context name="AtRuleDefinitionCommon" attribute="At Rule Text">
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop!SubProperty" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+
+            <context name="@at-root" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="#pop!AtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="@use" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar context="@useWith" char="(" attribute="Function"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <WordDetect attribute="Keyword" String="with"/>
+                <WordDetect attribute="Keyword" String="hide"/>
+                <WordDetect attribute="Keyword" context="@useAs" String="as"/>
+            </context>
+            <context name="@useAs" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar attribute="Operator" char="*"/>
+                <DetectChar attribute="At Rule Text" char="-"/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop#pop" char=";"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+            <context name="@useWith" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar context="#pop" char=")" attribute="Function"/>
+                <DetectChar attribute="Property Separator" char=":"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Symbol" char="&amp;"/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <StringDetect attribute="Operator" String="..."/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="@mixin" attribute="Function">
+                <DetectSpaces attribute="At Rule Text"/>
+                <DetectChar context="@useWith" char="(" attribute="Function"/>
+                <DetectChar char="-"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <WordDetect attribute="Keyword" String="using"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="@extend" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <WordDetect attribute="Annotation" String="!optional"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <context name="@expression" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleEnd"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+            <context name="@expressionBlock" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+
+            <context name="@else" attribute="At Rule Text" fallthroughContext="#pop!@expressionBlock">
+                <DetectSpaces/>
+                <WordDetect attribute="At Rule" context="#pop!@expression" String="if"/>
+                <IncludeRules context="FindComments"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+            </context>
+
+            <context name="@each" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <WordDetect attribute="Keyword" String="in"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+
+            <context name="@for" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <WordDetect attribute="Keyword" String="to"/>
+                <WordDetect attribute="Keyword" String="from"/>
+                <WordDetect attribute="Keyword" String="through"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+
+
+            <context name="@media" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <IncludeRules context="FindFunctions"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media types" attribute="Media Type"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="AtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="NestedAtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces attribute="At Rule Text"/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="AtRuleMediaConditionValue" attribute="At Rule Text">
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="NestedAtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" attribute="Property Separator"/>
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/+%=&lt;>"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindNumber"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media features" attribute="Condition Property"/>
+                <IncludeRules context="FindIdentifier"/>
+                <DetectChar context="OperatorOrIdentifer" char="-" lookAhead="1"/>
+            </context>
+
+
+            <context name="@supports" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleSupportsCondition" lookAhead="1"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <WordDetect String="selector(" context="FunctionSelector" attribute="Function"/>
+                <IncludeRules context="FindFunctions"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="AtRuleSupportsCondition" attribute="At Rule Text" fallthroughContext="#pop">
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+            </context>
+            <context name="SupportsCondition" attribute="At Rule Text" fallthroughContext="#pop!SupportsConditionValue">
+                <DetectSpaces/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" context="#pop!SupportsConditionValue" attribute="Property Separator"/>
+                <IncludeRules context="FindComments"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="properties" attribute="Property"/>
+                <IncludeRules context="FindVendorProperty"/>
+            </context>
+            <context name="SupportsConditionValue" attribute="At Rule Text">
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" attribute="Property Separator"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionSelector" attribute="At Rule Text">
+                <DetectSpaces/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Function"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+
+            <context name="@layer" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+
+
+            <context name="@page" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Pseudo" char=":"/>
+                <IncludeRules context="AtRuleDefinitionCommon"/>
+                <keyword attribute="Selector Pseudo" String="@page pseudo-classes"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@property" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="-"/>
+                <IncludeRules context="AtRuleDefinitionCommon"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@keyframes" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="KeyFramesBlock" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <DetectIdentifier/>
+            </context>
+            <context name="KeyFramesBlock" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="SubProperty" attribute="Block Symbol" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop#pop#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="," attribute="Separator Symbol"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr attribute="Value" String="\b(from|to)\b|[-+]?[0-9.]*%"/>
+            </context>
+
+
+            <!-- attribute // [name=value]-->
+
+            <context name="SelectorAttr" attribute="Attribute Name">
+                <DetectChar attribute="Selector Attribute" context="#pop" char="]"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <DetectChar attribute="Attribute Operator" context="SelectorAttrValue" char="="/>
+                <AnyChar attribute="Attribute Operator" String="~^$*|"/>
+                <IncludeRules context="FindComments"/>
+                <DetectIdentifier/>
+                <AnyChar context="#pop" String="{};#.,:>" lookAhead="1"/>
+            </context>
+
+            <context name="SelectorAttrValue" attribute="String" fallthroughContext="SelectorAttrEnd">
+                <DetectSpaces/>
+                <AnyChar context="SelectorAttrValueQuoted" String="&quot;'" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueQuoted" char="#" char1="{" lookAhead="1"/>
+                <RegExpr context="SelectorAttrEnd" attribute="String" String="-?(\w|&escaped;)([-\w]+|&escaped;)*"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="SelectorAttrValueQuoted" attribute="String" fallthroughContext="#pop!SelectorAttrEnd">
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+            <context name="SelectorAttrEnd" attribute="String" fallthroughContext="#pop#pop#pop">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop" char="]"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="i" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="I" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="s" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="S" char1="]" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+            <context name="SelectorAttrValueSensitiveOp" attribute="String">
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop#pop" char="]"/>
+                <AnyChar attribute="Attribute Operator" String="isIS"/>
+            </context>
+
+
+            <context name="PseudoClassOrElement" attribute="Selector Pseudo" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectChar char=":" attribute="Selector Pseudo"/>
+                <WordDetect String="lang" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <WordDetect String="part" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <RegExpr String="nth-[-a-zA-Z0-9]*" attribute="Selector Pseudo" context="PseudoClassNth"/>
+                <RegExpr String="[-a-zA-Z]+" attribute="Selector Pseudo" context="#pop"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+
+            <context name="PseudoClassStr" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassStrInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassStrInner" attribute="Error">
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <DetectChar char="{" context="#pop#pop#pop" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char=":" context="#pop#pop#pop!PseudoClassOrElement" attribute="Error"/>
+                <RegExpr String="\s*&ident;(\s+&ident;|\s+)*" attribute="String"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+
+            <context name="PseudoClassNth" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassNthInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassNthInner" attribute="Normal Text" fallthroughContext="#pop#pop!PseudoClassSelector">
+                <Int attribute="Number" additionalDeliminator="-"/>
+                <AnyChar String="+-" attribute="Operator"/>
+                <DetectChar char="n" attribute="Unit"/>
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <WordDetect String="odd" attribute="Value"/>
+                <WordDetect String="even" attribute="Value"/>
+                <WordDetect String="of" attribute="Keyword" context="#pop#pop!PseudoClassSelector"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <DetectSpaces/>
+            </context>
+
+            <context name="PseudoClassSelector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop" attribute="Selector Pseudo"/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+
+            <context name="Comment" attribute="Comment">
+                <DetectSpaces/>
+                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="Function" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+            </context>
+            <context name="NestedFunction" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <AnyChar context="#pop" String="{};" lookAhead="1"/>
+            </context>
+            <context name="FunctionInc" attribute="Normal Text">
+                <DetectChar attribute="Function" context="FunctionParameters" char="("/>
+                <StringDetect attribute="Function" context="FunctionVar" String="var("/>
+                <StringDetect attribute="Function" context="FunctionCalc" String="calc("/>
+                <StringDetect attribute="Function" context="FunctionUrl" String="url("/>
+                <StringDetect attribute="Function" context="FunctionEnv" String="env("/>
+                <keyword attribute="Function" String="functions"/>
+                <RegExpr attribute="Function" context="FunctionParameters" String="&func;\("/>
+            </context>
+
+            <!-- From CSS with interpolation -->
+            <!-- @{ -->
+
+            <context name="FunctionVar" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&var;" context="FunctionVarSep" attribute="Variable"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="FunctionVarSep" attribute="Normal Text" fallthroughContext="FunctionVarParam">
+                <DetectChar char=")" context="#pop#pop#pop" attribute="Function"/>
+                <DetectChar char="," context="FunctionVarParam" attribute="Separator Symbol"/>
+            </context>
+            <context name="FunctionVarParam" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop#pop#pop#pop" attribute="Function"/>
+                <AnyChar String=";{}" context="#pop#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionEnv" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&ident;" context="FunctionVarSep" attribute="Normal Text"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="FunctionCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="NestedCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="Calc" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Normal Text" context="NestedCalc" char="("/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <!-- ATTENTION not in CSS --> <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindStrings"/>
+                <!-- ATTENTION not in CSS --> <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/%"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <!-- ATTENTION FindNumber in CSS --> <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])"/>
+                <RegExpr String="[-+]?((?i:infinity|e|pi)|NaN)($|[^-\w])|[-+]($|[\s(,;]|/\*)" context="CalcConstantOrOperator" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+            <context name="CalcConstantOrOperator" attribute="Normal Text" fallthroughContext="#pop">
+                <DetectIdentifier context="#pop" attribute="Calc Constant"/>
+                <AnyChar String="-+" attribute="Operator"/>
+            </context>
+
+            <context name="FunctionUrl" attribute="Normal Text" fallthroughContext="UrlValue">
+                <DetectSpaces/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+            <context name="UrlValue" attribute="String">
+                <DetectChar attribute="Function" context="#pop#pop#pop" char=")"/>
+                <AnyChar String=";{}" context="#pop#pop" lookAhead="1"/>
+            </context>
+
+            <context name="FunctionParameters" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <!-- ATTENTION not in CSS --> <DetectChar attribute="Value Keyword" char="&amp;"/>
+                <!-- ATTENTION not in CSS --> <StringDetect attribute="Operator" String="..."/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <!-- @} -->
+
+            <!-- string contexts -->
+            <context name="StringDQ" attribute="String">
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="StringSQ" attribute="String">
+                <DetectChar attribute="String" context="#pop" char="'"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="InsideString" attribute="String">
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr attribute="SpecialChar" String="\\([0-9A-Fa-f]{1,6}|.?)"/>
+                <RegExpr attribute="String" String="\\?[^#&quot;'\\]+"/>
+            </context>
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
+            <itemData name="At Rule Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Media Type" defStyleNum="dsAnnotation" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Vendor Property" defStyleNum="dsKeyword" spellChecking="false" italic="1"/>
+            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Property Separator" defStyleNum="dsChar" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
+            <itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Block Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Named Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Calc Constant" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Condition Open/Close" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Condition Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
+            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
+            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Selector Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Attribute Name" defStyleNum="dsSpecialString" spellChecking="false"/>
+            <itemData name="Attribute Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment"/>
+            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="0" weakDeliminator="-%@"/>
+        <comments>
+            <comment name="singleLine" start="//" position="afterwhitespace"/>
+            <comment name="multiLine" start="/*" end="*/" region="comment"/>
         </comments>
     </general>
 
diff --git a/xml/toml.xml b/xml/toml.xml
--- a/xml/toml.xml
+++ b/xml/toml.xml
@@ -15,12 +15,13 @@
 <language
     name="TOML"
     section="Configuration"
-    extensions="Cargo.lock;*.toml"
+    extensions="Cargo.lock;*.toml;*.rc;*.conf;*.cfg;*.cf;*.cnf;*.ini;mirrorlist"
     mimetype="text/x-toml;application/toml"
-    version="12"
+    version="13"
     kateversion="5.0"
     author="flying-sheep@web.de"
     license="LGPLv2+"
+    priority="-1"
   >
 <highlighting>
     <list name="bools">
diff --git a/xml/xml.xml b/xml/xml.xml
--- a/xml/xml.xml
+++ b/xml/xml.xml
@@ -6,7 +6,7 @@
 	<!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="XML" version="19" kateversion="5.0" section="Markup" extensions="*.page;*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.graphics-flat-xml;application/vnd.oasis.opendocument.presentation-flat-xml;application/vnd.oasis.opendocument.spreadsheet-flat-xml;application/gpx+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<language name="XML" version="20" kateversion="5.0" section="Markup" extensions="*.page;*.docbook;*.xml;*ui.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.graphics-flat-xml;application/vnd.oasis.opendocument.presentation-flat-xml;application/vnd.oasis.opendocument.spreadsheet-flat-xml;application/gpx+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
 
 <highlighting>
 <contexts>
