From cde95caf86c78ec9b7641198abfd0a7768f5100e Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sun, 29 Sep 2019 21:16:44 +0000
Subject: l3 (29sep19)

git-svn-id: svn://tug.org/texlive/trunk@52214 c570f23f-e606-0410-a88d-b1316a301751
---
 .../texmf-dist/tex/latex/l3kernel/expl3-code.tex   | 2050 +++++++-------------
 1 file changed, 661 insertions(+), 1389 deletions(-)

(limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')

diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index f3b73e82953..7ef6bb58e62 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -50,7 +50,7 @@
 %% l3unicode.dtx  (with options: `package')
 %% l3candidates.dtx  (with options: `package')
 %% l3legacy.dtx  (with options: `package')
-%% l3deprecation.dtx  (with options: `package')
+%% l3deprecation.dtx  (with options: `package,kernel')
 %% 
 %% Copyright (C) 1990-2019 The LaTeX3 Project
 %% 
@@ -65,7 +65,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-09-19}%
+\def\ExplFileDate{2019-09-28}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -2208,279 +2208,24 @@
 \cs_set:Npn \use_none:nnnnnnnn  #1#2#3#4#5#6#7#8   { }
 \cs_set:Npn \use_none:nnnnnnnnn #1#2#3#4#5#6#7#8#9 { }
 \cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#2}
-\tex_ifodd:D \l@expl@enable@debug@bool
-  \cs_set_protected:Npn \__kernel_if_debug:TF #1#2 {#1}
-\fi:
-\__kernel_if_debug:TF
-  {
-    \cs_set_protected:Npn \debug_on:n #1
-      {
-        \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
-          {
-            \cs_if_exist_use:cF { __debug_ ##1 _on: }
-              { \__kernel_msg_error:nnn { kernel } { debug } {##1} }
-          }
-      }
-    \cs_set_protected:Npn \debug_off:n #1
-      {
-        \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} }
-          {
-            \cs_if_exist_use:cF { __debug_ ##1 _off: }
-              { \__kernel_msg_error:nnn { kernel } { debug } {##1} }
-          }
-      }
-    \cs_set_protected:Npn \__debug_all_on:
-      {
-        \debug_on:n
-          {
-            check-declarations ,
-            check-expressions ,
-            deprecation ,
-            log-functions ,
-          }
-      }
-    \cs_set_protected:Npn \__debug_all_off:
-      {
-        \debug_off:n
-          {
-            check-declarations ,
-            check-expressions ,
-            deprecation ,
-            log-functions ,
-          }
-      }
-  }
-  {
-    \cs_set_protected:Npn \debug_on:n #1
-      {
-        \__kernel_msg_error:nnx { kernel } { enable-debug }
-          { \tl_to_str:n { \debug_on:n {#1} } }
-      }
-    \cs_set_protected:Npn \debug_off:n #1
-      {
-        \__kernel_msg_error:nnx { kernel } { enable-debug }
-          { \tl_to_str:n { \debug_off:n {#1} } }
-      }
-  }
-\__kernel_if_debug:TF
-  {
-    \cs_set_nopar:Npn \l__debug_suspended_tl { }
-    \cs_set_protected:Npn \debug_suspend:
-      {
-        \tl_put_right:Nn \l__debug_suspended_tl { . }
-        \cs_set_eq:NN \__debug_suspended:T \use:n
-      }
-    \cs_set_protected:Npn \debug_resume:
-      {
-        \tl_set:Nx \l__debug_suspended_tl
-          { \tl_tail:N \l__debug_suspended_tl }
-        \tl_if_empty:NT \l__debug_suspended_tl
-          {
-            \cs_set_eq:NN \__debug_suspended:T \use_none:n
-          }
-      }
-    \cs_set:Npn \__debug_suspended:T #1 { }
-  }
-  {
-    \cs_set_protected:Npn \debug_suspend: { }
-    \cs_set_protected:Npn \debug_resume: { }
-  }
-\__kernel_if_debug:TF
-  {
-    \exp_args:Nc \cs_set_protected:Npn { __debug_check-declarations_on: }
-      {
-        \cs_set_protected:Npn \__kernel_chk_var_exist:N ##1
-          {
-            \__debug_suspended:T \use_none:nnn
-            \cs_if_exist:NF ##1
-              {
-                \__kernel_msg_error:nnx { kernel } { non-declared-variable }
-                  { \token_to_str:N ##1 }
-              }
-          }
-        \cs_set_protected:Npn \__kernel_chk_cs_exist:N ##1
-          {
-            \__debug_suspended:T \use_none:nnn
-            \cs_if_exist:NF ##1
-              {
-                \__kernel_msg_error:nnx { kernel } { command-not-defined }
-                  { \token_to_str:N ##1 }
-              }
-          }
-        \cs_set_protected:Npn \__kernel_chk_var_scope:NN
-          {
-            \__debug_suspended:T \use_none:nnn
-            \__debug_chk_var_scope_aux:NN
-          }
-        \cs_set_protected:Npn \__kernel_chk_var_local:N ##1
-          {
-            \__debug_suspended:T \use_none:nnnnn
-            \__kernel_chk_var_exist:N ##1
-            \__debug_chk_var_scope_aux:NN l ##1
-          }
-        \cs_set_protected:Npn \__kernel_chk_var_global:N ##1
-          {
-            \__debug_suspended:T \use_none:nnnnn
-            \__kernel_chk_var_exist:N ##1
-            \__debug_chk_var_scope_aux:NN g ##1
-          }
-      }
-    \exp_args:Nc \cs_set_protected:Npn { __debug_check-declarations_off: }
-      {
-        \cs_set_protected:Npn \__kernel_chk_var_exist:N ##1 { }
-        \cs_set_protected:Npn \__kernel_chk_cs_exist:N ##1 { }
-        \cs_set_protected:Npn \__kernel_chk_var_local:N ##1 { }
-        \cs_set_protected:Npn \__kernel_chk_var_global:N ##1 { }
-        \cs_set_protected:Npn \__kernel_chk_var_scope:NN ##1##2 { }
-      }
-    \cs_set_protected:Npn \__kernel_chk_cs_exist:c
-      { \exp_args:Nc \__kernel_chk_cs_exist:N }
-    \tex_ifodd:D \l@expl@check@declarations@bool
-      \use:c { __debug_check-declarations_on: }
-    \else:
-      \use:c { __debug_check-declarations_off: }
-    \fi:
-  }
-  { }
-\__kernel_if_debug:TF
-  {
-    \cs_set_protected:Npn \__debug_chk_var_scope_aux:NN #1#2
-      { \exp_args:NNf \__debug_chk_var_scope_aux:Nn #1 { \cs_to_str:N #2 } }
-    \cs_set_protected:Npn \__debug_chk_var_scope_aux:Nn #1#2
-      {
-        \if:w _ \use_i:nn \use_i_delimit_by_q_stop:nw #2 ? ? \q_stop
-          \exp_after:wN \__debug_chk_var_scope_aux:NNn
-            \use_i_delimit_by_q_stop:nw #2 ? \q_stop
-            #1 {#2}
-        \else:
-          \exp_args:Nc \__debug_chk_var_scope_aux:NNn
-            { __debug_chk_/ #2 }
-            #1 {#2}
-        \fi:
-      }
-    \cs_set_protected:Npn \__debug_chk_var_scope_aux:NNn #1#2#3
-      {
-        \if:w #1 #2
-        \else:
-          \if:w #1 \scan_stop:
-            \cs_gset_nopar:Npn #1 {#2}
-          \else:
-            \__kernel_msg_error:nnxxx { kernel } { local-global }
-              {#1} {#2} { \iow_char:N \\ #3 }
-          \fi:
-        \fi:
-      }
-  }
-  { }
-\__kernel_if_debug:TF
-  {
-    \exp_args:Nc \cs_set_protected:Npn { __debug_check-expressions_on: }
-      {
-        \cs_set:Npn \__kernel_chk_expr:nNnN ##1##2
-          {
-            \__debug_suspended:T { ##1 \use_none:nnnnnnn }
-            \exp_after:wN \__debug_chk_expr_aux:nNnN
-            \exp_after:wN { \tex_the:D ##2 ##1 \scan_stop: }
-            ##2
-          }
-      }
-    \exp_args:Nc \cs_set_protected:Npn { __debug_check-expressions_off: }
-      { \cs_set:Npn \__kernel_chk_expr:nNnN ##1##2##3##4 {##1} }
-    \use:c { __debug_check-expressions_off: }
-    \cs_set:Npn \__debug_chk_expr_aux:nNnN #1#2#3#4
-      {
-        \tl_if_empty:oF
-          {
-            \tex_romannumeral:D - 0
-            \exp_after:wN \use_none:n
-            \int_value:w #3 #2 #1 \scan_stop:
-          }
-          {
-            \__kernel_msg_expandable_error:nnnn
-              { kernel } { expr } {#4} {#1}
-          }
-        #1
-      }
-  }
-  { }
-\__kernel_if_debug:TF
-  {
-    \exp_args:Nc \cs_set_protected:Npn { __debug_log-functions_on: }
-      {
-        \cs_set_protected:Npn \__kernel_debug_log:x
-          { \__debug_suspended:T \use_none:nn \iow_log:x }
-      }
-    \exp_args:Nc \cs_set_protected:Npn { __debug_log-functions_off: }
-      { \cs_set_protected:Npn \__kernel_debug_log:x { \use_none:n } }
-    \tex_ifodd:D \l@expl@log@functions@bool
-      \use:c { __debug_log-functions_on: }
-    \else:
-      \use:c { __debug_log-functions_off: }
-    \fi:
-  }
-  { }
-\__kernel_if_debug:TF
-  {
-    \cs_set_protected:Npn \__debug_deprecation_on:
-      { \g__debug_deprecation_on_tl }
-    \cs_set_protected:Npn \__debug_deprecation_off:
-      { \g__debug_deprecation_off_tl }
-    \cs_set_nopar:Npn \g__debug_deprecation_on_tl { }
-    \cs_set_nopar:Npn \g__debug_deprecation_off_tl { }
-    \cs_set_protected:Npn \__kernel_deprecation_code:nn #1#2
-      {
-        \tl_gput_right:Nn \g__debug_deprecation_on_tl {#1}
-        \tl_gput_right:Nn \g__debug_deprecation_off_tl {#2}
-      }
-  }
-  {
-    \cs_set_protected:Npn \__kernel_deprecation_code:nn #1#2 { }
-  }
-\__kernel_if_debug:TF
-  {
-    \cs_set_protected:Npn \__kernel_patch:nnNNpn #1#2#3#4#5#
-      { \__debug_patch_aux:nnnn {#1} {#2} { #3 #4 #5 } }
-    \cs_set_protected:Npn \__kernel_patch_conditional:nNNpnn #1#2#3#4#
-      { \__debug_patch_auxii:nnnn {#1} { #2 #3 #4 } }
-    \cs_set_protected:Npn \__debug_patch_aux:nnnn #1#2#3#4
-      { #3 { #1 #4 #2 } }
-    \cs_set_protected:Npn \__debug_patch_auxii:nnnn #1#2#3#4
-      { #2 {#3} { #1 #4 } }
-  }
+\cs_set_protected:Npn \debug_on:n #1
   {
-    \cs_set_protected:Npn \__kernel_patch:nnNNpn #1#2 { }
-    \cs_set_protected:Npn \__kernel_patch_conditional:nNNpnn #1 { }
+    \__kernel_msg_error:nnx { kernel } { enable-debug }
+      { \tl_to_str:n { \debug_on:n {#1} } }
   }
-\cs_set_protected:Npn \__kernel_patch_args:nNNpn
-  { \__kernel_patch_args:nnnNNpn { } { } }
-\cs_set_protected:Npn \__kernel_patch_conditional_args:nNNpnn
-  { \__kernel_patch_conditional_args:nnnNNpnn { } { } }
-\__kernel_if_debug:TF
+\cs_set_protected:Npn \debug_off:n #1
   {
-    \cs_set_protected:Npn \__kernel_patch_args:nnnNNpn #1#2#3#4#5#6#
-      { \__debug_patch_args_aux:nnnNNnn {#1} {#2} {#3} #4 #5 {#6} }
-    \cs_set_protected:Npn \__kernel_patch_conditional_args:nnnNNpnn
-      #1#2#3#4#5#6#
-      { \__debug_patch_args_aux:nnnNNnnn {#1} {#2} {#3} #4 #5 {#6} }
-    \cs_set_protected:Npn \__debug_patch_args_aux:nnnNNnn #1#2#3#4#5#6#7
-      {
-        \cs_set:Npn \__debug_tmp:w #6 {#7}
-        \exp_after:wN \__debug_patch_args_aux:nnnn \exp_after:wN
-          { \__debug_tmp:w #3 } { #4 #5 #6 } {#1} {#2}
-      }
-    \cs_set_protected:Npn \__debug_patch_args_aux:nnnNNnnn #1#2#3#4#5#6#7#8
-      {
-        \cs_set:Npn \__debug_tmp:w #6 {#8}
-        \exp_after:wN \__debug_patch_args_aux:nnnn \exp_after:wN
-          { \__debug_tmp:w #3 } { #4 #5 #6 {#7} } {#1} {#2}
-      }
-    \cs_set_protected:Npn \__debug_patch_args_aux:nnnn #1#2#3#4
-      { #2 { #3 #1 #4 } }
+    \__kernel_msg_error:nnx { kernel } { enable-debug }
+       { \tl_to_str:n { \debug_off:n {#1} } }
   }
+\cs_set_protected:Npn \debug_suspend: { }
+\cs_set_protected:Npn \debug_resume: { }
+\cs_set_nopar:Npn \g__debug_deprecation_on_tl { }
+\cs_set_nopar:Npn \g__debug_deprecation_off_tl { }
+\cs_set_protected:Npn \__kernel_deprecation_code:nn #1#2
   {
-    \cs_set_protected:Npn \__kernel_patch_args:nnnNNpn #1#2#3 { }
-    \cs_set_protected:Npn \__kernel_patch_conditional_args:nnnNNpnn
-      #1#2#3 { }
+    \tl_gput_right:Nn \g__debug_deprecation_on_tl {#1}
+    \tl_gput_right:Nn \g__debug_deprecation_off_tl {#2}
   }
 \cs_set:Npn \prg_return_true:
   { \exp_after:wN \use_i:nn  \exp:w }
@@ -2666,20 +2411,12 @@
       #5 {#1} {#2} {#3} {#4}
     \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5
   }
-\__kernel_patch:nnNNpn
-  { \__kernel_chk_cs_exist:c { #5 _p : #6    } } { }
 \cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3 _p : #4    }    { #5 _p : #6    } }
-\__kernel_patch:nnNNpn
-  { \__kernel_chk_cs_exist:c { #5    : #6 TF } } { }
 \cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3    : #4 TF }    { #5    : #6 TF } }
-\__kernel_patch:nnNNpn
-  { \__kernel_chk_cs_exist:c { #5    : #6 T  } } { }
 \cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3    : #4 T  }    { #5    : #6 T  } }
-\__kernel_patch:nnNNpn
-  { \__kernel_chk_cs_exist:c { #5    : #6  F } } { }
 \cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \q_stop #2#3#4#5#6
   { #2 { #3    : #4  F }    { #5    : #6  F } }
 \tex_chardef:D \c_true_bool  = 1 ~
@@ -2804,11 +2541,6 @@
   { \tex_immediate:D \tex_write:D -1 }
 \cs_set_protected:Npn \iow_term:x
   { \tex_immediate:D \tex_write:D 16 }
-\__kernel_patch:nnNNpn { }
-  {
-    \__kernel_debug_log:x
-      { Defining~\token_to_str:N #1~ \msg_line_context: }
-  }
 \cs_set_protected:Npn \__kernel_chk_if_free_cs:N #1
   {
     \cs_if_free:NF #1
@@ -3146,6 +2878,12 @@
 \cs_new_eq:NN \prg_break_point: \prg_do_nothing:
 \cs_new:Npn \prg_break: #1 \prg_break_point: { }
 \cs_new:Npn \prg_break:n #1#2 \prg_break_point: {#1}
+\cs_new_protected:Npn \mode_leave_vertical:
+  {
+    \if_mode_vertical:
+      \exp_after:wN \tex_indent:D
+    \fi:
+  }
 %% File: l3expan.dtx
 \cs_new:Npn \__exp_arg_next:nnn #1#2#3 { #2 \::: { #3 {#1} } }
 \cs_new:Npn \__exp_arg_next:Nnn #1#2#3 { #2 \::: { #3 #1 } }
@@ -3185,7 +2923,7 @@
       \exp_after:wN { \exp:w \__exp_eval_register:N #3 }
       {#1} {#2}
 }
-\cs_new:Npn \::v # 1\::: #2#3
+\cs_new:Npn \::v #1 \::: #2#3
   {
     \exp_after:wN \__exp_arg_next:nnn
       \exp_after:wN { \exp:w \__exp_eval_register:c {#3} }
@@ -3338,50 +3076,8 @@
     \cs:w #3 \exp_after:wN \cs_end:
     \exp_after:wN {#4}
   }
-\cs_new_protected:Npn \exp_args:Nx { \::x \::: }
-\cs_new:Npn \exp_args:Nnc { \::n \::c \::: }
-\cs_new:Npn \exp_args:Nno { \::n \::o \::: }
-\cs_new:Npn \exp_args:NnV { \::n \::V \::: }
-\cs_new:Npn \exp_args:Nnv { \::n \::v \::: }
-\cs_new:Npn \exp_args:Nne { \::n \::e \::: }
-\cs_new:Npn \exp_args:Nnf { \::n \::f \::: }
-\cs_new:Npn \exp_args:Noc { \::o \::c \::: }
-\cs_new:Npn \exp_args:Noo { \::o \::o \::: }
-\cs_new:Npn \exp_args:Nof { \::o \::f \::: }
-\cs_new:Npn \exp_args:NVo { \::V \::o \::: }
-\cs_new:Npn \exp_args:Nfo { \::f \::o \::: }
-\cs_new:Npn \exp_args:Nff { \::f \::f \::: }
-\cs_new_protected:Npn \exp_args:NNx { \::N \::x \::: }
-\cs_new_protected:Npn \exp_args:Ncx { \::c \::x \::: }
-\cs_new_protected:Npn \exp_args:Nnx { \::n \::x \::: }
-\cs_new_protected:Npn \exp_args:Nox { \::o \::x \::: }
-\cs_new_protected:Npn \exp_args:Nxo { \::x \::o \::: }
-\cs_new_protected:Npn \exp_args:Nxx { \::x \::x \::: }
-\cs_new:Npn \exp_args:NNNv { \::N \::N \::v \::: }
-\cs_new:Npn \exp_args:NNcf { \::N \::c \::f \::: }
-\cs_new:Npn \exp_args:NNno { \::N \::n \::o \::: }
-\cs_new:Npn \exp_args:NNnV { \::N \::n \::V \::: }
-\cs_new:Npn \exp_args:NNoo { \::N \::o \::o \::: }
-\cs_new:Npn \exp_args:NNVV { \::N \::V \::V \::: }
-\cs_new:Npn \exp_args:Ncno { \::c \::n \::o \::: }
-\cs_new:Npn \exp_args:NcnV { \::c \::n \::V \::: }
-\cs_new:Npn \exp_args:Ncoo { \::c \::o \::o \::: }
-\cs_new:Npn \exp_args:NcVV { \::c \::V \::V \::: }
-\cs_new:Npn \exp_args:Nnnc { \::n \::n \::c \::: }
-\cs_new:Npn \exp_args:Nnno { \::n \::n \::o \::: }
-\cs_new:Npn \exp_args:Nnnf { \::n \::n \::f \::: }
-\cs_new:Npn \exp_args:Nnff { \::n \::f \::f \::: }
-\cs_new:Npn \exp_args:Nooo { \::o \::o \::o \::: }
-\cs_new:Npn \exp_args:Noof { \::o \::o \::f \::: }
-\cs_new:Npn \exp_args:Nffo { \::f \::f \::o \::: }
-\cs_new_protected:Npn \exp_args:NNNx { \::N \::N \::x \::: }
-\cs_new_protected:Npn \exp_args:NNnx { \::N \::n \::x \::: }
-\cs_new_protected:Npn \exp_args:NNox { \::N \::o \::x \::: }
-\cs_new_protected:Npn \exp_args:Nnnx { \::n \::n \::x \::: }
-\cs_new_protected:Npn \exp_args:Nnox { \::n \::o \::x \::: }
-\cs_new_protected:Npn \exp_args:Nccx { \::c \::c \::x \::: }
-\cs_new_protected:Npn \exp_args:Ncnx { \::c \::n \::x \::: }
-\cs_new_protected:Npn \exp_args:Noox { \::o \::o \::x \::: }
+\cs_new_protected:Npn \exp_args:Nx #1#2
+  { \use:x { \exp_not:N #1 {#2} } }
 \cs_new:Npn \__exp_arg_last_unbraced:nn #1#2 { #2#1 }
 \cs_new:Npn \::o_unbraced \::: #1#2
   { \exp_after:wN \__exp_arg_last_unbraced:nn \exp_after:wN {#2} {#1} }
@@ -3794,7 +3490,6 @@
     \cs_new_eq:NN \__exp_e_the_pdfpagesattr: ?
     \cs_new_eq:NN \__exp_e_the_pdfpkmode: ?
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_cs_exist:N #1 } { }
 \cs_new_protected:Npn \cs_generate_variant:Nn #1#2
   {
     \__cs_generate_variant:N #1
@@ -3958,27 +3653,15 @@
   }
 \cs_new:Npn \__cs_generate_variant_same:N #1
   {
-    \if:w N #1 N \else:
-      \if:w p #1 p \else:
-        n
+    \if:w N #1 #1 \else:
+      \if:w p #1 #1 \else:
+        \token_to_str:N n
         \if:w n #1 \else:
           \__cs_generate_variant_loop_special:NNwNNnn #1#1
         \fi:
       \fi:
     \fi:
   }
-\__kernel_patch:nnNNpn
-  {
-    \cs_if_free:NF #4
-      {
-        \__kernel_debug_log:x
-          {
-            Variant~\token_to_str:N #4~%
-            already~defined;~ not~ changing~ it~ \msg_line_context:
-          }
-      }
-  }
-  { }
 \cs_new_protected:Npn \__cs_generate_variant:wwNN
     #1 \q_mark #2 \q_stop #3#4
   {
@@ -3993,27 +3676,112 @@
   }
 \cs_new_protected:Npx \__cs_generate_internal_variant:n #1
   {
-    \exp_not:N \__cs_generate_internal_variant:wwnNwnn
+    \exp_not:N \__cs_generate_internal_variant:wwnNwn
       #1 \exp_not:N \q_mark
         { \cs_set_eq:NN \exp_not:N \__cs_tmp:w \cs_new_protected:Npx }
-        \cs_new_protected:cpx
+        \cs_new_protected:cpn
+        \use:x
       \token_to_str:N x \exp_not:N \q_mark
         { }
-        \cs_new:cpx
+        \cs_new:cpn
+        \exp_not:N \tex_expanded:D
     \exp_not:N \q_stop
-      { exp_args:N #1 }
-      {
-        \exp_not:N \__cs_generate_internal_variant_loop:n #1
-          { : \exp_not:N \use_i:nn }
-      }
+      {#1}
   }
 \exp_last_unbraced:NNNNo
-  \cs_new_protected:Npn \__cs_generate_internal_variant:wwnNwnn #1
-    { \token_to_str:N x } #2 \q_mark #3#4#5 \q_stop #6#7
+  \cs_new_protected:Npn \__cs_generate_internal_variant:wwnNwn #1
+    { \token_to_str:N x } #2 \q_mark #3#4#5#6 \q_stop #7
   {
     #3
-    \cs_if_free:cT {#6} { #4 {#6} {#7} }
+    \cs_if_free:cT { exp_args:N #7 }
+      { \__cs_generate_internal_variant:NNn #4 #5 {#7} }
+  }
+\cs_set_protected:Npn \__cs_tmp:w #1
+  {
+    \cs_new_protected:Npn \__cs_generate_internal_variant:NNn ##1##2##3
+      {
+        \__cs_generate_internal_test:Nw ##2 ##3
+        \q_mark
+        {
+          \use:x
+            {
+              ##1 { exp_args:N ##3 }
+                { \__cs_generate_internal_variant_loop:n ##3 { : \use_i:nn } }
+            }
+        }
+        #1
+        \q_mark
+        { \exp_not:n { \__cs_generate_internal_one_go:NNn ##1 ##2 {##3} } }
+        \q_stop
+      }
+    \cs_new_protected:Npn \__cs_generate_internal_test_aux:w
+        ##1 #1 ##2 \q_mark ##3 ##4 \q_stop {##3}
+    \cs_if_exist:NTF \tex_expanded:D
+      {
+        \cs_new_eq:NN \__cs_generate_internal_test:Nw
+          \__cs_generate_internal_test_aux:w
+      }
+      {
+        \cs_new_protected:Npn \__cs_generate_internal_test:Nw ##1
+          {
+            \if_meaning:w \tex_expanded:D ##1
+              \exp_after:wN \__cs_generate_internal_test_aux:w
+              \exp_after:wN #1
+            \else:
+              \exp_after:wN \__cs_generate_internal_test_aux:w
+            \fi:
+          }
+      }
+  }
+\exp_args:No \__cs_tmp:w { \token_to_str:N p }
+\cs_new_protected:Npn \__cs_generate_internal_one_go:NNn #1#2#3
+  {
+    \__cs_generate_internal_loop:nwnnw
+      { \exp_not:N ##1 } 1 . { } { }
+      #3 { ? \__cs_generate_internal_end:w } X ;
+      23456789 { ? \__cs_generate_internal_long:w } ;
+    #1 #2 {#3}
   }
+\cs_new_protected:Npn \__cs_generate_internal_loop:nwnnw #1#2 . #3#4#5#6 ; #7
+  {
+    \use_none:n #5
+    \use_none:n #7
+    \cs_if_exist_use:cF { __cs_generate_internal_#5:NN }
+      { \__cs_generate_internal_other:NN }
+        #5 #7
+    #7 .
+    { #3 #1 } { #4 ## #2 }
+    #6 ;
+  }
+\cs_new_protected:Npn \__cs_generate_internal_N:NN #1#2
+  { \__cs_generate_internal_loop:nwnnw { \exp_not:N ###2 } }
+\cs_new_protected:Npn \__cs_generate_internal_c:NN #1#2
+  { \exp_args:No \__cs_generate_internal_loop:nwnnw { \exp_not:c {###2} } }
+\cs_new_protected:Npn \__cs_generate_internal_n:NN #1#2
+  { \__cs_generate_internal_loop:nwnnw { { \exp_not:n {###2} } } }
+\cs_new_protected:Npn \__cs_generate_internal_x:NN #1#2
+  { \__cs_generate_internal_loop:nwnnw { {###2} } }
+\cs_new_protected:Npn \__cs_generate_internal_other:NN #1#2
+  {
+    \exp_args:No \__cs_generate_internal_loop:nwnnw
+      {
+        \exp_after:wN
+        {
+          \exp:w \exp_args:NNc \exp_after:wN \exp_end:
+          { exp_not:#1 } {###2}
+        }
+      }
+  }
+\cs_new_protected:Npn \__cs_generate_internal_end:w #1 . #2#3#4 ; #5 ; #6#7#8
+  { #6 { exp_args:N #8 } #3 { #7 {#2} } }
+\cs_new_protected:Npn \__cs_generate_internal_long:w #1 N #2#3 . #4#5#6#
+  {
+    \exp_args:Nx \__cs_generate_internal_long:nnnNNn
+      { \__cs_generate_internal_variant_loop:n #2 #6 { : \use_i:nn } }
+      {#4} {#5}
+  }
+\cs_new:Npn \__cs_generate_internal_long:nnnNNn #1#2#3#4 ; ; #5#6#7
+  { #5 { exp_args:N #7 } #3 { #6 { \exp_not:n {#1} {#2} } } }
 \cs_new:Npn \__cs_generate_internal_variant_loop:n #1
   {
     \exp_after:wN \exp_not:N \cs:w :: #1 \cs_end:
@@ -4075,21 +3843,61 @@
               {
                 \__kernel_msg_error:nnnn { kernel } { invalid-exp-args }
                   {####1} {##1}
-                \str_map_break:n { \use_none:nnnn }
+                \str_map_break:n { \use_none:nn }
               }
           }
-        \exp_args:Nc \__cs_args_generate:Nn { exp_args:N ##1 } {##1}
+        \__cs_generate_internal_variant:n {##1}
       }
   }
-\cs_new_protected:Npn \__cs_args_generate:Nn #1#2
+\cs_set_protected:Npn \__cs_tmp:w #1
   {
-    \cs_if_exist:NF #1
-      {
-        \str_if_in:nnTF {#2} { x } { \cs_new_protected:Npx } { \cs_new:Npx }
-          #1 { \tl_map_function:nN { #2 : } \__cs_args_generate:n }
-      }
+    \group_begin:
+      \exp_args:No \__cs_generate_internal_variant:n
+        { \tl_to_str:n {#1} }
+    \group_end:
   }
-\cs_new:Npn \__cs_args_generate:n #1 { \exp_not:c { :: #1 } }
+\__cs_tmp:w { nc }
+\__cs_tmp:w { no }
+\__cs_tmp:w { nV }
+\__cs_tmp:w { nv }
+\__cs_tmp:w { ne }
+\__cs_tmp:w { nf }
+\__cs_tmp:w { oc }
+\__cs_tmp:w { oo }
+\__cs_tmp:w { of }
+\__cs_tmp:w { Vo }
+\__cs_tmp:w { fo }
+\__cs_tmp:w { ff }
+\__cs_tmp:w { Nx }
+\__cs_tmp:w { cx }
+\__cs_tmp:w { nx }
+\__cs_tmp:w { ox }
+\__cs_tmp:w { xo }
+\__cs_tmp:w { xx }
+\__cs_tmp:w { Ncf }
+\__cs_tmp:w { Nno }
+\__cs_tmp:w { NnV }
+\__cs_tmp:w { Noo }
+\__cs_tmp:w { NVV }
+\__cs_tmp:w { cno }
+\__cs_tmp:w { cnV }
+\__cs_tmp:w { coo }
+\__cs_tmp:w { cVV }
+\__cs_tmp:w { nnc }
+\__cs_tmp:w { nno }
+\__cs_tmp:w { nnf }
+\__cs_tmp:w { nff }
+\__cs_tmp:w { ooo }
+\__cs_tmp:w { oof }
+\__cs_tmp:w { ffo }
+\__cs_tmp:w { NNx }
+\__cs_tmp:w { Nnx }
+\__cs_tmp:w { Nox }
+\__cs_tmp:w { nnx }
+\__cs_tmp:w { nox }
+\__cs_tmp:w { ccx }
+\__cs_tmp:w { cnx }
+\__cs_tmp:w { oox }
 %% File: l3tl.dtx
 \cs_new_protected:Npn \tl_new:N #1
   {
@@ -4097,13 +3905,11 @@
     \cs_gset_eq:NN #1 \c_empty_tl
   }
 \cs_generate_variant:Nn \tl_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
 \cs_new_protected:Npn \tl_const:Nn #1#2
   {
     \__kernel_chk_if_free_cs:N #1
     \cs_gset_nopar:Npx #1 { \exp_not:n {#2} }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
 \cs_new_protected:Npn \tl_const:Nx #1#2
   {
     \__kernel_chk_if_free_cs:N #1
@@ -4123,41 +3929,12 @@
   { \tl_if_exist:NTF #1 { \tl_gclear:N #1 } { \tl_new:N #1 } }
 \cs_generate_variant:Nn \tl_clear_new:N  { c }
 \cs_generate_variant:Nn \tl_gclear_new:N { c }
-\__kernel_if_debug:TF
-  {
-    \cs_new_protected:Npn \tl_set_eq:NN #1#2
-      {
-        \__kernel_chk_var_local:N #1
-        \__kernel_chk_var_exist:N #2
-        \cs_set_eq:NN #1 #2
-      }
-    \cs_new_protected:Npn \tl_gset_eq:NN #1#2
-      {
-        \__kernel_chk_var_global:N #1
-        \__kernel_chk_var_exist:N #2
-        \cs_gset_eq:NN #1 #2
-      }
-  }
-  {
-    \cs_new_eq:NN \tl_set_eq:NN  \cs_set_eq:NN
-    \cs_new_eq:NN \tl_gset_eq:NN \cs_gset_eq:NN
-  }
+\cs_new_protected:Npn \tl_set_eq:NN  #1#2 { \cs_set_eq:NN #1 #2 }
+\cs_new_protected:Npn \tl_gset_eq:NN #1#2 { \cs_gset_eq:NN #1 #2 }
 \cs_generate_variant:Nn \tl_set_eq:NN { cN, Nc, cc }
 \cs_generate_variant:Nn \tl_gset_eq:NN { cN, Nc, cc }
-\__kernel_patch:nnNNpn
-  {
-    \__kernel_chk_var_exist:N #2
-    \__kernel_chk_var_exist:N #3
-  }
-  { }
 \cs_new_protected:Npn \tl_concat:NNN #1#2#3
   { \tl_set:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} } }
-\__kernel_patch:nnNNpn
-  {
-    \__kernel_chk_var_exist:N #2
-    \__kernel_chk_var_exist:N #3
-  }
-  { }
 \cs_new_protected:Npn \tl_gconcat:NNN #1#2#3
   { \tl_gset:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} } }
 \cs_generate_variant:Nn \tl_concat:NNN  { ccc }
@@ -4175,22 +3952,16 @@
     \tl_const:Nn \c_novalue_tl { ANoValue- }
   }
 \tl_const:Nn \c_space_tl { ~ }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_set:Nn #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:n {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_set:No #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_set:Nx #1#2
   { \cs_set_nopar:Npx #1 {#2} }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gset:Nn #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:n {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gset:No #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gset:Nx #1#2
   { \cs_gset_nopar:Npx #1 {#2} }
 \cs_generate_variant:Nn \tl_set:Nn  {         NV , Nv , Nf }
@@ -4199,28 +3970,20 @@
 \cs_generate_variant:Nn \tl_gset:Nn {         NV , Nv , Nf }
 \cs_generate_variant:Nn \tl_gset:Nx { c }
 \cs_generate_variant:Nn \tl_gset:Nn { c, co , cV , cv , cf }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:Nn #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:NV #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:No #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_left:Nx #1#2
   { \cs_set_nopar:Npx #1 { #2 \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:Nn #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:n {#2} \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:NV #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:V #2 \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:No #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o {#2} \exp_not:o #1 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_left:Nx #1#2
   { \cs_gset_nopar:Npx #1 { #2 \exp_not:o {#1} } }
 \cs_generate_variant:Nn \tl_put_left:Nn  { c }
@@ -4231,28 +3994,20 @@
 \cs_generate_variant:Nn \tl_gput_left:NV { c }
 \cs_generate_variant:Nn \tl_gput_left:No { c }
 \cs_generate_variant:Nn \tl_gput_left:Nx { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:Nn #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:NV #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:No #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_put_right:Nx #1#2
   { \cs_set_nopar:Npx #1 { \exp_not:o #1 #2 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:Nn #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:n {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:NV #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:V #2 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:No #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o #1 \exp_not:o {#2} } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_gput_right:Nx #1#2
   { \cs_gset_nopar:Npx #1 { \exp_not:o {#1} #2 } }
 \cs_generate_variant:Nn \tl_put_right:Nn  { c }
@@ -4915,6 +4670,8 @@
       \prg_return_false:
     \fi:
   }
+\prg_generate_conditional_variant:Nnn \tl_if_head_eq_catcode:nN
+  { o } { p , TF , T , F }
 \prg_new_conditional:Npnn \tl_if_head_eq_meaning:nN #1#2 { p , T , F , TF }
   {
     \tl_if_head_is_N_type:nTF { #1 ? }
@@ -5340,9 +5097,9 @@
   }
 \cs_new:Npn \__str_case:nnTF #1#2#3#4
   { \__str_case:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
-\cs_generate_variant:Nn \str_case:nn   { o , nV , nv }
+\cs_generate_variant:Nn \str_case:nn   { V , o , nV , nv }
 \prg_generate_conditional_variant:Nnn \str_case:nn
-  { o , nV , nv } { T , F , TF }
+  { V , o , nV , nv } { T , F , TF }
 \cs_new:Npn \__str_case:nw #1#2#3
   {
     \str_if_eq:nnTF {#1} {#2}
@@ -5783,7 +5540,6 @@
 \cs_new_eq:NN \str_log:N \tl_log:N
 \cs_generate_variant:Nn \str_log:N { c }
 %% File: l3quark.dtx
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN q #1 } { }
 \cs_new_protected:Npn \quark_new:N #1
   {
     \__kernel_chk_if_free_cs:N #1
@@ -5885,7 +5641,6 @@
       \__kernel_tl_to_str:w \exp_after:wN {#1} \q_nil
   }
 \tl_new:N \g__scan_marks_tl
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN s #1 } { }
 \cs_new_protected:Npn \scan_new:N #1
   {
     \tl_if_in:NnTF \g__scan_marks_tl { #1 }
@@ -5963,6 +5718,12 @@
 \cs_generate_variant:Nn \seq_gset_from_clist:NN {     Nc }
 \cs_generate_variant:Nn \seq_gset_from_clist:NN { c , cc }
 \cs_generate_variant:Nn \seq_gset_from_clist:Nn { c      }
+\cs_new_protected:Npn \seq_const_from_clist:Nn #1#2
+  {
+    \tl_const:Nx #1
+      { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
+  }
+\cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
 \cs_new_protected:Npn \seq_set_split:Nnn
   { \__seq_set_split:NNnn \tl_set:Nx }
 \cs_new_protected:Npn \seq_gset_split:Nnn
@@ -6111,6 +5872,51 @@
   }
 \prg_generate_conditional_variant:Nnn \seq_if_empty:N
   { c } { p , T , F , TF }
+\cs_if_exist:NTF \tex_uniformdeviate:D
+  {
+    \seq_new:N \g__seq_internal_seq
+    \cs_new_protected:Npn \seq_shuffle:N { \__seq_shuffle:NN \seq_set_eq:NN }
+    \cs_new_protected:Npn \seq_gshuffle:N { \__seq_shuffle:NN \seq_gset_eq:NN }
+    \cs_new_protected:Npn \__seq_shuffle:NN #1#2
+      {
+        \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
+          {
+            \__kernel_msg_error:nnx { kernel } { shuffle-too-large }
+              { \token_to_str:N #2 }
+          }
+          {
+            \group_begin:
+              \cs_set_eq:NN \__seq_item:n \__seq_shuffle_item:n
+              \int_zero:N \l__seq_internal_a_int
+              #2
+              \seq_gset_from_inline_x:Nnn \g__seq_internal_seq
+                { \int_step_function:nN { \l__seq_internal_a_int } }
+                { \tex_the:D \tex_toks:D ##1 }
+            \group_end:
+            #1 #2 \g__seq_internal_seq
+            \seq_gclear:N \g__seq_internal_seq
+          }
+      }
+    \cs_new_protected:Npn \__seq_shuffle_item:n
+      {
+        \int_incr:N \l__seq_internal_a_int
+        \int_set:Nn \l__seq_internal_b_int
+          { 1 + \tex_uniformdeviate:D \l__seq_internal_a_int }
+        \tex_toks:D \l__seq_internal_a_int
+          = \tex_toks:D \l__seq_internal_b_int
+        \tex_toks:D \l__seq_internal_b_int
+      }
+  }
+  {
+    \cs_new_protected:Npn \seq_shuffle:N #1
+      {
+        \__kernel_msg_error:nnn { kernel } { fp-no-random }
+          { \seq_shuffle:N #1 }
+      }
+    \cs_new_eq:NN \seq_gshuffle:N \seq_shuffle:N
+  }
+\cs_generate_variant:Nn \seq_shuffle:N { c }
+\cs_generate_variant:Nn \seq_gshuffle:N { c }
 \prg_new_protected_conditional:Npnn \seq_if_in:Nn #1#2
   { T , F , TF }
   {
@@ -6470,13 +6276,23 @@
 \cs_new_eq:NN \__int_eval_end:    \tex_relax:D
 \cs_new_eq:NN \if_int_odd:w     \tex_ifodd:D
 \cs_new_eq:NN \if_case:w        \tex_ifcase:D
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_eval:n } }
 \cs_new:Npn \int_eval:n #1
   { \int_value:w \__int_eval:w #1 \__int_eval_end: }
 \cs_new:Npn \int_eval:w { \int_value:w \__int_eval:w }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_abs:n } }
+\cs_new:Npn \int_sign:n #1
+  {
+    \int_value:w \exp_after:wN \__int_sign:Nw
+      \int_value:w \__int_eval:w #1 \__int_eval_end: ;
+    \exp_stop_f:
+  }
+\cs_new:Npn \__int_sign:Nw #1#2 ;
+  {
+    \if_meaning:w 0 #1
+      0
+    \else:
+      \if_meaning:w - #1 - \fi: 1
+    \fi:
+  }
 \cs_new:Npn \int_abs:n #1
   {
     \int_value:w \exp_after:wN \__int_abs:N
@@ -6485,11 +6301,6 @@
   }
 \cs_new:Npn \__int_abs:N #1
   { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\__kernel_patch_args:nNNpn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_max:nn }
-    { \__kernel_chk_expr:nNnN {#2} \__int_eval:w { } \int_max:nn }
-  }
 \cs_set:Npn \int_max:nn #1#2
   {
     \int_value:w \exp_after:wN \__int_maxmin:wwN
@@ -6498,11 +6309,6 @@
       >
     \exp_stop_f:
   }
-\__kernel_patch_args:nNNpn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_min:nn }
-    { \__kernel_chk_expr:nNnN {#2} \__int_eval:w { } \int_min:nn }
-  }
 \cs_set:Npn \int_min:nn #1#2
   {
     \int_value:w \exp_after:wN \__int_maxmin:wwN
@@ -6519,11 +6325,6 @@
       #2
     \fi:
   }
-\__kernel_patch_args:nNNpn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_div_truncate:nn }
-    { \__kernel_chk_expr:nNnN {#2} \__int_eval:w { } \int_div_truncate:nn }
-  }
 \cs_new:Npn \int_div_truncate:nn #1#2
   {
     \int_value:w \__int_eval:w
@@ -6547,11 +6348,6 @@
   }
 \cs_new:Npn \int_div_round:nn #1#2
   { \int_value:w \__int_eval:w ( #1 ) / ( #2 ) \__int_eval_end: }
-\__kernel_patch_args:nNNpn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_mod:nn }
-    { \__kernel_chk_expr:nNnN {#2} \__int_eval:w { } \int_mod:nn }
-  }
 \cs_new:Npn \int_mod:nn #1#2
   {
     \int_value:w \__int_eval:w \exp_after:wN \__int_mod:ww
@@ -6574,10 +6370,6 @@
     \cs:w newcount \cs_end: #1
   }
 \cs_generate_variant:Nn \int_new:N { c }
-\__kernel_patch_args:nnnNNpn
-  { \__kernel_chk_var_scope:NN c #1 }
-  { }
-  { {#1} { \__kernel_chk_expr:nNnN {#2} \__int_eval:w { } \int_const:Nn } }
 \cs_new_protected:Npn \int_const:Nn #1#2
   {
     \int_compare:nNnTF {#2} < \c_zero_int
@@ -6612,9 +6404,7 @@
   \cs_new_eq:NN \__int_constdef:Nw \tex_mathchardef:D
   \tex_mathchardef:D \c__int_max_constdef_int 32767 ~
 \fi:
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \int_zero:N  #1 { #1 = \c_zero_int }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \int_gzero:N #1 { \tex_global:D #1 = \c_zero_int }
 \cs_generate_variant:Nn \int_zero:N  { c }
 \cs_generate_variant:Nn \int_gzero:N { c }
@@ -6624,60 +6414,40 @@
   { \int_if_exist:NTF #1 { \int_gzero:N #1 } { \int_new:N #1 } }
 \cs_generate_variant:Nn \int_zero_new:N  { c }
 \cs_generate_variant:Nn \int_gzero_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \int_set_eq:NN #1#2 { #1 = #2 }
 \cs_generate_variant:Nn \int_set_eq:NN { c , Nc , cc }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \int_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
 \cs_generate_variant:Nn \int_gset_eq:NN { c , Nc , cc }
 \prg_new_eq_conditional:NNn \int_if_exist:N \cs_if_exist:N
   { TF , T , F , p }
 \prg_new_eq_conditional:NNn \int_if_exist:c \cs_if_exist:c
   { TF , T , F , p }
-\cs_set_protected:Npn \__int_tmp:w #1#2#3
-  {
-    \__kernel_patch_args:nnnNNpn
-      { #1 ##1 }
-      { }
-      { {##1} { \__kernel_chk_expr:nNnN {##2} \__int_eval:w { } #3 } }
-    #2 #3
-  }
-\__int_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \int_add:Nn #1#2
   { \tex_advance:D #1 by \__int_eval:w #2 \__int_eval_end: }
-\__int_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \int_sub:Nn #1#2
   { \tex_advance:D #1 by - \__int_eval:w #2 \__int_eval_end: }
-\__int_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \int_gadd:Nn #1#2
   { \tex_global:D \tex_advance:D #1 by \__int_eval:w #2 \__int_eval_end: }
-\__int_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \int_gsub:Nn #1#2
   { \tex_global:D \tex_advance:D #1 by - \__int_eval:w #2 \__int_eval_end: }
 \cs_generate_variant:Nn \int_add:Nn  { c }
 \cs_generate_variant:Nn \int_gadd:Nn { c }
 \cs_generate_variant:Nn \int_sub:Nn  { c }
 \cs_generate_variant:Nn \int_gsub:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \int_incr:N #1
   { \tex_advance:D #1 \c_one_int }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \int_decr:N #1
   { \tex_advance:D #1 - \c_one_int }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \int_gincr:N #1
   { \tex_global:D \tex_advance:D #1 \c_one_int }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \int_gdecr:N #1
   { \tex_global:D \tex_advance:D #1 - \c_one_int }
 \cs_generate_variant:Nn \int_incr:N  { c }
 \cs_generate_variant:Nn \int_decr:N  { c }
 \cs_generate_variant:Nn \int_gincr:N { c }
 \cs_generate_variant:Nn \int_gdecr:N { c }
-\__int_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \int_set:Nn #1#2
   { #1 ~ \__int_eval:w #2 \__int_eval_end: }
-\__int_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \int_gset:Nn #1#2
   { \tex_global:D #1 ~ \__int_eval:w #2 \__int_eval_end: }
 \cs_generate_variant:Nn \int_set:Nn  { c }
@@ -6752,12 +6522,6 @@
   { \__int_compare:nnN { \if_int_compare:w } {#3} > }
 \cs_new:cpn { __int_compare_>=:NNw } #1#2#3 >=
   { \__int_compare:nnN { \if_int_compare:w } {#3} < }
-\__kernel_patch_conditional_args:nNNpnn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_compare:nNn }
-    { \__int_eval_end: #2 }
-    { \__kernel_chk_expr:nNnN {#3} \__int_eval:w { } \int_compare:nNn }
-  }
 \prg_new_conditional:Npnn \int_compare:nNn #1#2#3 { p , T , F , TF }
   {
     \if_int_compare:w \__int_eval:w #1 #2 \__int_eval:w #3 \__int_eval_end:
@@ -6796,8 +6560,6 @@
   }
 \cs_new:Npn \__int_case_end:nw #1#2#3 \q_mark #4#5 \q_stop
   { \exp_end: #1 #4 }
-\__kernel_patch_conditional_args:nNNpnn
-  { { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_if_odd:n } }
 \prg_new_conditional:Npnn \int_if_odd:n #1 { p , T , F , TF}
   {
     \if_int_odd:w \__int_eval:w #1 \__int_eval_end:
@@ -6806,8 +6568,6 @@
       \prg_return_false:
     \fi:
   }
-\__kernel_patch_conditional_args:nNNpnn
-  { { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_if_even:n } }
 \prg_new_conditional:Npnn \int_if_even:n #1 { p , T , F , TF}
   {
     \reverse_if:N \if_int_odd:w \__int_eval:w #1 \__int_eval_end:
@@ -6872,21 +6632,6 @@
     \int_compare:nNnF {#1} #2 {#3}
       { \int_do_until:nNnn {#1} #2 {#3} {#4} }
   }
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1} \__int_eval:w { }
-        \int_step_function:nnnN
-    }
-    {
-      \__kernel_chk_expr:nNnN {#2} \__int_eval:w { }
-        \int_step_function:nnnN
-    }
-    {
-      \__kernel_chk_expr:nNnN {#3} \__int_eval:w { }
-        \int_step_function:nnnN
-    }
-  }
 \cs_new:Npn \int_step_function:nnnN #1#2#3
   {
     \exp_after:wN \__int_step:wwwN
@@ -7337,14 +7082,14 @@
 \int_new:N \l_tmpb_int
 \int_new:N \g_tmpa_int
 \int_new:N \g_tmpb_int
+\int_new:N \l__seq_internal_a_int
+\int_new:N \l__seq_internal_b_int
 %% File: l3flag.dtx
 \cs_new_protected:Npn \flag_new:n #1
   {
     \cs_new:cpn { flag~#1 } ##1 ;
       { \exp_after:wN \use_none:n \cs:w flag~#1~##1 \cs_end: }
   }
-\__kernel_patch:nnNNpn
-  { \exp_args:Nc \__kernel_chk_var_exist:N { flag~#1 } } { }
 \cs_new_protected:Npn \flag_clear:n #1 { \__flag_clear:wn 0 ; {#1} }
 \cs_new_protected:Npn \__flag_clear:wn #1 ; #2
   {
@@ -7369,24 +7114,11 @@
           { \tl_to_str:n { flag~#2~height } = \flag_height:n {#2} }
       }
   }
-\__kernel_if_debug:TF
-  {
-    \cs_new:Npn \__flag_chk_exist:n #1
-      {
-        \flag_if_exist:nF {#1}
-          {
-            \__kernel_msg_expandable_error:nnn
-              { kernel } { bad-variable } { flag~#1~ }
-          }
-      }
-  }
-  { }
 \prg_new_conditional:Npnn \flag_if_exist:n #1 { p , T , F , TF }
   {
     \cs_if_exist:cTF { flag~#1 }
       { \prg_return_true: } { \prg_return_false: }
   }
-\__kernel_patch_conditional:nNNpnn { \__flag_chk_exist:n {#1} }
 \prg_new_conditional:Npnn \flag_if_raised:n #1 { p , T , F , TF }
   {
     \if_cs_exist:w flag~#1~0 \cs_end:
@@ -7395,7 +7127,6 @@
       \prg_return_false:
     \fi:
   }
-\__kernel_patch:nnNNpn { \__flag_chk_exist:n {#1} } { }
 \cs_new:Npn \flag_height:n #1 { \__flag_height_loop:wn 0; {#1} }
 \cs_new:Npn \__flag_height_loop:wn #1 ; #2
   {
@@ -7417,16 +7148,18 @@
 \cs_new_eq:NN \if_predicate:w \tex_ifodd:D
 \cs_new_protected:Npn \bool_new:N #1 { \cs_new_eq:NN #1 \c_false_bool }
 \cs_generate_variant:Nn \bool_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
+\cs_new_protected:Npn \bool_const:Nn #1#2
+  {
+    \__kernel_chk_if_free_cs:N #1
+    \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2}
+  }
+\cs_generate_variant:Nn \bool_const:Nn { c }
 \cs_new_protected:Npn \bool_set_true:N #1
   { \cs_set_eq:NN #1 \c_true_bool }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \bool_set_false:N #1
   { \cs_set_eq:NN #1 \c_false_bool }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \bool_gset_true:N #1
   { \cs_gset_eq:NN #1 \c_true_bool }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \bool_gset_false:N #1
   { \cs_gset_eq:NN #1 \c_false_bool }
 \cs_generate_variant:Nn \bool_set_true:N   { c }
@@ -7437,13 +7170,11 @@
 \cs_new_eq:NN \bool_gset_eq:NN \tl_gset_eq:NN
 \cs_generate_variant:Nn \bool_set_eq:NN { Nc, cN, cc }
 \cs_generate_variant:Nn \bool_gset_eq:NN { Nc, cN, cc }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \bool_set:Nn #1#2
   {
     \exp_last_unbraced:NNNf
       \tex_chardef:D #1 = { \bool_if_p:n {#2} }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \bool_gset:Nn #1#2
   {
     \exp_last_unbraced:NNNNf
@@ -7781,6 +7512,196 @@
   { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
 \__sys_const:nn { sys_if_rand_exist }
   { \cs_if_exist_p:N \tex_uniformdeviate:D }
+\sys_if_rand_exist:TF
+  { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
+  {
+    \cs_new:Npn \sys_rand_seed:
+      {
+        \int_value:w
+        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
+          { \sys_rand_seed: }
+        \c_zero_int
+      }
+  }
+\sys_if_rand_exist:TF
+  {
+    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+      { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
+  }
+  {
+    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
+      {
+        \__kernel_msg_error:nnn { kernel } { fp-no-random }
+          { \sys_gset_rand_seed:n {#1} }
+      }
+  }
+\int_const:Nn \c_sys_shell_escape_int
+  {
+    \sys_if_engine_luatex:TF
+      {
+        \tex_directlua:D
+          { tex.sprint(status.shell_escape~or~os.execute()) }
+      }
+      {
+        \tex_shellescape:D
+      }
+  }
+\tl_new:N \l__sys_internal_tl
+\tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : }
+\cs_new_protected:Npn \sys_get_shell:nnN #1#2#3
+  {
+    \sys_get_shell:nnNF {#1} {#2} #3
+      { \tl_set:Nn #3 { \q_no_value } }
+  }
+\prg_new_protected_conditional:Npnn \sys_get_shell:nnN #1#2#3 { T , F , TF }
+  {
+    \sys_if_shell:TF
+      { \exp_args:No \__sys_get:nnN { \tl_to_str:n {#1} } {#2} #3 }
+      { \prg_return_false: }
+  }
+\cs_new_protected:Npn \__sys_get:nnN #1#2#3
+  {
+    \tl_if_in:nnTF {#1} { " }
+      {
+        \__kernel_msg_error:nnx
+          { kernel } { quote-in-shell } {#1}
+        \prg_return_false:
+      }
+      {
+        \group_begin:
+          \if_false: { \fi:
+          \int_set_eq:NN \tex_tracingnesting:D \c_zero_int
+          \exp_args:No \tex_everyeof:D { \c__sys_marker_tl }
+          #2 \scan_stop:
+          \exp_after:wN \__sys_get_do:Nw
+          \exp_after:wN #3
+          \exp_after:wN \prg_do_nothing:
+            \tex_input:D | "#1" \scan_stop:
+        \if_false: } \fi:
+        \prg_return_true:
+      }
+  }
+\exp_args:Nno \use:nn
+  { \cs_new_protected:Npn \__sys_get_do:Nw #1#2 }
+  { \c__sys_marker_tl }
+  {
+    \group_end:
+    \tl_set:No #1 {#2}
+  }
+\__sys_const:nn { sys_if_shell }
+  { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
+\__sys_const:nn { sys_if_shell_unrestricted }
+  { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
+\__sys_const:nn { sys_if_shell_restricted }
+  { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
+\sys_if_engine_luatex:F
+  { \int_const:Nn \c__sys_shell_stream_int { 18 } }
+\sys_if_engine_luatex:TF
+  {
+    \cs_new_protected:Npn \sys_shell_now:n #1
+      {
+        \lua_now:e
+          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
+      }
+  }
+  {
+    \cs_new_protected:Npn \sys_shell_now:n #1
+      { \iow_now:Nn \c__sys_shell_stream_int {#1} }
+  }
+\cs_generate_variant:Nn \sys_shell_now:n { x }
+\sys_if_engine_luatex:TF
+  {
+    \cs_new_protected:Npn \sys_shell_shipout:n #1
+      {
+        \lua_shipout_e:n
+          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
+      }
+  }
+  {
+    \cs_new_protected:Npn \sys_shell_shipout:n #1
+      { \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
+  }
+\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\tl_new:N \g__sys_backend_tl
+\tl_gset:Nx \g__sys_backend_tl
+  {
+    \sys_if_engine_xetex:TF
+      { xdvipdfmx }
+      {
+         \sys_if_output_pdf:TF
+          { pdfmode }
+          {
+            \bool_lazy_or:nnTF
+              { \sys_if_engine_ptex_p: }
+              { \sys_if_engine_uptex_p: }
+              { dvipdfmx }
+              { dvips }
+           }
+       }
+  }
+\cs_new_protected:Npn \sys_load_backend:n #1
+  {
+    \str_if_exist:NTF \c_sys_backend_str
+      { \__kernel_msg_error:nnxx { sys } { backend-set } }
+      {
+        \tl_if_blank:nF {#1}
+          { \tl_set:Nn \g__sys_backend_tl {#1} }
+        \__sys_load_backend_check:N \g__sys_backend_tl
+        \str_const:Nx \c_sys_backend_str { \g__sys_backend_tl }
+        \__kernel_sys_configuration_load:n
+          { l3backend- \c_sys_backend_str }
+      }
+  }
+\cs_new_protected:Npn \__sys_load_backend_check:N #1
+  {
+    \sys_if_engine_xetex:TF
+      {
+        \str_if_eq:VnF #1 { xdvipdfmx }
+          {
+            \__kernel_msg_error:nnxx { sys } { wrong-backend }
+              #1 { xdvipdfmx }
+            \tl_gset:Nn #1 { xdvipdfmx }
+          }
+      }
+      {
+        \sys_if_output_pdf:TF
+          {
+            \str_if_eq:VnF #1 { pdfmode }
+              {
+                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                  #1 { pdfmode }
+                \tl_gset:Nn #1 { pdfmode }
+              }
+          }
+          {
+            \str_case:VnF #1
+              {
+                { dvipdfmx } { }
+                { dvips }    { }
+                { dvisvgm }  { }
+              }
+              {
+                \__kernel_msg_error:nnxx { sys } { wrong-backend }
+                  #1 { dvips }
+                \tl_gset:Nn #1 { dvips }
+              }
+          }
+      }
+  }
+\bool_new:N \g__sys_debug_bool
+\bool_new:N \g__sys_deprecation_bool
+\cs_new_protected:Npn \sys_load_debug:
+  {
+    \bool_if:NF \g__sys_debug_bool
+      { \__kernel_sys_configuration_load:n { l3debug } }
+    \bool_gset_true:N \g__sys_debug_bool
+  }
+\cs_new_protected:Npn \sys_load_deprecation:
+  {
+    \bool_if:NF \g__sys_deprecation_bool
+      { \__kernel_sys_configuration_load:n { l3deprecation } }
+    \bool_gset_true:N \g__sys_deprecation_bool
+  }
 %% File: l3clist.dtx
 \cs_new_eq:NN \c_empty_clist \c_empty_tl
 \tl_new:N \l__clist_internal_clist
@@ -9420,11 +9341,6 @@
     \cs_if_exist:cTF { \c__msg_text_prefix_tl #1 / #2 }
       { \prg_return_true: } { \prg_return_false: }
   }
-\__kernel_patch:nnNNpn { }
-  {
-    \__kernel_debug_log:x
-      { Defining~message~ #1 / #2 ~\msg_line_context: }
-  }
 \cs_new_protected:Npn \__msg_chk_free:nn #1#2
   {
     \msg_if_exist:nnT {#1} {#2}
@@ -10133,6 +10049,9 @@
     LaTeX~has~been~asked~to~set~the~property~'#1'~for~key~'#2':~
     this~property~is~not~defined.
   }
+\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
+  { Quotes~in~shell~command~'#1'. }
+  { Shell~commands~cannot~contain~quotes~("). }
 \__kernel_msg_new:nnnn { kernel } { scanmark-already-defined }
   { Scan~mark~#1~already~defined. }
   {
@@ -10140,6 +10059,14 @@
     LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
     but~this~name~has~already~been~used~for~a~scan~mark.
   }
+\__kernel_msg_new:nnnn { kernel } { shuffle-too-large }
+  { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
+  {
+    TeX~has~ \int_eval:n { \c_max_register_int + 1 } ~
+    toks~registers:~this~only~allows~to~shuffle~up~to~
+    \int_use:N \c_max_register_int \ items.~
+    The~list~will~not~be~shuffled.
+  }
 \__kernel_msg_new:nnnn { kernel } { variable-not-defined }
   { Variable~#1~undefined. }
   {
@@ -10182,55 +10109,14 @@
         {#4} { :~base~form~is~already~a~variant. }
       } { . }
   }
-\__kernel_if_debug:TF
-  {
-    \__kernel_msg_new:nnnn { kernel } { debug }
-      { The~debugging~option~'#1'~does~not~exist~\msg_line_context:. }
-      {
-        The~functions~'\iow_char:N\\debug_on:n'~and~
-        '\iow_char:N\\debug_off:n'~only~accept~the~arguments~
-        'check-declarations',~'deprecation',~'log-functions',~not~'#1'.
-      }
-    \__kernel_msg_new:nnn { kernel } { expr } { '#2'~in~#1 }
-    \__kernel_msg_new:nnnn { kernel } { local-global }
-      { Inconsistent~local/global~assignment }
-      {
-        \c__msg_coding_error_text_tl
-        \if:w l #2 Local
-        \else:
-          \if:w g #2 Global \else: Constant \fi:
-        \fi:
-        \ %
-        assignment~to~a~
-        \if:w l #1 local
-        \else:
-          \if:w g #1 global \else: constant \fi:
-        \fi:
-        \ %
-        variable~'#3'.
-      }
-    \__kernel_msg_new:nnnn { kernel } { non-declared-variable }
-      { The~variable~#1~has~not~been~declared~\msg_line_context:. }
-      {
-        \c__msg_coding_error_text_tl
-        Checking~is~active,~and~you~have~tried~do~so~something~like: \\
-        \ \ \tl_set:Nn ~ #1 ~ \{ ~ ... ~ \} \\
-        without~first~having: \\
-        \ \ \tl_new:N ~ #1  \\
-        \\
-        LaTeX~will~create~the~variable~and~continue.
-      }
-  }
+\__kernel_msg_new:nnnn { kernel } { enable-debug }
+  { To~use~'#1'~load~expl3~with~the~'enable-debug'~option. }
   {
-    \__kernel_msg_new:nnnn { kernel } { enable-debug }
-      { To~use~'#1'~load~expl3~with~the~'enable-debug'~option. }
-      {
-        The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
-        some~internal~functions~in~expl3~have~been~appropriately~
-        defined.~This~only~happens~if~one~of~the~options~
-        'enable-debug',~'check-declarations'~or~'log-functions'~was~
-        given~when~loading~expl3.
-      }
+     The~function~'#1'~will~be~ignored~because~it~can~only~work~if~
+    some~internal~functions~in~expl3~have~been~appropriately~
+    defined.~This~only~happens~if~one~of~the~options~
+     'enable-debug',~'check-declarations'~or~'log-functions'~was~
+    given~when~loading~expl3.
   }
 \__kernel_msg_new:nnn { kernel } { bad-exp-end-f }
   { Misused~\exp_end_continue_f:w or~:nw }
@@ -10287,6 +10173,18 @@
     streams~are~
     \tl_if_empty:nTF {#2} { open } { in~use: #2 . }
   }
+\__kernel_msg_new:nnnn { sys } { backend-set }
+  { Backend~configuration~already~set. }
+  {
+    Run-time~backend~selection~may~only~be~carried~out~once~during~a~run.~
+    This~second~attempt~to~set~them~will~be~ignored.
+  }
+\__kernel_msg_new:nnnn { sys } { wrong-backend }
+  { Backend~request~inconsistent~with~engine:~using~'#2'~backend. }
+  {
+    You~have~requested~backend~'#1',~but~this~is~not~suitable~for~use~with~the~
+    active~engine.~LaTeX3~will~use~the~'#2'~backend~instead.
+  }
 \group_begin:
 \cs_set_protected:Npn \__msg_tmp:w #1#2
   {
@@ -11361,6 +11259,86 @@
         \prg_return_false:
       }
   }
+\cs_new:Npn \__file_str_cmp:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\sys_if_engine_luatex:T
+  {
+    \cs_set:Npn \__file_str_cmp:nn #1#2
+      {
+        \lua_now:e
+          {
+            l3kernel.strcmp
+              (
+                " \__file_str_escape:n {#1}",
+                " \__file_str_escape:n {#2}"
+              )
+          }
+      }
+   \cs_new:Npn \__file_str_escape:n #1
+     {
+       \lua_escape:e
+         { \__kernel_tl_to_str:w \use:e { {#1} } }
+     }
+  }
+\prg_new_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
+  { p , T , F , TF }
+  {
+    \exp_args:Nee \__file_compare_timestamp:nnN
+      { \file_full_name:n {#1} }
+      { \file_full_name:n {#3} }
+      #2
+   }
+\cs_new:Npn \__file_compare_timestamp:nnN #1#2#3
+  {
+    \tl_if_blank:nTF {#1}
+      {
+        \if_charcode:w #3 <
+          \prg_return_true:
+        \else:
+          \prg_return_false:
+        \fi:
+      }
+      {
+        \tl_if_blank:nTF {#2}
+          {
+             \if_charcode:w #3 >
+                \prg_return_true:
+              \else:
+                \prg_return_false:
+              \fi:
+          }
+          {
+            \if_int_compare:w
+              \__file_str_cmp:nn
+                { \__file_timestamp:n {#1} }
+                { \__file_timestamp:n {#2} }
+                #3 0 \exp_stop_f:
+              \prg_return_true:
+            \else:
+              \prg_return_false:
+            \fi:
+          }
+      }
+  }
+\sys_if_engine_luatex:TF
+  {
+    \cs_new:Npn \__file_timestamp:n #1
+      {
+        \lua_now:e
+          { l3kernel.filemoddate ( " \lua_escape:e {#1} " ) }
+      }
+  }
+  { \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D }
+\cs_if_exist:NF \tex_filemoddate:D
+  {
+    \prg_set_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
+      { p , T , F , TF }
+      {
+        \__kernel_msg_expandable_error:nnn
+          { kernel } { primitive-not-available }
+          { \(pdf)filemoddate }
+        \prg_return_false:
+      }
+  }
 \prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
   {
     \file_get_full_name:nNTF {#1} \l__file_full_name_tl
@@ -11568,26 +11546,46 @@
     which~will~be~wrapped~using~#1.
     \tl_if_empty:nF {#3} { ~ It~was~called~with~argument~'#3'. }
   }
-%% File: l3skip.dtx
-\cs_new_eq:NN \if_dim:w      \tex_ifdim:D
-\cs_new_eq:NN \__dim_eval:w      \tex_dimexpr:D
-\cs_new_eq:NN \__dim_eval_end:   \tex_relax:D
-\cs_new_protected:Npn \dim_new:N #1
+\sys_if_engine_luatex:TF
   {
-    \__kernel_chk_if_free_cs:N #1
-    \cs:w newdimen \cs_end: #1
+    \str_const:Nx \c_sys_platform_str
+      { \tex_directlua:D { tex.print(os.type) } }
   }
-\cs_generate_variant:Nn \dim_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
-\cs_new_protected:Npn \dim_const:Nn #1#2
   {
-    \dim_new:N #1
+    \file_if_exist:nTF { nul: }
+      {
+        \file_if_exist:nF { /dev/null }
+          { \str_const:Nn \c_sys_platform_str { windows } }
+      }
+      {
+        \file_if_exist:nT { /dev/null }
+          { \str_const:Nn \c_sys_platform_str { unix } }
+      }
+  }
+\cs_if_exist:NF \c_sys_platform_str
+  { \str_const:Nn \c_sys_platform_str { unknown }  }
+\clist_map_inline:nn { unix , windows }
+  {
+    \__sys_const:nn { sys_if_platform_ #1 }
+      { \str_if_eq_p:Vn \c_sys_platform_str { #1 } }
+  }
+%% File: l3skip.dtx
+\cs_new_eq:NN \if_dim:w      \tex_ifdim:D
+\cs_new_eq:NN \__dim_eval:w      \tex_dimexpr:D
+\cs_new_eq:NN \__dim_eval_end:   \tex_relax:D
+\cs_new_protected:Npn \dim_new:N #1
+  {
+    \__kernel_chk_if_free_cs:N #1
+    \cs:w newdimen \cs_end: #1
+  }
+\cs_generate_variant:Nn \dim_new:N { c }
+\cs_new_protected:Npn \dim_const:Nn #1#2
+  {
+    \dim_new:N #1
     \tex_global:D #1 ~ \dim_eval:n {#2} \scan_stop:
   }
 \cs_generate_variant:Nn \dim_const:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \dim_zero:N #1 { #1 \c_zero_skip }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \dim_gzero:N #1
   { \tex_global:D #1 \c_zero_skip }
 \cs_generate_variant:Nn \dim_zero:N  { c }
@@ -11602,34 +11600,20 @@
   { TF , T , F , p }
 \prg_new_eq_conditional:NNn \dim_if_exist:c \cs_if_exist:c
   { TF , T , F , p }
-\cs_set_protected:Npn \__dim_tmp:w #1#2#3
-  {
-    \__kernel_patch_args:nnnNNpn
-      { #1 ##1 }
-      { }
-      { {##1} { \__kernel_chk_expr:nNnN {##2} \__dim_eval:w { } #3 } }
-    #2 #3
-  }
-\__dim_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \dim_set:Nn #1#2
   { #1 ~ \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
-\__dim_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \dim_gset:Nn #1#2
   { \tex_global:D #1 ~ \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
 \cs_generate_variant:Nn \dim_set:Nn  { c }
 \cs_generate_variant:Nn \dim_gset:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \dim_set_eq:NN #1#2
   { #1 = #2 \scan_stop: }
 \cs_generate_variant:Nn \dim_set_eq:NN { c , Nc , cc }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \dim_gset_eq:NN #1#2
   { \tex_global:D #1 = #2 \scan_stop: }
 \cs_generate_variant:Nn \dim_gset_eq:NN { c , Nc , cc }
-\__dim_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \dim_add:Nn #1#2
   { \tex_advance:D #1 by \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
-\__dim_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \dim_gadd:Nn #1#2
   {
     \tex_global:D \tex_advance:D #1 by
@@ -11637,10 +11621,8 @@
   }
 \cs_generate_variant:Nn \dim_add:Nn  { c }
 \cs_generate_variant:Nn \dim_gadd:Nn { c }
-\__dim_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \dim_sub:Nn #1#2
   { \tex_advance:D #1 by - \__dim_eval:w #2 \__dim_eval_end: \scan_stop: }
-\__dim_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \dim_gsub:Nn #1#2
   {
     \tex_global:D \tex_advance:D #1 by
@@ -11648,8 +11630,6 @@
   }
 \cs_generate_variant:Nn \dim_sub:Nn  { c }
 \cs_generate_variant:Nn \dim_gsub:Nn { c }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_abs:n } }
 \cs_new:Npn \dim_abs:n #1
   {
     \exp_after:wN \__dim_abs:N
@@ -11657,11 +11637,6 @@
   }
 \cs_new:Npn \__dim_abs:N #1
   { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
-\__kernel_patch_args:nNNpn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_max:nn }
-    { \__kernel_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_max:nn }
-  }
 \cs_new:Npn \dim_max:nn #1#2
   {
     \dim_use:N \__dim_eval:w \exp_after:wN \__dim_maxmin:wwN
@@ -11670,11 +11645,6 @@
       >
     \__dim_eval_end:
   }
-\__kernel_patch_args:nNNpn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_min:nn }
-    { \__kernel_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_min:nn }
-  }
 \cs_new:Npn \dim_min:nn #1#2
   {
     \dim_use:N \__dim_eval:w \exp_after:wN \__dim_maxmin:wwN
@@ -11695,12 +11665,6 @@
   { \__dim_ratio:n {#1} / \__dim_ratio:n {#2} }
 \cs_new:Npn \__dim_ratio:n #1
   { \int_value:w \__dim_eval:w (#1) \__dim_eval_end: }
-\__kernel_patch_conditional_args:nNNpnn
-  {
-    { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_compare:nNn }
-    { \__dim_eval_end: #2 }
-    { \__kernel_chk_expr:nNnN {#3} \__dim_eval:w { } \dim_compare:nNn }
-  }
 \prg_new_conditional:Npnn \dim_compare:nNn #1#2#3 { p , T , F , TF }
   {
     \if_dim:w \__dim_eval:w #1 #2 \__dim_eval:w #3 \__dim_eval_end:
@@ -11832,21 +11796,6 @@
     \dim_compare:nNnF {#1} #2 {#3}
       { \dim_do_until:nNnn {#1} #2 {#3} {#4} }
   }
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { }
-        \dim_step_function:nnnN
-    }
-    {
-      \__kernel_chk_expr:nNnN {#2} \__dim_eval:w { }
-        \dim_step_function:nnnN
-    }
-    {
-      \__kernel_chk_expr:nNnN {#3} \__dim_eval:w { }
-        \dim_step_function:nnnN
-    }
-  }
 \cs_new:Npn \dim_step_function:nnnN #1#2#3
   {
     \exp_after:wN \__dim_step:wwwN
@@ -11902,14 +11851,28 @@
     \dim_step_function:nnnN {#3} {#4} {#5} #2
     \prg_break_point:Nn \scan_stop: { \int_gdecr:N \g__kernel_prg_map_int }
   }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_eval:n } }
 \cs_new:Npn \dim_eval:n #1
   { \dim_use:N \__dim_eval:w #1 \__dim_eval_end: }
+\cs_new:Npn \dim_sign:n #1
+  {
+    \int_value:w \exp_after:wN \__dim_sign:Nw
+      \dim_use:N \__dim_eval:w #1 \__dim_eval_end: ;
+    \exp_stop_f:
+  }
+\cs_new:Npn \__dim_sign:Nw #1#2 ;
+  {
+    \if_dim:w #1#2 > \c_zero_dim
+      1
+    \else:
+      \if_meaning:w - #1
+        -1
+      \else:
+        0
+      \fi:
+    \fi:
+  }
 \cs_new_eq:NN \dim_use:N \tex_the:D
 \cs_new:Npn \dim_use:c #1 { \tex_the:D \cs:w #1 \cs_end: }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_to_decimal:n } }
 \cs_new:Npn \dim_to_decimal:n #1
   {
     \exp_after:wN
@@ -11927,13 +11890,6 @@
       }
 \cs_new:Npn \dim_to_decimal_in_bp:n #1
   { \dim_to_decimal:n { ( #1 ) * 800 / 803 } }
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { }
-        \dim_to_decimal_in_sp:n
-    }
-  }
 \cs_new:Npn \dim_to_decimal_in_sp:n #1
   { \int_value:w \__dim_eval:w #1 \__dim_eval_end: }
 \cs_new:Npn \dim_to_decimal_in_unit:nn #1#2
@@ -11964,16 +11920,13 @@
     \cs:w newskip \cs_end: #1
   }
 \cs_generate_variant:Nn \skip_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
 \cs_new_protected:Npn \skip_const:Nn #1#2
   {
     \skip_new:N #1
     \tex_global:D #1 ~ \skip_eval:n {#2} \scan_stop:
   }
 \cs_generate_variant:Nn \skip_const:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \skip_zero:N #1 { #1 \c_zero_skip }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \skip_gzero:N #1 { \tex_global:D #1 \c_zero_skip }
 \cs_generate_variant:Nn \skip_zero:N  { c }
 \cs_generate_variant:Nn \skip_gzero:N { c }
@@ -11987,18 +11940,8 @@
   { TF , T , F , p }
 \prg_new_eq_conditional:NNn \skip_if_exist:c \cs_if_exist:c
   { TF , T , F , p }
-\cs_set_protected:Npn \__skip_tmp:w #1#2#3
-  {
-    \__kernel_patch_args:nnnNNpn
-      { #1 ##1 }
-      { }
-      { {##1} { \__kernel_chk_expr:nNnN {##2} \tex_glueexpr:D { } #3 } }
-    #2 #3
-  }
-\__skip_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \skip_set:Nn #1#2
   { #1 ~ \tex_glueexpr:D #2 \scan_stop: }
-\__skip_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \skip_gset:Nn #1#2
   { \tex_global:D #1 ~ \tex_glueexpr:D #2 \scan_stop: }
 \cs_generate_variant:Nn \skip_set:Nn  { c }
@@ -12007,18 +11950,14 @@
 \cs_generate_variant:Nn \skip_set_eq:NN { c , Nc , cc }
 \cs_new_protected:Npn \skip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
 \cs_generate_variant:Nn \skip_gset_eq:NN { c , Nc , cc }
-\__skip_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \skip_add:Nn #1#2
   { \tex_advance:D #1 by \tex_glueexpr:D #2 \scan_stop: }
-\__skip_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \skip_gadd:Nn #1#2
   { \tex_global:D \tex_advance:D #1 by \tex_glueexpr:D #2 \scan_stop: }
 \cs_generate_variant:Nn \skip_add:Nn  { c }
 \cs_generate_variant:Nn \skip_gadd:Nn { c }
-\__skip_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \skip_sub:Nn #1#2
   { \tex_advance:D #1 by - \tex_glueexpr:D #2 \scan_stop: }
-\__skip_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \skip_gsub:Nn #1#2
   { \tex_global:D \tex_advance:D #1 by - \tex_glueexpr:D #2 \scan_stop: }
 \cs_generate_variant:Nn \skip_sub:Nn  { c }
@@ -12031,13 +11970,6 @@
   }
 \cs_set_protected:Npn \__skip_tmp:w #1
   {
-    \__kernel_patch_conditional_args:nNNpnn
-      {
-        {
-          \__kernel_chk_expr:nNnN
-            {##1} \tex_glueexpr:D { } \skip_if_finite:n
-        }
-      }
     \prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF }
       {
         \exp_after:wN \__skip_if_finite:wwNw
@@ -12047,30 +11979,14 @@
     \cs_new:Npn \__skip_if_finite:wwNw ##1 #1 ##2 ; ##3 ##4 \q_stop {##3}
   }
 \exp_args:No \__skip_tmp:w { \tl_to_str:n { fil } }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \tex_glueexpr:D { } \skip_eval:n } }
 \cs_new:Npn \skip_eval:n #1
   { \skip_use:N \tex_glueexpr:D #1 \scan_stop: }
 \cs_new_eq:NN \skip_use:N \tex_the:D
 \cs_new:Npn \skip_use:c #1 { \tex_the:D \cs:w #1 \cs_end: }
 \cs_new_eq:NN  \skip_horizontal:N \tex_hskip:D
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1} \tex_glueexpr:D { }
-        \skip_horizontal:n
-    }
-  }
 \cs_new:Npn \skip_horizontal:n #1
   { \skip_horizontal:N \tex_glueexpr:D #1 \scan_stop: }
 \cs_new_eq:NN  \skip_vertical:N \tex_vskip:D
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1} \tex_glueexpr:D { }
-        \skip_vertical:n
-    }
-  }
 \cs_new:Npn \skip_vertical:n #1
   { \skip_vertical:N \tex_glueexpr:D #1 \scan_stop: }
 \cs_generate_variant:Nn \skip_horizontal:N { c }
@@ -12095,17 +12011,14 @@
     \cs:w newmuskip \cs_end: #1
   }
 \cs_generate_variant:Nn \muskip_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
 \cs_new_protected:Npn \muskip_const:Nn #1#2
   {
     \muskip_new:N #1
     \tex_global:D #1 ~ \muskip_eval:n {#2} \scan_stop:
   }
 \cs_generate_variant:Nn \muskip_const:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \muskip_zero:N #1
   { #1 \c_zero_muskip }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \muskip_gzero:N #1
   { \tex_global:D #1 \c_zero_muskip }
 \cs_generate_variant:Nn \muskip_zero:N  { c }
@@ -12120,57 +12033,28 @@
   { TF , T , F , p }
 \prg_new_eq_conditional:NNn \muskip_if_exist:c \cs_if_exist:c
   { TF , T , F , p }
-\cs_set_protected:Npn \__skip_tmp:w #1#2#3
-  {
-    \__kernel_patch_args:nnnNNpn
-      { #1 ##1 }
-      { }
-      {
-        {##1}
-        {
-          \__kernel_chk_expr:nNnN {##2}
-            \tex_muexpr:D { \tex_mutoglue:D } #3
-        }
-      }
-    #2 #3
-  }
-\__skip_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \muskip_set:Nn #1#2
   { #1 ~ \tex_muexpr:D #2 \scan_stop: }
-\__skip_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \muskip_gset:Nn #1#2
   { \tex_global:D #1 ~ \tex_muexpr:D #2 \scan_stop: }
 \cs_generate_variant:Nn \muskip_set:Nn  { c }
 \cs_generate_variant:Nn \muskip_gset:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \muskip_set_eq:NN #1#2 { #1 = #2 }
 \cs_generate_variant:Nn \muskip_set_eq:NN { c , Nc , cc }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \muskip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 }
 \cs_generate_variant:Nn \muskip_gset_eq:NN { c , Nc , cc }
-\__skip_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \muskip_add:Nn #1#2
   { \tex_advance:D #1 by \tex_muexpr:D #2 \scan_stop: }
-\__skip_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \muskip_gadd:Nn #1#2
   { \tex_global:D \tex_advance:D #1 by \tex_muexpr:D #2 \scan_stop: }
 \cs_generate_variant:Nn \muskip_add:Nn  { c }
 \cs_generate_variant:Nn \muskip_gadd:Nn { c }
-\__skip_tmp:w \__kernel_chk_var_local:N
 \cs_new_protected:Npn \muskip_sub:Nn #1#2
   { \tex_advance:D #1 by - \tex_muexpr:D #2 \scan_stop: }
-\__skip_tmp:w \__kernel_chk_var_global:N
 \cs_new_protected:Npn \muskip_gsub:Nn #1#2
   { \tex_global:D \tex_advance:D #1 by - \tex_muexpr:D #2 \scan_stop: }
 \cs_generate_variant:Nn \muskip_sub:Nn  { c }
 \cs_generate_variant:Nn \muskip_gsub:Nn { c }
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1} \tex_muexpr:D
-        { \tex_mutoglue:D } \muskip_eval:n
-    }
-  }
 \cs_new:Npn \muskip_eval:n #1
   { \muskip_use:N \tex_muexpr:D #1 \scan_stop: }
 \cs_new_eq:NN \muskip_use:N \tex_the:D
@@ -12535,12 +12419,6 @@
           }
       }
   }
-\__kernel_patch:nnNNpn
-  {
-    \cs_if_exist:cF { \c__keys_code_root_tl #1 }
-      { \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
-  }
-  { }
 \cs_new_protected:Npn \__keys_cmd_set:nn #1#2
   { \cs_set_protected:cpn { \c__keys_code_root_tl #1 } ##1 {#2} }
 \cs_generate_variant:Nn \__keys_cmd_set:nn { nx , Vn , Vo }
@@ -12578,7 +12456,13 @@
   }
 \cs_new_protected:Npn \__keys_initialise:n #1
   {
-    \cs_if_exist_use:cT { \c__keys_code_root_tl \l_keys_path_tl } { {#1} }
+    \cs_if_exist:cTF
+      { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl }
+      { \__keys_execute_inherit: }
+      {
+        \tl_clear:N \l__keys_inherit_tl
+        \cs_if_exist_use:cT { \c__keys_code_root_tl \l_keys_path_tl } { {#1} }
+      }
   }
 \cs_new_protected:Npn \__keys_meta_make:n #1
   {
@@ -13340,7 +13224,6 @@
     \int_step_inline:nn { 8 }
       { \__kernel_intarray_gset:Nnn #1 {##1} \c_zero_int }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN g #1 } { }
 \cs_new_protected:Npn \intarray_new:Nn #1#2
   {
     \__intarray_new:N #1
@@ -13353,7 +13236,9 @@
     \int_compare:nNnT { \intarray_count:N #1 } > 0
       { \__kernel_intarray_gset:Nnn #1 { \intarray_count:N #1 } { 0 } }
   }
+\cs_generate_variant:Nn \intarray_new:Nn { c }
 \cs_new:Npn \intarray_count:N #1 { \int_value:w \__intarray_count:w #1 }
+\cs_generate_variant:Nn \intarray_count:N { c }
 \cs_new:Npn \__intarray_signed_max_dim:n #1
   { \int_value:w \int_compare:nNnT {#1} < 0 { - } \c_max_dim }
 \cs_new:Npn \__intarray_bounds:NNnTF #1#2#3#4#5
@@ -13384,6 +13269,7 @@
     \int_value:w \int_eval:n {#2} \exp_after:wN ;
     \int_value:w \int_eval:n {#3} ;
   }
+\cs_generate_variant:Nn \intarray_gset:Nnn { c }
 \cs_new_protected:Npn \__intarray_gset:Nww #1#2 ; #3 ;
   {
     \__intarray_bounds:NNnTF \__kernel_msg_error:nnxxx #1 {#2}
@@ -13425,6 +13311,7 @@
         \__intarray_entry:w \l__intarray_loop_int #1 \c_zero_dim
       }
   }
+\cs_generate_variant:Nn \intarray_gzero:N { c }
 \cs_new:Npn \__kernel_intarray_item:Nn #1#2
   { \int_value:w \__intarray_entry:w #2 #1 }
 \cs_new:Npn \intarray_item:Nn #1#2
@@ -13433,6 +13320,7 @@
     \exp_after:wN #1
     \int_value:w \int_eval:n {#2} ;
   }
+\cs_generate_variant:Nn \intarray_item:Nn { c }
 \cs_new:Npn \__intarray_item:Nw #1#2 ;
   {
     \__intarray_bounds:NNnTF \__kernel_msg_expandable_error:nnfff #1 {#2}
@@ -13441,7 +13329,7 @@
   }
 \cs_new:Npn \intarray_rand_item:N #1
   { \intarray_item:Nn #1 { \int_rand:n { \intarray_count:N #1 } } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
+\cs_generate_variant:Nn \intarray_rand_item:N { c }
 \cs_new_protected:Npn \intarray_const_from_clist:Nn #1#2
   {
     \__intarray_new:N #1
@@ -13450,6 +13338,7 @@
       { \exp_args:Nf \__intarray_const_from_clist:nN { \int_eval:n {##1} } #1 }
     \__intarray_count:w #1 \l__intarray_loop_int
   }
+\cs_generate_variant:Nn \intarray_const_from_clist:Nn { c }
 \cs_new_protected:Npn \__intarray_const_from_clist:nN #1#2
   {
     \int_incr:N \l__intarray_loop_int
@@ -13457,6 +13346,7 @@
     \__kernel_intarray_gset:Nnn #2 \l__intarray_loop_int {#1}
   }
 \cs_new:Npn \intarray_to_clist:N #1 { \__intarray_to_clist:Nn #1 { , } }
+\cs_generate_variant:Nn \intarray_to_clist:N { c }
 \cs_new:Npn \__intarray_to_clist:Nn #1#2
   {
     \int_compare:nNnF { \intarray_count:N #1 } = \c_zero_int
@@ -13491,6 +13381,7 @@
   }
 \cs_new_protected:Npn \intarray_gset_rand:Nn #1
   { \intarray_gset_rand:Nnn #1 { 1 } }
+\cs_generate_variant:Nn \intarray_gset_rand:Nn { c }
 \sys_if_rand_exist:TF
   {
     \cs_new_protected:Npn \intarray_gset_rand:Nnn #1#2#3
@@ -13554,6 +13445,7 @@
           { \intarray_gset_rand:Nnn #1 {#2} {#3} }
       }
   }
+\cs_generate_variant:Nn \intarray_gset_rand:Nnn { c }
 %% File: l3fp.dtx
 %% File: l3fp-aux.dtx
 \cs_new_eq:NN \__fp_int_eval:w \tex_numexpr:D
@@ -19374,7 +19266,6 @@
     \exp_after:wN \__fp_to_decimal:w \exp:w \exp_end_continue_f:w
     \__fp_round:Nwn \__fp_round_to_nearest:NNN #1; { 0 }
   }
-\__kernel_patch_args:nNNpn { { (#1) } }
 \cs_new:Npn \dim_to_fp:n #1
   {
     \exp_after:wN \__fp_from_dim_test:ww
@@ -19413,6 +19304,8 @@
 \cs_new_eq:NN \fp_use:N \fp_to_decimal:N
 \cs_generate_variant:Nn \fp_use:N { c }
 \cs_new_eq:NN \fp_eval:n \fp_to_decimal:n
+\cs_new:Npn \fp_sign:n #1
+  { \fp_to_decimal:n { sign \__fp_parse:n {#1} } }
 \cs_new:Npn \fp_abs:n #1
   { \fp_to_decimal:n { abs \__fp_parse:n {#1} } }
 \cs_new:Npn \fp_max:nn #1#2
@@ -19730,6 +19623,7 @@
       }
   }
 %% File: l3fparray.dtx
+
 \int_new:N \g__fp_array_int
 \int_new:N \l__fp_array_loop_int
 \cs_new_protected:Npn \fparray_new:Nn #1#2
@@ -19744,6 +19638,7 @@
     \exp_last_unbraced:Nfo \__fp_array_new:nNNNN
       { \int_eval:n {#2} } #1 #1
   }
+\cs_generate_variant:Nn \fparray_new:Nn { c }
 \cs_new_protected:Npn \__fp_array_new:nNNNN #1#2#3#4#5
   {
     \int_compare:nNnTF {#1} < 0
@@ -19763,6 +19658,7 @@
     \exp_after:wN \use_i:nnn
     \exp_after:wN \intarray_count:N #1
   }
+\cs_generate_variant:Nn \fparray_count:N { c }
 \cs_new:Npn \__fp_array_bounds:NNnTF #1#2#3#4#5
   {
     \if_int_compare:w 1 > #3 \exp_stop_f:
@@ -19791,6 +19687,7 @@
     \int_value:w \int_eval:n {#2} \exp_after:wN ;
     \exp:w \exp_end_continue_f:w \__fp_parse:n {#3}
   }
+\cs_generate_variant:Nn \fparray_gset:Nnn { c }
 \cs_new_protected:Npn \__fp_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
   {
     \__fp_array_bounds:NNnTF \__kernel_msg_error:nnxxx #4 {#5}
@@ -19844,6 +19741,7 @@
         #1
       }
   }
+\cs_generate_variant:Nn \fparray_gzero:N { c }
 \cs_new:Npn \fparray_item:Nn #1#2
   {
     \exp_after:wN \__fp_array_item:NwN
@@ -19851,6 +19749,7 @@
     \int_value:w \int_eval:n {#2} ;
     \__fp_to_decimal:w
   }
+\cs_generate_variant:Nn \fparray_item:Nn { c }
 \cs_new:Npn \fparray_item_to_tl:Nn #1#2
   {
     \exp_after:wN \__fp_array_item:NwN
@@ -19858,6 +19757,7 @@
     \int_value:w \int_eval:n {#2} ;
     \__fp_to_tl:w
   }
+\cs_generate_variant:Nn \fparray_item_to_tl:Nn { c }
 \cs_new:Npn \__fp_array_item:NwN #1#2 ; #3
   {
     \__fp_array_bounds:NNnTF \__kernel_msg_expandable_error:nnfff #1 {#2}
@@ -22299,15 +22199,6 @@
     \__regex_item_caseful_range:nn { `A } { `F }
     \__regex_item_caseful_range:nn { `a } { `f }
   }
-\__kernel_patch:nnNNpn
-  {
-    \__regex_trace_push:nnN { regex } { 1 } \__regex_escape_use:nnnn
-    \group_begin:
-      \tl_set:Nx \l__regex_internal_a_tl
-        { \__regex_trace_pop:nnN { regex } { 1 } \__regex_escape_use:nnnn }
-      \use_none:nnn
-  }
-  { }
 \cs_new_protected:Npn \__regex_escape_use:nnnn #1#2#3#4
   {
     \group_begin:
@@ -23659,12 +23550,6 @@
     \__regex_compile:n {#1}
     \__regex_build:N \l__regex_internal_regex
   }
-\__kernel_patch:nnNNpn
-  { \__regex_trace_push:nnN { regex } { 1 } \__regex_build:N }
-  {
-    \__regex_trace_states:n { 2 }
-    \__regex_trace_pop:nnN { regex } { 1 } \__regex_build:N
-  }
 \cs_new_protected:Npn \__regex_build:N #1
   {
     \__regex_standard_escapechar:
@@ -23678,12 +23563,6 @@
     \__regex_toks_put_right:Nn \l__regex_right_state_int
       { \__regex_action_success: }
   }
-\__kernel_patch:nnNNpn
-  { \__regex_trace_push:nnN { regex } { 1 } \__regex_build_for_cs:n }
-  {
-    \__regex_trace_states:n { 2 }
-    \__regex_trace_pop:nnN { regex } { 1 } \__regex_build_for_cs:n
-  }
 \cs_new_protected:Npn \__regex_build_for_cs:n #1
   {
     \int_set_eq:NN \l__regex_min_state_int \l__regex_max_active_int
@@ -23718,18 +23597,6 @@
   { \__regex_toks_put_left:Nx  #2 { #1 { \int_eval:n { #3 - #2 } } } }
 \cs_new_protected:Npn \__regex_build_transition_right:nNn #1#2#3
   { \__regex_toks_put_right:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } }
-\__kernel_patch:nnNNpn
-  {
-    \__regex_trace:nnx { regex } { 2 }
-      {
-        regex~new~state~
-        L=\int_use:N \l__regex_left_state_int ~ -> ~
-        R=\int_use:N \l__regex_right_state_int ~ -> ~
-        M=\int_use:N \l__regex_max_state_int ~ -> ~
-        \int_eval:n { \l__regex_max_state_int + 1 }
-      }
-  }
-  { }
 \cs_new_protected:Npn \__regex_build_new_state:
   {
     \__regex_toks_clear:N \l__regex_max_state_int
@@ -23802,9 +23669,6 @@
           \__regex_tests_action_cost:n \l__regex_right_state_int
       }
   }
-\__kernel_patch:nnNNpn
-  { \__regex_trace_push:nnN { regex } { 1 } \__regex_group_aux:nnnnN }
-  { \__regex_trace_pop:nnN { regex } { 1 } \__regex_group_aux:nnnnN }
 \cs_new_protected:Npn \__regex_group_aux:nnnnN #1#2#3#4#5
   {
       \if_int_compare:w #3 = 0 \exp_stop_f:
@@ -23854,9 +23718,6 @@
       { \int_max:nn {#1} { \l__regex_capturing_group_int } }
       {#2}
   }
-\__kernel_patch:nnNNpn
-  { \__regex_trace_push:nnN { regex } { 1 } \__regex_branch:n }
-  { \__regex_trace_pop:nnN { regex } { 1 } \__regex_branch:n }
 \cs_new_protected:Npn \__regex_branch:n #1
   {
     \__regex_build_new_state:
@@ -24046,12 +23907,6 @@
 \bool_new:N \g__regex_success_bool
 \bool_new:N \l__regex_saved_success_bool
 \bool_new:N \l__regex_match_success_bool
-\__kernel_patch:nnNNpn
-  {
-    \__regex_trace_push:nnN { regex } { 1 } \__regex_match:n
-    \__regex_trace:nnx { regex } { 1 } { analyzing~query~token~list }
-  }
-  { \__regex_trace_pop:nnN { regex } { 1 } \__regex_match:n }
 \cs_new_protected:Npn \__regex_match:n #1
   {
     \int_zero:N \l__regex_balance_int
@@ -24065,12 +23920,6 @@
     \__regex_match_init:
     \__regex_match_once:
   }
-\__kernel_patch:nnNNpn
-  {
-    \__regex_trace_push:nnN { regex } { 1 } \__regex_match_cs:n
-    \__regex_trace:nnx { regex } { 1 } { analyzing~query~token~list }
-  }
-  { \__regex_trace_pop:nnN { regex } { 1 } \__regex_match_cs:n }
 \cs_new_protected:Npn \__regex_match_cs:n #1
   {
     \int_zero:N \l__regex_balance_int
@@ -24093,9 +23942,6 @@
     \__regex_match_init:
     \__regex_match_once:
   }
-\__kernel_patch:nnNNpn
-  { \__regex_trace:nnx { regex } { 1 } { initializing } }
-  { }
 \cs_new_protected:Npn \__regex_match_init:
   {
     \bool_gset_false:N \g__regex_success_bool
@@ -24208,12 +24054,6 @@
       = \__kernel_intarray_item:Nn \g__regex_catcode_intarray
           { \l__regex_curr_pos_int } \scan_stop:
   }
-\__kernel_patch:nnNNpn
-  {
-    \__regex_trace:nnx { regex } { 2 }
-      { state~\int_use:N \l__regex_curr_state_int }
-  }
-  { }
 \cs_new_protected:Npn \__regex_use_state:
   {
     \__kernel_intarray_gset:Nnn \g__regex_state_active_intarray
@@ -24377,9 +24217,6 @@
         }
      }
   }
-\__kernel_patch:nnNNpn
-  { \__regex_trace_push:nnN { regex } { 1 } \__regex_replacement:n }
-  { \__regex_trace_pop:nnN { regex } { 1 } \__regex_replacement:n }
 \cs_new_protected:Npn \__regex_replacement:n #1
   {
     \group_begin:
@@ -25275,44 +25112,29 @@
           }
       }
   }
-\__kernel_if_debug:TF
+\cs_new_protected:Npn \__regex_trace_push:nnN #1#2#3
+  { \__regex_trace:nnx {#1} {#2} { entering~ \token_to_str:N #3 } }
+\cs_new_protected:Npn \__regex_trace_pop:nnN #1#2#3
+   { \__regex_trace:nnx {#1} {#2} { leaving~ \token_to_str:N #3 } }
+\cs_new_protected:Npn \__regex_trace:nnx #1#2#3
   {
-    \cs_new_protected:Npn \__regex_trace_push:nnN #1#2#3
-      { \__regex_trace:nnx {#1} {#2} { entering~ \token_to_str:N #3 } }
-    \cs_new_protected:Npn \__regex_trace_pop:nnN #1#2#3
-      { \__regex_trace:nnx {#1} {#2} { leaving~ \token_to_str:N #3 } }
-    \cs_new_protected:Npn \__regex_trace:nnx #1#2#3
-      {
-        \int_compare:nNnF
-          { \int_use:c { g__regex_trace_#1_int } } < {#2}
-          { \iow_term:x { Trace:~#3 } }
-      }
+    \int_compare:nNnF
+      { \int_use:c { g__regex_trace_#1_int } } < {#2}
+      { \iow_term:x { Trace:~#3 } }
   }
-  { }
 \int_new:N \g__regex_trace_regex_int
-\__kernel_if_debug:TF
+\cs_new_protected:Npn \__regex_trace_states:n #1
   {
-    \cs_new_protected:Npn \__regex_trace_states:n #1
+    \int_step_inline:nnn
+      \l__regex_min_state_int
+      { \l__regex_max_state_int - 1 }
       {
-        \int_step_inline:nnn
-          \l__regex_min_state_int
-          { \l__regex_max_state_int - 1 }
-          {
-            \__regex_trace:nnx { regex } {#1}
-              { \iow_char:N \\toks ##1 = { \__regex_toks_use:w ##1 } }
-          }
+        \__regex_trace:nnx { regex } {#1}
+          { \iow_char:N \\toks ##1 = { \__regex_toks_use:w ##1 } }
       }
   }
-  { }
 %% File: l3box.dtx
 \cs_new_eq:NN \__box_dim_eval:w \tex_dimexpr:D
-\__kernel_patch_args:nNNpn
-  {
-    {
-      \__kernel_chk_expr:nNnN {#1}
-        \__box_dim_eval:w { } \__box_dim_eval:n
-    }
-  }
 \cs_new:Npn \__box_dim_eval:n #1
   { \__box_dim_eval:w #1 \scan_stop: }
 \cs_new_protected:Npn \box_new:N #1
@@ -25333,18 +25155,14 @@
   { \box_if_exist:NTF #1 { \box_gclear:N #1 } { \box_new:N #1 } }
 \cs_generate_variant:Nn \box_clear_new:N  { c }
 \cs_generate_variant:Nn \box_gclear_new:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \box_set_eq:NN #1#2
   { \tex_setbox:D #1 \tex_copy:D #2 }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \box_gset_eq:NN #1#2
   { \tex_global:D \tex_setbox:D #1 \tex_copy:D #2 }
 \cs_generate_variant:Nn \box_set_eq:NN  { c , Nc , cc }
 \cs_generate_variant:Nn \box_gset_eq:NN { c , Nc , cc }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \box_set_eq_drop:NN #1#2
   { \tex_setbox:D #1 \tex_box:D #2 }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \box_gset_eq_drop:NN #1#2
   { \tex_global:D \tex_setbox:D #1 \tex_box:D #2 }
 \cs_generate_variant:Nn \box_set_eq_drop:NN  { c , Nc , cc }
@@ -25413,10 +25231,8 @@
   { \if_box_empty:N #1 \prg_return_true: \else: \prg_return_false: \fi: }
 \prg_generate_conditional_variant:Nnn \box_if_empty:N
   { c } { p , T , F , TF }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \box_set_to_last:N #1
   { \tex_setbox:D #1 \tex_lastbox:D }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \box_gset_to_last:N #1
   { \tex_global:D \tex_setbox:D #1 \tex_lastbox:D }
 \cs_generate_variant:Nn \box_set_to_last:N  { c }
@@ -25464,13 +25280,11 @@
 \cs_generate_variant:Nn \__box_show:NNnn { NNff }
 \cs_new_protected:Npn \hbox:n #1
   { \tex_hbox:D \scan_stop: { \color_group_begin: #1 \color_group_end: } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \hbox_set:Nn #1#2
   {
     \tex_setbox:D #1 \tex_hbox:D
       { \color_group_begin: #2 \color_group_end: }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \hbox_gset:Nn #1#2
   {
     \tex_global:D \tex_setbox:D #1 \tex_hbox:D
@@ -25478,13 +25292,11 @@
   }
 \cs_generate_variant:Nn \hbox_set:Nn { c }
 \cs_generate_variant:Nn \hbox_gset:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \hbox_set_to_wd:Nnn #1#2#3
   {
     \tex_setbox:D #1 \tex_hbox:D to \__box_dim_eval:n {#2}
       { \color_group_begin: #3 \color_group_end: }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \hbox_gset_to_wd:Nnn #1#2#3
   {
     \tex_global:D \tex_setbox:D #1 \tex_hbox:D to \__box_dim_eval:n {#2}
@@ -25492,14 +25304,12 @@
   }
 \cs_generate_variant:Nn \hbox_set_to_wd:Nnn { c }
 \cs_generate_variant:Nn \hbox_gset_to_wd:Nnn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \hbox_set:Nw  #1
   {
     \tex_setbox:D #1 \tex_hbox:D
       \c_group_begin_token
         \color_group_begin:
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \hbox_gset:Nw  #1
   {
     \tex_global:D \tex_setbox:D #1 \tex_hbox:D
@@ -25514,14 +25324,12 @@
     \c_group_end_token
   }
 \cs_new_eq:NN \hbox_gset_end: \hbox_set_end:
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \hbox_set_to_wd:Nnw #1#2
   {
     \tex_setbox:D #1 \tex_hbox:D to \__box_dim_eval:n {#2}
       \c_group_begin_token
         \color_group_begin:
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \hbox_gset_to_wd:Nnw #1#2
   {
     \tex_global:D \tex_setbox:D #1 \tex_hbox:D to \__box_dim_eval:n {#2}
@@ -25562,13 +25370,11 @@
     \tex_vbox:D to \c_zero_dim
       { \color_group_begin: #1 \par \color_group_end: }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set:Nn #1#2
   {
     \tex_setbox:D #1 \tex_vbox:D
       { \color_group_begin: #2 \par \color_group_end: }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset:Nn #1#2
   {
     \tex_global:D \tex_setbox:D #1 \tex_vbox:D
@@ -25576,13 +25382,11 @@
   }
 \cs_generate_variant:Nn \vbox_set:Nn  { c }
 \cs_generate_variant:Nn \vbox_gset:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_top:Nn #1#2
   {
     \tex_setbox:D #1 \tex_vtop:D
       { \color_group_begin: #2 \par \color_group_end: }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset_top:Nn #1#2
   {
     \tex_global:D \tex_setbox:D #1 \tex_vtop:D
@@ -25590,13 +25394,11 @@
   }
 \cs_generate_variant:Nn \vbox_set_top:Nn { c }
 \cs_generate_variant:Nn \vbox_gset_top:Nn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_to_ht:Nnn #1#2#3
   {
     \tex_setbox:D #1 \tex_vbox:D to \__box_dim_eval:n {#2}
       { \color_group_begin: #3 \par \color_group_end: }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset_to_ht:Nnn #1#2#3
   {
     \tex_global:D \tex_setbox:D #1 \tex_vbox:D to \__box_dim_eval:n {#2}
@@ -25604,14 +25406,12 @@
   }
 \cs_generate_variant:Nn \vbox_set_to_ht:Nnn  { c }
 \cs_generate_variant:Nn \vbox_gset_to_ht:Nnn { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set:Nw #1
   {
     \tex_setbox:D #1 \tex_vbox:D
       \c_group_begin_token
         \color_group_begin:
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset:Nw #1
   {
     \tex_global:D \tex_setbox:D #1 \tex_vbox:D
@@ -25627,14 +25427,12 @@
     \c_group_end_token
   }
 \cs_new_eq:NN \vbox_gset_end: \vbox_set_end:
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_to_ht:Nnw #1#2
   {
     \tex_setbox:D #1 \tex_vbox:D to \__box_dim_eval:n {#2}
       \c_group_begin_token
         \color_group_begin:
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset_to_ht:Nnw #1#2
   {
     \tex_global:D \tex_setbox:D #1 \tex_vbox:D to \__box_dim_eval:n {#2}
@@ -25647,11 +25445,9 @@
 \cs_new_eq:NN \vbox_unpack_drop:N \tex_unvbox:D
 \cs_generate_variant:Nn \vbox_unpack:N { c }
 \cs_generate_variant:Nn \vbox_unpack_drop:N { c }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3
   { \tex_setbox:D #1 \tex_vsplit:D #2 to \__box_dim_eval:n {#3} }
 \cs_generate_variant:Nn \vbox_set_split_to_ht:NNn { c , Nc , cc }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \vbox_gset_split_to_ht:NNn #1#2#3
   {
     \tex_global:D \tex_setbox:D #1
@@ -27445,12 +27241,6 @@
     \group_end:
   }
 %% File: l3candidates.dtx
-\cs_new_protected:Npn \mode_leave_vertical:
-  {
-    \if_mode_vertical:
-      \exp_after:wN \tex_indent:D
-    \fi:
-  }
 \cs_new_protected:Npn \box_clip:N #1
   { \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
 \cs_generate_variant:Nn \box_clip:N { c }
@@ -27560,9 +27350,6 @@
       }
     #6 #1 \l__box_internal_box
   }
-\cs_new:Npn \fp_sign:n #1
-  { \fp_to_decimal:n { sign \__fp_parse:n {#1} } }
-\__kernel_patch:nnNNpn { \__flag_chk_exist:n {#1} } { }
 \cs_new:Npn \flag_raise_if_clear:n #1
   {
     \if_cs_exist:w flag~#1~0 \cs_end:
@@ -27570,22 +27357,6 @@
       \cs:w flag~#1 \cs_end: 0 ;
     \fi:
   }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__int_eval:w { } \int_sign:n } }
-\cs_new:Npn \int_sign:n #1
-  {
-    \int_value:w \exp_after:wN \__int_sign:Nw
-      \int_value:w \__int_eval:w #1 \__int_eval_end: ;
-    \exp_stop_f:
-  }
-\cs_new:Npn \__int_sign:Nw #1#2 ;
-  {
-    \if_meaning:w 0 #1
-      0
-    \else:
-      \if_meaning:w - #1 - \fi: 1
-    \fi:
-  }
 \cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6
   {
     \exp_args:Ne \__msg_expandable_error_module:nn
@@ -27640,13 +27411,6 @@
     \use:nn { ~ } { ~ } => \use:nn { ~ } { ~ }
     \exp_not:N \tl_to_str:n {#2}
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN c #1 } { }
-\cs_new_protected:Npn \bool_const:Nn #1#2
-  {
-    \__kernel_chk_if_free_cs:N #1
-    \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2}
-  }
-\cs_generate_variant:Nn \bool_const:Nn { c }
 \cs_new_protected:Npn \bool_set_inverse:N #1
   { \bool_if:NTF #1 { \bool_set_false:N } { \bool_set_true:N } #1 }
 \cs_generate_variant:Nn \bool_set_inverse:N { c }
@@ -27726,65 +27490,6 @@
   { \seq_set_from_inline_x:Nnn #1 {#2} { #3 {##1} } }
 \cs_new_protected:Npn \seq_gset_from_function:NnN #1#2#3
   { \seq_gset_from_inline_x:Nnn #1 {#2} { #3 {##1} } }
-\cs_new_protected:Npn \seq_const_from_clist:Nn #1#2
-  {
-    \tl_const:Nx #1
-      { \s__seq \clist_map_function:nN {#2} \__seq_wrap_item:n }
-  }
-\cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
-\cs_if_exist:NTF \tex_uniformdeviate:D
-  {
-    \int_new:N \l__seq_internal_a_int
-    \int_new:N \l__seq_internal_b_int
-    \seq_new:N \g__seq_internal_seq
-    \cs_new_protected:Npn \seq_shuffle:N { \__seq_shuffle:NN \seq_set_eq:NN }
-    \cs_new_protected:Npn \seq_gshuffle:N { \__seq_shuffle:NN \seq_gset_eq:NN }
-    \cs_new_protected:Npn \__seq_shuffle:NN #1#2
-      {
-        \int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
-          {
-            \__kernel_msg_error:nnx { kernel } { shuffle-too-large }
-              { \token_to_str:N #2 }
-          }
-          {
-            \group_begin:
-              \cs_set_eq:NN \__seq_item:n \__seq_shuffle_item:n
-              \int_zero:N \l__seq_internal_a_int
-              #2
-              \seq_gset_from_inline_x:Nnn \g__seq_internal_seq
-                { \int_step_function:nN { \l__seq_internal_a_int } }
-                { \tex_the:D \tex_toks:D ##1 }
-            \group_end:
-            #1 #2 \g__seq_internal_seq
-            \seq_gclear:N \g__seq_internal_seq
-          }
-      }
-    \cs_new_protected:Npn \__seq_shuffle_item:n
-      {
-        \int_incr:N \l__seq_internal_a_int
-        \int_set:Nn \l__seq_internal_b_int
-          { 1 + \tex_uniformdeviate:D \l__seq_internal_a_int }
-        \tex_toks:D \l__seq_internal_a_int
-          = \tex_toks:D \l__seq_internal_b_int
-        \tex_toks:D \l__seq_internal_b_int
-      }
-    \__kernel_msg_new:nnnn { kernel } { shuffle-too-large }
-      { The~sequence~#1~is~too~long~to~be~shuffled~by~TeX. }
-      {
-        TeX~has~ \int_eval:n { \c_max_register_int + 1 } ~
-        toks~registers:~this~only~allows~to~shuffle~up~to~
-        \int_use:N \c_max_register_int \ items.~
-        The~list~will~not~be~shuffled.
-      }
-  }
-  {
-    \cs_new_protected:Npn \seq_shuffle:N #1
-      {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
-          { \seq_shuffle:N #1 }
-      }
-    \cs_new_eq:NN \seq_gshuffle:N \seq_shuffle:N
-  }
 \cs_new:Npn \seq_indexed_map_function:NN #1#2
   {
     \__seq_indexed_map:NN #1#2
@@ -27818,26 +27523,6 @@
     \exp_after:wN #1
     \int_value:w \int_eval:w 1 + #2 ;
   }
-\__kernel_patch_args:nNNpn
-  { { \__kernel_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_sign:n } }
-\cs_new:Npn \dim_sign:n #1
-  {
-    \int_value:w \exp_after:wN \__dim_sign:Nw
-      \dim_use:N \__dim_eval:w #1 \__dim_eval_end: ;
-    \exp_stop_f:
-  }
-\cs_new:Npn \__dim_sign:Nw #1#2 ;
-  {
-    \if_dim:w #1#2 > \c_zero_dim
-      1
-    \else:
-      \if_meaning:w - #1
-        -1
-      \else:
-        0
-      \fi:
-    \fi:
-  }
 \str_const:Nx \c_sys_engine_version_str
   {
     \str_case:on \c_sys_engine_str
@@ -27854,6 +27539,7 @@
               {
                 p
                 \int_use:N  \tex_ptexversion:D
+                .
                 \int_use:N \tex_ptexminorversion:D
                 \tex_ptexrevision:D
                 -
@@ -27872,6 +27558,7 @@
               {
                 p
                 \int_use:N  \tex_ptexversion:D
+                .
                 \int_use:N \tex_ptexminorversion:D
                 \tex_ptexrevision:D
                 -
@@ -27889,211 +27576,6 @@
           }
       }
   }
-\sys_if_rand_exist:TF
-  { \cs_new:Npn \sys_rand_seed: { \tex_the:D \tex_randomseed:D } }
-  {
-    \cs_new:Npn \sys_rand_seed:
-      {
-        \int_value:w
-        \__kernel_msg_expandable_error:nnn { kernel } { fp-no-random }
-          { \sys_rand_seed: }
-        \c_zero_int
-      }
-  }
-\sys_if_rand_exist:TF
-  {
-    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
-      { \tex_setrandomseed:D \int_eval:n {#1} \exp_stop_f: }
-  }
-  {
-    \cs_new_protected:Npn \sys_gset_rand_seed:n #1
-      {
-        \__kernel_msg_error:nnn { kernel } { fp-no-random }
-          { \sys_gset_rand_seed:n {#1} }
-      }
-  }
-\int_const:Nn \c_sys_shell_escape_int
-  {
-    \sys_if_engine_luatex:TF
-      {
-        \tex_directlua:D
-          { tex.sprint(status.shell_escape~or~os.execute()) }
-      }
-      {
-        \tex_shellescape:D
-      }
-  }
-\tl_new:N \l__sys_internal_tl
-\tl_const:Nx \c__sys_marker_tl { : \token_to_str:N : }
-\cs_new_protected:Npn \sys_shell_get:nnN #1#2#3
-  {
-    \sys_shell_get:nnNF {#1} {#2} #3
-      { \tl_set:Nn #3 { \q_no_value } }
-  }
-\prg_new_protected_conditional:Npnn \sys_shell_get:nnN #1#2#3 { T , F , TF }
-  {
-    \sys_if_shell:TF
-      { \exp_args:No \__sys_get:nnN { \tl_to_str:n {#1} } {#2} #3 }
-      { \prg_return_false: }
-  }
-\cs_new_protected:Npn \__sys_get:nnN #1#2#3
-  {
-    \tl_if_in:nnTF {#1} { " }
-      {
-        \__kernel_msg_error:nnx
-          { kernel } { quote-in-shell } {#1}
-        \prg_return_false:
-      }
-      {
-        \group_begin:
-          \if_false: { \fi:
-          \int_set_eq:NN \tex_tracingnesting:D \c_zero_int
-          \exp_args:No \tex_everyeof:D { \c__sys_marker_tl }
-          #2 \scan_stop:
-          \exp_after:wN \__sys_get_do:Nw
-          \exp_after:wN #3
-          \exp_after:wN \prg_do_nothing:
-            \tex_input:D | "#1" \scan_stop:
-        \if_false: } \fi:
-        \prg_return_true:
-      }
-  }
-\exp_args:Nno \use:nn
-  { \cs_new_protected:Npn \__sys_get_do:Nw #1#2 }
-  { \c__sys_marker_tl }
-  {
-    \group_end:
-    \tl_set:No #1 {#2}
-  }
-\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
-  { Quotes~in~shell~command~'#1'. }
-  { Shell~commands~cannot~contain~quotes~("). }
-\sys_if_engine_luatex:TF
-  {
-    \str_const:Nx \c_sys_platform_str
-      { \lua_now:n { tex.print(os.type) } }
-  }
-  {
-    \file_if_exist:nTF { nul: }
-      {
-        \file_if_exist:nF { /dev/null }
-          { \str_const:Nn \c_sys_platform_str { windows } }
-      }
-      {
-        \file_if_exist:nT { /dev/null }
-          { \str_const:Nn \c_sys_platform_str { unix } }
-      }
-  }
-\cs_if_exist:NF \c_sys_platform_str
-  { \str_const:Nn \c_sys_platform_str { unknown }  }
-\clist_map_inline:nn { unix , windows }
-  {
-    \__sys_const:nn { sys_if_platform_ #1 }
-      { \str_if_eq_p:Vn \c_sys_platform_str { #1 } }
-  }
-\__sys_const:nn { sys_if_shell }
-  { \int_compare_p:nNn \c_sys_shell_escape_int > 0 }
-\__sys_const:nn { sys_if_shell_unrestricted }
-  { \int_compare_p:nNn \c_sys_shell_escape_int = 1 }
-\__sys_const:nn { sys_if_shell_restricted }
-  { \int_compare_p:nNn \c_sys_shell_escape_int = 2 }
-\sys_if_engine_luatex:F
-  { \int_const:Nn \c__sys_shell_stream_int { 18 } }
-\sys_if_engine_luatex:TF
-  {
-    \cs_new_protected:Npn \sys_shell_now:n #1
-      {
-        \lua_now:e
-          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
-      }
-  }
-  {
-    \cs_new_protected:Npn \sys_shell_now:n #1
-      { \iow_now:Nn \c__sys_shell_stream_int {#1} }
-  }
-\cs_generate_variant:Nn \sys_shell_now:n { x }
-\sys_if_engine_luatex:TF
-  {
-    \cs_new_protected:Npn \sys_shell_shipout:n #1
-      {
-        \lua_shipout_e:n
-          { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
-      }
-  }
-  {
-    \cs_new_protected:Npn \sys_shell_shipout:n #1
-      { \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
-  }
-\cs_generate_variant:Nn \sys_shell_shipout:n { x }
-\cs_new:Npn \__file_str_cmp:nn #1#2 { \tex_strcmp:D {#1} {#2} }
-\sys_if_engine_luatex:T
-  {
-    \cs_set:Npn \__file_str_cmp:nn #1#2
-      {
-        \lua_now:e
-          {
-            l3kernel.strcmp
-              (
-                " \__file_str_escape:n {#1}",
-                " \__file_str_escape:n {#2}"
-              )
-          }
-      }
-   \cs_new:Npn \__file_str_escape:n #1
-     {
-       \lua_escape:e
-         { \__kernel_tl_to_str:w \use:e { {#1} } }
-     }
-  }
-\tl_new:N \l__file_first_tl
-\tl_new:N \l__file_second_tl
-\prg_new_protected_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
-  { T , F , TF }
-  {
-    \group_begin:
-      \file_get_full_name:nNTF {#1} \l__file_first_tl
-        {
-          \file_get_full_name:nNTF {#3} \l__file_second_tl
-            {
-              \if_int_compare:w
-                  \__file_str_cmp:nn
-                    { \__file_timestamp:n \exp_after:wN { \l__file_first_tl } }
-                    { \__file_timestamp:n \exp_after:wN { \l__file_second_tl } }
-                    #2 0 \exp_stop_f:
-              \group_end:
-              \prg_return_true:
-            \else:
-              \group_end:
-               \prg_return_false:
-            \fi:
-            }
-            {
-              \group_end:
-               \if_charcode:w #2 >
-                  \prg_return_true:
-                \else:
-                  \prg_return_false:
-                \fi:
-            }
-        }
-        {
-          \group_end:
-          \if_charcode:w #2 <
-            \prg_return_true:
-          \else:
-            \prg_return_false:
-          \fi:
-        }
-  }
-\sys_if_engine_luatex:TF
-  {
-    \cs_new:Npn \__file_timestamp:n #1
-      {
-        \lua_now:e
-          { l3kernel.filemoddate ( " \lua_escape:e {#1} " ) }
-      }
-  }
-  { \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D }
 \cs_new_protected:Npn \ior_shell_open:Nn #1#2
   {
     \sys_if_shell:TF
@@ -28312,7 +27794,6 @@
   }
 \cs_generate_variant:Nn \__char_codepoint_to_bytes_output:nnn { f }
 \cs_new:Npn \__char_codepoint_to_bytes_end: { }
-\cs_generate_variant:Nn \tl_if_head_eq_catcode:nNTF { o }
 \cs_new:Npn \tl_lower_case:n { \__tl_change_case:nnn { lower } { } }
 \cs_new:Npn \tl_upper_case:n { \__tl_change_case:nnn { upper } { } }
 \cs_new:Npn \tl_mixed_case:n { \__tl_change_case:nnn { mixed } { } }
@@ -29215,10 +28696,8 @@
     `
     -
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_build_begin:N #1
   { \__tl_build_begin:NN \cs_set_nopar:Npx #1 }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_build_gbegin:N #1
   { \__tl_build_begin:NN \cs_gset_nopar:Npx #1 }
 \cs_new_protected:Npn \__tl_build_begin:NN #1#2
@@ -29234,25 +28713,21 @@
   }
 \cs_new_eq:NN \tl_build_clear:N \tl_build_begin:N
 \cs_new_eq:NN \tl_build_gclear:N \tl_build_gbegin:N
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_build_put_right:Nn #1#2
   {
     \cs_set_nopar:Npx #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_build_put_right:Nx #1#2
   {
     \cs_set_nopar:Npx #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
   {
     \cs_gset_nopar:Npx #1
       { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
   }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_build_gput_right:Nx #1#2
   {
     \cs_gset_nopar:Npx #1
@@ -29278,11 +28753,9 @@
 \cs_new_protected:Npn \__tl_build_put:nn #1#2 { \__tl_build_put:nw {#2} #1 }
 \cs_new_protected:Npn \__tl_build_put:nw #1#2 \__tl_build_last:NNn #3#4#5
   { #2 \__tl_build_last:NNn #3 #4 { #1 #5 } }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_local:N #1 } { }
 \cs_new_protected:Npn \tl_build_put_left:Nn #1
   { \__tl_build_put_left:NNn \cs_set_nopar:Npx #1 }
 \cs_generate_variant:Nn \tl_build_put_left:Nn { Nx }
-\__kernel_patch:nnNNpn { \__kernel_chk_var_global:N #1 } { }
 \cs_new_protected:Npn \tl_build_gput_left:Nn #1
   { \__tl_build_put_left:NNn \cs_gset_nopar:Npx #1 }
 \cs_generate_variant:Nn \tl_build_gput_left:Nn { Nx }
@@ -29433,6 +28906,7 @@
       }
       { \int_compare:nNnTF {#1} #5 {#6} }
   }
+\bool_new:N \g__kernel_deprecation_undo_recent_bool
 \cs_new_protected:Npn \__deprecation_not_yet_deprecated:nTF #1
   {
     \bool_set_false:N \l__deprecation_grace_period_bool
@@ -29446,7 +28920,7 @@
           } < {#1}
           {
             \bool_set_true:N \l__deprecation_grace_period_bool
-            \bool_if:NTF \l@expl@undo@recent@deprecations@bool
+            \bool_if:NTF \g__kernel_deprecation_undo_recent_bool
           }
           { \use_ii:nn }
       }
@@ -29471,9 +28945,9 @@
       {
         \bool_if:nTF
           {
-            \cs_if_eq_p:NN #3 \cs_new_protected:Npn &&
+            \cs_if_eq_p:NN #3 \cs_gset_protected:Npn &&
             \__kernel_if_debug:TF
-              { \c_true_bool } { \l@expl@undo@recent@deprecations@bool }
+              { \c_true_bool } { \g__kernel_deprecation_undo_recent_bool }
           }
           { \__deprecation_warn_once:nnNnn {#1} {#2} #4 {#5} {#6} }
           { \__deprecation_patch_aux:Nn #3 { #4 #5 {#6} } }
@@ -29482,7 +28956,7 @@
   }
 \cs_new_protected:Npn \__deprecation_warn_once:nnNnn #1#2#3#4#5
   {
-    \cs_new_protected:Npx #3
+    \cs_gset_protected:Npx #3
       {
         \__kernel_if_debug:TF
           {
@@ -29502,7 +28976,7 @@
 \cs_new_protected:Npn \__deprecation_patch_aux:Nn #1#2
   {
     #1 #2
-    \cs_if_eq:NNTF #1 \cs_new_protected:Npn
+    \cs_if_eq:NNTF #1 \cs_gset_protected:Npn
       { \__kernel_deprecation_code:nn { } { \cs_set_protected:Npn #2 } }
       { \__kernel_deprecation_code:nn { } { \cs_set:Npn #2 } }
   }
@@ -29512,7 +28986,7 @@
       {
         \exp_not:N #4
         {
-          \cs_if_eq:NNTF #3 \cs_new_protected:Npn
+          \cs_if_eq:NNTF #3 \cs_gset_protected:Npn
             { \exp_not:N \__kernel_msg_error:nnnnnn }
             { \exp_not:N \__kernel_msg_expandable_error:nnnnnn }
             { kernel } { deprecated-command }
@@ -29550,12 +29024,12 @@
 \cs_new_protected:Npn \__deprecation_old_protected:Nnn #1#2#3
   {
     \__kernel_patch_deprecation:nnNNpn {#3} {#2}
-    \cs_new_protected:Npn #1 { }
+    \cs_gset_protected:Npn #1 { }
   }
 \cs_new_protected:Npn \__deprecation_old:Nnn #1#2#3
   {
     \__kernel_patch_deprecation:nnNNpn {#3} {#2}
-    \cs_new:Npn #1 { }
+    \cs_gset:Npn #1 { }
   }
 \__deprecation_old:Nnn \box_resize:Nnn
   { \box_resize_to_wd_and_ht_plus_dp:Nnn } { 2019-01-01 }
@@ -29703,222 +29177,20 @@
       }
     \__kernel_primitives:
   }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \box_set_eq_drop:N }
-\cs_new_protected:Npn \box_set_eq_clear:NN #1#2
-  { \tex_setbox:D #1 \tex_box:D #2 }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \box_gset_eq_drop:N }
-\cs_new_protected:Npn \box_gset_eq_clear:NN #1#2
-  { \tex_global:D \tex_setbox:D #1 \tex_box:D #2 }
-\cs_generate_variant:Nn \box_set_eq_clear:NN  { c , Nc , cc }
-\cs_generate_variant:Nn \box_gset_eq_clear:NN { c , Nc , cc }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \hbox_unpack_drop:N }
-\cs_new_protected:Npn \hbox_unpack_clear:N
-  { \hbox_unpack_drop:N }
-\cs_generate_variant:Nn \hbox_unpack_clear:N { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \vbox_unpack_drop:N }
-\cs_new_protected:Npn \vbox_unpack_clear:N
-  { \vbox_unpack_drop:N }
-\cs_generate_variant:Nn \vbox_unpack_clear:N { c }
-\cs_new_protected:Npn \__int_deprecated_constants:nn #1#2
-  {
-    #1 \c_zero                   {   0 } #2
-    #1 \c_one                    {   1 } #2
-    #1 \c_two                    {   2 } #2
-    #1 \c_three                  {   3 } #2
-    #1 \c_four                   {   4 } #2
-    #1 \c_five                   {   5 } #2
-    #1 \c_six                    {   6 } #2
-    #1 \c_seven                  {   7 } #2
-    #1 \c_eight                  {   8 } #2
-    #1 \c_nine                   {   9 } #2
-    #1 \c_ten                    {  10 } #2
-    #1 \c_eleven                 {  11 } #2
-    #1 \c_twelve                 {  12 } #2
-    #1 \c_thirteen               {  13 } #2
-    #1 \c_fourteen               {  14 } #2
-    #1 \c_fifteen                {  15 } #2
-    #1 \c_sixteen                {  16 } #2
-    #1 \c_thirty_two             {  32 } #2
-    #1 \c_one_hundred            { 100 } #2
-    #1 \c_two_hundred_fifty_five { 255 } #2
-    #1 \c_two_hundred_fifty_six  { 256 } #2
-    #1 \c_one_thousand         {  1000 } #2
-    #1 \c_ten_thousand         { 10000 } #2
-  }
-\__int_deprecated_constants:nn { \int_const:Nn } { }
-\__kernel_deprecation_code:nn
-  {
-    \__int_deprecated_constants:nn
-      { \exp_after:wN \__kernel_deprecation_error:Nnn \exp_not:N }
-      { { 2020-01-01 } }
-  }
-  {
-    \__int_deprecated_constants:nn
-      {
-        \exp_after:wN \use:nnn
-        \exp_after:wN \__int_constdef:Nw \exp_not:N
-      }
-      { \exp_stop_f: }
-  }
-\cs_new_eq:NN \__int_value:w \int_value:w
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \lua_now:e }
-\cs_new:Npn \lua_now_x:n #1 { \__lua_now:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \lua_escape:e }
-\cs_new:Npn \lua_escape_x:n #1 { \__lua_escape:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \lua_shipout_e:n }
-\cs_new_protected:Npn \lua_shipout_x:n #1 { \__lua_shipout:n {#1} }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \iow_log:n }
-\cs_new_protected:Npn \msg_log:n #1
-  {
-    \iow_log:n { ................................................. }
-    \iow_wrap:nnnN { . ~ #1} { . ~ } { } \iow_log:n
-    \iow_log:n { ................................................. }
-  }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \iow_term:n }
-\cs_new_protected:Npn \msg_term:n #1
-  {
-    \iow_term:n { ************************************************* }
-    \iow_wrap:nnnN { * ~ #1} { * ~ } { } \iow_term:n
-    \iow_term:n { ************************************************* }
-  }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { [Defined~error~message] }
-\cs_new_protected:Npn \msg_interrupt:nnn #1#2#3
-  {
-    \tl_if_empty:nTF {#3}
-      {
-        \__msg_old_interrupt_wrap:nn { \\ \c__msg_no_info_text_tl }
-          {#1 \\\\ #2 \\\\ \c__msg_continue_text_tl }
-      }
-      {
-        \__msg_old_interrupt_wrap:nn { \\ #3 }
-          {#1 \\\\ #2 \\\\ \c__msg_help_text_tl }
-      }
-  }
-\cs_new_protected:Npn \__msg_old_interrupt_wrap:nn #1#2
-  {
-    \iow_wrap:nnnN {#1} { | ~ } { } \__msg_old_interrupt_more_text:n
-    \iow_wrap:nnnN {#2} { ! ~ } { } \__msg_old_interrupt_text:n
-  }
-\cs_new_protected:Npn \__msg_old_interrupt_more_text:n #1
-  {
-    \exp_args:Nx \tex_errhelp:D
-      {
-        |'''''''''''''''''''''''''''''''''''''''''''''''
-        #1 \iow_newline:
-        |...............................................
-      }
-  }
 \group_begin:
-  \char_set_lccode:nn {`\{} {`\ }
-  \char_set_lccode:nn {`\}} {`\ }
-  \char_set_lccode:nn {`\&} {`\!}
-  \char_set_catcode_active:N \&
-\tex_lowercase:D
+\cs_set_protected:Npn \ProvidesExplFile
   {
-    \group_end:
-    \cs_new_protected:Npn \__msg_old_interrupt_text:n #1
-      {
-        \iow_term:x
-          {
-            \iow_newline:
-            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-            \iow_newline:
-            !
-          }
-        \__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
-          {
-            \__kernel_iow_with:Nnn \tex_errorcontextlines:D { -1 }
-              {
-                \group_begin:
-                  \cs_set_protected:Npn &
-                    {
-                      \tex_errmessage:D
-                        {
-                          #1
-                          \use_none:n
-                            { ............................................ }
-                        }
-                    }
-                  \exp_after:wN
-                \group_end:
-                &
-              }
-          }
-      }
-  }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \prg_break_point:Nn }
-\cs_new:Npn \__prg_break_point:Nn { \prg_break_point:Nn }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \prg_break_point: }
-\cs_new:Npn \__prg_break_point: { \prg_break_point: }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \prg_map_break:Nn }
-\cs_new:Npn \__prg_map_break:Nn #1 \__prg_break_point:Nn
-  { \prg_map_break:Nn #1 \prg_break_point:Nn }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \prg_break: }
-\cs_new:Npn \__prg_break: #1 \__prg_break_point: { }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \prg_break:n }
-\cs_new:Npn \__prg_break:n #1#2 \__prg_break_point: {#1}
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_case_e:nn }
-\cs_new:Npn \str_case_x:nn { \str_case_e:nn }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_case_e:nnT }
-\cs_new:Npn \str_case_x:nnT { \str_case_e:nnT }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_case_e:nnF }
-\cs_new:Npn \str_case_x:nnF { \str_case_e:nnF }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_case_e:nnTF }
-\cs_new:Npn \str_case_x:nnTF { \str_case_e:nnTF }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_if_eq_p:ee }
-\cs_new:Npn \str_if_eq_x_p:nn { \str_if_eq_p:ee }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_if_eq:eeT }
-\cs_new:Npn \str_if_eq_x:nnT { \str_if_eq:eeT }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_if_eq:eeF }
-\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \str_if_eq:eeTF }
-\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_new_protected:Npn \tl_set_from_file:Nnn #1#2#3
-  { \file_get:nnN {#3} {#2} #1 }
-\cs_generate_variant:Nn \tl_set_from_file:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_new_protected:Npn \tl_gset_from_file:Nnn #1#2#3
-  {
-    \group_begin:
-      \file_get:nnN {#3} {#2} \l__tl_internal_a_tl
-      \tl_gset_eq:NN #1 \l__tl_internal_a_tl
-    \group_end:
+    \char_set_catcode_space:n { `\  }
+    \ProvidesExplFileAux
   }
-\cs_generate_variant:Nn \tl_gset_from_file:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_new_protected:Npn \tl_set_from_file_x:Nnn #1#2#3
+\cs_set_protected:Npx \ProvidesExplFileAux #1#2#3#4
   {
-    \group_begin:
-      \file_get:nnN {#3} {#2} \l__tl_internal_a_tl
-      #2 \scan_stop:
-      \tl_set:Nx \l__tl_internal_a_tl { \l__tl_internal_a_tl }
-    \exp_args:NNNo \group_end:
-    \tl_set:Nn #1 \l__tl_internal_a_tl
-  }
-\cs_generate_variant:Nn \tl_set_from_file_x:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \file_get:nnN }
-\cs_new_protected:Npn \tl_gset_from_file_x:Nnn #1#2#3
-  {
-    \group_begin:
-      \file_get:nnN {#3} {#2} \l__tl_internal_a_tl
-      #2 \scan_stop:
-      \tl_gset:Nx #1 { \l__tl_internal_a_tl }
     \group_end:
+    \cs_if_exist:NTF \ProvidesFile
+      { \exp_not:N \ProvidesFile {#1} [ #2~v#3~#4 ] }
+      { \iow_log:x { File:~#1~#2~v#3~#4 } }
   }
-\cs_generate_variant:Nn \tl_gset_from_file_x:Nnn { c }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \tl_analysis_show:N }
-\cs_new_protected:Npn \tl_show_analysis:N { \tl_analysis_show:N }
-\__kernel_patch_deprecation:nnNNpn { 2020-01-01 } { \tl_analysis_show:n }
-\cs_new_protected:Npn \tl_show_analysis:n { \tl_analysis_show:n }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \cs_prefix_spec:N }
-\cs_new:Npn \token_get_prefix_spec:N { \cs_prefix_spec:N }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \cs_argument_spec:N }
-\cs_new:Npn \token_get_arg_spec:N { \cs_argument_spec:N }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \cs_replacement_spec:N }
-\cs_new:Npn \token_get_replacement_spec:N { \cs_replacement_spec:N }
-\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { -1 }
-\cs_new_protected:Npn \c_term_ior { -1 \scan_stop: }
+\file_input:n { l3deprecation.def }
 %% 
 %%
 %% End of file `expl3-code.tex'.
-- 
cgit v1.2.3

