Upgrade to 0.7.1

Test: build, TH
Change-Id: I3cb2c39b931e2b5c5b1a0bf775c6185c0e521da8
diff --git a/Android.bp b/Android.bp
index 12753bb..88f71b4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -52,7 +52,6 @@
         "--default-enum-style rust",
         "--whitelist-function=\\bgrpc_.*",
         "--whitelist-function=\\bgpr_.*",
-        "--whitelist-function=gpr_inf_future",
         "--whitelist-function=\\bgrpcwrap_.*",
         "--whitelist-var=\\bGRPC_.*",
         "--whitelist-type=\\bgrpc_.*",
@@ -71,14 +70,15 @@
 }
 
 // dependent_library ["feature_list"]
-//   aho-corasick-0.7.14 "default,std"
+//   aho-corasick-0.7.15 "default,std"
 //   bindgen-0.51.1
 //   bitflags-1.2.1 "default"
-//   cc-1.0.61
+//   boringssl-src-0.1.0
+//   cc-1.0.63
 //   cexpr-0.3.6
 //   cfg-if-0.1.10
 //   clang-sys-0.28.1 "clang_6_0,gte_clang_3_6,gte_clang_3_7,gte_clang_3_8,gte_clang_3_9,gte_clang_4_0,gte_clang_5_0,gte_clang_6_0,libloading,runtime"
-//   cmake-0.1.44
+//   cmake-0.1.45
 //   glob-0.3.0
 //   lazy_static-1.4.0
 //   libc-0.2.80 "default,std"
diff --git a/Cargo.toml b/Cargo.toml
index 6c57722..4068ea6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,10 +13,10 @@
 [package]
 edition = "2018"
 name = "grpcio-sys"
-version = "0.6.0"
+version = "0.7.1"
 authors = ["The TiKV Project Developers"]
 build = "build.rs"
-exclude = ["grpc/doc/*", "grpc/etc/*", "grpc/examples/*", "grpc/Makefile", "grpc/templates/*", "grpc/src/android/*", "grpc/src/csharp/*", "grpc/src/node/*", "grpc/src/objective-c/*", "grpc/src/php/*", "grpc/src/python/*", "grpc/src/ruby/*", "grpc/test/core/end2end/*", "grpc/third_party/zlib/*", "grpc/third_party/abseil-cpp/absl/time/internal/cctz/testdata", "grpc/third_party/benchmark/*", "grpc/third_party/bloaty/*", "grpc/third_party/boringssl-with-bazel/crypto_test_data.cc", "grpc/third_party/boringssl-with-bazel/src/fuzz", "grpc/third_party/boringssl-with-bazel/src/crypto/cipher_extra/test", "grpc/third_party/boringssl-with-bazel/src/third_party/wycheproof_testvectors", "grpc/third_party/boringssl-with-bazel/src/third_party/googletest", "grpc/third_party/libuv/*", "grpc/third_party/gflags/*", "grpc/third_party/googletest/*", "grpc/third_party/objective_c/*", "grpc/third_party/protobuf/*", "grpc/third_party/toolchans/*", "grpc/third_party/envoy-api/*", "grpc/third_party/googleapis/*", "grpc/third_party/protoc-gen-validate/*", "grpc/third_party/udpa/*", "grpc/tools/run_tests/generated/*", "grpc/test/core/", "!grpc/test/core/security/*.cc", "!grpc/test/core/util/cmdline.cc", "grpc/test/cpp"]
+exclude = ["grpc/doc/*", "grpc/etc/*", "grpc/examples/*", "grpc/Makefile", "grpc/templates/*", "grpc/src/android/*", "grpc/src/csharp/*", "grpc/src/node/*", "grpc/src/objective-c/*", "grpc/src/php/*", "grpc/src/python/*", "grpc/src/ruby/*", "grpc/test/core/end2end/*", "grpc/third_party/zlib/*", "grpc/third_party/abseil-cpp/absl/time/internal/cctz/testdata", "grpc/third_party/benchmark/*", "grpc/third_party/bloaty/*", "grpc/third_party/boringssl-with-bazel/*", "grpc/third_party/libuv/*", "grpc/third_party/gflags/*", "grpc/third_party/googletest/*", "grpc/third_party/objective_c/*", "grpc/third_party/protobuf/*", "grpc/third_party/toolchans/*", "grpc/third_party/envoy-api/*", "grpc/third_party/googleapis/*", "grpc/third_party/protoc-gen-validate/*", "grpc/third_party/udpa/*", "grpc/tools/run_tests/generated/*", "grpc/test/core/", "!grpc/test/core/security/*.cc", "!grpc/test/core/util/cmdline.cc", "grpc/test/cpp"]
 description = "FFI bindings to gRPC c core library"
 homepage = "https://github.com/tikv/grpc-rs"
 documentation = "https://docs.rs/grpcio-sys"
@@ -39,6 +39,9 @@
 version = "0.51.0"
 default-features = false
 
+[build-dependencies.boringssl-src]
+version = "0.1.0"
+
 [build-dependencies.cc]
 version = "1.0"
 
diff --git a/Cargo.toml.orig b/Cargo.toml.orig
index fcd38d6..3071e0a 100644
--- a/Cargo.toml.orig
+++ b/Cargo.toml.orig
@@ -1,6 +1,6 @@
 [package]
 name = "grpcio-sys"
-version = "0.6.0"
+version = "0.7.1"
 authors = ["The TiKV Project Developers"]
 license = "Apache-2.0"
 keywords = ["grpc", "bindings"]
@@ -29,11 +29,7 @@
     "grpc/third_party/abseil-cpp/absl/time/internal/cctz/testdata",
     "grpc/third_party/benchmark/*",
     "grpc/third_party/bloaty/*",
-    "grpc/third_party/boringssl-with-bazel/crypto_test_data.cc",
-    "grpc/third_party/boringssl-with-bazel/src/fuzz",
-    "grpc/third_party/boringssl-with-bazel/src/crypto/cipher_extra/test",
-    "grpc/third_party/boringssl-with-bazel/src/third_party/wycheproof_testvectors",
-    "grpc/third_party/boringssl-with-bazel/src/third_party/googletest",
+    "grpc/third_party/boringssl-with-bazel/*",
     "grpc/third_party/libuv/*",
     "grpc/third_party/gflags/*",
     "grpc/third_party/googletest/*",
@@ -70,3 +66,4 @@
 walkdir = "2.2.9"
 # Because of rust-lang/cargo#5237, bindgen should not be upgraded util a minor or major release.
 bindgen = { version = "0.51.0", default-features = false }
+boringssl-src = "0.1.0"
diff --git a/android/bindgen_wrapper.hpp b/android/bindgen_wrapper.hpp
index 6e2274b..d22a367 100644
--- a/android/bindgen_wrapper.hpp
+++ b/android/bindgen_wrapper.hpp
@@ -1,2 +1,3 @@
+#include <grpc/grpc_posix.h>
 #include <grpc/support/cpu.h>
 #include "../grpc_wrap.cc"
diff --git a/bindings/aarch64-unknown-linux-gnu-bindings.rs b/bindings/aarch64-unknown-linux-gnu-bindings.rs
index 0bc0117..dc7eb65 100644
--- a/bindings/aarch64-unknown-linux-gnu-bindings.rs
+++ b/bindings/aarch64-unknown-linux-gnu-bindings.rs
@@ -1,6 +1,5 @@
 /* automatically generated by rust-bindgen */
 
-pub const GRPC_USE_ABSL: u32 = 1;
 pub const GRPC_ARES: u32 = 1;
 pub const GRPC_IF_NAMETOINDEX: u32 = 1;
 pub const GRPC_ALLOW_EXCEPTIONS: u32 = 1;
@@ -116,9 +115,6 @@
     b"grpc.grpclb_fallback_timeout_ms\0";
 pub const GRPC_ARG_PRIORITY_FAILOVER_TIMEOUT_MS: &'static [u8; 34usize] =
     b"grpc.priority_failover_timeout_ms\0";
-pub const GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS: &'static [u8; 44usize] =
-    b"grpc.xds_resource_does_not_exist_timeout_ms\0";
-pub const GRPC_ARG_XDS_ROUTING_ENABLED: &'static [u8; 25usize] = b"grpc.xds_routing_enabled\0";
 pub const GRPC_ARG_WORKAROUND_CRONET_COMPRESSION: &'static [u8; 35usize] =
     b"grpc.workaround.cronet_compression\0";
 pub const GRPC_ARG_OPTIMIZATION_TARGET: &'static [u8; 25usize] = b"grpc.optimization_target\0";
@@ -129,6 +125,7 @@
 pub const GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER: &'static [u8; 37usize] =
     b"grpc.disable_client_authority_filter\0";
 pub const GRPC_ARG_ENABLE_HTTP_PROXY: &'static [u8; 23usize] = b"grpc.enable_http_proxy\0";
+pub const GRPC_ARG_HTTP_PROXY: &'static [u8; 16usize] = b"grpc.http_proxy\0";
 pub const GRPC_ARG_SURFACE_USER_AGENT: &'static [u8; 24usize] = b"grpc.surface_user_agent\0";
 pub const GRPC_ARG_INHIBIT_HEALTH_CHECKING: &'static [u8; 29usize] =
     b"grpc.inhibit_health_checking\0";
@@ -164,6 +161,7 @@
 pub const GRPC_X509_PEM_CERT_CHAIN_PROPERTY_NAME: &'static [u8; 20usize] = b"x509_pem_cert_chain\0";
 pub const GRPC_SSL_SESSION_REUSED_PROPERTY: &'static [u8; 19usize] = b"ssl_session_reused\0";
 pub const GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME: &'static [u8; 15usize] = b"security_level\0";
+pub const GRPC_PEER_SPIFFE_ID_PROPERTY_NAME: &'static [u8; 15usize] = b"peer_spiffe_id\0";
 pub const GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR: &'static [u8; 33usize] =
     b"GRPC_DEFAULT_SSL_ROOTS_FILE_PATH\0";
 pub const GRPC_GOOGLE_CREDENTIALS_ENV_VAR: &'static [u8; 31usize] =
@@ -213,53 +211,6 @@
     pub is_set: ::std::os::raw::c_int,
     pub level: grpc_compression_level,
 }
-#[test]
-fn bindgen_test_layout_grpc_compression_options_grpc_compression_options_default_level() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_compression_options_grpc_compression_options_default_level>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_compression_options_grpc_compression_options_default_level>(),
-        4usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options_grpc_compression_options_default_level>(
-            )))
-            .is_set as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level),
-            "::",
-            stringify!(is_set)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options_grpc_compression_options_default_level>(
-            )))
-            .level as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level),
-            "::",
-            stringify!(level)
-        )
-    );
-}
 #[doc = " The default message compression algorithm. It'll be used in the absence of"]
 #[doc = " call specific settings. This option corresponds to the channel argument key"]
 #[doc = " behind \\a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM."]
@@ -269,108 +220,6 @@
     pub is_set: ::std::os::raw::c_int,
     pub algorithm: grpc_compression_algorithm,
 }
-#[test]
-fn bindgen_test_layout_grpc_compression_options_grpc_compression_options_default_algorithm() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_compression_options_grpc_compression_options_default_algorithm>(
-        ),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_compression_options_grpc_compression_options_default_algorithm>(
-        ),
-        4usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<
-                grpc_compression_options_grpc_compression_options_default_algorithm,
-            >()))
-            .is_set as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm),
-            "::",
-            stringify!(is_set)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<
-                grpc_compression_options_grpc_compression_options_default_algorithm,
-            >()))
-            .algorithm as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm),
-            "::",
-            stringify!(algorithm)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_compression_options() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_compression_options>(),
-        20usize,
-        concat!("Size of: ", stringify!(grpc_compression_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_compression_options>(),
-        4usize,
-        concat!("Alignment of ", stringify!(grpc_compression_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options>())).enabled_algorithms_bitset
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options),
-            "::",
-            stringify!(enabled_algorithms_bitset)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options>())).default_level as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options),
-            "::",
-            stringify!(default_level)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options>())).default_algorithm as *const _
-                as usize
-        },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options),
-            "::",
-            stringify!(default_algorithm)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_slice_refcount {
@@ -404,177 +253,17 @@
     pub length: usize,
     pub bytes: *mut u8,
 }
-#[test]
-fn bindgen_test_layout_grpc_slice_grpc_slice_data_grpc_slice_refcounted() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>(),
-        16usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>())).length
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted),
-            "::",
-            stringify!(length)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>())).bytes
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted),
-            "::",
-            stringify!(bytes)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_slice_grpc_slice_data_grpc_slice_inlined {
     pub length: u8,
     pub bytes: [u8; 23usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_slice_grpc_slice_data_grpc_slice_inlined() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_grpc_slice_data_grpc_slice_inlined>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_grpc_slice_data_grpc_slice_inlined>(),
-        1usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_inlined>())).length
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined),
-            "::",
-            stringify!(length)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_inlined>())).bytes
-                as *const _ as usize
-        },
-        1usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined),
-            "::",
-            stringify!(bytes)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_slice_grpc_slice_data() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_grpc_slice_data>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_slice_grpc_slice_data))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_grpc_slice_data>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_slice_grpc_slice_data))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data>())).refcounted as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data),
-            "::",
-            stringify!(refcounted)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data>())).inlined as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data),
-            "::",
-            stringify!(inlined)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_slice_grpc_slice_data {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_slice_grpc_slice_data {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_slice() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_slice))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_slice))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice>())).refcount as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice),
-            "::",
-            stringify!(refcount)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice>())).data as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice),
-            "::",
-            stringify!(data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_slice {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -604,82 +293,9 @@
     #[doc = " inlined elements to avoid allocations"]
     pub inlined: [grpc_slice; 8usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_slice_buffer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_buffer>(),
-        296usize,
-        concat!("Size of: ", stringify!(grpc_slice_buffer))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_buffer>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_slice_buffer))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).base_slices as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(base_slices)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).slices as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(slices)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).count as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(count)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).capacity as *const _ as usize },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(capacity)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).length as *const _ as usize },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(length)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).inlined as *const _ as usize },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(inlined)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_slice_buffer {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpc_slice_buffer {{ base_slices: {:?}, slices: {:?}, count: {:?}, capacity: {:?}, length: {:?}, inlined: {:?} }}" , self . base_slices , self . slices , self . count , self . capacity , self . length , self . inlined )
+        write ! (f , "grpc_slice_buffer {{ base_slices: {:?}, slices: {:?}, count: {:?}, capacity: {:?}, length: {:?}, inlined: {:?} }}" , self . base_slices , self . slices , self . count , self . capacity , self . length , self . inlined)
     }
 }
 #[repr(u32)]
@@ -709,49 +325,6 @@
     #[doc = "this is a relative time measure)"]
     pub clock_type: gpr_clock_type,
 }
-#[test]
-fn bindgen_test_layout_gpr_timespec() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_timespec>(),
-        16usize,
-        concat!("Size of: ", stringify!(gpr_timespec))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_timespec>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_timespec))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_timespec>())).tv_sec as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_timespec),
-            "::",
-            stringify!(tv_sec)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_timespec>())).tv_nsec as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_timespec),
-            "::",
-            stringify!(tv_nsec)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_timespec>())).clock_type as *const _ as usize },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_timespec),
-            "::",
-            stringify!(clock_type)
-        )
-    );
-}
 pub type gpr_atm = isize;
 extern "C" {
     #[doc = " Adds \\a delta to \\a *value, clamping the result to the range specified"]
@@ -768,85 +341,16 @@
 pub struct gpr_event {
     pub state: gpr_atm,
 }
-#[test]
-fn bindgen_test_layout_gpr_event() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_event>(),
-        8usize,
-        concat!("Size of: ", stringify!(gpr_event))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_event>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_event))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_event>())).state as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_event),
-            "::",
-            stringify!(state)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct gpr_refcount {
     pub count: gpr_atm,
 }
-#[test]
-fn bindgen_test_layout_gpr_refcount() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_refcount>(),
-        8usize,
-        concat!("Size of: ", stringify!(gpr_refcount))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_refcount>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_refcount))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_refcount>())).count as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_refcount),
-            "::",
-            stringify!(count)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct gpr_stats_counter {
     pub value: gpr_atm,
 }
-#[test]
-fn bindgen_test_layout_gpr_stats_counter() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_stats_counter>(),
-        8usize,
-        concat!("Size of: ", stringify!(gpr_stats_counter))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_stats_counter>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_stats_counter))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_stats_counter>())).value as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_stats_counter),
-            "::",
-            stringify!(value)
-        )
-    );
-}
 extern "C" {
     #[doc = " Initialize *ev."]
     pub fn gpr_event_init(ev: *mut gpr_event);
@@ -1307,189 +811,22 @@
 pub struct grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1 {
     pub reserved: [*mut ::std::os::raw::c_void; 8usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1>(),
-        64usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1>()))
-                .reserved as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1),
-            "::",
-            stringify!(reserved)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {
     pub compression: grpc_compression_algorithm,
     pub slice_buffer: grpc_slice_buffer,
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(),
-        304usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(
-            )))
-            .compression as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer),
-            "::",
-            stringify!(compression)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(
-            )))
-            .slice_buffer as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer),
-            "::",
-            stringify!(slice_buffer)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {{ compression: {:?}, slice_buffer: {:?} }}" , self . compression , self . slice_buffer )
+        write ! (f , "grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {{ compression: {:?}, slice_buffer: {:?} }}" , self . compression , self . slice_buffer)
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_grpc_byte_buffer_data() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_grpc_byte_buffer_data>(),
-        304usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_grpc_byte_buffer_data>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data>())).reserved as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data>())).raw as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data),
-            "::",
-            stringify!(raw)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_grpc_byte_buffer_data {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_byte_buffer_grpc_byte_buffer_data {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer>(),
-        320usize,
-        concat!("Size of: ", stringify!(grpc_byte_buffer))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_byte_buffer))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer>())).reserved as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer>())).type_ as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer),
-            "::",
-            stringify!(type_)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer>())).data as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer),
-            "::",
-            stringify!(data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -1556,49 +893,6 @@
         ) -> ::std::os::raw::c_int,
     >,
 }
-#[test]
-fn bindgen_test_layout_grpc_arg_pointer_vtable() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg_pointer_vtable>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_arg_pointer_vtable))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg_pointer_vtable>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_arg_pointer_vtable))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_pointer_vtable>())).copy as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_pointer_vtable),
-            "::",
-            stringify!(copy)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_pointer_vtable>())).destroy as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_pointer_vtable),
-            "::",
-            stringify!(destroy)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_pointer_vtable>())).cmp as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_pointer_vtable),
-            "::",
-            stringify!(cmp)
-        )
-    );
-}
 #[doc = " A single argument... each argument has a key and a value"]
 #[doc = ""]
 #[doc = "A note on naming keys:"]
@@ -1632,142 +926,11 @@
     pub p: *mut ::std::os::raw::c_void,
     pub vtable: *const grpc_arg_pointer_vtable,
 }
-#[test]
-fn bindgen_test_layout_grpc_arg_grpc_arg_value_grpc_arg_pointer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg_grpc_arg_value_grpc_arg_pointer>(),
-        16usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg_grpc_arg_value_grpc_arg_pointer>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_arg_grpc_arg_value_grpc_arg_pointer>())).p as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer),
-            "::",
-            stringify!(p)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_arg_grpc_arg_value_grpc_arg_pointer>())).vtable as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer),
-            "::",
-            stringify!(vtable)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_arg_grpc_arg_value() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg_grpc_arg_value>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_arg_grpc_arg_value))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg_grpc_arg_value>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_arg_grpc_arg_value))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_grpc_arg_value>())).string as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value),
-            "::",
-            stringify!(string)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_grpc_arg_value>())).integer as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value),
-            "::",
-            stringify!(integer)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_grpc_arg_value>())).pointer as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value),
-            "::",
-            stringify!(pointer)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_arg_grpc_arg_value {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_arg_grpc_arg_value {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_arg() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_arg))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_arg))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg>())).type_ as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg),
-            "::",
-            stringify!(type_)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg>())).key as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg),
-            "::",
-            stringify!(key)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg>())).value as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg),
-            "::",
-            stringify!(value)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_arg {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -1799,39 +962,6 @@
     pub num_args: usize,
     pub args: *mut grpc_arg,
 }
-#[test]
-fn bindgen_test_layout_grpc_channel_args() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_channel_args>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_channel_args))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_channel_args>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_channel_args))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_channel_args>())).num_args as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_args),
-            "::",
-            stringify!(num_args)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_channel_args>())).args as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_args),
-            "::",
-            stringify!(args)
-        )
-    );
-}
 #[repr(u32)]
 #[doc = " Result of a grpc call. If the caller satisfies the prerequisites of a"]
 #[doc = "particular operation, the grpc_call_error returned will be GRPC_CALL_OK."]
@@ -1893,84 +1023,6 @@
 pub struct grpc_metadata__bindgen_ty_1 {
     pub obfuscated: [*mut ::std::os::raw::c_void; 4usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_metadata__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata__bindgen_ty_1>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_metadata__bindgen_ty_1))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata__bindgen_ty_1>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_metadata__bindgen_ty_1))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata__bindgen_ty_1>())).obfuscated as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata__bindgen_ty_1),
-            "::",
-            stringify!(obfuscated)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_metadata() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata>(),
-        104usize,
-        concat!("Size of: ", stringify!(grpc_metadata))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_metadata))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).key as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(key)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).value as *const _ as usize },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(value)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).flags as *const _ as usize },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(flags)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).internal_data as *const _ as usize },
-        72usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(internal_data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_metadata {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -2010,49 +1062,6 @@
     #[doc = "values, tag is uninitialized."]
     pub tag: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_event() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_event>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_event))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_event>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_event))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_event>())).type_ as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_event),
-            "::",
-            stringify!(type_)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_event>())).success as *const _ as usize },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_event),
-            "::",
-            stringify!(success)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_event>())).tag as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_event),
-            "::",
-            stringify!(tag)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_metadata_array {
@@ -2060,49 +1069,6 @@
     pub capacity: usize,
     pub metadata: *mut grpc_metadata,
 }
-#[test]
-fn bindgen_test_layout_grpc_metadata_array() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata_array>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_metadata_array))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata_array>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_metadata_array))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata_array>())).count as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_array),
-            "::",
-            stringify!(count)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata_array>())).capacity as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_array),
-            "::",
-            stringify!(capacity)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata_array>())).metadata as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_array),
-            "::",
-            stringify!(metadata)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct grpc_call_details {
@@ -2112,72 +1078,9 @@
     pub flags: u32,
     pub reserved: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_call_details() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_call_details>(),
-        96usize,
-        concat!("Size of: ", stringify!(grpc_call_details))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_call_details>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_call_details))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).method as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(method)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).host as *const _ as usize },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(host)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).deadline as *const _ as usize },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(deadline)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).flags as *const _ as usize },
-        80usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(flags)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).reserved as *const _ as usize },
-        88usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(reserved)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_call_details {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpc_call_details {{ method: {:?}, host: {:?}, deadline: {:?}, flags: {:?}, reserved: {:?} }}" , self . method , self . host , self . deadline , self . flags , self . reserved )
+        write ! (f , "grpc_call_details {{ method: {:?}, host: {:?}, deadline: {:?}, flags: {:?}, reserved: {:?} }}" , self . method , self . host , self . deadline , self . flags , self . reserved)
     }
 }
 #[repr(u32)]
@@ -2256,35 +1159,6 @@
 pub struct grpc_op_grpc_op_data__bindgen_ty_1 {
     pub reserved: [*mut ::std::os::raw::c_void; 8usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data__bindgen_ty_1>(),
-        64usize,
-        concat!("Size of: ", stringify!(grpc_op_grpc_op_data__bindgen_ty_1))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data__bindgen_ty_1>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data__bindgen_ty_1>())).reserved as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data__bindgen_ty_1),
-            "::",
-            stringify!(reserved)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_send_initial_metadata { pub count : usize , pub metadata : * mut grpc_metadata , pub maybe_compression_level : grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level , }
@@ -2297,72 +1171,6 @@
     pub is_set: u8,
     pub level: grpc_compression_level,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level(
-) {
-    assert_eq ! ( :: std :: mem :: size_of :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) ) );
-    assert_eq ! ( :: std :: mem :: align_of :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) ) );
-    assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) ) ) . is_set as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) , "::" , stringify ! ( is_set ) ) );
-    assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) ) ) . level as * const _ as usize } , 4usize , concat ! ( "Offset of field: " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) , "::" , stringify ! ( level ) ) );
-}
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_initial_metadata() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>())).count
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata),
-            "::",
-            stringify!(count)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>())).metadata
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata),
-            "::",
-            stringify!(metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>()))
-                .maybe_compression_level as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata),
-            "::",
-            stringify!(maybe_compression_level)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_send_message {
@@ -2372,38 +1180,6 @@
     #[doc = " grpc_byte_buffer_destroy() on this object however."]
     pub send_message: *mut grpc_byte_buffer,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_message() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_send_message>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_message)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_send_message>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_message>())).send_message
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_message),
-            "::",
-            stringify!(send_message)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_send_status_from_server {
@@ -2414,77 +1190,6 @@
     #[doc = " pointer will not be retained past the start_batch call"]
     pub status_details: *mut grpc_slice,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_status_from_server() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>(),
-        32usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>()))
-                .trailing_metadata_count as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(trailing_metadata_count)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>()))
-                .trailing_metadata as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>())).status
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>()))
-                .status_details as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(status_details)
-        )
-    );
-}
 #[doc = " ownership of the array is with the caller, but ownership of the elements"]
 #[doc = "stays with the call object (ie key, value members are owned by the call"]
 #[doc = "object, recv_initial_metadata->array is owned by the caller)."]
@@ -2495,38 +1200,6 @@
 pub struct grpc_op_grpc_op_data_grpc_op_recv_initial_metadata {
     pub recv_initial_metadata: *mut grpc_metadata_array,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_initial_metadata() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_initial_metadata>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_initial_metadata>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_initial_metadata>()))
-                .recv_initial_metadata as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_initial_metadata),
-            "::",
-            stringify!(recv_initial_metadata)
-        )
-    );
-}
 #[doc = " ownership of the byte buffer is moved to the caller; the caller must"]
 #[doc = "call grpc_byte_buffer_destroy on this value, or reuse it in a future op."]
 #[doc = "The returned byte buffer will be NULL if trailing metadata was"]
@@ -2536,38 +1209,6 @@
 pub struct grpc_op_grpc_op_data_grpc_op_recv_message {
     pub recv_message: *mut *mut grpc_byte_buffer,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_message() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_message>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_message)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_message>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_message>())).recv_message
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_message),
-            "::",
-            stringify!(recv_message)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_recv_status_on_client {
@@ -2584,286 +1225,20 @@
     #[doc = " for freeing the data by using gpr_free()."]
     pub error_string: *mut *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_status_on_client() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>(),
-        32usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>()))
-                .trailing_metadata as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>())).status
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>()))
-                .status_details as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(status_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>()))
-                .error_string as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(error_string)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_recv_close_on_server {
-    #[doc = " out argument, set to 1 if the call failed in any way (seen as a"]
-    #[doc = "cancellation on the server), or 0 if the call succeeded"]
+    #[doc = " out argument, set to 1 if the call failed at the server for"]
+    #[doc = "a reason other than a non-OK status (cancel, deadline"]
+    #[doc = "exceeded, network failure, etc.), 0 otherwise (RPC processing ran to"]
+    #[doc = "completion and was able to provide any status from the server)"]
     pub cancelled: *mut ::std::os::raw::c_int,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_close_on_server() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_close_on_server>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_close_on_server)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_close_on_server>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_close_on_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_close_on_server>())).cancelled
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_close_on_server),
-            "::",
-            stringify!(cancelled)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data>(),
-        64usize,
-        concat!("Size of: ", stringify!(grpc_op_grpc_op_data))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_op_grpc_op_data))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).reserved as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).send_initial_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).send_message as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(send_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).send_status_from_server as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(send_status_from_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_initial_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_message as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_status_on_client as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_close_on_server as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_close_on_server)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_op_grpc_op_data {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_op_grpc_op_data {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_op() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op>(),
-        80usize,
-        concat!("Size of: ", stringify!(grpc_op))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_op))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).op as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(op)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).flags as *const _ as usize },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(flags)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).reserved as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).data as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_op {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -2884,43 +1259,6 @@
     #[doc = " service config used by the channel in JSON form."]
     pub service_config_json: *mut *mut ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_channel_info() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_channel_info>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_channel_info))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_channel_info>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_channel_info))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_channel_info>())).lb_policy_name as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_info),
-            "::",
-            stringify!(lb_policy_name)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_channel_info>())).service_config_json as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_info),
-            "::",
-            stringify!(service_config_json)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_resource_quota {
@@ -2987,77 +1325,6 @@
     pub internal_success: ::std::os::raw::c_int,
     pub internal_next: *mut grpc_experimental_completion_queue_functor,
 }
-#[test]
-fn bindgen_test_layout_grpc_experimental_completion_queue_functor() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_experimental_completion_queue_functor>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_experimental_completion_queue_functor)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_experimental_completion_queue_functor>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_experimental_completion_queue_functor)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).functor_run
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(functor_run)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).inlineable
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(inlineable)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).internal_success
-                as *const _ as usize
-        },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(internal_success)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).internal_next
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(internal_next)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_completion_queue_attributes {
@@ -3071,74 +1338,6 @@
     #[doc = " shutdown is complete"]
     pub cq_shutdown_cb: *mut grpc_experimental_completion_queue_functor,
 }
-#[test]
-fn bindgen_test_layout_grpc_completion_queue_attributes() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_completion_queue_attributes>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_completion_queue_attributes))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_completion_queue_attributes>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_completion_queue_attributes)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).version as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(version)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).cq_completion_type
-                as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(cq_completion_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).cq_polling_type as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(cq_polling_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).cq_shutdown_cb as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(cq_shutdown_cb)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_completion_queue_factory {
@@ -3647,16 +1846,6 @@
     ) -> *mut grpc_call;
 }
 extern "C" {
-    #[doc = " Ping the channels peer (load balanced channels will select one sub-channel"]
-    #[doc = "to ping); if the channel is not connected, posts a failed."]
-    pub fn grpc_channel_ping(
-        channel: *mut grpc_channel,
-        cq: *mut grpc_completion_queue,
-        tag: *mut ::std::os::raw::c_void,
-        reserved: *mut ::std::os::raw::c_void,
-    );
-}
-extern "C" {
     #[doc = " Pre-register a method/host pair on a channel."]
     #[doc = "method and host are not owned and must remain alive while the channel is"]
     #[doc = "alive."]
@@ -4180,6 +2369,13 @@
     UDS = 0,
     LOCAL_TCP = 1,
 }
+#[repr(u32)]
+#[doc = " The TLS versions that are supported by the SSL stack."]
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+pub enum grpc_tls_version {
+    TLS1_2 = 0,
+    TLS1_3 = 1,
+}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_auth_context {
@@ -4192,53 +2388,6 @@
     pub index: usize,
     pub name: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_property_iterator() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_property_iterator>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_auth_property_iterator))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_property_iterator>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_property_iterator))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property_iterator>())).ctx as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property_iterator),
-            "::",
-            stringify!(ctx)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_property_iterator>())).index as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property_iterator),
-            "::",
-            stringify!(index)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_property_iterator>())).name as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property_iterator),
-            "::",
-            stringify!(name)
-        )
-    );
-}
 #[doc = " value, if not NULL, is guaranteed to be NULL terminated."]
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -4247,49 +2396,6 @@
     pub value: *mut ::std::os::raw::c_char,
     pub value_length: usize,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_property() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_property>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_auth_property))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_property>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_property))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property>())).name as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property),
-            "::",
-            stringify!(name)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property>())).value as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property),
-            "::",
-            stringify!(value)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property>())).value_length as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property),
-            "::",
-            stringify!(value_length)
-        )
-    );
-}
 extern "C" {
     #[doc = " Returns NULL when the iterator is at the end."]
     pub fn grpc_auth_property_iterator_next(
@@ -4386,6 +2492,16 @@
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
+pub struct grpc_call_credentials {
+    _unused: [u8; 0],
+}
+extern "C" {
+    #[doc = " Releases a call credentials object."]
+    #[doc = "The creator of the credentials object is responsible for its release."]
+    pub fn grpc_call_credentials_release(creds: *mut grpc_call_credentials);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
 pub struct grpc_channel_credentials {
     _unused: [u8; 0],
 }
@@ -4399,7 +2515,22 @@
     #[doc = "WARNING: Do NOT use this credentials to connect to a non-google service as"]
     #[doc = "this could result in an oauth2 token leak. The security level of the"]
     #[doc = "resulting connection is GRPC_PRIVACY_AND_INTEGRITY."]
-    pub fn grpc_google_default_credentials_create() -> *mut grpc_channel_credentials;
+    #[doc = ""]
+    #[doc = "If specified, the supplied call credentials object will be attached to the"]
+    #[doc = "returned channel credentials object. The call_credentials object must remain"]
+    #[doc = "valid throughout the lifetime of the returned grpc_channel_credentials"]
+    #[doc = "object. It is expected that the call credentials object was generated"]
+    #[doc = "according to the Application Default Credentials mechanism and asserts the"]
+    #[doc = "identity of the default service account of the machine. Supplying any other"]
+    #[doc = "sort of call credential will result in undefined behavior, up to and"]
+    #[doc = "including the sudden and unexpected failure of RPCs."]
+    #[doc = ""]
+    #[doc = "If nullptr is supplied, the returned channel credentials object will use a"]
+    #[doc = "call credentials object based on the Application Default Credentials"]
+    #[doc = "mechanism."]
+    pub fn grpc_google_default_credentials_create(
+        call_credentials: *mut grpc_call_credentials,
+    ) -> *mut grpc_channel_credentials;
 }
 #[doc = " Callback for getting the SSL roots override from the application."]
 #[doc = "In case of success, *pem_roots_certs must be set to a NULL terminated string"]
@@ -4431,43 +2562,6 @@
     #[doc = "the client's certificate chain."]
     pub cert_chain: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_ssl_pem_key_cert_pair() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_ssl_pem_key_cert_pair>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_ssl_pem_key_cert_pair))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_ssl_pem_key_cert_pair>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_ssl_pem_key_cert_pair))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_pem_key_cert_pair>())).private_key as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_pem_key_cert_pair),
-            "::",
-            stringify!(private_key)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_pem_key_cert_pair>())).cert_chain as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_pem_key_cert_pair),
-            "::",
-            stringify!(cert_chain)
-        )
-    );
-}
 #[doc = " Deprecated in favor of grpc_ssl_verify_peer_options. It will be removed"]
 #[doc = "after all of its call sites are migrated to grpc_ssl_verify_peer_options."]
 #[doc = "Object that holds additional peer-verification options on a secure"]
@@ -4496,58 +2590,6 @@
     pub verify_peer_destruct:
         ::std::option::Option<unsafe extern "C" fn(userdata: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_verify_peer_options() {
-    assert_eq!(
-        ::std::mem::size_of::<verify_peer_options>(),
-        24usize,
-        concat!("Size of: ", stringify!(verify_peer_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<verify_peer_options>(),
-        8usize,
-        concat!("Alignment of ", stringify!(verify_peer_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<verify_peer_options>())).verify_peer_callback as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<verify_peer_options>())).verify_peer_callback_userdata
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback_userdata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<verify_peer_options>())).verify_peer_destruct as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(verify_peer_options),
-            "::",
-            stringify!(verify_peer_destruct)
-        )
-    );
-}
 #[doc = " Object that holds additional peer-verification options on a secure"]
 #[doc = "channel."]
 #[repr(C)]
@@ -4574,58 +2616,6 @@
     pub verify_peer_destruct:
         ::std::option::Option<unsafe extern "C" fn(userdata: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_grpc_ssl_verify_peer_options() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_ssl_verify_peer_options>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_ssl_verify_peer_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_ssl_verify_peer_options>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_ssl_verify_peer_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_verify_peer_options>())).verify_peer_callback
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_verify_peer_options>())).verify_peer_callback_userdata
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback_userdata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_verify_peer_options>())).verify_peer_destruct
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_verify_peer_options),
-            "::",
-            stringify!(verify_peer_destruct)
-        )
-    );
-}
 extern "C" {
     #[doc = " Deprecated in favor of grpc_ssl_server_credentials_create_ex. It will be"]
     #[doc = "removed after all of its call sites are migrated to"]
@@ -4672,16 +2662,6 @@
         reserved: *mut ::std::os::raw::c_void,
     ) -> *mut grpc_channel_credentials;
 }
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct grpc_call_credentials {
-    _unused: [u8; 0],
-}
-extern "C" {
-    #[doc = " Releases a call credentials object."]
-    #[doc = "The creator of the credentials object is responsible for its release."]
-    pub fn grpc_call_credentials_release(creds: *mut grpc_call_credentials);
-}
 extern "C" {
     #[doc = " Creates a composite channel credentials object. The security level of"]
     #[doc = " resulting connection is determined by channel_creds."]
@@ -4769,133 +2749,6 @@
     pub actor_token_path: *const ::std::os::raw::c_char,
     pub actor_token_type: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_sts_credentials_options() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_sts_credentials_options>(),
-        72usize,
-        concat!("Size of: ", stringify!(grpc_sts_credentials_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_sts_credentials_options>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_sts_credentials_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).token_exchange_service_uri
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(token_exchange_service_uri)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).resource as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(resource)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).audience as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(audience)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).scope as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(scope)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).requested_token_type
-                as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(requested_token_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).subject_token_path as *const _
-                as usize
-        },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(subject_token_path)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).subject_token_type as *const _
-                as usize
-        },
-        48usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(subject_token_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).actor_token_path as *const _
-                as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(actor_token_path)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).actor_token_type as *const _
-                as usize
-        },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(actor_token_type)
-        )
-    );
-}
 extern "C" {
     #[doc = " Creates an STS credentials following the STS Token Exchanged specifed in the"]
     #[doc = "IETF draft https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16."]
@@ -4942,67 +2795,16 @@
     #[doc = " Reserved for future use."]
     pub reserved: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_metadata_context() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_metadata_context>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_auth_metadata_context))
+extern "C" {
+    #[doc = " Performs a deep copy from \\a from to \\a to."]
+    pub fn grpc_auth_metadata_context_copy(
+        from: *mut grpc_auth_metadata_context,
+        to: *mut grpc_auth_metadata_context,
     );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_metadata_context>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_metadata_context))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).service_url as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(service_url)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).method_name as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(method_name)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).channel_auth_context as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(channel_auth_context)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).reserved as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(reserved)
-        )
-    );
+}
+extern "C" {
+    #[doc = " Releases internal resources held by \\a context."]
+    pub fn grpc_auth_metadata_context_reset(context: *mut grpc_auth_metadata_context);
 }
 #[doc = " grpc_metadata_credentials plugin is an API user provided structure used to"]
 #[doc = "create grpc_credentials objects that can be set on a channel (composed) or"]
@@ -5054,85 +2856,6 @@
     #[doc = " Type of credentials that this plugin is implementing."]
     pub type_: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_metadata_credentials_plugin() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata_credentials_plugin>(),
-        40usize,
-        concat!("Size of: ", stringify!(grpc_metadata_credentials_plugin))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata_credentials_plugin>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_metadata_credentials_plugin)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).get_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(get_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).debug_string as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(debug_string)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).destroy as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(destroy)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).state as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(state)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).type_ as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(type_)
-        )
-    );
-}
 extern "C" {
     #[doc = " Creates a credentials object from a plugin with a specified minimum security"]
     #[doc = " level."]
@@ -5342,55 +3065,6 @@
     pub destroy: ::std::option::Option<unsafe extern "C" fn(state: *mut ::std::os::raw::c_void)>,
     pub state: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_metadata_processor() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_metadata_processor>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_auth_metadata_processor))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_metadata_processor>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_metadata_processor))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_processor>())).process as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_processor),
-            "::",
-            stringify!(process)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_processor>())).destroy as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_processor),
-            "::",
-            stringify!(destroy)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_processor>())).state as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_processor),
-            "::",
-            stringify!(state)
-        )
-    );
-}
 extern "C" {
     pub fn grpc_server_credentials_set_auth_metadata_processor(
         creds: *mut grpc_server_credentials,
@@ -5644,119 +3318,6 @@
     pub destroy_context:
         ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_grpc_tls_credential_reload_arg() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_tls_credential_reload_arg>(),
-        64usize,
-        concat!("Size of: ", stringify!(grpc_tls_credential_reload_arg))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_tls_credential_reload_arg>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_tls_credential_reload_arg))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).cb as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(cb)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).cb_user_data as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(cb_user_data)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).key_materials_config
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(key_materials_config)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).status as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).error_details as *const _
-                as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(error_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).config as *const _ as usize
-        },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(config)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).context as *const _ as usize
-        },
-        48usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(context)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).destroy_context as *const _
-                as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(destroy_context)
-        )
-    );
-}
 extern "C" {
     #[doc = " Create a grpc_tls_credential_reload_config instance."]
     #[doc = "- config_user_data is config-specific, read-only user data"]
@@ -5840,168 +3401,6 @@
     pub destroy_context:
         ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_grpc_tls_server_authorization_check_arg() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_tls_server_authorization_check_arg>(),
-        88usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_tls_server_authorization_check_arg)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_tls_server_authorization_check_arg>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_tls_server_authorization_check_arg)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).cb as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(cb)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).cb_user_data
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(cb_user_data)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).success as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(success)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).target_name
-                as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(target_name)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).peer_cert
-                as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(peer_cert)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).peer_cert_full_chain
-                as *const _ as usize
-        },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(peer_cert_full_chain)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).status as *const _
-                as usize
-        },
-        48usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).error_details
-                as *const _ as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(error_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).config as *const _
-                as usize
-        },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(config)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).context as *const _
-                as usize
-        },
-        72usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(context)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).destroy_context
-                as *const _ as usize
-        },
-        80usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(destroy_context)
-        )
-    );
-}
 extern "C" {
     #[doc = " Create a grpc_tls_server_authorization_check_config instance."]
     #[doc = "- config_user_data is config-specific, read-only user data"]
@@ -6070,6 +3469,22 @@
         options: *mut grpc_tls_credentials_options,
     ) -> *mut grpc_server_credentials;
 }
+extern "C" {
+    #[doc = " EXPERIMENTAL API - Subject to change"]
+    #[doc = ""]
+    #[doc = " This method creates an XDS channel credentials object."]
+    #[doc = ""]
+    #[doc = " Creating a channel with credentials of this type indicates that an xDS"]
+    #[doc = " channel should get credentials configuration from the xDS control plane."]
+    #[doc = ""]
+    #[doc = " \\a fallback_credentials are used if the channel target does not have the"]
+    #[doc = " 'xds:///' scheme or if the xDS control plane does not provide information on"]
+    #[doc = " how to fetch credentials dynamically. Does NOT take ownership of the \\a"]
+    #[doc = " fallback_credentials. (Internally takes a ref to the object.)"]
+    pub fn grpc_xds_credentials_create(
+        fallback_credentials: *mut grpc_channel_credentials,
+    ) -> *mut grpc_channel_credentials;
+}
 #[repr(u32)]
 #[doc = " The severity of a log message - use the #defines below when calling into"]
 #[doc = "gpr_log to additionally supply file and line data"]
@@ -6122,59 +3537,6 @@
     pub severity: gpr_log_severity,
     pub message: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_gpr_log_func_args() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_log_func_args>(),
-        24usize,
-        concat!("Size of: ", stringify!(gpr_log_func_args))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_log_func_args>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_log_func_args))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).file as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(file)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).line as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(line)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).severity as *const _ as usize },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(severity)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).message as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(message)
-        )
-    );
-}
 pub type gpr_log_func = ::std::option::Option<unsafe extern "C" fn(args: *mut gpr_log_func_args)>;
 extern "C" {
     pub fn gpr_set_log_function(func: gpr_log_func);
@@ -6266,38 +3628,6 @@
     pub index: ::std::os::raw::c_uint,
     _bindgen_union_align: u32,
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_reader_grpc_byte_buffer_reader_current() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_reader_grpc_byte_buffer_reader_current>(),
-        4usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_reader_grpc_byte_buffer_reader_current)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_reader_grpc_byte_buffer_reader_current>(),
-        4usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_reader_grpc_byte_buffer_reader_current)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_reader_grpc_byte_buffer_reader_current>()))
-                .index as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader_grpc_byte_buffer_reader_current),
-            "::",
-            stringify!(index)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_reader_grpc_byte_buffer_reader_current {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -6306,53 +3636,6 @@
         )
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_reader() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_reader>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_byte_buffer_reader))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_reader>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_byte_buffer_reader))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_reader>())).buffer_in as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader),
-            "::",
-            stringify!(buffer_in)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_reader>())).buffer_out as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader),
-            "::",
-            stringify!(buffer_out)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer_reader>())).current as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader),
-            "::",
-            stringify!(current)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_reader {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -6378,38 +3661,6 @@
 pub struct grpcwrap_batch_context__bindgen_ty_1 {
     pub trailing_metadata: grpc_metadata_array,
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_batch_context__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_batch_context__bindgen_ty_1>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_batch_context__bindgen_ty_1>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_1>())).trailing_metadata
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_1),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct grpcwrap_batch_context__bindgen_ty_2 {
@@ -6417,174 +3668,14 @@
     pub status: grpc_status_code::Type,
     pub status_details: grpc_slice,
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_batch_context__bindgen_ty_2() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_batch_context__bindgen_ty_2>(),
-        64usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_batch_context__bindgen_ty_2>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_2>())).trailing_metadata
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_2>())).status as *const _
-                as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_2>())).status_details
-                as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2),
-            "::",
-            stringify!(status_details)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpcwrap_batch_context__bindgen_ty_2 {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpcwrap_batch_context__bindgen_ty_2 {{ trailing_metadata: {:?}, status: {:?}, status_details: {:?} }}" , self . trailing_metadata , self . status , self . status_details )
+        write ! (f , "grpcwrap_batch_context__bindgen_ty_2 {{ trailing_metadata: {:?}, status: {:?}, status_details: {:?} }}" , self . trailing_metadata , self . status , self . status_details)
     }
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_batch_context() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_batch_context>(),
-        160usize,
-        concat!("Size of: ", stringify!(grpcwrap_batch_context))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_batch_context>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpcwrap_batch_context))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).send_initial_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).send_message as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(send_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).send_status_from_server as *const _
-                as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(send_status_from_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_initial_metadata as *const _
-                as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_message as *const _ as usize
-        },
-        80usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_status_on_client as *const _
-                as usize
-        },
-        88usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_close_on_server_cancelled
-                as *const _ as usize
-        },
-        152usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_close_on_server_cancelled)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpcwrap_batch_context {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpcwrap_batch_context {{ send_initial_metadata: {:?}, send_message: {:?}, send_status_from_server: {:?}, recv_initial_metadata: {:?}, recv_message: {:?}, recv_status_on_client: {:?}, recv_close_on_server_cancelled: {:?} }}" , self . send_initial_metadata , self . send_message , self . send_status_from_server , self . recv_initial_metadata , self . recv_message , self . recv_status_on_client , self . recv_close_on_server_cancelled )
+        write ! (f , "grpcwrap_batch_context {{ send_initial_metadata: {:?}, send_message: {:?}, send_status_from_server: {:?}, recv_initial_metadata: {:?}, recv_message: {:?}, recv_status_on_client: {:?}, recv_close_on_server_cancelled: {:?} }}" , self . send_initial_metadata , self . send_message , self . send_status_from_server , self . recv_initial_metadata , self . recv_message , self . recv_status_on_client , self . recv_close_on_server_cancelled)
     }
 }
 extern "C" {
@@ -6597,60 +3688,9 @@
     pub call_details: grpc_call_details,
     pub request_metadata: grpc_metadata_array,
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_request_call_context() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_request_call_context>(),
-        128usize,
-        concat!("Size of: ", stringify!(grpcwrap_request_call_context))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_request_call_context>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpcwrap_request_call_context))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_request_call_context>())).call as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_request_call_context),
-            "::",
-            stringify!(call)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_request_call_context>())).call_details as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_request_call_context),
-            "::",
-            stringify!(call_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_request_call_context>())).request_metadata as *const _
-                as usize
-        },
-        104usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_request_call_context),
-            "::",
-            stringify!(request_metadata)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpcwrap_request_call_context {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpcwrap_request_call_context {{ call: {:?}, call_details: {:?}, request_metadata: {:?} }}" , self . call , self . call_details , self . request_metadata )
+        write ! (f , "grpcwrap_request_call_context {{ call: {:?}, call_details: {:?}, request_metadata: {:?} }}" , self . call , self . call_details , self . request_metadata)
     }
 }
 extern "C" {
@@ -6844,8 +3884,7 @@
     pub fn grpcwrap_call_start_unary(
         call: *mut grpc_call,
         ctx: *mut grpcwrap_batch_context,
-        send_buffer: *const ::std::os::raw::c_char,
-        send_buffer_len: usize,
+        send_buffer: *mut grpc_slice,
         write_flags: u32,
         initial_metadata: *mut grpc_metadata_array,
         initial_metadata_flags: u32,
@@ -6865,8 +3904,7 @@
     pub fn grpcwrap_call_start_server_streaming(
         call: *mut grpc_call,
         ctx: *mut grpcwrap_batch_context,
-        send_buffer: *const ::std::os::raw::c_char,
-        send_buffer_len: usize,
+        send_buffer: *mut grpc_slice,
         write_flags: u32,
         initial_metadata: *mut grpc_metadata_array,
         initial_metadata_flags: u32,
@@ -6893,8 +3931,7 @@
     pub fn grpcwrap_call_send_message(
         call: *mut grpc_call,
         ctx: *mut grpcwrap_batch_context,
-        send_buffer: *const ::std::os::raw::c_char,
-        send_buffer_len: usize,
+        send_buffer: *mut grpc_slice,
         write_flags: u32,
         send_empty_initial_metadata: i32,
         tag: *mut ::std::os::raw::c_void,
@@ -6915,8 +3952,7 @@
         status_details_len: usize,
         trailing_metadata: *mut grpc_metadata_array,
         send_empty_initial_metadata: i32,
-        optional_send_buffer: *const ::std::os::raw::c_char,
-        optional_send_buffer_len: usize,
+        optional_send_buffer: *mut grpc_slice,
         write_flags: u32,
         tag: *mut ::std::os::raw::c_void,
     ) -> grpc_call_error;
diff --git a/bindings/x86_64-unknown-linux-gnu-bindings.rs b/bindings/x86_64-unknown-linux-gnu-bindings.rs
index 0bc0117..dc7eb65 100644
--- a/bindings/x86_64-unknown-linux-gnu-bindings.rs
+++ b/bindings/x86_64-unknown-linux-gnu-bindings.rs
@@ -1,6 +1,5 @@
 /* automatically generated by rust-bindgen */
 
-pub const GRPC_USE_ABSL: u32 = 1;
 pub const GRPC_ARES: u32 = 1;
 pub const GRPC_IF_NAMETOINDEX: u32 = 1;
 pub const GRPC_ALLOW_EXCEPTIONS: u32 = 1;
@@ -116,9 +115,6 @@
     b"grpc.grpclb_fallback_timeout_ms\0";
 pub const GRPC_ARG_PRIORITY_FAILOVER_TIMEOUT_MS: &'static [u8; 34usize] =
     b"grpc.priority_failover_timeout_ms\0";
-pub const GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS: &'static [u8; 44usize] =
-    b"grpc.xds_resource_does_not_exist_timeout_ms\0";
-pub const GRPC_ARG_XDS_ROUTING_ENABLED: &'static [u8; 25usize] = b"grpc.xds_routing_enabled\0";
 pub const GRPC_ARG_WORKAROUND_CRONET_COMPRESSION: &'static [u8; 35usize] =
     b"grpc.workaround.cronet_compression\0";
 pub const GRPC_ARG_OPTIMIZATION_TARGET: &'static [u8; 25usize] = b"grpc.optimization_target\0";
@@ -129,6 +125,7 @@
 pub const GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER: &'static [u8; 37usize] =
     b"grpc.disable_client_authority_filter\0";
 pub const GRPC_ARG_ENABLE_HTTP_PROXY: &'static [u8; 23usize] = b"grpc.enable_http_proxy\0";
+pub const GRPC_ARG_HTTP_PROXY: &'static [u8; 16usize] = b"grpc.http_proxy\0";
 pub const GRPC_ARG_SURFACE_USER_AGENT: &'static [u8; 24usize] = b"grpc.surface_user_agent\0";
 pub const GRPC_ARG_INHIBIT_HEALTH_CHECKING: &'static [u8; 29usize] =
     b"grpc.inhibit_health_checking\0";
@@ -164,6 +161,7 @@
 pub const GRPC_X509_PEM_CERT_CHAIN_PROPERTY_NAME: &'static [u8; 20usize] = b"x509_pem_cert_chain\0";
 pub const GRPC_SSL_SESSION_REUSED_PROPERTY: &'static [u8; 19usize] = b"ssl_session_reused\0";
 pub const GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME: &'static [u8; 15usize] = b"security_level\0";
+pub const GRPC_PEER_SPIFFE_ID_PROPERTY_NAME: &'static [u8; 15usize] = b"peer_spiffe_id\0";
 pub const GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR: &'static [u8; 33usize] =
     b"GRPC_DEFAULT_SSL_ROOTS_FILE_PATH\0";
 pub const GRPC_GOOGLE_CREDENTIALS_ENV_VAR: &'static [u8; 31usize] =
@@ -213,53 +211,6 @@
     pub is_set: ::std::os::raw::c_int,
     pub level: grpc_compression_level,
 }
-#[test]
-fn bindgen_test_layout_grpc_compression_options_grpc_compression_options_default_level() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_compression_options_grpc_compression_options_default_level>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_compression_options_grpc_compression_options_default_level>(),
-        4usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options_grpc_compression_options_default_level>(
-            )))
-            .is_set as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level),
-            "::",
-            stringify!(is_set)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options_grpc_compression_options_default_level>(
-            )))
-            .level as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_level),
-            "::",
-            stringify!(level)
-        )
-    );
-}
 #[doc = " The default message compression algorithm. It'll be used in the absence of"]
 #[doc = " call specific settings. This option corresponds to the channel argument key"]
 #[doc = " behind \\a GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM."]
@@ -269,108 +220,6 @@
     pub is_set: ::std::os::raw::c_int,
     pub algorithm: grpc_compression_algorithm,
 }
-#[test]
-fn bindgen_test_layout_grpc_compression_options_grpc_compression_options_default_algorithm() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_compression_options_grpc_compression_options_default_algorithm>(
-        ),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_compression_options_grpc_compression_options_default_algorithm>(
-        ),
-        4usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<
-                grpc_compression_options_grpc_compression_options_default_algorithm,
-            >()))
-            .is_set as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm),
-            "::",
-            stringify!(is_set)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<
-                grpc_compression_options_grpc_compression_options_default_algorithm,
-            >()))
-            .algorithm as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options_grpc_compression_options_default_algorithm),
-            "::",
-            stringify!(algorithm)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_compression_options() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_compression_options>(),
-        20usize,
-        concat!("Size of: ", stringify!(grpc_compression_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_compression_options>(),
-        4usize,
-        concat!("Alignment of ", stringify!(grpc_compression_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options>())).enabled_algorithms_bitset
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options),
-            "::",
-            stringify!(enabled_algorithms_bitset)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options>())).default_level as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options),
-            "::",
-            stringify!(default_level)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_compression_options>())).default_algorithm as *const _
-                as usize
-        },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_compression_options),
-            "::",
-            stringify!(default_algorithm)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_slice_refcount {
@@ -404,177 +253,17 @@
     pub length: usize,
     pub bytes: *mut u8,
 }
-#[test]
-fn bindgen_test_layout_grpc_slice_grpc_slice_data_grpc_slice_refcounted() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>(),
-        16usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>())).length
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted),
-            "::",
-            stringify!(length)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_refcounted>())).bytes
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_refcounted),
-            "::",
-            stringify!(bytes)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_slice_grpc_slice_data_grpc_slice_inlined {
     pub length: u8,
     pub bytes: [u8; 23usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_slice_grpc_slice_data_grpc_slice_inlined() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_grpc_slice_data_grpc_slice_inlined>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_grpc_slice_data_grpc_slice_inlined>(),
-        1usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_inlined>())).length
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined),
-            "::",
-            stringify!(length)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data_grpc_slice_inlined>())).bytes
-                as *const _ as usize
-        },
-        1usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data_grpc_slice_inlined),
-            "::",
-            stringify!(bytes)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_slice_grpc_slice_data() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_grpc_slice_data>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_slice_grpc_slice_data))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_grpc_slice_data>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_slice_grpc_slice_data))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data>())).refcounted as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data),
-            "::",
-            stringify!(refcounted)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_slice_grpc_slice_data>())).inlined as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_grpc_slice_data),
-            "::",
-            stringify!(inlined)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_slice_grpc_slice_data {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_slice_grpc_slice_data {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_slice() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_slice))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_slice))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice>())).refcount as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice),
-            "::",
-            stringify!(refcount)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice>())).data as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice),
-            "::",
-            stringify!(data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_slice {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -604,82 +293,9 @@
     #[doc = " inlined elements to avoid allocations"]
     pub inlined: [grpc_slice; 8usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_slice_buffer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_slice_buffer>(),
-        296usize,
-        concat!("Size of: ", stringify!(grpc_slice_buffer))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_slice_buffer>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_slice_buffer))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).base_slices as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(base_slices)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).slices as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(slices)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).count as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(count)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).capacity as *const _ as usize },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(capacity)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).length as *const _ as usize },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(length)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_slice_buffer>())).inlined as *const _ as usize },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_slice_buffer),
-            "::",
-            stringify!(inlined)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_slice_buffer {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpc_slice_buffer {{ base_slices: {:?}, slices: {:?}, count: {:?}, capacity: {:?}, length: {:?}, inlined: {:?} }}" , self . base_slices , self . slices , self . count , self . capacity , self . length , self . inlined )
+        write ! (f , "grpc_slice_buffer {{ base_slices: {:?}, slices: {:?}, count: {:?}, capacity: {:?}, length: {:?}, inlined: {:?} }}" , self . base_slices , self . slices , self . count , self . capacity , self . length , self . inlined)
     }
 }
 #[repr(u32)]
@@ -709,49 +325,6 @@
     #[doc = "this is a relative time measure)"]
     pub clock_type: gpr_clock_type,
 }
-#[test]
-fn bindgen_test_layout_gpr_timespec() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_timespec>(),
-        16usize,
-        concat!("Size of: ", stringify!(gpr_timespec))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_timespec>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_timespec))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_timespec>())).tv_sec as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_timespec),
-            "::",
-            stringify!(tv_sec)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_timespec>())).tv_nsec as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_timespec),
-            "::",
-            stringify!(tv_nsec)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_timespec>())).clock_type as *const _ as usize },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_timespec),
-            "::",
-            stringify!(clock_type)
-        )
-    );
-}
 pub type gpr_atm = isize;
 extern "C" {
     #[doc = " Adds \\a delta to \\a *value, clamping the result to the range specified"]
@@ -768,85 +341,16 @@
 pub struct gpr_event {
     pub state: gpr_atm,
 }
-#[test]
-fn bindgen_test_layout_gpr_event() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_event>(),
-        8usize,
-        concat!("Size of: ", stringify!(gpr_event))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_event>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_event))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_event>())).state as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_event),
-            "::",
-            stringify!(state)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct gpr_refcount {
     pub count: gpr_atm,
 }
-#[test]
-fn bindgen_test_layout_gpr_refcount() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_refcount>(),
-        8usize,
-        concat!("Size of: ", stringify!(gpr_refcount))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_refcount>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_refcount))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_refcount>())).count as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_refcount),
-            "::",
-            stringify!(count)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct gpr_stats_counter {
     pub value: gpr_atm,
 }
-#[test]
-fn bindgen_test_layout_gpr_stats_counter() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_stats_counter>(),
-        8usize,
-        concat!("Size of: ", stringify!(gpr_stats_counter))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_stats_counter>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_stats_counter))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_stats_counter>())).value as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_stats_counter),
-            "::",
-            stringify!(value)
-        )
-    );
-}
 extern "C" {
     #[doc = " Initialize *ev."]
     pub fn gpr_event_init(ev: *mut gpr_event);
@@ -1307,189 +811,22 @@
 pub struct grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1 {
     pub reserved: [*mut ::std::os::raw::c_void; 8usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1>(),
-        64usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1>()))
-                .reserved as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data__bindgen_ty_1),
-            "::",
-            stringify!(reserved)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {
     pub compression: grpc_compression_algorithm,
     pub slice_buffer: grpc_slice_buffer,
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(),
-        304usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(
-            )))
-            .compression as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer),
-            "::",
-            stringify!(compression)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer>(
-            )))
-            .slice_buffer as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer),
-            "::",
-            stringify!(slice_buffer)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {{ compression: {:?}, slice_buffer: {:?} }}" , self . compression , self . slice_buffer )
+        write ! (f , "grpc_byte_buffer_grpc_byte_buffer_data_grpc_compressed_buffer {{ compression: {:?}, slice_buffer: {:?} }}" , self . compression , self . slice_buffer)
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_grpc_byte_buffer_data() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_grpc_byte_buffer_data>(),
-        304usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_grpc_byte_buffer_data>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data>())).reserved as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_grpc_byte_buffer_data>())).raw as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_grpc_byte_buffer_data),
-            "::",
-            stringify!(raw)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_grpc_byte_buffer_data {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_byte_buffer_grpc_byte_buffer_data {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer>(),
-        320usize,
-        concat!("Size of: ", stringify!(grpc_byte_buffer))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_byte_buffer))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer>())).reserved as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer>())).type_ as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer),
-            "::",
-            stringify!(type_)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer>())).data as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer),
-            "::",
-            stringify!(data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -1556,49 +893,6 @@
         ) -> ::std::os::raw::c_int,
     >,
 }
-#[test]
-fn bindgen_test_layout_grpc_arg_pointer_vtable() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg_pointer_vtable>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_arg_pointer_vtable))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg_pointer_vtable>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_arg_pointer_vtable))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_pointer_vtable>())).copy as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_pointer_vtable),
-            "::",
-            stringify!(copy)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_pointer_vtable>())).destroy as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_pointer_vtable),
-            "::",
-            stringify!(destroy)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_pointer_vtable>())).cmp as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_pointer_vtable),
-            "::",
-            stringify!(cmp)
-        )
-    );
-}
 #[doc = " A single argument... each argument has a key and a value"]
 #[doc = ""]
 #[doc = "A note on naming keys:"]
@@ -1632,142 +926,11 @@
     pub p: *mut ::std::os::raw::c_void,
     pub vtable: *const grpc_arg_pointer_vtable,
 }
-#[test]
-fn bindgen_test_layout_grpc_arg_grpc_arg_value_grpc_arg_pointer() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg_grpc_arg_value_grpc_arg_pointer>(),
-        16usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg_grpc_arg_value_grpc_arg_pointer>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_arg_grpc_arg_value_grpc_arg_pointer>())).p as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer),
-            "::",
-            stringify!(p)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_arg_grpc_arg_value_grpc_arg_pointer>())).vtable as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value_grpc_arg_pointer),
-            "::",
-            stringify!(vtable)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_arg_grpc_arg_value() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg_grpc_arg_value>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_arg_grpc_arg_value))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg_grpc_arg_value>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_arg_grpc_arg_value))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_grpc_arg_value>())).string as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value),
-            "::",
-            stringify!(string)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_grpc_arg_value>())).integer as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value),
-            "::",
-            stringify!(integer)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg_grpc_arg_value>())).pointer as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg_grpc_arg_value),
-            "::",
-            stringify!(pointer)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_arg_grpc_arg_value {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_arg_grpc_arg_value {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_arg() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_arg>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_arg))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_arg>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_arg))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg>())).type_ as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg),
-            "::",
-            stringify!(type_)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg>())).key as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg),
-            "::",
-            stringify!(key)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_arg>())).value as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_arg),
-            "::",
-            stringify!(value)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_arg {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -1799,39 +962,6 @@
     pub num_args: usize,
     pub args: *mut grpc_arg,
 }
-#[test]
-fn bindgen_test_layout_grpc_channel_args() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_channel_args>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_channel_args))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_channel_args>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_channel_args))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_channel_args>())).num_args as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_args),
-            "::",
-            stringify!(num_args)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_channel_args>())).args as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_args),
-            "::",
-            stringify!(args)
-        )
-    );
-}
 #[repr(u32)]
 #[doc = " Result of a grpc call. If the caller satisfies the prerequisites of a"]
 #[doc = "particular operation, the grpc_call_error returned will be GRPC_CALL_OK."]
@@ -1893,84 +1023,6 @@
 pub struct grpc_metadata__bindgen_ty_1 {
     pub obfuscated: [*mut ::std::os::raw::c_void; 4usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_metadata__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata__bindgen_ty_1>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_metadata__bindgen_ty_1))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata__bindgen_ty_1>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_metadata__bindgen_ty_1))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata__bindgen_ty_1>())).obfuscated as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata__bindgen_ty_1),
-            "::",
-            stringify!(obfuscated)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_metadata() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata>(),
-        104usize,
-        concat!("Size of: ", stringify!(grpc_metadata))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_metadata))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).key as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(key)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).value as *const _ as usize },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(value)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).flags as *const _ as usize },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(flags)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata>())).internal_data as *const _ as usize },
-        72usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata),
-            "::",
-            stringify!(internal_data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_metadata {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -2010,49 +1062,6 @@
     #[doc = "values, tag is uninitialized."]
     pub tag: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_event() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_event>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_event))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_event>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_event))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_event>())).type_ as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_event),
-            "::",
-            stringify!(type_)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_event>())).success as *const _ as usize },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_event),
-            "::",
-            stringify!(success)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_event>())).tag as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_event),
-            "::",
-            stringify!(tag)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_metadata_array {
@@ -2060,49 +1069,6 @@
     pub capacity: usize,
     pub metadata: *mut grpc_metadata,
 }
-#[test]
-fn bindgen_test_layout_grpc_metadata_array() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata_array>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_metadata_array))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata_array>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_metadata_array))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata_array>())).count as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_array),
-            "::",
-            stringify!(count)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata_array>())).capacity as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_array),
-            "::",
-            stringify!(capacity)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_metadata_array>())).metadata as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_array),
-            "::",
-            stringify!(metadata)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct grpc_call_details {
@@ -2112,72 +1078,9 @@
     pub flags: u32,
     pub reserved: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_call_details() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_call_details>(),
-        96usize,
-        concat!("Size of: ", stringify!(grpc_call_details))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_call_details>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_call_details))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).method as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(method)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).host as *const _ as usize },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(host)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).deadline as *const _ as usize },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(deadline)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).flags as *const _ as usize },
-        80usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(flags)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_call_details>())).reserved as *const _ as usize },
-        88usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_call_details),
-            "::",
-            stringify!(reserved)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_call_details {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpc_call_details {{ method: {:?}, host: {:?}, deadline: {:?}, flags: {:?}, reserved: {:?} }}" , self . method , self . host , self . deadline , self . flags , self . reserved )
+        write ! (f , "grpc_call_details {{ method: {:?}, host: {:?}, deadline: {:?}, flags: {:?}, reserved: {:?} }}" , self . method , self . host , self . deadline , self . flags , self . reserved)
     }
 }
 #[repr(u32)]
@@ -2256,35 +1159,6 @@
 pub struct grpc_op_grpc_op_data__bindgen_ty_1 {
     pub reserved: [*mut ::std::os::raw::c_void; 8usize],
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data__bindgen_ty_1>(),
-        64usize,
-        concat!("Size of: ", stringify!(grpc_op_grpc_op_data__bindgen_ty_1))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data__bindgen_ty_1>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data__bindgen_ty_1>())).reserved as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data__bindgen_ty_1),
-            "::",
-            stringify!(reserved)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_send_initial_metadata { pub count : usize , pub metadata : * mut grpc_metadata , pub maybe_compression_level : grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level , }
@@ -2297,72 +1171,6 @@
     pub is_set: u8,
     pub level: grpc_compression_level,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level(
-) {
-    assert_eq ! ( :: std :: mem :: size_of :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) , 8usize , concat ! ( "Size of: " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) ) );
-    assert_eq ! ( :: std :: mem :: align_of :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) , 4usize , concat ! ( "Alignment of " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) ) );
-    assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) ) ) . is_set as * const _ as usize } , 0usize , concat ! ( "Offset of field: " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) , "::" , stringify ! ( is_set ) ) );
-    assert_eq ! ( unsafe { & ( * ( :: std :: ptr :: null :: < grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level > ( ) ) ) . level as * const _ as usize } , 4usize , concat ! ( "Offset of field: " , stringify ! ( grpc_op_grpc_op_data_grpc_op_send_initial_metadata_grpc_op_send_initial_metadata_maybe_compression_level ) , "::" , stringify ! ( level ) ) );
-}
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_initial_metadata() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>())).count
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata),
-            "::",
-            stringify!(count)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>())).metadata
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata),
-            "::",
-            stringify!(metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_initial_metadata>()))
-                .maybe_compression_level as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_initial_metadata),
-            "::",
-            stringify!(maybe_compression_level)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_send_message {
@@ -2372,38 +1180,6 @@
     #[doc = " grpc_byte_buffer_destroy() on this object however."]
     pub send_message: *mut grpc_byte_buffer,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_message() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_send_message>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_message)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_send_message>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_message>())).send_message
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_message),
-            "::",
-            stringify!(send_message)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_send_status_from_server {
@@ -2414,77 +1190,6 @@
     #[doc = " pointer will not be retained past the start_batch call"]
     pub status_details: *mut grpc_slice,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_send_status_from_server() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>(),
-        32usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>()))
-                .trailing_metadata_count as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(trailing_metadata_count)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>()))
-                .trailing_metadata as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>())).status
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_send_status_from_server>()))
-                .status_details as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_send_status_from_server),
-            "::",
-            stringify!(status_details)
-        )
-    );
-}
 #[doc = " ownership of the array is with the caller, but ownership of the elements"]
 #[doc = "stays with the call object (ie key, value members are owned by the call"]
 #[doc = "object, recv_initial_metadata->array is owned by the caller)."]
@@ -2495,38 +1200,6 @@
 pub struct grpc_op_grpc_op_data_grpc_op_recv_initial_metadata {
     pub recv_initial_metadata: *mut grpc_metadata_array,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_initial_metadata() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_initial_metadata>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_initial_metadata>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_initial_metadata>()))
-                .recv_initial_metadata as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_initial_metadata),
-            "::",
-            stringify!(recv_initial_metadata)
-        )
-    );
-}
 #[doc = " ownership of the byte buffer is moved to the caller; the caller must"]
 #[doc = "call grpc_byte_buffer_destroy on this value, or reuse it in a future op."]
 #[doc = "The returned byte buffer will be NULL if trailing metadata was"]
@@ -2536,38 +1209,6 @@
 pub struct grpc_op_grpc_op_data_grpc_op_recv_message {
     pub recv_message: *mut *mut grpc_byte_buffer,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_message() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_message>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_message)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_message>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_message>())).recv_message
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_message),
-            "::",
-            stringify!(recv_message)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_recv_status_on_client {
@@ -2584,286 +1225,20 @@
     #[doc = " for freeing the data by using gpr_free()."]
     pub error_string: *mut *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_status_on_client() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>(),
-        32usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>()))
-                .trailing_metadata as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>())).status
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>()))
-                .status_details as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(status_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_status_on_client>()))
-                .error_string as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_status_on_client),
-            "::",
-            stringify!(error_string)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_op_grpc_op_data_grpc_op_recv_close_on_server {
-    #[doc = " out argument, set to 1 if the call failed in any way (seen as a"]
-    #[doc = "cancellation on the server), or 0 if the call succeeded"]
+    #[doc = " out argument, set to 1 if the call failed at the server for"]
+    #[doc = "a reason other than a non-OK status (cancel, deadline"]
+    #[doc = "exceeded, network failure, etc.), 0 otherwise (RPC processing ran to"]
+    #[doc = "completion and was able to provide any status from the server)"]
     pub cancelled: *mut ::std::os::raw::c_int,
 }
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data_grpc_op_recv_close_on_server() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data_grpc_op_recv_close_on_server>(),
-        8usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_close_on_server)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data_grpc_op_recv_close_on_server>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_close_on_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data_grpc_op_recv_close_on_server>())).cancelled
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data_grpc_op_recv_close_on_server),
-            "::",
-            stringify!(cancelled)
-        )
-    );
-}
-#[test]
-fn bindgen_test_layout_grpc_op_grpc_op_data() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op_grpc_op_data>(),
-        64usize,
-        concat!("Size of: ", stringify!(grpc_op_grpc_op_data))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op_grpc_op_data>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_op_grpc_op_data))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).reserved as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).send_initial_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).send_message as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(send_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).send_status_from_server as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(send_status_from_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_initial_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_message as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_status_on_client as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_op_grpc_op_data>())).recv_close_on_server as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op_grpc_op_data),
-            "::",
-            stringify!(recv_close_on_server)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_op_grpc_op_data {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(f, "grpc_op_grpc_op_data {{ union }}")
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_op() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_op>(),
-        80usize,
-        concat!("Size of: ", stringify!(grpc_op))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_op>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_op))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).op as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(op)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).flags as *const _ as usize },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(flags)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).reserved as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(reserved)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_op>())).data as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_op),
-            "::",
-            stringify!(data)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_op {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -2884,43 +1259,6 @@
     #[doc = " service config used by the channel in JSON form."]
     pub service_config_json: *mut *mut ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_channel_info() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_channel_info>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_channel_info))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_channel_info>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_channel_info))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_channel_info>())).lb_policy_name as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_info),
-            "::",
-            stringify!(lb_policy_name)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_channel_info>())).service_config_json as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_channel_info),
-            "::",
-            stringify!(service_config_json)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_resource_quota {
@@ -2987,77 +1325,6 @@
     pub internal_success: ::std::os::raw::c_int,
     pub internal_next: *mut grpc_experimental_completion_queue_functor,
 }
-#[test]
-fn bindgen_test_layout_grpc_experimental_completion_queue_functor() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_experimental_completion_queue_functor>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_experimental_completion_queue_functor)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_experimental_completion_queue_functor>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_experimental_completion_queue_functor)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).functor_run
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(functor_run)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).inlineable
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(inlineable)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).internal_success
-                as *const _ as usize
-        },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(internal_success)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_experimental_completion_queue_functor>())).internal_next
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_experimental_completion_queue_functor),
-            "::",
-            stringify!(internal_next)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_completion_queue_attributes {
@@ -3071,74 +1338,6 @@
     #[doc = " shutdown is complete"]
     pub cq_shutdown_cb: *mut grpc_experimental_completion_queue_functor,
 }
-#[test]
-fn bindgen_test_layout_grpc_completion_queue_attributes() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_completion_queue_attributes>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_completion_queue_attributes))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_completion_queue_attributes>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_completion_queue_attributes)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).version as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(version)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).cq_completion_type
-                as *const _ as usize
-        },
-        4usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(cq_completion_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).cq_polling_type as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(cq_polling_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_completion_queue_attributes>())).cq_shutdown_cb as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_completion_queue_attributes),
-            "::",
-            stringify!(cq_shutdown_cb)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_completion_queue_factory {
@@ -3647,16 +1846,6 @@
     ) -> *mut grpc_call;
 }
 extern "C" {
-    #[doc = " Ping the channels peer (load balanced channels will select one sub-channel"]
-    #[doc = "to ping); if the channel is not connected, posts a failed."]
-    pub fn grpc_channel_ping(
-        channel: *mut grpc_channel,
-        cq: *mut grpc_completion_queue,
-        tag: *mut ::std::os::raw::c_void,
-        reserved: *mut ::std::os::raw::c_void,
-    );
-}
-extern "C" {
     #[doc = " Pre-register a method/host pair on a channel."]
     #[doc = "method and host are not owned and must remain alive while the channel is"]
     #[doc = "alive."]
@@ -4180,6 +2369,13 @@
     UDS = 0,
     LOCAL_TCP = 1,
 }
+#[repr(u32)]
+#[doc = " The TLS versions that are supported by the SSL stack."]
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+pub enum grpc_tls_version {
+    TLS1_2 = 0,
+    TLS1_3 = 1,
+}
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
 pub struct grpc_auth_context {
@@ -4192,53 +2388,6 @@
     pub index: usize,
     pub name: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_property_iterator() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_property_iterator>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_auth_property_iterator))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_property_iterator>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_property_iterator))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property_iterator>())).ctx as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property_iterator),
-            "::",
-            stringify!(ctx)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_property_iterator>())).index as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property_iterator),
-            "::",
-            stringify!(index)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_property_iterator>())).name as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property_iterator),
-            "::",
-            stringify!(name)
-        )
-    );
-}
 #[doc = " value, if not NULL, is guaranteed to be NULL terminated."]
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
@@ -4247,49 +2396,6 @@
     pub value: *mut ::std::os::raw::c_char,
     pub value_length: usize,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_property() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_property>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_auth_property))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_property>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_property))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property>())).name as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property),
-            "::",
-            stringify!(name)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property>())).value as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property),
-            "::",
-            stringify!(value)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_auth_property>())).value_length as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_property),
-            "::",
-            stringify!(value_length)
-        )
-    );
-}
 extern "C" {
     #[doc = " Returns NULL when the iterator is at the end."]
     pub fn grpc_auth_property_iterator_next(
@@ -4386,6 +2492,16 @@
 }
 #[repr(C)]
 #[derive(Debug, Copy, Clone)]
+pub struct grpc_call_credentials {
+    _unused: [u8; 0],
+}
+extern "C" {
+    #[doc = " Releases a call credentials object."]
+    #[doc = "The creator of the credentials object is responsible for its release."]
+    pub fn grpc_call_credentials_release(creds: *mut grpc_call_credentials);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
 pub struct grpc_channel_credentials {
     _unused: [u8; 0],
 }
@@ -4399,7 +2515,22 @@
     #[doc = "WARNING: Do NOT use this credentials to connect to a non-google service as"]
     #[doc = "this could result in an oauth2 token leak. The security level of the"]
     #[doc = "resulting connection is GRPC_PRIVACY_AND_INTEGRITY."]
-    pub fn grpc_google_default_credentials_create() -> *mut grpc_channel_credentials;
+    #[doc = ""]
+    #[doc = "If specified, the supplied call credentials object will be attached to the"]
+    #[doc = "returned channel credentials object. The call_credentials object must remain"]
+    #[doc = "valid throughout the lifetime of the returned grpc_channel_credentials"]
+    #[doc = "object. It is expected that the call credentials object was generated"]
+    #[doc = "according to the Application Default Credentials mechanism and asserts the"]
+    #[doc = "identity of the default service account of the machine. Supplying any other"]
+    #[doc = "sort of call credential will result in undefined behavior, up to and"]
+    #[doc = "including the sudden and unexpected failure of RPCs."]
+    #[doc = ""]
+    #[doc = "If nullptr is supplied, the returned channel credentials object will use a"]
+    #[doc = "call credentials object based on the Application Default Credentials"]
+    #[doc = "mechanism."]
+    pub fn grpc_google_default_credentials_create(
+        call_credentials: *mut grpc_call_credentials,
+    ) -> *mut grpc_channel_credentials;
 }
 #[doc = " Callback for getting the SSL roots override from the application."]
 #[doc = "In case of success, *pem_roots_certs must be set to a NULL terminated string"]
@@ -4431,43 +2562,6 @@
     #[doc = "the client's certificate chain."]
     pub cert_chain: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_ssl_pem_key_cert_pair() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_ssl_pem_key_cert_pair>(),
-        16usize,
-        concat!("Size of: ", stringify!(grpc_ssl_pem_key_cert_pair))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_ssl_pem_key_cert_pair>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_ssl_pem_key_cert_pair))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_pem_key_cert_pair>())).private_key as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_pem_key_cert_pair),
-            "::",
-            stringify!(private_key)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_pem_key_cert_pair>())).cert_chain as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_pem_key_cert_pair),
-            "::",
-            stringify!(cert_chain)
-        )
-    );
-}
 #[doc = " Deprecated in favor of grpc_ssl_verify_peer_options. It will be removed"]
 #[doc = "after all of its call sites are migrated to grpc_ssl_verify_peer_options."]
 #[doc = "Object that holds additional peer-verification options on a secure"]
@@ -4496,58 +2590,6 @@
     pub verify_peer_destruct:
         ::std::option::Option<unsafe extern "C" fn(userdata: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_verify_peer_options() {
-    assert_eq!(
-        ::std::mem::size_of::<verify_peer_options>(),
-        24usize,
-        concat!("Size of: ", stringify!(verify_peer_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<verify_peer_options>(),
-        8usize,
-        concat!("Alignment of ", stringify!(verify_peer_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<verify_peer_options>())).verify_peer_callback as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<verify_peer_options>())).verify_peer_callback_userdata
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback_userdata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<verify_peer_options>())).verify_peer_destruct as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(verify_peer_options),
-            "::",
-            stringify!(verify_peer_destruct)
-        )
-    );
-}
 #[doc = " Object that holds additional peer-verification options on a secure"]
 #[doc = "channel."]
 #[repr(C)]
@@ -4574,58 +2616,6 @@
     pub verify_peer_destruct:
         ::std::option::Option<unsafe extern "C" fn(userdata: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_grpc_ssl_verify_peer_options() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_ssl_verify_peer_options>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_ssl_verify_peer_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_ssl_verify_peer_options>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_ssl_verify_peer_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_verify_peer_options>())).verify_peer_callback
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_verify_peer_options>())).verify_peer_callback_userdata
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_verify_peer_options),
-            "::",
-            stringify!(verify_peer_callback_userdata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_ssl_verify_peer_options>())).verify_peer_destruct
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_ssl_verify_peer_options),
-            "::",
-            stringify!(verify_peer_destruct)
-        )
-    );
-}
 extern "C" {
     #[doc = " Deprecated in favor of grpc_ssl_server_credentials_create_ex. It will be"]
     #[doc = "removed after all of its call sites are migrated to"]
@@ -4672,16 +2662,6 @@
         reserved: *mut ::std::os::raw::c_void,
     ) -> *mut grpc_channel_credentials;
 }
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct grpc_call_credentials {
-    _unused: [u8; 0],
-}
-extern "C" {
-    #[doc = " Releases a call credentials object."]
-    #[doc = "The creator of the credentials object is responsible for its release."]
-    pub fn grpc_call_credentials_release(creds: *mut grpc_call_credentials);
-}
 extern "C" {
     #[doc = " Creates a composite channel credentials object. The security level of"]
     #[doc = " resulting connection is determined by channel_creds."]
@@ -4769,133 +2749,6 @@
     pub actor_token_path: *const ::std::os::raw::c_char,
     pub actor_token_type: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_sts_credentials_options() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_sts_credentials_options>(),
-        72usize,
-        concat!("Size of: ", stringify!(grpc_sts_credentials_options))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_sts_credentials_options>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_sts_credentials_options))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).token_exchange_service_uri
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(token_exchange_service_uri)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).resource as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(resource)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).audience as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(audience)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).scope as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(scope)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).requested_token_type
-                as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(requested_token_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).subject_token_path as *const _
-                as usize
-        },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(subject_token_path)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).subject_token_type as *const _
-                as usize
-        },
-        48usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(subject_token_type)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).actor_token_path as *const _
-                as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(actor_token_path)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_sts_credentials_options>())).actor_token_type as *const _
-                as usize
-        },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_sts_credentials_options),
-            "::",
-            stringify!(actor_token_type)
-        )
-    );
-}
 extern "C" {
     #[doc = " Creates an STS credentials following the STS Token Exchanged specifed in the"]
     #[doc = "IETF draft https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16."]
@@ -4942,67 +2795,16 @@
     #[doc = " Reserved for future use."]
     pub reserved: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_metadata_context() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_metadata_context>(),
-        32usize,
-        concat!("Size of: ", stringify!(grpc_auth_metadata_context))
+extern "C" {
+    #[doc = " Performs a deep copy from \\a from to \\a to."]
+    pub fn grpc_auth_metadata_context_copy(
+        from: *mut grpc_auth_metadata_context,
+        to: *mut grpc_auth_metadata_context,
     );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_metadata_context>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_metadata_context))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).service_url as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(service_url)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).method_name as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(method_name)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).channel_auth_context as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(channel_auth_context)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_context>())).reserved as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_context),
-            "::",
-            stringify!(reserved)
-        )
-    );
+}
+extern "C" {
+    #[doc = " Releases internal resources held by \\a context."]
+    pub fn grpc_auth_metadata_context_reset(context: *mut grpc_auth_metadata_context);
 }
 #[doc = " grpc_metadata_credentials plugin is an API user provided structure used to"]
 #[doc = "create grpc_credentials objects that can be set on a channel (composed) or"]
@@ -5054,85 +2856,6 @@
     #[doc = " Type of credentials that this plugin is implementing."]
     pub type_: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_grpc_metadata_credentials_plugin() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_metadata_credentials_plugin>(),
-        40usize,
-        concat!("Size of: ", stringify!(grpc_metadata_credentials_plugin))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_metadata_credentials_plugin>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_metadata_credentials_plugin)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).get_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(get_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).debug_string as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(debug_string)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).destroy as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(destroy)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).state as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(state)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_metadata_credentials_plugin>())).type_ as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_metadata_credentials_plugin),
-            "::",
-            stringify!(type_)
-        )
-    );
-}
 extern "C" {
     #[doc = " Creates a credentials object from a plugin with a specified minimum security"]
     #[doc = " level."]
@@ -5342,55 +3065,6 @@
     pub destroy: ::std::option::Option<unsafe extern "C" fn(state: *mut ::std::os::raw::c_void)>,
     pub state: *mut ::std::os::raw::c_void,
 }
-#[test]
-fn bindgen_test_layout_grpc_auth_metadata_processor() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_auth_metadata_processor>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_auth_metadata_processor))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_auth_metadata_processor>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_auth_metadata_processor))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_processor>())).process as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_processor),
-            "::",
-            stringify!(process)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_processor>())).destroy as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_processor),
-            "::",
-            stringify!(destroy)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_auth_metadata_processor>())).state as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_auth_metadata_processor),
-            "::",
-            stringify!(state)
-        )
-    );
-}
 extern "C" {
     pub fn grpc_server_credentials_set_auth_metadata_processor(
         creds: *mut grpc_server_credentials,
@@ -5644,119 +3318,6 @@
     pub destroy_context:
         ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_grpc_tls_credential_reload_arg() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_tls_credential_reload_arg>(),
-        64usize,
-        concat!("Size of: ", stringify!(grpc_tls_credential_reload_arg))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_tls_credential_reload_arg>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_tls_credential_reload_arg))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).cb as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(cb)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).cb_user_data as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(cb_user_data)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).key_materials_config
-                as *const _ as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(key_materials_config)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).status as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).error_details as *const _
-                as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(error_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).config as *const _ as usize
-        },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(config)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).context as *const _ as usize
-        },
-        48usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(context)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_credential_reload_arg>())).destroy_context as *const _
-                as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_credential_reload_arg),
-            "::",
-            stringify!(destroy_context)
-        )
-    );
-}
 extern "C" {
     #[doc = " Create a grpc_tls_credential_reload_config instance."]
     #[doc = "- config_user_data is config-specific, read-only user data"]
@@ -5840,168 +3401,6 @@
     pub destroy_context:
         ::std::option::Option<unsafe extern "C" fn(ctx: *mut ::std::os::raw::c_void)>,
 }
-#[test]
-fn bindgen_test_layout_grpc_tls_server_authorization_check_arg() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_tls_server_authorization_check_arg>(),
-        88usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_tls_server_authorization_check_arg)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_tls_server_authorization_check_arg>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_tls_server_authorization_check_arg)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).cb as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(cb)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).cb_user_data
-                as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(cb_user_data)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).success as *const _
-                as usize
-        },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(success)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).target_name
-                as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(target_name)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).peer_cert
-                as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(peer_cert)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).peer_cert_full_chain
-                as *const _ as usize
-        },
-        40usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(peer_cert_full_chain)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).status as *const _
-                as usize
-        },
-        48usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).error_details
-                as *const _ as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(error_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).config as *const _
-                as usize
-        },
-        64usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(config)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).context as *const _
-                as usize
-        },
-        72usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(context)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_tls_server_authorization_check_arg>())).destroy_context
-                as *const _ as usize
-        },
-        80usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_tls_server_authorization_check_arg),
-            "::",
-            stringify!(destroy_context)
-        )
-    );
-}
 extern "C" {
     #[doc = " Create a grpc_tls_server_authorization_check_config instance."]
     #[doc = "- config_user_data is config-specific, read-only user data"]
@@ -6070,6 +3469,22 @@
         options: *mut grpc_tls_credentials_options,
     ) -> *mut grpc_server_credentials;
 }
+extern "C" {
+    #[doc = " EXPERIMENTAL API - Subject to change"]
+    #[doc = ""]
+    #[doc = " This method creates an XDS channel credentials object."]
+    #[doc = ""]
+    #[doc = " Creating a channel with credentials of this type indicates that an xDS"]
+    #[doc = " channel should get credentials configuration from the xDS control plane."]
+    #[doc = ""]
+    #[doc = " \\a fallback_credentials are used if the channel target does not have the"]
+    #[doc = " 'xds:///' scheme or if the xDS control plane does not provide information on"]
+    #[doc = " how to fetch credentials dynamically. Does NOT take ownership of the \\a"]
+    #[doc = " fallback_credentials. (Internally takes a ref to the object.)"]
+    pub fn grpc_xds_credentials_create(
+        fallback_credentials: *mut grpc_channel_credentials,
+    ) -> *mut grpc_channel_credentials;
+}
 #[repr(u32)]
 #[doc = " The severity of a log message - use the #defines below when calling into"]
 #[doc = "gpr_log to additionally supply file and line data"]
@@ -6122,59 +3537,6 @@
     pub severity: gpr_log_severity,
     pub message: *const ::std::os::raw::c_char,
 }
-#[test]
-fn bindgen_test_layout_gpr_log_func_args() {
-    assert_eq!(
-        ::std::mem::size_of::<gpr_log_func_args>(),
-        24usize,
-        concat!("Size of: ", stringify!(gpr_log_func_args))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<gpr_log_func_args>(),
-        8usize,
-        concat!("Alignment of ", stringify!(gpr_log_func_args))
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).file as *const _ as usize },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(file)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).line as *const _ as usize },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(line)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).severity as *const _ as usize },
-        12usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(severity)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<gpr_log_func_args>())).message as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(gpr_log_func_args),
-            "::",
-            stringify!(message)
-        )
-    );
-}
 pub type gpr_log_func = ::std::option::Option<unsafe extern "C" fn(args: *mut gpr_log_func_args)>;
 extern "C" {
     pub fn gpr_set_log_function(func: gpr_log_func);
@@ -6266,38 +3628,6 @@
     pub index: ::std::os::raw::c_uint,
     _bindgen_union_align: u32,
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_reader_grpc_byte_buffer_reader_current() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_reader_grpc_byte_buffer_reader_current>(),
-        4usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpc_byte_buffer_reader_grpc_byte_buffer_reader_current)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_reader_grpc_byte_buffer_reader_current>(),
-        4usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpc_byte_buffer_reader_grpc_byte_buffer_reader_current)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_reader_grpc_byte_buffer_reader_current>()))
-                .index as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader_grpc_byte_buffer_reader_current),
-            "::",
-            stringify!(index)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_reader_grpc_byte_buffer_reader_current {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -6306,53 +3636,6 @@
         )
     }
 }
-#[test]
-fn bindgen_test_layout_grpc_byte_buffer_reader() {
-    assert_eq!(
-        ::std::mem::size_of::<grpc_byte_buffer_reader>(),
-        24usize,
-        concat!("Size of: ", stringify!(grpc_byte_buffer_reader))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpc_byte_buffer_reader>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpc_byte_buffer_reader))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_reader>())).buffer_in as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader),
-            "::",
-            stringify!(buffer_in)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpc_byte_buffer_reader>())).buffer_out as *const _ as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader),
-            "::",
-            stringify!(buffer_out)
-        )
-    );
-    assert_eq!(
-        unsafe { &(*(::std::ptr::null::<grpc_byte_buffer_reader>())).current as *const _ as usize },
-        16usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpc_byte_buffer_reader),
-            "::",
-            stringify!(current)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpc_byte_buffer_reader {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         write!(
@@ -6378,38 +3661,6 @@
 pub struct grpcwrap_batch_context__bindgen_ty_1 {
     pub trailing_metadata: grpc_metadata_array,
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_batch_context__bindgen_ty_1() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_batch_context__bindgen_ty_1>(),
-        24usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_batch_context__bindgen_ty_1>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_1)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_1>())).trailing_metadata
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_1),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-}
 #[repr(C)]
 #[derive(Copy, Clone)]
 pub struct grpcwrap_batch_context__bindgen_ty_2 {
@@ -6417,174 +3668,14 @@
     pub status: grpc_status_code::Type,
     pub status_details: grpc_slice,
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_batch_context__bindgen_ty_2() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_batch_context__bindgen_ty_2>(),
-        64usize,
-        concat!(
-            "Size of: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2)
-        )
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_batch_context__bindgen_ty_2>(),
-        8usize,
-        concat!(
-            "Alignment of ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_2>())).trailing_metadata
-                as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2),
-            "::",
-            stringify!(trailing_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_2>())).status as *const _
-                as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2),
-            "::",
-            stringify!(status)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context__bindgen_ty_2>())).status_details
-                as *const _ as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context__bindgen_ty_2),
-            "::",
-            stringify!(status_details)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpcwrap_batch_context__bindgen_ty_2 {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpcwrap_batch_context__bindgen_ty_2 {{ trailing_metadata: {:?}, status: {:?}, status_details: {:?} }}" , self . trailing_metadata , self . status , self . status_details )
+        write ! (f , "grpcwrap_batch_context__bindgen_ty_2 {{ trailing_metadata: {:?}, status: {:?}, status_details: {:?} }}" , self . trailing_metadata , self . status , self . status_details)
     }
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_batch_context() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_batch_context>(),
-        160usize,
-        concat!("Size of: ", stringify!(grpcwrap_batch_context))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_batch_context>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpcwrap_batch_context))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).send_initial_metadata as *const _
-                as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(send_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).send_message as *const _ as usize
-        },
-        24usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(send_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).send_status_from_server as *const _
-                as usize
-        },
-        32usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(send_status_from_server)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_initial_metadata as *const _
-                as usize
-        },
-        56usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_initial_metadata)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_message as *const _ as usize
-        },
-        80usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_message)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_status_on_client as *const _
-                as usize
-        },
-        88usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_status_on_client)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_batch_context>())).recv_close_on_server_cancelled
-                as *const _ as usize
-        },
-        152usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_batch_context),
-            "::",
-            stringify!(recv_close_on_server_cancelled)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpcwrap_batch_context {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpcwrap_batch_context {{ send_initial_metadata: {:?}, send_message: {:?}, send_status_from_server: {:?}, recv_initial_metadata: {:?}, recv_message: {:?}, recv_status_on_client: {:?}, recv_close_on_server_cancelled: {:?} }}" , self . send_initial_metadata , self . send_message , self . send_status_from_server , self . recv_initial_metadata , self . recv_message , self . recv_status_on_client , self . recv_close_on_server_cancelled )
+        write ! (f , "grpcwrap_batch_context {{ send_initial_metadata: {:?}, send_message: {:?}, send_status_from_server: {:?}, recv_initial_metadata: {:?}, recv_message: {:?}, recv_status_on_client: {:?}, recv_close_on_server_cancelled: {:?} }}" , self . send_initial_metadata , self . send_message , self . send_status_from_server , self . recv_initial_metadata , self . recv_message , self . recv_status_on_client , self . recv_close_on_server_cancelled)
     }
 }
 extern "C" {
@@ -6597,60 +3688,9 @@
     pub call_details: grpc_call_details,
     pub request_metadata: grpc_metadata_array,
 }
-#[test]
-fn bindgen_test_layout_grpcwrap_request_call_context() {
-    assert_eq!(
-        ::std::mem::size_of::<grpcwrap_request_call_context>(),
-        128usize,
-        concat!("Size of: ", stringify!(grpcwrap_request_call_context))
-    );
-    assert_eq!(
-        ::std::mem::align_of::<grpcwrap_request_call_context>(),
-        8usize,
-        concat!("Alignment of ", stringify!(grpcwrap_request_call_context))
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_request_call_context>())).call as *const _ as usize
-        },
-        0usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_request_call_context),
-            "::",
-            stringify!(call)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_request_call_context>())).call_details as *const _
-                as usize
-        },
-        8usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_request_call_context),
-            "::",
-            stringify!(call_details)
-        )
-    );
-    assert_eq!(
-        unsafe {
-            &(*(::std::ptr::null::<grpcwrap_request_call_context>())).request_metadata as *const _
-                as usize
-        },
-        104usize,
-        concat!(
-            "Offset of field: ",
-            stringify!(grpcwrap_request_call_context),
-            "::",
-            stringify!(request_metadata)
-        )
-    );
-}
 impl ::std::fmt::Debug for grpcwrap_request_call_context {
     fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
-        write ! ( f , "grpcwrap_request_call_context {{ call: {:?}, call_details: {:?}, request_metadata: {:?} }}" , self . call , self . call_details , self . request_metadata )
+        write ! (f , "grpcwrap_request_call_context {{ call: {:?}, call_details: {:?}, request_metadata: {:?} }}" , self . call , self . call_details , self . request_metadata)
     }
 }
 extern "C" {
@@ -6844,8 +3884,7 @@
     pub fn grpcwrap_call_start_unary(
         call: *mut grpc_call,
         ctx: *mut grpcwrap_batch_context,
-        send_buffer: *const ::std::os::raw::c_char,
-        send_buffer_len: usize,
+        send_buffer: *mut grpc_slice,
         write_flags: u32,
         initial_metadata: *mut grpc_metadata_array,
         initial_metadata_flags: u32,
@@ -6865,8 +3904,7 @@
     pub fn grpcwrap_call_start_server_streaming(
         call: *mut grpc_call,
         ctx: *mut grpcwrap_batch_context,
-        send_buffer: *const ::std::os::raw::c_char,
-        send_buffer_len: usize,
+        send_buffer: *mut grpc_slice,
         write_flags: u32,
         initial_metadata: *mut grpc_metadata_array,
         initial_metadata_flags: u32,
@@ -6893,8 +3931,7 @@
     pub fn grpcwrap_call_send_message(
         call: *mut grpc_call,
         ctx: *mut grpcwrap_batch_context,
-        send_buffer: *const ::std::os::raw::c_char,
-        send_buffer_len: usize,
+        send_buffer: *mut grpc_slice,
         write_flags: u32,
         send_empty_initial_metadata: i32,
         tag: *mut ::std::os::raw::c_void,
@@ -6915,8 +3952,7 @@
         status_details_len: usize,
         trailing_metadata: *mut grpc_metadata_array,
         send_empty_initial_metadata: i32,
-        optional_send_buffer: *const ::std::os::raw::c_char,
-        optional_send_buffer_len: usize,
+        optional_send_buffer: *mut grpc_slice,
         write_flags: u32,
         tag: *mut ::std::os::raw::c_void,
     ) -> grpc_call_error;
diff --git a/build.rs b/build.rs
index b5f34ea..3473239 100644
--- a/build.rs
+++ b/build.rs
@@ -1,5 +1,6 @@
 // Copyright 2019 TiKV Project Authors. Licensed under Apache-2.0.
 
+use std::collections::HashSet;
 use std::env::VarError;
 use std::io::prelude::*;
 use std::io::BufReader;
@@ -10,7 +11,7 @@
 use pkg_config::{Config as PkgConfig, Library};
 use walkdir::WalkDir;
 
-const GRPC_VERSION: &str = "1.29.1";
+const GRPC_VERSION: &str = "1.33.1";
 
 fn probe_library(library: &str, cargo_metadata: bool) -> Library {
     match PkgConfig::new()
@@ -24,17 +25,14 @@
 }
 
 fn prepare_grpc() {
-    let mut modules = vec![
+    let modules = vec![
         "grpc",
         "grpc/third_party/cares/cares",
         "grpc/third_party/address_sorting",
         "grpc/third_party/abseil-cpp",
+        "grpc/third_party/re2",
     ];
 
-    if cfg!(feature = "secure") && !cfg!(feature = "openssl") {
-        modules.push("grpc/third_party/boringssl-with-bazel");
-    }
-
     for module in modules {
         if is_directory_empty(module).unwrap_or(true) {
             panic!(
@@ -62,15 +60,7 @@
 fn build_grpc(cc: &mut cc::Build, library: &str) {
     prepare_grpc();
 
-    let mut third_party = vec![
-        "cares/cares/lib",
-        "abseil-cpp/absl/strings",
-        "abseil-cpp/absl/time",
-        "abseil-cpp/absl/base",
-        "abseil-cpp/absl/types",
-        "abseil-cpp/absl/numeric",
-    ];
-
+    let target = env::var("TARGET").unwrap();
     let dst = {
         let mut config = CmakeConfig::new("grpc");
 
@@ -90,7 +80,7 @@
         }
 
         // Cross-compile support for iOS
-        match env::var("TARGET").unwrap().as_str() {
+        match target.as_str() {
             "aarch64-apple-ios" => {
                 config
                     .define("CMAKE_OSX_SYSROOT", "iphoneos")
@@ -133,13 +123,13 @@
         config.define("gRPC_BUILD_CODEGEN", "false");
         // We don't need to build benchmarks.
         config.define("gRPC_BENCHMARK_PROVIDER", "none");
+        config.define("gRPC_SSL_PROVIDER", "package");
         if cfg!(feature = "openssl") {
-            config.define("gRPC_SSL_PROVIDER", "package");
             if cfg!(feature = "openssl-vendored") {
                 config.register_dep("openssl");
             }
-        } else if cfg!(feature = "secure") {
-            third_party.extend_from_slice(&["boringssl-with-bazel"]);
+        } else {
+            build_boringssl(&mut config);
         }
         if cfg!(feature = "no-omit-frame-pointer") {
             config
@@ -151,58 +141,41 @@
         config.build_target(library).uses_cxx11().build()
     };
 
-    let build_dir = format!("{}/build", dst.display());
-    if get_env("CARGO_CFG_TARGET_OS").map_or(false, |s| s == "windows") {
-        let profile = match &*env::var("PROFILE").unwrap() {
-            "bench" | "release" => "Release",
-            _ => "Debug",
-        };
-        println!("cargo:rustc-link-search=native={}/{}", build_dir, profile);
-        for path in third_party {
-            println!(
-                "cargo:rustc-link-search=native={}/third_party/{}/{}",
-                build_dir, path, profile
-            );
-        }
+    let lib_suffix = if target.contains("msvc") {
+        ".lib"
     } else {
-        println!("cargo:rustc-link-search=native={}", build_dir);
-        for path in third_party {
+        ".a"
+    };
+    let build_dir = format!("{}/build", dst.display());
+    for e in WalkDir::new(&build_dir) {
+        let e = e.unwrap();
+        if e.file_name().to_string_lossy().ends_with(lib_suffix) {
             println!(
-                "cargo:rustc-link-search=native={}/third_party/{}",
-                build_dir, path,
+                "cargo:rustc-link-search=native={}",
+                e.path().parent().unwrap().display()
             );
         }
     }
 
-    // link libz
-    println!("cargo:rustc-link-lib=static=z");
-    // link cares
-    println!("cargo:rustc-link-lib=static=cares");
-    // link address_sorting
-    println!("cargo:rustc-link-lib=static=address_sorting");
-    // link absl/base
-    println!("cargo:rustc-link-lib=static=absl_base");
-    println!("cargo:rustc-link-lib=static=absl_raw_logging_internal");
-    println!("cargo:rustc-link-lib=static=absl_dynamic_annotations");
-    println!("cargo:rustc-link-lib=static=absl_throw_delegate");
-    println!("cargo:rustc-link-lib=static=absl_log_severity");
-    println!("cargo:rustc-link-lib=static=absl_spinlock_wait");
-    // link absl/strings
-    println!("cargo:rustc-link-lib=static=absl_strings");
-    println!("cargo:rustc-link-lib=static=absl_strings_internal");
-    println!("cargo:rustc-link-lib=static=absl_str_format_internal");
-    // link absl/time
-    println!("cargo:rustc-link-lib=static=absl_civil_time");
-    println!("cargo:rustc-link-lib=static=absl_time_zone");
-    println!("cargo:rustc-link-lib=static=absl_time");
-    // link absl/types
-    println!("cargo:rustc-link-lib=static=absl_bad_optional_access");
-    // link absl/numeric
-    println!("cargo:rustc-link-lib=static=absl_int128");
-    // link grpc related lib
-    println!("cargo:rustc-link-lib=static=gpr");
-    println!("cargo:rustc-link-lib=static=upb");
-    println!("cargo:rustc-link-lib=static={}", library);
+    let collect = |path, to: &mut HashSet<_>| {
+        let f = fs::File::open(format!("{}/libs/opt/pkgconfig/{}.pc", build_dir, path)).unwrap();
+        for l in io::BufReader::new(f).lines() {
+            let l = l.unwrap();
+            if l.starts_with("Libs: ") {
+                for lib in l.split_whitespace() {
+                    if let Some(s) = lib.strip_prefix("-l") {
+                        to.insert(s.to_string());
+                    }
+                }
+            }
+        }
+    };
+    let mut libs = HashSet::new();
+    collect("gpr", &mut libs);
+    collect(library, &mut libs);
+    for l in libs {
+        println!("cargo:rustc-link-lib=static={}", l);
+    }
 
     if cfg!(feature = "secure") {
         if cfg!(feature = "openssl") && !cfg!(feature = "openssl-vendored") {
@@ -211,6 +184,12 @@
             println!("cargo:rustc-link-lib=static=ssl");
             println!("cargo:rustc-link-lib=static=crypto");
         }
+    } else {
+        // grpc_unsecure.pc is not accurate, see also grpc/grpc#24512.
+        println!("cargo:rustc-link-lib=static=upb");
+        println!("cargo:rustc-link-lib=static=cares");
+        println!("cargo:rustc-link-lib=static=z");
+        println!("cargo:rustc-link-lib=static=address_sorting");
     }
 
     cc.include("grpc/include");
@@ -243,6 +222,19 @@
     println!("cargo:rustc-link-lib=crypto");
 }
 
+fn build_boringssl(config: &mut CmakeConfig) {
+    let boringssl_artifact = boringssl_src::Build::new().build();
+    config.define(
+        "OPENSSL_ROOT_DIR",
+        format!("{}", boringssl_artifact.root_dir().display()),
+    );
+    // To avoid linking system library, set lib path explicitly.
+    println!(
+        "cargo:rustc-link-search=native={}",
+        boringssl_artifact.lib_dir().display()
+    );
+}
+
 fn setup_libz(config: &mut CmakeConfig) {
     config.define("gRPC_ZLIB_PROVIDER", "package");
     config.register_dep("Z");
@@ -296,6 +288,9 @@
         config = config.header(path);
     }
 
+    println!("cargo:rerun-if-env-changed=TEST_BIND");
+    let gen_tests = env::var("TEST_BIND").map_or(false, |s| s == "1");
+
     let cfg = config
         .header("grpc_wrap.cc")
         .clang_arg("-xc++")
@@ -320,6 +315,7 @@
         .blacklist_type(r"gpr_cv")
         .blacklist_type(r"gpr_once")
         .constified_enum_module(r"grpc_status_code")
+        .layout_tests(gen_tests)
         .default_enum_style(bindgen::EnumVariation::Rust {
             non_exhaustive: false,
         });
diff --git a/grpc/.bazelci/presubmit.yml b/grpc/.bazelci/presubmit.yml
new file mode 100644
index 0000000..ab0bfd3
--- /dev/null
+++ b/grpc/.bazelci/presubmit.yml
@@ -0,0 +1,23 @@
+# Configuration file for Bazel CI [1].
+#
+# Also testing on Bazel CI in addition of our normal CI workflow
+# ensures that gRPC is tested against Bazel@HEAD and stays compatible
+# with the latest release.
+#
+# See [2,3] in case you have questions.
+#
+# [1] https://github.com/bazelbuild/continuous-integration
+# [2] https://github.com/grpc/grpc/issues/19171
+# [3] https://github.com/grpc/grpc/pull/20784
+---
+# TODO(yannic): Ideally, we should also enable buildifier and all platforms should test `//...`.
+platforms:
+  ubuntu1604:
+    build_targets:
+      - //:all
+      - //src/proto/...
+      - //src/python/...
+    test_targets:
+      - //:all
+      - //src/proto/...
+      - //src/python/...
diff --git a/grpc/.clang_complete b/grpc/.clang_complete
index 4da3376..2769e89 100644
--- a/grpc/.clang_complete
+++ b/grpc/.clang_complete
@@ -15,5 +15,6 @@
 -Ithird_party/googletest/googletest/include
 -Ithird_party/googletest/include
 -Ithird_party/protobuf/src
+-Ithird_party/re2
 -Ithird_party/upb
 -Ithird_party/zlib
diff --git a/grpc/.github/CODEOWNERS b/grpc/.github/CODEOWNERS
index 0b3a8c7..a3bf2b1 100644
--- a/grpc/.github/CODEOWNERS
+++ b/grpc/.github/CODEOWNERS
@@ -5,4 +5,5 @@
 /bazel/** @nicolasnoble @jtattermusch @veblush @gnossen
 /cmake/** @jtattermusch @nicolasnoble @apolcyn
 /src/core/ext/filters/client_channel/** @markdroth
+/src/core/ext/xds/** @markdroth
 /tools/dockerfile/** @jtattermusch @apolcyn @nicolasnoble
diff --git a/grpc/.github/ISSUE_TEMPLATE/bug_report.md b/grpc/.github/ISSUE_TEMPLATE/bug_report.md
index f02cf70..2692dc7 100644
--- a/grpc/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/grpc/.github/ISSUE_TEMPLATE/bug_report.md
@@ -2,15 +2,17 @@
 name: Report a bug
 about: Create a report to help us improve
 labels: kind/bug, priority/P2
-assignees: nicolasnoble
+assignees: karthikravis
 
 ---
 
 <!--
+PLEASE DO NOT POST A QUESTION HERE.
 This form is for bug reports and feature requests ONLY!
-For general questions and troubleshooting, please ask/look for answers here:
-- grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
-- StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For general questions and troubleshooting, please ask/look for answers at StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For questions that specifically need to be answered by gRPC team members, please ask/look for answers at grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
 
 Issues specific to *grpc-java*, *grpc-go*, *grpc-node*, *grpc-dart*, *grpc-web* should be created in the repository they belong to (e.g. https://github.com/grpc/grpc-LANGUAGE/issues/new)
 -->
diff --git a/grpc/.github/ISSUE_TEMPLATE/cleanup_request.md b/grpc/.github/ISSUE_TEMPLATE/cleanup_request.md
index 11e8be8..bea10f3 100644
--- a/grpc/.github/ISSUE_TEMPLATE/cleanup_request.md
+++ b/grpc/.github/ISSUE_TEMPLATE/cleanup_request.md
@@ -2,16 +2,17 @@
 name: Request a cleanup
 about: Suggest a cleanup in our repository
 labels: kind/internal cleanup, priority/P2
-assignees: nicolasnoble
+assignees: karthikravis
 
 ---
 
 <!--
-
+PLEASE DO NOT POST A QUESTION HERE.
 This form is for bug reports and feature requests ONLY!
-For general questions and troubleshooting, please ask/look for answers here:
-- grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
-- StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For general questions and troubleshooting, please ask/look for answers at StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For questions that specifically need to be answered by gRPC team members, please ask/look for answers at grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
 
 Issues specific to *grpc-java*, *grpc-go*, *grpc-node*, *grpc-dart*, *grpc-web* should be created in the repository they belong to (e.g. https://github.com/grpc/grpc-LANGUAGE/issues/new)
 -->
diff --git a/grpc/.github/ISSUE_TEMPLATE/feature_request.md b/grpc/.github/ISSUE_TEMPLATE/feature_request.md
index fb3dae7..e113497 100644
--- a/grpc/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/grpc/.github/ISSUE_TEMPLATE/feature_request.md
@@ -2,16 +2,17 @@
 name: Request a feature
 about: Suggest an idea for this project
 labels: kind/enhancement, priority/P2
-assignees: nicolasnoble
+assignees: karthikravis
 
 ---
 
 <!--
-
+PLEASE DO NOT POST A QUESTION HERE.
 This form is for bug reports and feature requests ONLY!
-For general questions and troubleshooting, please ask/look for answers here:
-- grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
-- StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For general questions and troubleshooting, please ask/look for answers at StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For questions that specifically need to be answered by gRPC team members, please ask/look for answers at grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
 
 Issues specific to *grpc-java*, *grpc-go*, *grpc-node*, *grpc-dart*, *grpc-web* should be created in the repository they belong to (e.g. https://github.com/grpc/grpc-LANGUAGE/issues/new)
 -->
diff --git a/grpc/.github/ISSUE_TEMPLATE/question.md b/grpc/.github/ISSUE_TEMPLATE/question.md
new file mode 100644
index 0000000..db52e41
--- /dev/null
+++ b/grpc/.github/ISSUE_TEMPLATE/question.md
@@ -0,0 +1,17 @@
+---
+name: Ask a question
+about: Ask a question
+labels: kind/question, priority/P3
+assignees: karthikravis
+
+---
+
+PLEASE DO NOT POST A QUESTION HERE.
+This form is for bug reports and feature requests ONLY!
+
+For general questions and troubleshooting, please ask/look for answers at StackOverflow, with "grpc" tag: https://stackoverflow.com/questions/tagged/grpc
+
+For questions that specifically need to be answered by gRPC team members, please ask/look for answers at grpc.io mailing list: https://groups.google.com/forum/#!forum/grpc-io
+
+This issue will be closed down once seen by the repo managers.
+
diff --git a/grpc/.github/change_repo_manager.sh b/grpc/.github/change_repo_manager.sh
new file mode 100755
index 0000000..2c41985
--- /dev/null
+++ b/grpc/.github/change_repo_manager.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# Copyright 2020 The gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+
+if [ $# -lt 1 ];then
+  echo "Usage: $0 github-id"
+  exit 1
+fi
+
+echo "Change a repo manager to $0"
+
+BASE_PATH=$(dirname $0)
+
+for file in bug_report.md cleanup_request.md feature_request.md question.md
+do
+	sed -i -E "s/assignees: ([a-zA-Z0-9-]+)/assignees: $1/" $BASE_PATH/ISSUE_TEMPLATE/$file
+done
+
+sed -i -E "s/^@([a-zA-Z0-9-]+)/@$1/" $BASE_PATH/pull_request_template.md
+
+echo "Done"
diff --git a/grpc/.github/pull_request_template.md b/grpc/.github/pull_request_template.md
index 57af6c2..681d2f8 100644
--- a/grpc/.github/pull_request_template.md
+++ b/grpc/.github/pull_request_template.md
@@ -8,4 +8,4 @@
 
 -->
 
-@nicolasnoble
+@karthikravis
diff --git a/grpc/.github/stale.yml b/grpc/.github/stale.yml
index 1220393..081cb6d 100644
--- a/grpc/.github/stale.yml
+++ b/grpc/.github/stale.yml
@@ -1,7 +1,7 @@
 # Configuration for probot-stale - https://github.com/probot/stale
 
 # Number of days of inactivity before an Issue or Pull Request becomes stale
-daysUntilStale: 180
+daysUntilStale: 90
 
 # Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
 # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
@@ -13,6 +13,7 @@
 # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
 exemptLabels:
   - "disposition/never stale"
+  - "kind/bug"
 
 # Set to true to ignore issues in a project (defaults to false)
 exemptProjects: false
@@ -29,8 +30,8 @@
 # Comment to post when marking as stale. Set to `false` to disable
 markComment: >
   This issue/PR has been automatically marked as stale because it has not had any update (including
-  commits, comments, labels, milestones, etc) for 180 days. It will be closed automatically if no
-  further update occurs in 1 day. Thank you for your contributions!
+  commits, comments, labels, milestones, etc) for 30 days. It will be closed automatically if no
+  further update occurs in 7 day. Thank you for your contributions!
 
 # Comment to post when removing the stale label.
 # unmarkComment: >
@@ -56,4 +57,4 @@
 
 # issues:
 #   exemptLabels:
-#     - confirmed
\ No newline at end of file
+#     - confirmed
diff --git a/grpc/.gitignore b/grpc/.gitignore
index 32d26a4..c0ec881 100644
--- a/grpc/.gitignore
+++ b/grpc/.gitignore
@@ -23,6 +23,7 @@
 src/python/grpcio_*/LICENSE
 src/python/grpcio_status/grpc_status/google/rpc/status.proto
 .pytype
+*.egg-info
 
 # Node installation output
 node_modules
diff --git a/grpc/.gitmodules b/grpc/.gitmodules
index 9097319..781cfac 100644
--- a/grpc/.gitmodules
+++ b/grpc/.gitmodules
@@ -8,7 +8,6 @@
 [submodule "third_party/protobuf"]
 	path = third_party/protobuf
 	url = https://github.com/google/protobuf.git
-	branch = 3.0.x
 [submodule "third_party/gflags"]
 	path = third_party/gflags
 	url = https://github.com/gflags/gflags.git
@@ -21,6 +20,9 @@
 [submodule "third_party/boringssl-with-bazel"]
 	path = third_party/boringssl-with-bazel
 	url = https://github.com/google/boringssl.git
+[submodule "third_party/re2"]
+	path = third_party/re2
+	url = https://github.com/google/re2.git
 [submodule "third_party/cares/cares"]
 	path = third_party/cares/cares
 	url = https://github.com/c-ares/c-ares.git
diff --git a/grpc/BUILD b/grpc/BUILD
index f0b11d1..16e76a4 100644
--- a/grpc/BUILD
+++ b/grpc/BUILD
@@ -43,6 +43,11 @@
 )
 
 config_setting(
+    name = "grpc_no_xds",
+    values = {"define": "grpc_no_xds=true"},
+)
+
+config_setting(
     name = "grpc_allow_exceptions",
     values = {"define": "GRPC_ALLOW_EXCEPTIONS=1"},
 )
@@ -74,12 +79,12 @@
 
 python_config_settings()
 
-# This should be updated along with build.yaml
-g_stands_for = "gringotts"
+# This should be updated along with build_handwritten.yaml
+g_stands_for = "geeky"
 
-core_version = "10.0.0"
+core_version = "13.0.0"
 
-version = "1.29.1"
+version = "1.33.1"
 
 GPR_PUBLIC_HDRS = [
     "include/grpc/support/alloc.h",
@@ -124,6 +129,7 @@
 # TODO(ctiller): layer grpc atop grpc_unsecure, layer grpc++ atop grpc++_unsecure
 GRPCXX_SRCS = [
     "src/cpp/client/channel_cc.cc",
+    "src/cpp/client/client_callback.cc",
     "src/cpp/client/client_context.cc",
     "src/cpp/client/client_interceptor.cc",
     "src/cpp/client/create_channel.cc",
@@ -217,23 +223,16 @@
     "include/grpc++/support/sync_stream.h",
     "include/grpc++/support/time.h",
     "include/grpcpp/alarm.h",
-    "include/grpcpp/alarm_impl.h",
     "include/grpcpp/channel.h",
-    "include/grpcpp/channel_impl.h",
     "include/grpcpp/client_context.h",
     "include/grpcpp/completion_queue.h",
-    "include/grpcpp/completion_queue_impl.h",
     "include/grpcpp/create_channel.h",
-    "include/grpcpp/create_channel_impl.h",
     "include/grpcpp/create_channel_posix.h",
-    "include/grpcpp/create_channel_posix_impl.h",
     "include/grpcpp/ext/health_check_service_server_builder_option.h",
     "include/grpcpp/generic/async_generic_service.h",
     "include/grpcpp/generic/generic_stub.h",
-    "include/grpcpp/generic/generic_stub_impl.h",
     "include/grpcpp/grpcpp.h",
     "include/grpcpp/health_check_service_interface.h",
-    "include/grpcpp/health_check_service_interface_impl.h",
     "include/grpcpp/impl/call.h",
     "include/grpcpp/impl/channel_argument_option.h",
     "include/grpcpp/impl/client_unary_call.h",
@@ -244,37 +243,24 @@
     "include/grpcpp/impl/rpc_service_method.h",
     "include/grpcpp/impl/serialization_traits.h",
     "include/grpcpp/impl/server_builder_option.h",
-    "include/grpcpp/impl/server_builder_option_impl.h",
     "include/grpcpp/impl/server_builder_plugin.h",
     "include/grpcpp/impl/server_initializer.h",
-    "include/grpcpp/impl/server_initializer_impl.h",
     "include/grpcpp/impl/service_type.h",
     "include/grpcpp/resource_quota.h",
-    "include/grpcpp/resource_quota_impl.h",
     "include/grpcpp/security/auth_context.h",
     "include/grpcpp/security/auth_metadata_processor.h",
-    "include/grpcpp/security/auth_metadata_processor_impl.h",
     "include/grpcpp/security/credentials.h",
-    "include/grpcpp/security/credentials_impl.h",
     "include/grpcpp/security/server_credentials.h",
-    "include/grpcpp/security/server_credentials_impl.h",
     "include/grpcpp/security/tls_credentials_options.h",
     "include/grpcpp/server.h",
-    "include/grpcpp/server_impl.h",
     "include/grpcpp/server_builder.h",
-    "include/grpcpp/server_builder_impl.h",
     "include/grpcpp/server_context.h",
     "include/grpcpp/server_posix.h",
-    "include/grpcpp/server_posix_impl.h",
     "include/grpcpp/support/async_stream.h",
-    "include/grpcpp/support/async_stream_impl.h",
     "include/grpcpp/support/async_unary_call.h",
-    "include/grpcpp/support/async_unary_call_impl.h",
     "include/grpcpp/support/byte_buffer.h",
     "include/grpcpp/support/channel_arguments.h",
-    "include/grpcpp/support/channel_arguments_impl.h",
     "include/grpcpp/support/client_callback.h",
-    "include/grpcpp/support/client_callback_impl.h",
     "include/grpcpp/support/client_interceptor.h",
     "include/grpcpp/support/config.h",
     "include/grpcpp/support/interceptor.h",
@@ -283,7 +269,6 @@
     "include/grpcpp/support/proto_buffer_reader.h",
     "include/grpcpp/support/proto_buffer_writer.h",
     "include/grpcpp/support/server_callback.h",
-    "include/grpcpp/support/server_callback_impl.h",
     "include/grpcpp/support/server_interceptor.h",
     "include/grpcpp/support/slice.h",
     "include/grpcpp/support/status.h",
@@ -291,7 +276,6 @@
     "include/grpcpp/support/string_ref.h",
     "include/grpcpp/support/stub_options.h",
     "include/grpcpp/support/sync_stream.h",
-    "include/grpcpp/support/sync_stream_impl.h",
     "include/grpcpp/support/time.h",
     "include/grpcpp/support/validate_service_config.h",
 ]
@@ -318,12 +302,7 @@
     standalone = True,
     deps = [
         "grpc_common",
-        "grpc_lb_policy_cds",
-        "grpc_lb_policy_eds",
         "grpc_lb_policy_grpclb",
-        "grpc_lb_policy_lrs",
-        "grpc_lb_policy_xds_routing",
-        "grpc_resolver_xds",
     ],
 )
 
@@ -333,17 +312,28 @@
         "src/core/lib/surface/init.cc",
         "src/core/plugin_registry/grpc_plugin_registry.cc",
     ],
+    defines = select({
+        "grpc_no_xds": ["GRPC_NO_XDS"],
+        "//conditions:default": [],
+    }),
     language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS + GRPC_SECURE_PUBLIC_HDRS,
+    select_deps = {
+        "grpc_no_xds": [],
+        "//conditions:default": [
+            "grpc_lb_policy_cds",
+            "grpc_lb_policy_eds",
+            "grpc_lb_policy_eds_drop",
+            "grpc_lb_policy_xds_cluster_manager",
+            "grpc_resolver_xds",
+            "grpc_xds_credentials",
+        ],
+    },
     standalone = True,
     deps = [
+        "grpc_authorization_engine",
         "grpc_common",
-        "grpc_lb_policy_cds_secure",
-        "grpc_lb_policy_eds_secure",
         "grpc_lb_policy_grpclb_secure",
-        "grpc_lb_policy_lrs_secure",
-        "grpc_lb_policy_xds_routing",
-        "grpc_resolver_xds_secure",
         "grpc_secure",
         "grpc_transport_chttp2_client_secure",
         "grpc_transport_chttp2_server_secure",
@@ -416,7 +406,6 @@
     hdrs = [
         "include/grpc++/support/error_details.h",
         "include/grpcpp/support/error_details.h",
-        "include/grpcpp/support/error_details_impl.h",
     ],
     language = "c++",
     standalone = True,
@@ -554,15 +543,16 @@
         "src/core/lib/gprpp/map.h",
         "src/core/lib/gprpp/memory.h",
         "src/core/lib/gprpp/mpscq.h",
-        "src/core/lib/gprpp/string_view.h",
         "src/core/lib/gprpp/sync.h",
         "src/core/lib/gprpp/thd.h",
         "src/core/lib/profiling/timers.h",
     ],
     external_deps = [
+        "absl/base",
         "absl/memory",
         "absl/strings",
         "absl/strings:str_format",
+        "absl/synchronization",
         "absl/time:time",
     ],
     language = "c++",
@@ -619,40 +609,12 @@
 )
 
 grpc_cc_library(
-    name = "inlined_vector",
-    external_deps = [
-        "absl/container:inlined_vector",
-    ],
-    language = "c++",
-    public_hdrs = [
-        "src/core/lib/gprpp/inlined_vector.h",
-    ],
-    deps = [
-        "gpr_base",
-    ],
-)
-
-grpc_cc_library(
     name = "debug_location",
     language = "c++",
     public_hdrs = ["src/core/lib/gprpp/debug_location.h"],
 )
 
 grpc_cc_library(
-    name = "optional",
-    external_deps = [
-        "absl/types:optional",
-    ],
-    language = "c++",
-    public_hdrs = [
-        "src/core/lib/gprpp/optional.h",
-    ],
-    deps = [
-        "gpr_base",
-    ],
-)
-
-grpc_cc_library(
     name = "orphanable",
     language = "c++",
     public_hdrs = ["src/core/lib/gprpp/orphanable.h"],
@@ -679,6 +641,20 @@
 )
 
 grpc_cc_library(
+    name = "dual_ref_counted",
+    language = "c++",
+    public_hdrs = ["src/core/lib/gprpp/dual_ref_counted.h"],
+    deps = [
+        "atomic",
+        "debug_location",
+        "gpr_base",
+        "grpc_trace",
+        "orphanable",
+        "ref_counted_ptr",
+    ],
+)
+
+grpc_cc_library(
     name = "ref_counted_ptr",
     language = "c++",
     public_hdrs = ["src/core/lib/gprpp/ref_counted_ptr.h"],
@@ -755,6 +731,7 @@
         "src/core/lib/iomgr/is_epollexclusive_available.cc",
         "src/core/lib/iomgr/load_file.cc",
         "src/core/lib/iomgr/lockfree_event.cc",
+        "src/core/lib/iomgr/parse_address.cc",
         "src/core/lib/iomgr/polling_entity.cc",
         "src/core/lib/iomgr/pollset.cc",
         "src/core/lib/iomgr/pollset_custom.cc",
@@ -809,6 +786,7 @@
         "src/core/lib/iomgr/wakeup_fd_posix.cc",
         "src/core/lib/iomgr/work_serializer.cc",
         "src/core/lib/json/json_reader.cc",
+        "src/core/lib/json/json_util.cc",
         "src/core/lib/json/json_writer.cc",
         "src/core/lib/slice/b64.cc",
         "src/core/lib/slice/percent_encoding.cc",
@@ -833,6 +811,7 @@
         "src/core/lib/surface/server.cc",
         "src/core/lib/surface/validate_metadata.cc",
         "src/core/lib/surface/version.cc",
+        "src/core/lib/transport/authority_override.cc",
         "src/core/lib/transport/bdp_estimator.cc",
         "src/core/lib/transport/byte_stream.cc",
         "src/core/lib/transport/connectivity_state.cc",
@@ -909,6 +888,7 @@
         "src/core/lib/iomgr/load_file.h",
         "src/core/lib/iomgr/lockfree_event.h",
         "src/core/lib/iomgr/nameser.h",
+        "src/core/lib/iomgr/parse_address.h",
         "src/core/lib/iomgr/polling_entity.h",
         "src/core/lib/iomgr/pollset.h",
         "src/core/lib/iomgr/pollset_custom.h",
@@ -952,13 +932,12 @@
         "src/core/lib/iomgr/wakeup_fd_posix.h",
         "src/core/lib/iomgr/work_serializer.h",
         "src/core/lib/json/json.h",
+        "src/core/lib/json/json_util.h",
         "src/core/lib/slice/b64.h",
         "src/core/lib/slice/percent_encoding.h",
-        "src/core/lib/slice/slice_hash_table.h",
         "src/core/lib/slice/slice_internal.h",
         "src/core/lib/slice/slice_string_helpers.h",
         "src/core/lib/slice/slice_utils.h",
-        "src/core/lib/slice/slice_weak_hash_table.h",
         "src/core/lib/surface/api_trace.h",
         "src/core/lib/surface/call.h",
         "src/core/lib/surface/call_test_only.h",
@@ -972,6 +951,7 @@
         "src/core/lib/surface/lame_client.h",
         "src/core/lib/surface/server.h",
         "src/core/lib/surface/validate_metadata.h",
+        "src/core/lib/transport/authority_override.h",
         "src/core/lib/transport/bdp_estimator.h",
         "src/core/lib/transport/byte_stream.h",
         "src/core/lib/transport/connectivity_state.h",
@@ -990,16 +970,19 @@
     ],
     external_deps = [
         "madler_zlib",
+        "absl/container:inlined_vector",
+        "absl/status",
+        "absl/strings",
+        "absl/types:optional",
     ],
     language = "c++",
     public_hdrs = GRPC_PUBLIC_HDRS,
     deps = [
+        "dual_ref_counted",
         "eventmanager_libuv",
         "gpr_base",
         "grpc_codegen",
         "grpc_trace",
-        "inlined_vector",
-        "optional",
         "orphanable",
         "ref_counted",
         "ref_counted_ptr",
@@ -1056,6 +1039,7 @@
         "src/core/ext/filters/client_channel/client_channel_channelz.cc",
         "src/core/ext/filters/client_channel/client_channel_factory.cc",
         "src/core/ext/filters/client_channel/client_channel_plugin.cc",
+        "src/core/ext/filters/client_channel/config_selector.cc",
         "src/core/ext/filters/client_channel/global_subchannel_pool.cc",
         "src/core/ext/filters/client_channel/health/health_check_client.cc",
         "src/core/ext/filters/client_channel/http_connect_handshaker.cc",
@@ -1064,7 +1048,6 @@
         "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc",
         "src/core/ext/filters/client_channel/lb_policy_registry.cc",
         "src/core/ext/filters/client_channel/local_subchannel_pool.cc",
-        "src/core/ext/filters/client_channel/parse_address.cc",
         "src/core/ext/filters/client_channel/proxy_mapper_registry.cc",
         "src/core/ext/filters/client_channel/resolver.cc",
         "src/core/ext/filters/client_channel/resolver_registry.cc",
@@ -1073,6 +1056,8 @@
         "src/core/ext/filters/client_channel/retry_throttle.cc",
         "src/core/ext/filters/client_channel/server_address.cc",
         "src/core/ext/filters/client_channel/service_config.cc",
+        "src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc",
+        "src/core/ext/filters/client_channel/service_config_parser.cc",
         "src/core/ext/filters/client_channel/subchannel.cc",
         "src/core/ext/filters/client_channel/subchannel_pool_interface.cc",
     ],
@@ -1082,6 +1067,7 @@
         "src/core/ext/filters/client_channel/client_channel.h",
         "src/core/ext/filters/client_channel/client_channel_channelz.h",
         "src/core/ext/filters/client_channel/client_channel_factory.h",
+        "src/core/ext/filters/client_channel/config_selector.h",
         "src/core/ext/filters/client_channel/connector.h",
         "src/core/ext/filters/client_channel/global_subchannel_pool.h",
         "src/core/ext/filters/client_channel/health/health_check_client.h",
@@ -1092,7 +1078,6 @@
         "src/core/ext/filters/client_channel/lb_policy_factory.h",
         "src/core/ext/filters/client_channel/lb_policy_registry.h",
         "src/core/ext/filters/client_channel/local_subchannel_pool.h",
-        "src/core/ext/filters/client_channel/parse_address.h",
         "src/core/ext/filters/client_channel/proxy_mapper.h",
         "src/core/ext/filters/client_channel/proxy_mapper_registry.h",
         "src/core/ext/filters/client_channel/resolver.h",
@@ -1103,10 +1088,15 @@
         "src/core/ext/filters/client_channel/retry_throttle.h",
         "src/core/ext/filters/client_channel/server_address.h",
         "src/core/ext/filters/client_channel/service_config.h",
+        "src/core/ext/filters/client_channel/service_config_call_data.h",
+        "src/core/ext/filters/client_channel/service_config_parser.h",
         "src/core/ext/filters/client_channel/subchannel.h",
         "src/core/ext/filters/client_channel/subchannel_interface.h",
         "src/core/ext/filters/client_channel/subchannel_pool_interface.h",
     ],
+    external_deps = [
+        "absl/container:inlined_vector",
+    ],
     language = "c++",
     deps = [
         "gpr_base",
@@ -1114,7 +1104,6 @@
         "grpc_client_authority_filter",
         "grpc_deadline_filter",
         "grpc_health_upb",
-        "inlined_vector",
         "orphanable",
         "ref_counted",
         "ref_counted_ptr",
@@ -1208,6 +1197,7 @@
     language = "c++",
     deps = [
         "grpc_base",
+        "grpc_message_size_filter",
     ],
 )
 
@@ -1315,52 +1305,56 @@
 )
 
 grpc_cc_library(
-    name = "grpc_xds_client",
-    srcs = [
-        "src/core/ext/filters/client_channel/xds/xds_api.cc",
-        "src/core/ext/filters/client_channel/xds/xds_bootstrap.cc",
-        "src/core/ext/filters/client_channel/xds/xds_channel.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client_stats.cc",
-    ],
+    name = "grpc_xds_api_header",
     hdrs = [
-        "src/core/ext/filters/client_channel/xds/xds_api.h",
-        "src/core/ext/filters/client_channel/xds/xds_bootstrap.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel_args.h",
-        "src/core/ext/filters/client_channel/xds/xds_client.h",
-        "src/core/ext/filters/client_channel/xds/xds_client_stats.h",
+        "src/core/ext/xds/xds_api.h",
+        "src/core/ext/xds/xds_bootstrap.h",
+        "src/core/ext/xds/xds_client_stats.h",
+    ],
+    external_deps = [
+        "upb_lib",
+        "re2",
     ],
     language = "c++",
     deps = [
-        "envoy_ads_upb",
         "grpc_base",
-        "grpc_client_channel",
     ],
 )
 
 grpc_cc_library(
-    name = "grpc_xds_client_secure",
+    name = "grpc_xds_client",
     srcs = [
-        "src/core/ext/filters/client_channel/xds/xds_api.cc",
-        "src/core/ext/filters/client_channel/xds/xds_bootstrap.cc",
-        "src/core/ext/filters/client_channel/xds/xds_channel_secure.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client_stats.cc",
+        "src/core/ext/xds/xds_api.cc",
+        "src/core/ext/xds/xds_bootstrap.cc",
+        "src/core/ext/xds/xds_client.cc",
+        "src/core/ext/xds/xds_client_stats.cc",
     ],
     hdrs = [
-        "src/core/ext/filters/client_channel/xds/xds_api.h",
-        "src/core/ext/filters/client_channel/xds/xds_bootstrap.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel_args.h",
-        "src/core/ext/filters/client_channel/xds/xds_client.h",
-        "src/core/ext/filters/client_channel/xds/xds_client_stats.h",
+        "src/core/ext/xds/xds_channel_args.h",
+        "src/core/ext/xds/xds_client.h",
     ],
     language = "c++",
     deps = [
         "envoy_ads_upb",
         "grpc_base",
         "grpc_client_channel",
+        "grpc_google_mesh_ca_certificate_provider_factory",
+        "grpc_secure",
+        "grpc_xds_api_header",
+    ],
+)
+
+grpc_cc_library(
+    name = "grpc_google_mesh_ca_certificate_provider_factory",
+    srcs = [
+        "src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc",
+    ],
+    hdrs = [
+        "src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h",
+    ],
+    language = "c++",
+    deps = [
+        "grpc_base",
         "grpc_secure",
     ],
 )
@@ -1379,19 +1373,6 @@
 )
 
 grpc_cc_library(
-    name = "grpc_lb_policy_cds_secure",
-    srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/xds/cds.cc",
-    ],
-    language = "c++",
-    deps = [
-        "grpc_base",
-        "grpc_client_channel",
-        "grpc_xds_client_secure",
-    ],
-)
-
-grpc_cc_library(
     name = "grpc_lb_policy_eds",
     srcs = [
         "src/core/ext/filters/client_channel/lb_policy/xds/eds.cc",
@@ -1412,12 +1393,9 @@
 )
 
 grpc_cc_library(
-    name = "grpc_lb_policy_eds_secure",
+    name = "grpc_lb_policy_eds_drop",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/xds/eds.cc",
-    ],
-    hdrs = [
-        "src/core/ext/filters/client_channel/lb_policy/xds/xds.h",
+        "src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc",
     ],
     external_deps = [
         "absl/strings",
@@ -1426,46 +1404,24 @@
     deps = [
         "grpc_base",
         "grpc_client_channel",
-        "grpc_lb_address_filtering",
-        "grpc_xds_client_secure",
-    ],
-)
-
-grpc_cc_library(
-    name = "grpc_lb_policy_lrs",
-    srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc",
-    ],
-    language = "c++",
-    deps = [
-        "grpc_base",
-        "grpc_client_channel",
         "grpc_xds_client",
     ],
 )
 
 grpc_cc_library(
-    name = "grpc_lb_policy_lrs_secure",
+    name = "grpc_lb_policy_xds_cluster_manager",
     srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc",
+        "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc",
+    ],
+    external_deps = [
+        "absl/strings",
     ],
     language = "c++",
     deps = [
         "grpc_base",
         "grpc_client_channel",
-        "grpc_xds_client_secure",
-    ],
-)
-
-grpc_cc_library(
-    name = "grpc_lb_policy_xds_routing",
-    srcs = [
-        "src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc",
-    ],
-    language = "c++",
-    deps = [
-        "grpc_base",
-        "grpc_client_channel",
+        "grpc_resolver_xds_header",
+        "grpc_xds_api_header",
     ],
 )
 
@@ -1613,7 +1569,6 @@
     language = "c++",
     public_hdrs = [
         "include/grpcpp/ext/server_load_reporting.h",
-        "include/grpcpp/ext/server_load_reporting_impl.h",
     ],
     deps = [
         "lb_server_load_reporting_filter",
@@ -1755,6 +1710,14 @@
 )
 
 grpc_cc_library(
+    name = "grpc_resolver_xds_header",
+    hdrs = [
+        "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h",
+    ],
+    language = "c++",
+)
+
+grpc_cc_library(
     name = "grpc_resolver_xds",
     srcs = [
         "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc",
@@ -1768,21 +1731,9 @@
 )
 
 grpc_cc_library(
-    name = "grpc_resolver_xds_secure",
-    srcs = [
-        "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc",
-    ],
-    language = "c++",
-    deps = [
-        "grpc_base",
-        "grpc_client_channel",
-        "grpc_xds_client_secure",
-    ],
-)
-
-grpc_cc_library(
     name = "grpc_secure",
     srcs = [
+        "src/core/ext/xds/certificate_provider_registry.cc",
         "src/core/lib/http/httpcli_security_connector.cc",
         "src/core/lib/security/context/security_context.cc",
         "src/core/lib/security/credentials/alts/alts_credentials.cc",
@@ -1800,6 +1751,7 @@
         "src/core/lib/security/credentials/oauth2/oauth2_credentials.cc",
         "src/core/lib/security/credentials/plugin/plugin_credentials.cc",
         "src/core/lib/security/credentials/ssl/ssl_credentials.cc",
+        "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
         "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
         "src/core/lib/security/credentials/tls/tls_credentials.cc",
         "src/core/lib/security/security_connector/alts/alts_security_connector.cc",
@@ -1816,14 +1768,17 @@
         "src/core/lib/security/transport/secure_endpoint.cc",
         "src/core/lib/security/transport/security_handshaker.cc",
         "src/core/lib/security/transport/server_auth_filter.cc",
-        "src/core/lib/security/transport/target_authority_table.cc",
         "src/core/lib/security/transport/tsi_error.cc",
         "src/core/lib/security/util/json_util.cc",
         "src/core/lib/surface/init_secure.cc",
     ],
     hdrs = [
         "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel_args.h",
+        "src/core/ext/xds/certificate_provider_factory.h",
+        "src/core/ext/xds/certificate_provider_registry.h",
+        "src/core/ext/xds/certificate_provider_store.h",
+        "src/core/ext/xds/xds_channel_args.h",
+        "src/core/lib/security/certificate_provider.h",
         "src/core/lib/security/context/security_context.h",
         "src/core/lib/security/credentials/alts/alts_credentials.h",
         "src/core/lib/security/credentials/composite/composite_credentials.h",
@@ -1838,6 +1793,7 @@
         "src/core/lib/security/credentials/oauth2/oauth2_credentials.h",
         "src/core/lib/security/credentials/plugin/plugin_credentials.h",
         "src/core/lib/security/credentials/ssl/ssl_credentials.h",
+        "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h",
         "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h",
         "src/core/lib/security/credentials/tls/tls_credentials.h",
         "src/core/lib/security/security_connector/alts/alts_security_connector.h",
@@ -1853,7 +1809,6 @@
         "src/core/lib/security/transport/auth_filters.h",
         "src/core/lib/security/transport/secure_endpoint.h",
         "src/core/lib/security/transport/security_handshaker.h",
-        "src/core/lib/security/transport/target_authority_table.h",
         "src/core/lib/security/transport/tsi_error.h",
         "src/core/lib/security/util/json_util.h",
     ],
@@ -1868,6 +1823,60 @@
 )
 
 grpc_cc_library(
+    name = "grpc_xds_credentials",
+    srcs = [
+        "src/core/lib/security/credentials/xds/xds_credentials.cc",
+    ],
+    hdrs = [
+        "src/core/lib/security/credentials/xds/xds_credentials.h",
+    ],
+    deps = [
+        "grpc_secure",
+    ],
+)
+
+grpc_cc_library(
+    name = "grpc_mock_cel",
+    hdrs = [
+        "src/core/lib/security/authorization/mock_cel/activation.h",
+        "src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h",
+        "src/core/lib/security/authorization/mock_cel/cel_expression.h",
+        "src/core/lib/security/authorization/mock_cel/cel_value.h",
+        "src/core/lib/security/authorization/mock_cel/evaluator_core.h",
+        "src/core/lib/security/authorization/mock_cel/flat_expr_builder.h",
+        "src/core/lib/security/authorization/mock_cel/statusor.h",
+    ],
+    language = "c++",
+    deps = [
+        "google_api_upb",
+        "grpc_base",
+    ],
+)
+
+grpc_cc_library(
+    name = "grpc_authorization_engine",
+    srcs = [
+        "src/core/lib/security/authorization/authorization_engine.cc",
+        "src/core/lib/security/authorization/evaluate_args.cc",
+    ],
+    hdrs = [
+        "src/core/lib/security/authorization/authorization_engine.h",
+        "src/core/lib/security/authorization/evaluate_args.h",
+    ],
+    external_deps = [
+        "absl/container:flat_hash_set",
+    ],
+    language = "c++",
+    deps = [
+        "envoy_ads_upb",
+        "google_api_upb",
+        "grpc_base",
+        "grpc_mock_cel",
+        "grpc_secure",
+    ],
+)
+
+grpc_cc_library(
     name = "grpc_transport_chttp2",
     srcs = [
         "src/core/ext/transport/chttp2/transport/bin_decoder.cc",
@@ -2239,9 +2248,7 @@
         "include/grpc++/impl/codegen/time.h",
         "include/grpcpp/impl/codegen/async_generic_service.h",
         "include/grpcpp/impl/codegen/async_stream.h",
-        "include/grpcpp/impl/codegen/async_stream_impl.h",
         "include/grpcpp/impl/codegen/async_unary_call.h",
-        "include/grpcpp/impl/codegen/async_unary_call_impl.h",
         "include/grpcpp/impl/codegen/byte_buffer.h",
         "include/grpcpp/impl/codegen/call.h",
         "include/grpcpp/impl/codegen/call_hook.h",
@@ -2250,13 +2257,10 @@
         "include/grpcpp/impl/codegen/callback_common.h",
         "include/grpcpp/impl/codegen/channel_interface.h",
         "include/grpcpp/impl/codegen/client_callback.h",
-        "include/grpcpp/impl/codegen/client_callback_impl.h",
         "include/grpcpp/impl/codegen/client_context.h",
-        "include/grpcpp/impl/codegen/client_context_impl.h",
         "include/grpcpp/impl/codegen/client_interceptor.h",
         "include/grpcpp/impl/codegen/client_unary_call.h",
         "include/grpcpp/impl/codegen/completion_queue.h",
-        "include/grpcpp/impl/codegen/completion_queue_impl.h",
         "include/grpcpp/impl/codegen/completion_queue_tag.h",
         "include/grpcpp/impl/codegen/config.h",
         "include/grpcpp/impl/codegen/core_codegen_interface.h",
@@ -2269,16 +2273,13 @@
         "include/grpcpp/impl/codegen/message_allocator.h",
         "include/grpcpp/impl/codegen/metadata_map.h",
         "include/grpcpp/impl/codegen/method_handler.h",
-        "include/grpcpp/impl/codegen/method_handler_impl.h",
         "include/grpcpp/impl/codegen/rpc_method.h",
         "include/grpcpp/impl/codegen/rpc_service_method.h",
         "include/grpcpp/impl/codegen/security/auth_context.h",
         "include/grpcpp/impl/codegen/serialization_traits.h",
         "include/grpcpp/impl/codegen/server_callback.h",
         "include/grpcpp/impl/codegen/server_callback_handlers.h",
-        "include/grpcpp/impl/codegen/server_callback_impl.h",
         "include/grpcpp/impl/codegen/server_context.h",
-        "include/grpcpp/impl/codegen/server_context_impl.h",
         "include/grpcpp/impl/codegen/server_interceptor.h",
         "include/grpcpp/impl/codegen/server_interface.h",
         "include/grpcpp/impl/codegen/service_type.h",
@@ -2288,7 +2289,6 @@
         "include/grpcpp/impl/codegen/string_ref.h",
         "include/grpcpp/impl/codegen/stub_options.h",
         "include/grpcpp/impl/codegen/sync_stream.h",
-        "include/grpcpp/impl/codegen/sync_stream_impl.h",
         "include/grpcpp/impl/codegen/time.h",
     ],
     deps = [
@@ -2348,7 +2348,6 @@
     public_hdrs = [
         "include/grpc++/ext/proto_server_reflection_plugin.h",
         "include/grpcpp/ext/proto_server_reflection_plugin.h",
-        "include/grpcpp/ext/proto_server_reflection_plugin_impl.h",
     ],
     deps = [
         ":grpc++",
@@ -2508,64 +2507,68 @@
 grpc_cc_library(
     name = "envoy_ads_upb",
     srcs = [
-        "src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/eds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/lds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/rds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/route.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/srds.upb.c",
-        "src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c",
-        "src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c",
-        "src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c",
-        "src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c",
-        "src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c",
+        "src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c",
+        "src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c",
+        "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c",
+        "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c",
+        "src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c",
+        "src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c",
+        "src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c",
     ],
     hdrs = [
-        "src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/eds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/lds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/rds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/route.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/srds.upb.h",
-        "src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h",
-        "src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h",
-        "src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h",
-        "src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h",
-        "src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h",
+        "src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h",
+        "src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h",
+        "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h",
+        "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h",
+        "src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h",
+        "src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h",
+        "src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h",
     ],
     external_deps = [
         "upb_lib",
@@ -2578,6 +2581,7 @@
         ":google_api_upb",
         ":proto_gen_validate_upb",
         ":udpa_annotations_upb",
+        ":udpa_core_upb",
     ],
 )
 
@@ -2603,22 +2607,34 @@
 grpc_cc_library(
     name = "envoy_core_upb",
     srcs = [
-        "src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c",
     ],
     hdrs = [
-        "src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h",
     ],
     external_deps = [
         "upb_lib",
@@ -2630,30 +2646,39 @@
         ":google_api_upb",
         ":proto_gen_validate_upb",
         ":udpa_annotations_upb",
+        ":udpa_core_upb",
     ],
 )
 
 grpc_cc_library(
     name = "envoy_type_upb",
     srcs = [
-        "src/core/ext/upb-generated/envoy/type/http.upb.c",
-        "src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c",
-        "src/core/ext/upb-generated/envoy/type/matcher/string.upb.c",
-        "src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c",
-        "src/core/ext/upb-generated/envoy/type/percent.upb.c",
-        "src/core/ext/upb-generated/envoy/type/range.upb.c",
-        "src/core/ext/upb-generated/envoy/type/semantic_version.upb.c",
-        "src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c",
+        "src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c",
+        "src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/http.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/percent.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/range.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c",
     ],
     hdrs = [
-        "src/core/ext/upb-generated/envoy/type/http.upb.h",
-        "src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h",
-        "src/core/ext/upb-generated/envoy/type/matcher/string.upb.h",
-        "src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h",
-        "src/core/ext/upb-generated/envoy/type/percent.upb.h",
-        "src/core/ext/upb-generated/envoy/type/range.upb.h",
-        "src/core/ext/upb-generated/envoy/type/semantic_version.upb.h",
-        "src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h",
+        "src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h",
+        "src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/http.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/percent.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/range.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h",
     ],
     external_deps = [
         "upb_lib",
@@ -2670,11 +2695,9 @@
 grpc_cc_library(
     name = "proto_gen_validate_upb",
     srcs = [
-        "src/core/ext/upb-generated/gogoproto/gogo.upb.c",
         "src/core/ext/upb-generated/validate/validate.upb.c",
     ],
     hdrs = [
-        "src/core/ext/upb-generated/gogoproto/gogo.upb.h",
         "src/core/ext/upb-generated/validate/validate.upb.h",
     ],
     external_deps = [
@@ -2713,11 +2736,17 @@
     name = "udpa_annotations_upb",
     srcs = [
         "src/core/ext/upb-generated/udpa/annotations/migrate.upb.c",
+        "src/core/ext/upb-generated/udpa/annotations/security.upb.c",
         "src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c",
+        "src/core/ext/upb-generated/udpa/annotations/status.upb.c",
+        "src/core/ext/upb-generated/udpa/annotations/versioning.upb.c",
     ],
     hdrs = [
         "src/core/ext/upb-generated/udpa/annotations/migrate.upb.h",
+        "src/core/ext/upb-generated/udpa/annotations/security.upb.h",
         "src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h",
+        "src/core/ext/upb-generated/udpa/annotations/status.upb.h",
+        "src/core/ext/upb-generated/udpa/annotations/versioning.upb.h",
     ],
     external_deps = [
         "upb_lib",
@@ -2725,6 +2754,36 @@
     language = "c++",
     deps = [
         ":google_api_upb",
+        ":proto_gen_validate_upb",
+    ],
+)
+
+grpc_cc_library(
+    name = "udpa_core_upb",
+    srcs = [
+        "src/core/ext/upb-generated/udpa/core/v1/authority.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/resource.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c",
+    ],
+    hdrs = [
+        "src/core/ext/upb-generated/udpa/core/v1/authority.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/resource.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h",
+    ],
+    external_deps = [
+        "upb_lib",
+    ],
+    language = "c++",
+    deps = [
+        ":google_api_upb",
+        ":proto_gen_validate_upb",
+        ":udpa_annotations_upb",
     ],
 )
 
@@ -2753,6 +2812,8 @@
     name = "google_api_upb",
     srcs = [
         "src/core/ext/upb-generated/google/api/annotations.upb.c",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c",
         "src/core/ext/upb-generated/google/api/http.upb.c",
         "src/core/ext/upb-generated/google/protobuf/any.upb.c",
         "src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
@@ -2765,6 +2826,8 @@
     ],
     hdrs = [
         "src/core/ext/upb-generated/google/api/annotations.upb.h",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h",
         "src/core/ext/upb-generated/google/api/http.upb.h",
         "src/core/ext/upb-generated/google/protobuf/any.upb.h",
         "src/core/ext/upb-generated/google/protobuf/descriptor.upb.h",
@@ -2804,6 +2867,26 @@
     ],
 )
 
+# Once upb code-gen issue is resolved, replace meshca_upb with this.
+# meshca_upb_proto_library(
+#     name = "meshca_upb",
+#     deps = ["//third_party/istio/security/proto/providers/google:meshca_proto"],
+# )
+
+grpc_cc_library(
+    name = "meshca_upb",
+    srcs = [
+        "src/core/ext/upb-generated/third_party/istio/security/proto/providers/google/meshca.upb.c",
+    ],
+    hdrs = [
+        "src/core/ext/upb-generated/third_party/istio/security/proto/providers/google/meshca.upb.h",
+    ],
+    language = "c++",
+    deps = [
+        "google_api_upb",
+    ],
+)
+
 # Once upb code-gen issue is resolved, replace alts_upb with this.
 # grpc_upb_proto_library(
 #     name = "alts_upb",
diff --git a/grpc/BUILD.gn b/grpc/BUILD.gn
index 6c3db9a..221f636 100644
--- a/grpc/BUILD.gn
+++ b/grpc/BUILD.gn
@@ -160,7 +160,6 @@
         "src/core/lib/gprpp/memory.h",
         "src/core/lib/gprpp/mpscq.cc",
         "src/core/lib/gprpp/mpscq.h",
-        "src/core/lib/gprpp/string_view.h",
         "src/core/lib/gprpp/sync.h",
         "src/core/lib/gprpp/thd.h",
         "src/core/lib/gprpp/thd_posix.cc",
@@ -171,9 +170,11 @@
     ]
     deps = [
         ":absl/time:time",
+        ":absl/synchronization:synchronization",
         ":absl/strings:strings",
         ":absl/strings:str_format",
         ":absl/memory:memory",
+        ":absl/base:base",
     ]
     
     public_configs = [
@@ -212,6 +213,8 @@
         "src/core/ext/filters/client_channel/client_channel_factory.cc",
         "src/core/ext/filters/client_channel/client_channel_factory.h",
         "src/core/ext/filters/client_channel/client_channel_plugin.cc",
+        "src/core/ext/filters/client_channel/config_selector.cc",
+        "src/core/ext/filters/client_channel/config_selector.h",
         "src/core/ext/filters/client_channel/connector.h",
         "src/core/ext/filters/client_channel/global_subchannel_pool.cc",
         "src/core/ext/filters/client_channel/global_subchannel_pool.h",
@@ -246,16 +249,14 @@
         "src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc",
         "src/core/ext/filters/client_channel/lb_policy/xds/cds.cc",
         "src/core/ext/filters/client_channel/lb_policy/xds/eds.cc",
-        "src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc",
+        "src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc",
         "src/core/ext/filters/client_channel/lb_policy/xds/xds.h",
-        "src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc",
+        "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc",
         "src/core/ext/filters/client_channel/lb_policy_factory.h",
         "src/core/ext/filters/client_channel/lb_policy_registry.cc",
         "src/core/ext/filters/client_channel/lb_policy_registry.h",
         "src/core/ext/filters/client_channel/local_subchannel_pool.cc",
         "src/core/ext/filters/client_channel/local_subchannel_pool.h",
-        "src/core/ext/filters/client_channel/parse_address.cc",
-        "src/core/ext/filters/client_channel/parse_address.h",
         "src/core/ext/filters/client_channel/proxy_mapper.h",
         "src/core/ext/filters/client_channel/proxy_mapper_registry.cc",
         "src/core/ext/filters/client_channel/proxy_mapper_registry.h",
@@ -280,6 +281,7 @@
         "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h",
         "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
         "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc",
+        "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h",
         "src/core/ext/filters/client_channel/resolver_factory.h",
         "src/core/ext/filters/client_channel/resolver_registry.cc",
         "src/core/ext/filters/client_channel/resolver_registry.h",
@@ -293,22 +295,15 @@
         "src/core/ext/filters/client_channel/server_address.h",
         "src/core/ext/filters/client_channel/service_config.cc",
         "src/core/ext/filters/client_channel/service_config.h",
+        "src/core/ext/filters/client_channel/service_config_call_data.h",
+        "src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc",
+        "src/core/ext/filters/client_channel/service_config_parser.cc",
+        "src/core/ext/filters/client_channel/service_config_parser.h",
         "src/core/ext/filters/client_channel/subchannel.cc",
         "src/core/ext/filters/client_channel/subchannel.h",
         "src/core/ext/filters/client_channel/subchannel_interface.h",
         "src/core/ext/filters/client_channel/subchannel_pool_interface.cc",
         "src/core/ext/filters/client_channel/subchannel_pool_interface.h",
-        "src/core/ext/filters/client_channel/xds/xds_api.cc",
-        "src/core/ext/filters/client_channel/xds/xds_api.h",
-        "src/core/ext/filters/client_channel/xds/xds_bootstrap.cc",
-        "src/core/ext/filters/client_channel/xds/xds_bootstrap.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel_args.h",
-        "src/core/ext/filters/client_channel/xds/xds_channel_secure.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client.h",
-        "src/core/ext/filters/client_channel/xds/xds_client_stats.cc",
-        "src/core/ext/filters/client_channel/xds/xds_client_stats.h",
         "src/core/ext/filters/client_idle/client_idle_filter.cc",
         "src/core/ext/filters/deadline/deadline_filter.cc",
         "src/core/ext/filters/deadline/deadline_filter.h",
@@ -396,96 +391,122 @@
         "src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h",
         "src/core/ext/upb-generated/envoy/annotations/resource.upb.c",
         "src/core/ext/upb-generated/envoy/annotations/resource.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/eds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/eds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/lds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/lds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/rds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/rds.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/route.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/route.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h",
-        "src/core/ext/upb-generated/envoy/api/v2/srds.upb.c",
-        "src/core/ext/upb-generated/envoy/api/v2/srds.upb.h",
-        "src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c",
-        "src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h",
-        "src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c",
-        "src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h",
-        "src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c",
-        "src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h",
-        "src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c",
-        "src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h",
-        "src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c",
-        "src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h",
-        "src/core/ext/upb-generated/envoy/type/http.upb.c",
-        "src/core/ext/upb-generated/envoy/type/http.upb.h",
-        "src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c",
-        "src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h",
-        "src/core/ext/upb-generated/envoy/type/matcher/string.upb.c",
-        "src/core/ext/upb-generated/envoy/type/matcher/string.upb.h",
-        "src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c",
-        "src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h",
-        "src/core/ext/upb-generated/envoy/type/percent.upb.c",
-        "src/core/ext/upb-generated/envoy/type/percent.upb.h",
-        "src/core/ext/upb-generated/envoy/type/range.upb.c",
-        "src/core/ext/upb-generated/envoy/type/range.upb.h",
-        "src/core/ext/upb-generated/envoy/type/semantic_version.upb.c",
-        "src/core/ext/upb-generated/envoy/type/semantic_version.upb.h",
-        "src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c",
-        "src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h",
-        "src/core/ext/upb-generated/gogoproto/gogo.upb.c",
-        "src/core/ext/upb-generated/gogoproto/gogo.upb.h",
+        "src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c",
+        "src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c",
+        "src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h",
+        "src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c",
+        "src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c",
+        "src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c",
+        "src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h",
+        "src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c",
+        "src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c",
+        "src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h",
+        "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c",
+        "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h",
+        "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c",
+        "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c",
+        "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h",
+        "src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c",
+        "src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h",
+        "src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c",
+        "src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h",
+        "src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h",
+        "src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c",
+        "src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c",
+        "src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h",
+        "src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c",
+        "src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h",
+        "src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c",
+        "src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/http.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/http.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/percent.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/percent.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/range.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/range.upb.h",
+        "src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c",
+        "src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h",
         "src/core/ext/upb-generated/google/api/annotations.upb.c",
         "src/core/ext/upb-generated/google/api/annotations.upb.h",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c",
+        "src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h",
         "src/core/ext/upb-generated/google/api/http.upb.c",
         "src/core/ext/upb-generated/google/api/http.upb.h",
         "src/core/ext/upb-generated/google/protobuf/any.upb.c",
@@ -516,12 +537,45 @@
         "src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h",
         "src/core/ext/upb-generated/udpa/annotations/migrate.upb.c",
         "src/core/ext/upb-generated/udpa/annotations/migrate.upb.h",
+        "src/core/ext/upb-generated/udpa/annotations/security.upb.c",
+        "src/core/ext/upb-generated/udpa/annotations/security.upb.h",
         "src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c",
         "src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h",
+        "src/core/ext/upb-generated/udpa/annotations/status.upb.c",
+        "src/core/ext/upb-generated/udpa/annotations/status.upb.h",
+        "src/core/ext/upb-generated/udpa/annotations/versioning.upb.c",
+        "src/core/ext/upb-generated/udpa/annotations/versioning.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/authority.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/authority.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/resource.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/resource.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c",
+        "src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h",
         "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c",
         "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h",
         "src/core/ext/upb-generated/validate/validate.upb.c",
         "src/core/ext/upb-generated/validate/validate.upb.h",
+        "src/core/ext/xds/certificate_provider_factory.h",
+        "src/core/ext/xds/certificate_provider_registry.cc",
+        "src/core/ext/xds/certificate_provider_registry.h",
+        "src/core/ext/xds/certificate_provider_store.h",
+        "src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc",
+        "src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h",
+        "src/core/ext/xds/xds_api.cc",
+        "src/core/ext/xds/xds_api.h",
+        "src/core/ext/xds/xds_bootstrap.cc",
+        "src/core/ext/xds/xds_bootstrap.h",
+        "src/core/ext/xds/xds_channel_args.h",
+        "src/core/ext/xds/xds_client.cc",
+        "src/core/ext/xds/xds_client.h",
+        "src/core/ext/xds/xds_client_stats.cc",
+        "src/core/ext/xds/xds_client_stats.h",
         "src/core/lib/avl/avl.cc",
         "src/core/lib/avl/avl.h",
         "src/core/lib/backoff/backoff.cc",
@@ -570,8 +624,7 @@
         "src/core/lib/debug/trace.h",
         "src/core/lib/gprpp/atomic.h",
         "src/core/lib/gprpp/debug_location.h",
-        "src/core/lib/gprpp/inlined_vector.h",
-        "src/core/lib/gprpp/optional.h",
+        "src/core/lib/gprpp/dual_ref_counted.h",
         "src/core/lib/gprpp/orphanable.h",
         "src/core/lib/gprpp/ref_counted.h",
         "src/core/lib/gprpp/ref_counted_ptr.h",
@@ -657,6 +710,8 @@
         "src/core/lib/iomgr/lockfree_event.cc",
         "src/core/lib/iomgr/lockfree_event.h",
         "src/core/lib/iomgr/nameser.h",
+        "src/core/lib/iomgr/parse_address.cc",
+        "src/core/lib/iomgr/parse_address.h",
         "src/core/lib/iomgr/poller/eventmanager_libuv.cc",
         "src/core/lib/iomgr/poller/eventmanager_libuv.h",
         "src/core/lib/iomgr/polling_entity.cc",
@@ -756,7 +811,21 @@
         "src/core/lib/iomgr/work_serializer.h",
         "src/core/lib/json/json.h",
         "src/core/lib/json/json_reader.cc",
+        "src/core/lib/json/json_util.cc",
+        "src/core/lib/json/json_util.h",
         "src/core/lib/json/json_writer.cc",
+        "src/core/lib/security/authorization/authorization_engine.cc",
+        "src/core/lib/security/authorization/authorization_engine.h",
+        "src/core/lib/security/authorization/evaluate_args.cc",
+        "src/core/lib/security/authorization/evaluate_args.h",
+        "src/core/lib/security/authorization/mock_cel/activation.h",
+        "src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h",
+        "src/core/lib/security/authorization/mock_cel/cel_expression.h",
+        "src/core/lib/security/authorization/mock_cel/cel_value.h",
+        "src/core/lib/security/authorization/mock_cel/evaluator_core.h",
+        "src/core/lib/security/authorization/mock_cel/flat_expr_builder.h",
+        "src/core/lib/security/authorization/mock_cel/statusor.h",
+        "src/core/lib/security/certificate_provider.h",
         "src/core/lib/security/context/security_context.cc",
         "src/core/lib/security/context/security_context.h",
         "src/core/lib/security/credentials/alts/alts_credentials.cc",
@@ -796,10 +865,14 @@
         "src/core/lib/security/credentials/plugin/plugin_credentials.h",
         "src/core/lib/security/credentials/ssl/ssl_credentials.cc",
         "src/core/lib/security/credentials/ssl/ssl_credentials.h",
+        "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
+        "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h",
         "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
         "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h",
         "src/core/lib/security/credentials/tls/tls_credentials.cc",
         "src/core/lib/security/credentials/tls/tls_credentials.h",
+        "src/core/lib/security/credentials/xds/xds_credentials.cc",
+        "src/core/lib/security/credentials/xds/xds_credentials.h",
         "src/core/lib/security/security_connector/alts/alts_security_connector.cc",
         "src/core/lib/security/security_connector/alts/alts_security_connector.h",
         "src/core/lib/security/security_connector/fake/fake_security_connector.cc",
@@ -827,8 +900,6 @@
         "src/core/lib/security/transport/security_handshaker.cc",
         "src/core/lib/security/transport/security_handshaker.h",
         "src/core/lib/security/transport/server_auth_filter.cc",
-        "src/core/lib/security/transport/target_authority_table.cc",
-        "src/core/lib/security/transport/target_authority_table.h",
         "src/core/lib/security/transport/tsi_error.cc",
         "src/core/lib/security/transport/tsi_error.h",
         "src/core/lib/security/util/json_util.cc",
@@ -839,13 +910,11 @@
         "src/core/lib/slice/percent_encoding.h",
         "src/core/lib/slice/slice.cc",
         "src/core/lib/slice/slice_buffer.cc",
-        "src/core/lib/slice/slice_hash_table.h",
         "src/core/lib/slice/slice_intern.cc",
         "src/core/lib/slice/slice_internal.h",
         "src/core/lib/slice/slice_string_helpers.cc",
         "src/core/lib/slice/slice_string_helpers.h",
         "src/core/lib/slice/slice_utils.h",
-        "src/core/lib/slice/slice_weak_hash_table.h",
         "src/core/lib/surface/api_trace.cc",
         "src/core/lib/surface/api_trace.h",
         "src/core/lib/surface/byte_buffer.cc",
@@ -879,6 +948,8 @@
         "src/core/lib/surface/validate_metadata.cc",
         "src/core/lib/surface/validate_metadata.h",
         "src/core/lib/surface/version.cc",
+        "src/core/lib/transport/authority_override.cc",
+        "src/core/lib/transport/authority_override.h",
         "src/core/lib/transport/bdp_estimator.cc",
         "src/core/lib/transport/bdp_estimator.h",
         "src/core/lib/transport/byte_stream.cc",
@@ -972,7 +1043,9 @@
         ":upb",
         ":absl/types:optional",
         ":absl/strings:strings",
+        ":absl/status:status",
         ":absl/container:inlined_vector",
+        ":absl/container:flat_hash_set",
         "//third_party/cares",
         ":address_sorting",
     ]
@@ -1068,31 +1141,22 @@
         "include/grpc++/support/sync_stream.h",
         "include/grpc++/support/time.h",
         "include/grpcpp/alarm.h",
-        "include/grpcpp/alarm_impl.h",
         "include/grpcpp/channel.h",
-        "include/grpcpp/channel_impl.h",
         "include/grpcpp/client_context.h",
         "include/grpcpp/completion_queue.h",
-        "include/grpcpp/completion_queue_impl.h",
         "include/grpcpp/create_channel.h",
-        "include/grpcpp/create_channel_impl.h",
         "include/grpcpp/create_channel_posix.h",
-        "include/grpcpp/create_channel_posix_impl.h",
         "include/grpcpp/ext/health_check_service_server_builder_option.h",
         "include/grpcpp/generic/async_generic_service.h",
         "include/grpcpp/generic/generic_stub.h",
-        "include/grpcpp/generic/generic_stub_impl.h",
         "include/grpcpp/grpcpp.h",
         "include/grpcpp/health_check_service_interface.h",
-        "include/grpcpp/health_check_service_interface_impl.h",
         "include/grpcpp/impl/call.h",
         "include/grpcpp/impl/channel_argument_option.h",
         "include/grpcpp/impl/client_unary_call.h",
         "include/grpcpp/impl/codegen/async_generic_service.h",
         "include/grpcpp/impl/codegen/async_stream.h",
-        "include/grpcpp/impl/codegen/async_stream_impl.h",
         "include/grpcpp/impl/codegen/async_unary_call.h",
-        "include/grpcpp/impl/codegen/async_unary_call_impl.h",
         "include/grpcpp/impl/codegen/byte_buffer.h",
         "include/grpcpp/impl/codegen/call.h",
         "include/grpcpp/impl/codegen/call_hook.h",
@@ -1101,13 +1165,10 @@
         "include/grpcpp/impl/codegen/callback_common.h",
         "include/grpcpp/impl/codegen/channel_interface.h",
         "include/grpcpp/impl/codegen/client_callback.h",
-        "include/grpcpp/impl/codegen/client_callback_impl.h",
         "include/grpcpp/impl/codegen/client_context.h",
-        "include/grpcpp/impl/codegen/client_context_impl.h",
         "include/grpcpp/impl/codegen/client_interceptor.h",
         "include/grpcpp/impl/codegen/client_unary_call.h",
         "include/grpcpp/impl/codegen/completion_queue.h",
-        "include/grpcpp/impl/codegen/completion_queue_impl.h",
         "include/grpcpp/impl/codegen/completion_queue_tag.h",
         "include/grpcpp/impl/codegen/config.h",
         "include/grpcpp/impl/codegen/config_protobuf.h",
@@ -1122,7 +1183,6 @@
         "include/grpcpp/impl/codegen/message_allocator.h",
         "include/grpcpp/impl/codegen/metadata_map.h",
         "include/grpcpp/impl/codegen/method_handler.h",
-        "include/grpcpp/impl/codegen/method_handler_impl.h",
         "include/grpcpp/impl/codegen/proto_buffer_reader.h",
         "include/grpcpp/impl/codegen/proto_buffer_writer.h",
         "include/grpcpp/impl/codegen/proto_utils.h",
@@ -1132,9 +1192,7 @@
         "include/grpcpp/impl/codegen/serialization_traits.h",
         "include/grpcpp/impl/codegen/server_callback.h",
         "include/grpcpp/impl/codegen/server_callback_handlers.h",
-        "include/grpcpp/impl/codegen/server_callback_impl.h",
         "include/grpcpp/impl/codegen/server_context.h",
-        "include/grpcpp/impl/codegen/server_context_impl.h",
         "include/grpcpp/impl/codegen/server_interceptor.h",
         "include/grpcpp/impl/codegen/server_interface.h",
         "include/grpcpp/impl/codegen/service_type.h",
@@ -1145,7 +1203,6 @@
         "include/grpcpp/impl/codegen/stub_options.h",
         "include/grpcpp/impl/codegen/sync.h",
         "include/grpcpp/impl/codegen/sync_stream.h",
-        "include/grpcpp/impl/codegen/sync_stream_impl.h",
         "include/grpcpp/impl/codegen/time.h",
         "include/grpcpp/impl/grpc_library.h",
         "include/grpcpp/impl/method_handler_impl.h",
@@ -1153,37 +1210,24 @@
         "include/grpcpp/impl/rpc_service_method.h",
         "include/grpcpp/impl/serialization_traits.h",
         "include/grpcpp/impl/server_builder_option.h",
-        "include/grpcpp/impl/server_builder_option_impl.h",
         "include/grpcpp/impl/server_builder_plugin.h",
         "include/grpcpp/impl/server_initializer.h",
-        "include/grpcpp/impl/server_initializer_impl.h",
         "include/grpcpp/impl/service_type.h",
         "include/grpcpp/resource_quota.h",
-        "include/grpcpp/resource_quota_impl.h",
         "include/grpcpp/security/auth_context.h",
         "include/grpcpp/security/auth_metadata_processor.h",
-        "include/grpcpp/security/auth_metadata_processor_impl.h",
         "include/grpcpp/security/credentials.h",
-        "include/grpcpp/security/credentials_impl.h",
         "include/grpcpp/security/server_credentials.h",
-        "include/grpcpp/security/server_credentials_impl.h",
         "include/grpcpp/security/tls_credentials_options.h",
         "include/grpcpp/server.h",
         "include/grpcpp/server_builder.h",
-        "include/grpcpp/server_builder_impl.h",
         "include/grpcpp/server_context.h",
-        "include/grpcpp/server_impl.h",
         "include/grpcpp/server_posix.h",
-        "include/grpcpp/server_posix_impl.h",
         "include/grpcpp/support/async_stream.h",
-        "include/grpcpp/support/async_stream_impl.h",
         "include/grpcpp/support/async_unary_call.h",
-        "include/grpcpp/support/async_unary_call_impl.h",
         "include/grpcpp/support/byte_buffer.h",
         "include/grpcpp/support/channel_arguments.h",
-        "include/grpcpp/support/channel_arguments_impl.h",
         "include/grpcpp/support/client_callback.h",
-        "include/grpcpp/support/client_callback_impl.h",
         "include/grpcpp/support/client_interceptor.h",
         "include/grpcpp/support/config.h",
         "include/grpcpp/support/interceptor.h",
@@ -1192,7 +1236,6 @@
         "include/grpcpp/support/proto_buffer_reader.h",
         "include/grpcpp/support/proto_buffer_writer.h",
         "include/grpcpp/support/server_callback.h",
-        "include/grpcpp/support/server_callback_impl.h",
         "include/grpcpp/support/server_interceptor.h",
         "include/grpcpp/support/slice.h",
         "include/grpcpp/support/status.h",
@@ -1200,10 +1243,10 @@
         "include/grpcpp/support/string_ref.h",
         "include/grpcpp/support/stub_options.h",
         "include/grpcpp/support/sync_stream.h",
-        "include/grpcpp/support/sync_stream_impl.h",
         "include/grpcpp/support/time.h",
         "include/grpcpp/support/validate_service_config.h",
         "src/cpp/client/channel_cc.cc",
+        "src/cpp/client/client_callback.cc",
         "src/cpp/client/client_context.cc",
         "src/cpp/client/client_interceptor.cc",
         "src/cpp/client/create_channel.cc",
diff --git a/grpc/BUILDING.md b/grpc/BUILDING.md
index a113700..e9f0823 100644
--- a/grpc/BUILDING.md
+++ b/grpc/BUILDING.md
@@ -172,13 +172,23 @@
 
 ### Dependency management
 
-gRPC's CMake build system provides two modes for handling dependencies.
-* module - build dependencies alongside gRPC.
-* package - use external copies of dependencies that are already available
-on your system.
+gRPC's CMake build system has two options for handling dependencies.
+CMake can build the dependencies for you, or it can search for libraries
+that are already installed on your system and use them to build gRPC.
 
 This behavior is controlled by the `gRPC_<depname>_PROVIDER` CMake variables,
-ie `gRPC_CARES_PROVIDER`.
+e.g. `gRPC_CARES_PROVIDER`. The options that these variables take are as follows:
+
+* module - build dependencies alongside gRPC. The source code is obtained from
+gRPC's git submodules.
+* package - use external copies of dependencies that are already available
+on your system. These could come from your system package manager, or perhaps
+you pre-installed them using CMake with the `CMAKE_INSTALL_PREFIX` option.
+
+For example, if you set `gRPC_CARES_PROVIDER=module`, then CMake will build
+c-ares before building gRPC. On the other hand, if you set
+`gRPC_CARES_PROVIDER=package`, then CMake will search for a copy of c-ares
+that's already installed on your system and use it to build gRPC.
 
 ### Install after build
 
@@ -193,8 +203,8 @@
 in "module" mode and install them alongside gRPC in a single step.
 [Example](test/distrib/cpp/run_distrib_test_cmake_module_install.sh)
 
-If you are using an older version of gRPC, you will need to select "package"
-mode (rather than "module" mode) for the dependencies.
+If you are building gRPC < 1.27 or if you are using CMake < 3.13 you will need
+to select "package" mode (rather than "module" mode) for the dependencies.
 This means you will need to have external copies of these libraries available
 on your system. This [example](test/distrib/cpp/run_distrib_test_cmake.sh) shows
 how to install dependencies with cmake before proceeding to installing gRPC itself. 
@@ -206,6 +216,7 @@
               -DgRPC_ABSL_PROVIDER=package     \
               -DgRPC_CARES_PROVIDER=package    \
               -DgRPC_PROTOBUF_PROVIDER=package \
+              -DgRPC_RE2_PROVIDER=package      \
               -DgRPC_SSL_PROVIDER=package      \
               -DgRPC_ZLIB_PROVIDER=package
 $ make
diff --git a/grpc/CMakeLists.txt b/grpc/CMakeLists.txt
index 8561c67..1911144 100644
--- a/grpc/CMakeLists.txt
+++ b/grpc/CMakeLists.txt
@@ -25,12 +25,12 @@
 cmake_minimum_required(VERSION 3.5.1)
 
 set(PACKAGE_NAME          "grpc")
-set(PACKAGE_VERSION       "1.29.1")
-set(gRPC_CORE_VERSION     "10.0.0")
-set(gRPC_CORE_SOVERSION   "10")
-set(gRPC_CPP_VERSION      "1.29.1")
+set(PACKAGE_VERSION       "1.33.1")
+set(gRPC_CORE_VERSION     "13.0.0")
+set(gRPC_CORE_SOVERSION   "13")
+set(gRPC_CPP_VERSION      "1.33.1")
 set(gRPC_CPP_SOVERSION    "1")
-set(gRPC_CSHARP_VERSION   "2.29.1")
+set(gRPC_CSHARP_VERSION   "2.33.1")
 set(gRPC_CSHARP_SOVERSION "2")
 set(PACKAGE_STRING        "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 set(PACKAGE_TARNAME       "${PACKAGE_NAME}-${PACKAGE_VERSION}")
@@ -75,6 +75,9 @@
 set(gRPC_CARES_PROVIDER "module" CACHE STRING "Provider of c-ares library")
 set_property(CACHE gRPC_CARES_PROVIDER PROPERTY STRINGS "module" "package")
 
+set(gRPC_RE2_PROVIDER "module" CACHE STRING "Provider of re2 library")
+set_property(CACHE gRPC_RE2_PROVIDER PROPERTY STRINGS "module" "package")
+
 set(gRPC_SSL_PROVIDER "module" CACHE STRING "Provider of ssl library")
 set_property(CACHE gRPC_SSL_PROVIDER PROPERTY STRINGS "module" "package")
 
@@ -100,36 +103,64 @@
 
 set(gRPC_ABSL_USED_TARGETS
   absl_algorithm
+  absl_algorithm_container
   absl_atomic_hook
   absl_bad_optional_access
+  absl_bad_variant_access
   absl_base
   absl_base_internal
   absl_bits
+  absl_city
   absl_civil_time
   absl_compressed_tuple
   absl_config
+  absl_container_common
+  absl_container_memory
+  absl_cord
   absl_core_headers
+  absl_debugging_internal
+  absl_demangle_internal
   absl_dynamic_annotations
   absl_endian
   absl_errno_saver
+  absl_exponential_biased
+  absl_fixed_array
+  absl_flat_hash_set
+  absl_function_ref
+  absl_graphcycles_internal
+  absl_hash
+  absl_hash_function_defaults
+  absl_hash_policy_traits
+  absl_hashtable_debug_hooks
+  absl_hashtablez_sampler
+  absl_have_sse
   absl_inlined_vector
   absl_inlined_vector_internal
   absl_int128
+  absl_kernel_timeout_internal
+  absl_layout
   absl_log_severity
+  absl_malloc_internal
   absl_memory
   absl_optional
+  absl_raw_hash_set
   absl_raw_logging_internal
   absl_span
   absl_spinlock_wait
+  absl_stacktrace
+  absl_status
   absl_str_format
   absl_str_format_internal
   absl_strings
   absl_strings_internal
+  absl_symbolize
+  absl_synchronization
   absl_throw_delegate
   absl_time
   absl_time_zone
   absl_type_traits
   absl_utility
+  absl_variant
   absl_meta
 )
 
@@ -153,14 +184,28 @@
 endif()
 
  # Use C99 standard
-set(CMAKE_C_STANDARD 99)
+if (NOT DEFINED CMAKE_C_STANDARD)
+  set(CMAKE_C_STANDARD 99)
+endif()
 
 # Add c++11 flags
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
+if (NOT DEFINED CMAKE_CXX_STANDARD)
+  set(CMAKE_CXX_STANDARD 11)
+else()
+  if (CMAKE_CXX_STANDARD LESS 11)
+    message(FATAL_ERROR "CMAKE_CXX_STANDARD is less than 11, please specify at least SET(CMAKE_CXX_STANDARD 11)")
+  endif()
+endif()
+if (NOT DEFINED CMAKE_CXX_STANDARD_REQUIRED)
+  set(CMAKE_CXX_STANDARD_REQUIRED ON)
+endif()
+if (NOT DEFINED CMAKE_CXX_EXTENSIONS)
+  set(CMAKE_CXX_EXTENSIONS OFF)
+endif()
 
-set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+if (NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
+  set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+endif()
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
 
 if(MSVC)
@@ -175,6 +220,9 @@
   # TODO(jtattermusch): needed to build boringssl with VS2017, revisit later
   set(_gRPC_C_CXX_FLAGS "${_gRPC_C_CXX_FLAGS} /wd4987 /wd4774 /wd4819 /wd4996 /wd4619")
 endif()
+if (MINGW)
+  add_definitions(-D_WIN32_WINNT=0x600)
+endif()
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_gRPC_C_CXX_FLAGS}")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_gRPC_C_CXX_FLAGS}")
 
@@ -205,6 +253,7 @@
 include(cmake/cares.cmake)
 include(cmake/gflags.cmake)
 include(cmake/protobuf.cmake)
+include(cmake/re2.cmake)
 include(cmake/ssl.cmake)
 include(cmake/upb.cmake)
 include(cmake/zlib.cmake)
@@ -217,7 +266,7 @@
   set(_gRPC_ALLTARGETS_LIBRARIES ${CMAKE_DL_LIBS} rt m pthread)
 endif()
 
-if(WIN32 AND MSVC)
+if(WIN32)
   set(_gRPC_BASELIB_LIBRARIES wsock32 ws2_32 crypt32)
 endif()
 
@@ -404,6 +453,51 @@
   src/proto/grpc/testing/xds/orca_load_report_for_test.proto
 )
 protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/address.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/ads.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/base.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/cluster.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/config_source.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/discovery.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/endpoint.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/http_connection_manager.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/listener.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/load_report.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/lrs.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/percent.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/range.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/regex.proto
+)
+protobuf_generate_grpc_cpp(
+  src/proto/grpc/testing/xds/v3/route.proto
+)
+protobuf_generate_grpc_cpp(
   test/core/tsi/alts/fake_handshaker/handshaker.proto
 )
 protobuf_generate_grpc_cpp(
@@ -512,7 +606,6 @@
   if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
     add_dependencies(buildtests_c httpscli_test)
   endif()
-  add_dependencies(buildtests_c init_test)
   add_dependencies(buildtests_c inproc_callback_test)
   add_dependencies(buildtests_c invalid_call_argument_test)
   add_dependencies(buildtests_c json_token_test)
@@ -552,7 +645,6 @@
   add_dependencies(buildtests_c secure_endpoint_test)
   add_dependencies(buildtests_c security_connector_test)
   add_dependencies(buildtests_c sequential_connectivity_test)
-  add_dependencies(buildtests_c server_chttp2_test)
   if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
     add_dependencies(buildtests_c server_ssl_test)
   endif()
@@ -619,6 +711,7 @@
   add_dependencies(buildtests_cxx alts_util_test)
   add_dependencies(buildtests_cxx async_end2end_test)
   add_dependencies(buildtests_cxx auth_property_iterator_test)
+  add_dependencies(buildtests_cxx authorization_engine_test)
   add_dependencies(buildtests_cxx backoff_test)
   add_dependencies(buildtests_cxx bad_streaming_id_bad_client_test)
   add_dependencies(buildtests_cxx badreq_bad_client_test)
@@ -691,6 +784,7 @@
   add_dependencies(buildtests_cxx byte_buffer_test)
   add_dependencies(buildtests_cxx byte_stream_test)
   add_dependencies(buildtests_cxx cancel_ares_query_test)
+  add_dependencies(buildtests_cxx certificate_provider_registry_test)
   add_dependencies(buildtests_cxx cfstream_test)
   add_dependencies(buildtests_cxx channel_arguments_test)
   add_dependencies(buildtests_cxx channel_filter_test)
@@ -714,9 +808,11 @@
   add_dependencies(buildtests_cxx context_list_test)
   add_dependencies(buildtests_cxx delegating_channel_test)
   add_dependencies(buildtests_cxx destroy_grpclb_channel_with_active_connect_stress_test)
+  add_dependencies(buildtests_cxx dual_ref_counted_test)
   add_dependencies(buildtests_cxx duplicate_header_bad_client_test)
   add_dependencies(buildtests_cxx end2end_test)
   add_dependencies(buildtests_cxx error_details_test)
+  add_dependencies(buildtests_cxx evaluate_args_test)
   add_dependencies(buildtests_cxx eventmanager_libuv_test)
   add_dependencies(buildtests_cxx exception_test)
   add_dependencies(buildtests_cxx filter_end2end_test)
@@ -726,7 +822,9 @@
     add_dependencies(buildtests_cxx global_config_env_test)
   endif()
   add_dependencies(buildtests_cxx global_config_test)
+  add_dependencies(buildtests_cxx google_mesh_ca_certificate_provider_factory_test)
   add_dependencies(buildtests_cxx grpc_cli)
+  add_dependencies(buildtests_cxx grpc_tls_certificate_distributor_test)
   add_dependencies(buildtests_cxx grpc_tls_credentials_options_test)
   if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
     add_dependencies(buildtests_cxx grpc_tool_test)
@@ -741,6 +839,7 @@
   add_dependencies(buildtests_cxx health_service_end2end_test)
   add_dependencies(buildtests_cxx http2_client)
   add_dependencies(buildtests_cxx hybrid_end2end_test)
+  add_dependencies(buildtests_cxx init_test)
   add_dependencies(buildtests_cxx initial_settings_frame_bad_client_test)
   add_dependencies(buildtests_cxx interop_client)
   add_dependencies(buildtests_cxx interop_server)
@@ -756,7 +855,6 @@
   add_dependencies(buildtests_cxx mock_test)
   add_dependencies(buildtests_cxx nonblocking_test)
   add_dependencies(buildtests_cxx noop-benchmark)
-  add_dependencies(buildtests_cxx optional_test)
   add_dependencies(buildtests_cxx orphanable_test)
   add_dependencies(buildtests_cxx out_of_bounds_bad_client_test)
   add_dependencies(buildtests_cxx pid_controller_test)
@@ -768,6 +866,9 @@
   add_dependencies(buildtests_cxx raw_end2end_test)
   add_dependencies(buildtests_cxx ref_counted_ptr_test)
   add_dependencies(buildtests_cxx ref_counted_test)
+  if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+    add_dependencies(buildtests_cxx remove_stream_from_stalled_lists_test)
+  endif()
   add_dependencies(buildtests_cxx retry_throttle_test)
   add_dependencies(buildtests_cxx secure_auth_context_test)
   add_dependencies(buildtests_cxx server_builder_plugin_test)
@@ -777,6 +878,7 @@
   if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
     add_dependencies(buildtests_cxx server_builder_with_socket_mutator_test)
   endif()
+  add_dependencies(buildtests_cxx server_chttp2_test)
   add_dependencies(buildtests_cxx server_context_test_spouse_test)
   add_dependencies(buildtests_cxx server_early_return_test)
   add_dependencies(buildtests_cxx server_interceptors_end2end_test)
@@ -789,17 +891,17 @@
   add_dependencies(buildtests_cxx settings_timeout_test)
   add_dependencies(buildtests_cxx shutdown_test)
   add_dependencies(buildtests_cxx simple_request_bad_client_test)
-  add_dependencies(buildtests_cxx slice_hash_table_test)
-  add_dependencies(buildtests_cxx slice_weak_hash_table_test)
   add_dependencies(buildtests_cxx static_metadata_test)
   add_dependencies(buildtests_cxx stats_test)
   add_dependencies(buildtests_cxx status_metadata_test)
   add_dependencies(buildtests_cxx status_util_test)
   if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+    add_dependencies(buildtests_cxx stranded_event_test)
+  endif()
+  if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
     add_dependencies(buildtests_cxx streaming_throughput_test)
   endif()
   add_dependencies(buildtests_cxx string_ref_test)
-  add_dependencies(buildtests_cxx string_view_test)
   add_dependencies(buildtests_cxx test_cpp_client_credentials_test)
   add_dependencies(buildtests_cxx test_cpp_util_slice_test)
   add_dependencies(buildtests_cxx test_cpp_util_time_test)
@@ -812,6 +914,7 @@
   endif()
   add_dependencies(buildtests_cxx timer_test)
   add_dependencies(buildtests_cxx tls_security_connector_test)
+  add_dependencies(buildtests_cxx too_many_pings_test)
   add_dependencies(buildtests_cxx unknown_frame_bad_client_test)
   add_dependencies(buildtests_cxx window_overflow_bad_client_test)
   if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
@@ -872,6 +975,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -919,6 +1023,7 @@
   test/core/end2end/tests/cancel_in_a_vacuum.cc
   test/core/end2end/tests/cancel_with_status.cc
   test/core/end2end/tests/channelz.cc
+  test/core/end2end/tests/client_streaming.cc
   test/core/end2end/tests/compressed_payload.cc
   test/core/end2end/tests/connectivity.cc
   test/core/end2end/tests/default_host.cc
@@ -969,6 +1074,7 @@
   test/core/end2end/tests/retry_throttled.cc
   test/core/end2end/tests/retry_too_many_attempts.cc
   test/core/end2end/tests/server_finishes_request.cc
+  test/core/end2end/tests/server_streaming.cc
   test/core/end2end/tests/shutdown_finishes_calls.cc
   test/core/end2end/tests/shutdown_finishes_tags.cc
   test/core/end2end/tests/simple_cacheable_request.cc
@@ -1006,6 +1112,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1050,6 +1157,7 @@
   test/core/end2end/tests/cancel_in_a_vacuum.cc
   test/core/end2end/tests/cancel_with_status.cc
   test/core/end2end/tests/channelz.cc
+  test/core/end2end/tests/client_streaming.cc
   test/core/end2end/tests/compressed_payload.cc
   test/core/end2end/tests/connectivity.cc
   test/core/end2end/tests/default_host.cc
@@ -1100,6 +1208,7 @@
   test/core/end2end/tests/retry_throttled.cc
   test/core/end2end/tests/retry_too_many_attempts.cc
   test/core/end2end/tests/server_finishes_request.cc
+  test/core/end2end/tests/server_streaming.cc
   test/core/end2end/tests/shutdown_finishes_calls.cc
   test/core/end2end/tests/shutdown_finishes_tags.cc
   test/core/end2end/tests/simple_cacheable_request.cc
@@ -1137,6 +1246,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1221,6 +1331,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1230,9 +1341,11 @@
 target_link_libraries(gpr
   ${_gRPC_ALLTARGETS_LIBRARIES}
   absl::time
+  absl::synchronization
   absl::strings
   absl::str_format
   absl::memory
+  absl::base
 )
 if(_gRPC_PLATFORM_ANDROID)
   target_link_libraries(gpr
@@ -1310,6 +1423,7 @@
   src/core/ext/filters/client_channel/client_channel_channelz.cc
   src/core/ext/filters/client_channel/client_channel_factory.cc
   src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/config_selector.cc
   src/core/ext/filters/client_channel/global_subchannel_pool.cc
   src/core/ext/filters/client_channel/health/health_check_client.cc
   src/core/ext/filters/client_channel/http_connect_handshaker.cc
@@ -1329,11 +1443,10 @@
   src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
   src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
   src/core/ext/filters/client_channel/lb_policy/xds/eds.cc
-  src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc
-  src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc
+  src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc
+  src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
   src/core/ext/filters/client_channel/lb_policy_registry.cc
   src/core/ext/filters/client_channel/local_subchannel_pool.cc
-  src/core/ext/filters/client_channel/parse_address.cc
   src/core/ext/filters/client_channel/proxy_mapper_registry.cc
   src/core/ext/filters/client_channel/resolver.cc
   src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
@@ -1357,13 +1470,10 @@
   src/core/ext/filters/client_channel/retry_throttle.cc
   src/core/ext/filters/client_channel/server_address.cc
   src/core/ext/filters/client_channel/service_config.cc
+  src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
+  src/core/ext/filters/client_channel/service_config_parser.cc
   src/core/ext/filters/client_channel/subchannel.cc
   src/core/ext/filters/client_channel/subchannel_pool_interface.cc
-  src/core/ext/filters/client_channel/xds/xds_api.cc
-  src/core/ext/filters/client_channel/xds/xds_bootstrap.cc
-  src/core/ext/filters/client_channel/xds/xds_channel_secure.cc
-  src/core/ext/filters/client_channel/xds/xds_client.cc
-  src/core/ext/filters/client_channel/xds/xds_client_stats.cc
   src/core/ext/filters/client_idle/client_idle_filter.cc
   src/core/ext/filters/deadline/deadline_filter.cc
   src/core/ext/filters/http/client/http_client_filter.cc
@@ -1413,51 +1523,64 @@
   src/core/ext/transport/inproc/inproc_transport.cc
   src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c
   src/core/ext/upb-generated/envoy/annotations/resource.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/eds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/lds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/rds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/route.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/srds.upb.c
-  src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c
-  src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c
-  src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c
-  src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c
-  src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c
-  src/core/ext/upb-generated/envoy/type/http.upb.c
-  src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c
-  src/core/ext/upb-generated/envoy/type/matcher/string.upb.c
-  src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c
-  src/core/ext/upb-generated/envoy/type/percent.upb.c
-  src/core/ext/upb-generated/envoy/type/range.upb.c
-  src/core/ext/upb-generated/envoy/type/semantic_version.upb.c
-  src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c
-  src/core/ext/upb-generated/gogoproto/gogo.upb.c
+  src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c
+  src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c
+  src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c
+  src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c
+  src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c
+  src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c
+  src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c
+  src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c
+  src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c
+  src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c
+  src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c
+  src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c
+  src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c
+  src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c
+  src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c
+  src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c
+  src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c
+  src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
+  src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
+  src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c
+  src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
+  src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
+  src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c
+  src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c
+  src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c
+  src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c
+  src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c
+  src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c
+  src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c
+  src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c
+  src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c
+  src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c
+  src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c
+  src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c
+  src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c
+  src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c
+  src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c
+  src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c
+  src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c
+  src/core/ext/upb-generated/envoy/type/v3/http.upb.c
+  src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
+  src/core/ext/upb-generated/envoy/type/v3/range.upb.c
+  src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
   src/core/ext/upb-generated/google/api/annotations.upb.c
+  src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c
+  src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
   src/core/ext/upb-generated/google/api/http.upb.c
   src/core/ext/upb-generated/google/protobuf/any.upb.c
   src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
@@ -1473,9 +1596,24 @@
   src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
   src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
   src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
+  src/core/ext/upb-generated/udpa/annotations/security.upb.c
   src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
+  src/core/ext/upb-generated/udpa/annotations/status.upb.c
+  src/core/ext/upb-generated/udpa/annotations/versioning.upb.c
+  src/core/ext/upb-generated/udpa/core/v1/authority.upb.c
+  src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c
+  src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c
+  src/core/ext/upb-generated/udpa/core/v1/resource.upb.c
+  src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c
+  src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c
   src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c
   src/core/ext/upb-generated/validate/validate.upb.c
+  src/core/ext/xds/certificate_provider_registry.cc
+  src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc
+  src/core/ext/xds/xds_api.cc
+  src/core/ext/xds/xds_bootstrap.cc
+  src/core/ext/xds/xds_client.cc
+  src/core/ext/xds/xds_client_stats.cc
   src/core/lib/avl/avl.cc
   src/core/lib/backoff/backoff.cc
   src/core/lib/channel/channel_args.cc
@@ -1543,6 +1681,7 @@
   src/core/lib/iomgr/is_epollexclusive_available.cc
   src/core/lib/iomgr/load_file.cc
   src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/parse_address.cc
   src/core/lib/iomgr/poller/eventmanager_libuv.cc
   src/core/lib/iomgr/polling_entity.cc
   src/core/lib/iomgr/pollset.cc
@@ -1598,7 +1737,10 @@
   src/core/lib/iomgr/wakeup_fd_posix.cc
   src/core/lib/iomgr/work_serializer.cc
   src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_util.cc
   src/core/lib/json/json_writer.cc
+  src/core/lib/security/authorization/authorization_engine.cc
+  src/core/lib/security/authorization/evaluate_args.cc
   src/core/lib/security/context/security_context.cc
   src/core/lib/security/credentials/alts/alts_credentials.cc
   src/core/lib/security/credentials/alts/check_gcp_environment.cc
@@ -1622,8 +1764,10 @@
   src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
   src/core/lib/security/credentials/plugin/plugin_credentials.cc
   src/core/lib/security/credentials/ssl/ssl_credentials.cc
+  src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc
   src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc
   src/core/lib/security/credentials/tls/tls_credentials.cc
+  src/core/lib/security/credentials/xds/xds_credentials.cc
   src/core/lib/security/security_connector/alts/alts_security_connector.cc
   src/core/lib/security/security_connector/fake/fake_security_connector.cc
   src/core/lib/security/security_connector/load_system_roots_fallback.cc
@@ -1638,7 +1782,6 @@
   src/core/lib/security/transport/secure_endpoint.cc
   src/core/lib/security/transport/security_handshaker.cc
   src/core/lib/security/transport/server_auth_filter.cc
-  src/core/lib/security/transport/target_authority_table.cc
   src/core/lib/security/transport/tsi_error.cc
   src/core/lib/security/util/json_util.cc
   src/core/lib/slice/b64.cc
@@ -1667,6 +1810,7 @@
   src/core/lib/surface/server.cc
   src/core/lib/surface/validate_metadata.cc
   src/core/lib/surface/version.cc
+  src/core/lib/transport/authority_override.cc
   src/core/lib/transport/bdp_estimator.cc
   src/core/lib/transport/byte_stream.cc
   src/core/lib/transport/connectivity_state.cc
@@ -1732,6 +1876,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1744,6 +1889,7 @@
   ${_gRPC_ZLIB_LIBRARIES}
   ${_gRPC_CARES_LIBRARIES}
   ${_gRPC_ADDRESS_SORTING_LIBRARIES}
+  ${_gRPC_RE2_LIBRARIES}
   ${_gRPC_UPB_LIBRARIES}
   ${_gRPC_ALLTARGETS_LIBRARIES}
   gpr
@@ -1751,7 +1897,9 @@
   upb
   absl::optional
   absl::strings
+  absl::status
   absl::inlined_vector
+  absl::flat_hash_set
 )
 if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
   target_link_libraries(grpc "-framework CoreFoundation")
@@ -1816,6 +1964,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1837,6 +1986,8 @@
 add_library(grpc_test_util
   test/core/util/cmdline.cc
   test/core/util/debugger_macros.cc
+  test/core/util/eval_args_mock_endpoint.cc
+  test/core/util/examine_stack.cc
   test/core/util/fuzzer_util.cc
   test/core/util/grpc_profiler.cc
   test/core/util/histogram.cc
@@ -1878,6 +2029,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1890,6 +2042,9 @@
   gpr
   address_sorting
   upb
+  absl::symbolize
+  absl::stacktrace
+  absl::failure_signal_handler
 )
 if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
   target_link_libraries(grpc_test_util "-framework CoreFoundation")
@@ -1902,6 +2057,8 @@
 add_library(grpc_test_util_unsecure
   test/core/util/cmdline.cc
   test/core/util/debugger_macros.cc
+  test/core/util/eval_args_mock_endpoint.cc
+  test/core/util/examine_stack.cc
   test/core/util/fuzzer_util.cc
   test/core/util/grpc_profiler.cc
   test/core/util/histogram.cc
@@ -1943,6 +2100,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -1955,6 +2113,9 @@
   gpr
   address_sorting
   upb
+  absl::symbolize
+  absl::stacktrace
+  absl::failure_signal_handler
 )
 if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
   target_link_libraries(grpc_test_util_unsecure "-framework CoreFoundation")
@@ -1972,6 +2133,7 @@
   src/core/ext/filters/client_channel/client_channel_channelz.cc
   src/core/ext/filters/client_channel/client_channel_factory.cc
   src/core/ext/filters/client_channel/client_channel_plugin.cc
+  src/core/ext/filters/client_channel/config_selector.cc
   src/core/ext/filters/client_channel/global_subchannel_pool.cc
   src/core/ext/filters/client_channel/health/health_check_client.cc
   src/core/ext/filters/client_channel/http_connect_handshaker.cc
@@ -1989,13 +2151,8 @@
   src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
   src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
   src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
-  src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
-  src/core/ext/filters/client_channel/lb_policy/xds/eds.cc
-  src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc
-  src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc
   src/core/ext/filters/client_channel/lb_policy_registry.cc
   src/core/ext/filters/client_channel/local_subchannel_pool.cc
-  src/core/ext/filters/client_channel/parse_address.cc
   src/core/ext/filters/client_channel/proxy_mapper_registry.cc
   src/core/ext/filters/client_channel/resolver.cc
   src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
@@ -2012,20 +2169,16 @@
   src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
   src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
   src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
-  src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
   src/core/ext/filters/client_channel/resolver_registry.cc
   src/core/ext/filters/client_channel/resolver_result_parsing.cc
   src/core/ext/filters/client_channel/resolving_lb_policy.cc
   src/core/ext/filters/client_channel/retry_throttle.cc
   src/core/ext/filters/client_channel/server_address.cc
   src/core/ext/filters/client_channel/service_config.cc
+  src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
+  src/core/ext/filters/client_channel/service_config_parser.cc
   src/core/ext/filters/client_channel/subchannel.cc
   src/core/ext/filters/client_channel/subchannel_pool_interface.cc
-  src/core/ext/filters/client_channel/xds/xds_api.cc
-  src/core/ext/filters/client_channel/xds/xds_bootstrap.cc
-  src/core/ext/filters/client_channel/xds/xds_channel.cc
-  src/core/ext/filters/client_channel/xds/xds_client.cc
-  src/core/ext/filters/client_channel/xds/xds_client_stats.cc
   src/core/ext/filters/client_idle/client_idle_filter.cc
   src/core/ext/filters/deadline/deadline_filter.cc
   src/core/ext/filters/http/client/http_client_filter.cc
@@ -2071,53 +2224,9 @@
   src/core/ext/transport/chttp2/transport/writing.cc
   src/core/ext/transport/inproc/inproc_plugin.cc
   src/core/ext/transport/inproc/inproc_transport.cc
-  src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c
-  src/core/ext/upb-generated/envoy/annotations/resource.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/eds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/lds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/rds.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/route.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c
-  src/core/ext/upb-generated/envoy/api/v2/srds.upb.c
-  src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c
-  src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c
-  src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c
-  src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c
-  src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c
-  src/core/ext/upb-generated/envoy/type/http.upb.c
-  src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c
-  src/core/ext/upb-generated/envoy/type/matcher/string.upb.c
-  src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c
-  src/core/ext/upb-generated/envoy/type/percent.upb.c
-  src/core/ext/upb-generated/envoy/type/range.upb.c
-  src/core/ext/upb-generated/envoy/type/semantic_version.upb.c
-  src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c
-  src/core/ext/upb-generated/gogoproto/gogo.upb.c
   src/core/ext/upb-generated/google/api/annotations.upb.c
+  src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c
+  src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
   src/core/ext/upb-generated/google/api/http.upb.c
   src/core/ext/upb-generated/google/protobuf/any.upb.c
   src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
@@ -2129,8 +2238,6 @@
   src/core/ext/upb-generated/google/rpc/status.upb.c
   src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
   src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
-  src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
-  src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
   src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c
   src/core/ext/upb-generated/validate/validate.upb.c
   src/core/lib/avl/avl.cc
@@ -2199,6 +2306,7 @@
   src/core/lib/iomgr/is_epollexclusive_available.cc
   src/core/lib/iomgr/load_file.cc
   src/core/lib/iomgr/lockfree_event.cc
+  src/core/lib/iomgr/parse_address.cc
   src/core/lib/iomgr/poller/eventmanager_libuv.cc
   src/core/lib/iomgr/polling_entity.cc
   src/core/lib/iomgr/pollset.cc
@@ -2254,6 +2362,7 @@
   src/core/lib/iomgr/wakeup_fd_posix.cc
   src/core/lib/iomgr/work_serializer.cc
   src/core/lib/json/json_reader.cc
+  src/core/lib/json/json_util.cc
   src/core/lib/json/json_writer.cc
   src/core/lib/slice/b64.cc
   src/core/lib/slice/percent_encoding.cc
@@ -2281,6 +2390,7 @@
   src/core/lib/surface/server.cc
   src/core/lib/surface/validate_metadata.cc
   src/core/lib/surface/version.cc
+  src/core/lib/transport/authority_override.cc
   src/core/lib/transport/bdp_estimator.cc
   src/core/lib/transport/byte_stream.cc
   src/core/lib/transport/connectivity_state.cc
@@ -2319,6 +2429,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -2330,6 +2441,7 @@
   ${_gRPC_ZLIB_LIBRARIES}
   ${_gRPC_CARES_LIBRARIES}
   ${_gRPC_ADDRESS_SORTING_LIBRARIES}
+  ${_gRPC_RE2_LIBRARIES}
   ${_gRPC_UPB_LIBRARIES}
   ${_gRPC_ALLTARGETS_LIBRARIES}
   gpr
@@ -2337,6 +2449,7 @@
   upb
   absl::optional
   absl::strings
+  absl::status
   absl::inlined_vector
 )
 if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
@@ -2415,6 +2528,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -2446,6 +2560,7 @@
 
 add_library(grpc++
   src/cpp/client/channel_cc.cc
+  src/cpp/client/client_callback.cc
   src/cpp/client/client_context.cc
   src/cpp/client/client_interceptor.cc
   src/cpp/client/create_channel.cc
@@ -2514,6 +2629,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -2610,31 +2726,22 @@
   include/grpc++/support/sync_stream.h
   include/grpc++/support/time.h
   include/grpcpp/alarm.h
-  include/grpcpp/alarm_impl.h
   include/grpcpp/channel.h
-  include/grpcpp/channel_impl.h
   include/grpcpp/client_context.h
   include/grpcpp/completion_queue.h
-  include/grpcpp/completion_queue_impl.h
   include/grpcpp/create_channel.h
-  include/grpcpp/create_channel_impl.h
   include/grpcpp/create_channel_posix.h
-  include/grpcpp/create_channel_posix_impl.h
   include/grpcpp/ext/health_check_service_server_builder_option.h
   include/grpcpp/generic/async_generic_service.h
   include/grpcpp/generic/generic_stub.h
-  include/grpcpp/generic/generic_stub_impl.h
   include/grpcpp/grpcpp.h
   include/grpcpp/health_check_service_interface.h
-  include/grpcpp/health_check_service_interface_impl.h
   include/grpcpp/impl/call.h
   include/grpcpp/impl/channel_argument_option.h
   include/grpcpp/impl/client_unary_call.h
   include/grpcpp/impl/codegen/async_generic_service.h
   include/grpcpp/impl/codegen/async_stream.h
-  include/grpcpp/impl/codegen/async_stream_impl.h
   include/grpcpp/impl/codegen/async_unary_call.h
-  include/grpcpp/impl/codegen/async_unary_call_impl.h
   include/grpcpp/impl/codegen/byte_buffer.h
   include/grpcpp/impl/codegen/call.h
   include/grpcpp/impl/codegen/call_hook.h
@@ -2643,13 +2750,10 @@
   include/grpcpp/impl/codegen/callback_common.h
   include/grpcpp/impl/codegen/channel_interface.h
   include/grpcpp/impl/codegen/client_callback.h
-  include/grpcpp/impl/codegen/client_callback_impl.h
   include/grpcpp/impl/codegen/client_context.h
-  include/grpcpp/impl/codegen/client_context_impl.h
   include/grpcpp/impl/codegen/client_interceptor.h
   include/grpcpp/impl/codegen/client_unary_call.h
   include/grpcpp/impl/codegen/completion_queue.h
-  include/grpcpp/impl/codegen/completion_queue_impl.h
   include/grpcpp/impl/codegen/completion_queue_tag.h
   include/grpcpp/impl/codegen/config.h
   include/grpcpp/impl/codegen/config_protobuf.h
@@ -2664,7 +2768,6 @@
   include/grpcpp/impl/codegen/message_allocator.h
   include/grpcpp/impl/codegen/metadata_map.h
   include/grpcpp/impl/codegen/method_handler.h
-  include/grpcpp/impl/codegen/method_handler_impl.h
   include/grpcpp/impl/codegen/proto_buffer_reader.h
   include/grpcpp/impl/codegen/proto_buffer_writer.h
   include/grpcpp/impl/codegen/proto_utils.h
@@ -2674,9 +2777,7 @@
   include/grpcpp/impl/codegen/serialization_traits.h
   include/grpcpp/impl/codegen/server_callback.h
   include/grpcpp/impl/codegen/server_callback_handlers.h
-  include/grpcpp/impl/codegen/server_callback_impl.h
   include/grpcpp/impl/codegen/server_context.h
-  include/grpcpp/impl/codegen/server_context_impl.h
   include/grpcpp/impl/codegen/server_interceptor.h
   include/grpcpp/impl/codegen/server_interface.h
   include/grpcpp/impl/codegen/service_type.h
@@ -2687,7 +2788,6 @@
   include/grpcpp/impl/codegen/stub_options.h
   include/grpcpp/impl/codegen/sync.h
   include/grpcpp/impl/codegen/sync_stream.h
-  include/grpcpp/impl/codegen/sync_stream_impl.h
   include/grpcpp/impl/codegen/time.h
   include/grpcpp/impl/grpc_library.h
   include/grpcpp/impl/method_handler_impl.h
@@ -2695,37 +2795,24 @@
   include/grpcpp/impl/rpc_service_method.h
   include/grpcpp/impl/serialization_traits.h
   include/grpcpp/impl/server_builder_option.h
-  include/grpcpp/impl/server_builder_option_impl.h
   include/grpcpp/impl/server_builder_plugin.h
   include/grpcpp/impl/server_initializer.h
-  include/grpcpp/impl/server_initializer_impl.h
   include/grpcpp/impl/service_type.h
   include/grpcpp/resource_quota.h
-  include/grpcpp/resource_quota_impl.h
   include/grpcpp/security/auth_context.h
   include/grpcpp/security/auth_metadata_processor.h
-  include/grpcpp/security/auth_metadata_processor_impl.h
   include/grpcpp/security/credentials.h
-  include/grpcpp/security/credentials_impl.h
   include/grpcpp/security/server_credentials.h
-  include/grpcpp/security/server_credentials_impl.h
   include/grpcpp/security/tls_credentials_options.h
   include/grpcpp/server.h
   include/grpcpp/server_builder.h
-  include/grpcpp/server_builder_impl.h
   include/grpcpp/server_context.h
-  include/grpcpp/server_impl.h
   include/grpcpp/server_posix.h
-  include/grpcpp/server_posix_impl.h
   include/grpcpp/support/async_stream.h
-  include/grpcpp/support/async_stream_impl.h
   include/grpcpp/support/async_unary_call.h
-  include/grpcpp/support/async_unary_call_impl.h
   include/grpcpp/support/byte_buffer.h
   include/grpcpp/support/channel_arguments.h
-  include/grpcpp/support/channel_arguments_impl.h
   include/grpcpp/support/client_callback.h
-  include/grpcpp/support/client_callback_impl.h
   include/grpcpp/support/client_interceptor.h
   include/grpcpp/support/config.h
   include/grpcpp/support/interceptor.h
@@ -2734,7 +2821,6 @@
   include/grpcpp/support/proto_buffer_reader.h
   include/grpcpp/support/proto_buffer_writer.h
   include/grpcpp/support/server_callback.h
-  include/grpcpp/support/server_callback_impl.h
   include/grpcpp/support/server_interceptor.h
   include/grpcpp/support/slice.h
   include/grpcpp/support/status.h
@@ -2742,7 +2828,6 @@
   include/grpcpp/support/string_ref.h
   include/grpcpp/support/stub_options.h
   include/grpcpp/support/sync_stream.h
-  include/grpcpp/support/sync_stream_impl.h
   include/grpcpp/support/time.h
   include/grpcpp/support/validate_service_config.h
 )
@@ -2789,6 +2874,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -2858,6 +2944,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -2878,7 +2965,6 @@
 foreach(_hdr
   include/grpc++/support/error_details.h
   include/grpcpp/support/error_details.h
-  include/grpcpp/support/error_details_impl.h
 )
   string(REPLACE "include/" "" _path ${_hdr})
   get_filename_component(_path ${_path} PATH)
@@ -2931,6 +3017,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -2951,7 +3038,6 @@
 foreach(_hdr
   include/grpc++/ext/proto_server_reflection_plugin.h
   include/grpcpp/ext/proto_server_reflection_plugin.h
-  include/grpcpp/ext/proto_server_reflection_plugin_impl.h
 )
   string(REPLACE "include/" "" _path ${_hdr})
   get_filename_component(_path ${_path} PATH)
@@ -2999,6 +3085,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3064,6 +3151,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3119,6 +3207,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3147,6 +3236,7 @@
 
 add_library(grpc++_unsecure
   src/cpp/client/channel_cc.cc
+  src/cpp/client/client_callback.cc
   src/cpp/client/client_context.cc
   src/cpp/client/client_interceptor.cc
   src/cpp/client/create_channel.cc
@@ -3208,6 +3298,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3304,31 +3395,22 @@
   include/grpc++/support/sync_stream.h
   include/grpc++/support/time.h
   include/grpcpp/alarm.h
-  include/grpcpp/alarm_impl.h
   include/grpcpp/channel.h
-  include/grpcpp/channel_impl.h
   include/grpcpp/client_context.h
   include/grpcpp/completion_queue.h
-  include/grpcpp/completion_queue_impl.h
   include/grpcpp/create_channel.h
-  include/grpcpp/create_channel_impl.h
   include/grpcpp/create_channel_posix.h
-  include/grpcpp/create_channel_posix_impl.h
   include/grpcpp/ext/health_check_service_server_builder_option.h
   include/grpcpp/generic/async_generic_service.h
   include/grpcpp/generic/generic_stub.h
-  include/grpcpp/generic/generic_stub_impl.h
   include/grpcpp/grpcpp.h
   include/grpcpp/health_check_service_interface.h
-  include/grpcpp/health_check_service_interface_impl.h
   include/grpcpp/impl/call.h
   include/grpcpp/impl/channel_argument_option.h
   include/grpcpp/impl/client_unary_call.h
   include/grpcpp/impl/codegen/async_generic_service.h
   include/grpcpp/impl/codegen/async_stream.h
-  include/grpcpp/impl/codegen/async_stream_impl.h
   include/grpcpp/impl/codegen/async_unary_call.h
-  include/grpcpp/impl/codegen/async_unary_call_impl.h
   include/grpcpp/impl/codegen/byte_buffer.h
   include/grpcpp/impl/codegen/call.h
   include/grpcpp/impl/codegen/call_hook.h
@@ -3337,13 +3419,10 @@
   include/grpcpp/impl/codegen/callback_common.h
   include/grpcpp/impl/codegen/channel_interface.h
   include/grpcpp/impl/codegen/client_callback.h
-  include/grpcpp/impl/codegen/client_callback_impl.h
   include/grpcpp/impl/codegen/client_context.h
-  include/grpcpp/impl/codegen/client_context_impl.h
   include/grpcpp/impl/codegen/client_interceptor.h
   include/grpcpp/impl/codegen/client_unary_call.h
   include/grpcpp/impl/codegen/completion_queue.h
-  include/grpcpp/impl/codegen/completion_queue_impl.h
   include/grpcpp/impl/codegen/completion_queue_tag.h
   include/grpcpp/impl/codegen/config.h
   include/grpcpp/impl/codegen/config_protobuf.h
@@ -3358,7 +3437,6 @@
   include/grpcpp/impl/codegen/message_allocator.h
   include/grpcpp/impl/codegen/metadata_map.h
   include/grpcpp/impl/codegen/method_handler.h
-  include/grpcpp/impl/codegen/method_handler_impl.h
   include/grpcpp/impl/codegen/proto_buffer_reader.h
   include/grpcpp/impl/codegen/proto_buffer_writer.h
   include/grpcpp/impl/codegen/proto_utils.h
@@ -3368,9 +3446,7 @@
   include/grpcpp/impl/codegen/serialization_traits.h
   include/grpcpp/impl/codegen/server_callback.h
   include/grpcpp/impl/codegen/server_callback_handlers.h
-  include/grpcpp/impl/codegen/server_callback_impl.h
   include/grpcpp/impl/codegen/server_context.h
-  include/grpcpp/impl/codegen/server_context_impl.h
   include/grpcpp/impl/codegen/server_interceptor.h
   include/grpcpp/impl/codegen/server_interface.h
   include/grpcpp/impl/codegen/service_type.h
@@ -3381,7 +3457,6 @@
   include/grpcpp/impl/codegen/stub_options.h
   include/grpcpp/impl/codegen/sync.h
   include/grpcpp/impl/codegen/sync_stream.h
-  include/grpcpp/impl/codegen/sync_stream_impl.h
   include/grpcpp/impl/codegen/time.h
   include/grpcpp/impl/grpc_library.h
   include/grpcpp/impl/method_handler_impl.h
@@ -3389,37 +3464,24 @@
   include/grpcpp/impl/rpc_service_method.h
   include/grpcpp/impl/serialization_traits.h
   include/grpcpp/impl/server_builder_option.h
-  include/grpcpp/impl/server_builder_option_impl.h
   include/grpcpp/impl/server_builder_plugin.h
   include/grpcpp/impl/server_initializer.h
-  include/grpcpp/impl/server_initializer_impl.h
   include/grpcpp/impl/service_type.h
   include/grpcpp/resource_quota.h
-  include/grpcpp/resource_quota_impl.h
   include/grpcpp/security/auth_context.h
   include/grpcpp/security/auth_metadata_processor.h
-  include/grpcpp/security/auth_metadata_processor_impl.h
   include/grpcpp/security/credentials.h
-  include/grpcpp/security/credentials_impl.h
   include/grpcpp/security/server_credentials.h
-  include/grpcpp/security/server_credentials_impl.h
   include/grpcpp/security/tls_credentials_options.h
   include/grpcpp/server.h
   include/grpcpp/server_builder.h
-  include/grpcpp/server_builder_impl.h
   include/grpcpp/server_context.h
-  include/grpcpp/server_impl.h
   include/grpcpp/server_posix.h
-  include/grpcpp/server_posix_impl.h
   include/grpcpp/support/async_stream.h
-  include/grpcpp/support/async_stream_impl.h
   include/grpcpp/support/async_unary_call.h
-  include/grpcpp/support/async_unary_call_impl.h
   include/grpcpp/support/byte_buffer.h
   include/grpcpp/support/channel_arguments.h
-  include/grpcpp/support/channel_arguments_impl.h
   include/grpcpp/support/client_callback.h
-  include/grpcpp/support/client_callback_impl.h
   include/grpcpp/support/client_interceptor.h
   include/grpcpp/support/config.h
   include/grpcpp/support/interceptor.h
@@ -3428,7 +3490,6 @@
   include/grpcpp/support/proto_buffer_reader.h
   include/grpcpp/support/proto_buffer_writer.h
   include/grpcpp/support/server_callback.h
-  include/grpcpp/support/server_callback_impl.h
   include/grpcpp/support/server_interceptor.h
   include/grpcpp/support/slice.h
   include/grpcpp/support/status.h
@@ -3436,7 +3497,6 @@
   include/grpcpp/support/string_ref.h
   include/grpcpp/support/stub_options.h
   include/grpcpp/support/sync_stream.h
-  include/grpcpp/support/sync_stream_impl.h
   include/grpcpp/support/time.h
   include/grpcpp/support/validate_service_config.h
 )
@@ -3488,6 +3548,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3555,6 +3616,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3626,6 +3688,7 @@
   PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3657,6 +3720,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3681,6 +3745,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3707,6 +3772,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3731,6 +3797,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3756,6 +3823,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3785,6 +3853,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3814,6 +3883,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3844,6 +3914,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3874,6 +3945,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3904,6 +3976,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3935,6 +4008,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3965,6 +4039,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -3995,6 +4070,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4025,6 +4101,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4054,6 +4131,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4084,6 +4162,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4114,6 +4193,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4144,6 +4224,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4173,6 +4254,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4202,6 +4284,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4231,6 +4314,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4260,6 +4344,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4290,6 +4375,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4321,6 +4407,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4353,6 +4440,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4383,6 +4471,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4412,6 +4501,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4441,6 +4531,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4470,6 +4561,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4499,6 +4591,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4528,6 +4621,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4557,6 +4651,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4586,6 +4681,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4615,6 +4711,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4645,6 +4742,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4675,6 +4773,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4705,6 +4804,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4735,6 +4835,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4764,6 +4865,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4793,6 +4895,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4823,6 +4926,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4852,6 +4956,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4881,6 +4986,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4910,6 +5016,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4939,6 +5046,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4968,6 +5076,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -4999,6 +5108,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5030,6 +5140,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5059,6 +5170,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5089,6 +5201,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5119,6 +5232,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5149,6 +5263,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5179,6 +5294,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5209,6 +5325,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5240,6 +5357,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5275,6 +5393,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5310,6 +5429,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5341,6 +5461,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5375,6 +5496,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5405,6 +5527,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5435,6 +5558,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5464,6 +5588,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5493,6 +5618,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5522,6 +5648,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5551,6 +5678,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5582,6 +5710,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5613,6 +5742,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5643,6 +5773,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5672,6 +5803,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5701,6 +5833,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5730,6 +5863,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5759,6 +5893,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5793,6 +5928,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5828,6 +5964,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5849,35 +5986,6 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
-add_executable(init_test
-  test/core/surface/init_test.cc
-)
-
-target_include_directories(init_test
-  PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
-    ${_gRPC_SSL_INCLUDE_DIR}
-    ${_gRPC_UPB_GENERATED_DIR}
-    ${_gRPC_UPB_GRPC_GENERATED_DIR}
-    ${_gRPC_UPB_INCLUDE_DIR}
-    ${_gRPC_ZLIB_INCLUDE_DIR}
-)
-
-target_link_libraries(init_test
-  ${_gRPC_ALLTARGETS_LIBRARIES}
-  grpc_test_util
-  grpc
-  gpr
-  address_sorting
-  upb
-)
-
-
-endif()
-if(gRPC_BUILD_TESTS)
-
 add_executable(inproc_callback_test
   test/core/end2end/inproc_callback_test.cc
 )
@@ -5887,6 +5995,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5918,6 +6027,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5947,6 +6057,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -5976,6 +6087,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6006,6 +6118,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6035,6 +6148,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6064,6 +6178,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6093,6 +6208,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6122,6 +6238,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6151,6 +6268,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6180,6 +6298,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6209,6 +6328,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6239,6 +6359,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6270,6 +6391,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6299,6 +6421,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6329,6 +6452,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6358,6 +6482,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6379,7 +6504,7 @@
 if(gRPC_BUILD_TESTS)
 
 add_executable(parse_address_test
-  test/core/client_channel/parse_address_test.cc
+  test/core/iomgr/parse_address_test.cc
 )
 
 target_include_directories(parse_address_test
@@ -6387,6 +6512,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6409,7 +6535,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
   add_executable(parse_address_with_named_scope_id_test
-    test/core/client_channel/parse_address_with_named_scope_id_test.cc
+    test/core/iomgr/parse_address_with_named_scope_id_test.cc
   )
 
   target_include_directories(parse_address_with_named_scope_id_test
@@ -6417,6 +6543,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6451,6 +6578,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6480,6 +6608,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6509,6 +6638,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6539,6 +6669,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6569,6 +6700,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6599,6 +6731,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6629,6 +6762,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6658,6 +6792,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6687,6 +6822,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6717,6 +6853,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6746,6 +6883,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6767,10 +6905,6 @@
 if(gRPC_BUILD_TESTS)
 
 add_executable(sequential_connectivity_test
-  test/core/end2end/data/client_certs.cc
-  test/core/end2end/data/server1_cert.cc
-  test/core/end2end/data/server1_key.cc
-  test/core/end2end/data/test_root_cert.cc
   test/core/surface/sequential_connectivity_test.cc
 )
 
@@ -6779,6 +6913,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6798,35 +6933,6 @@
 
 endif()
 if(gRPC_BUILD_TESTS)
-
-add_executable(server_chttp2_test
-  test/core/surface/server_chttp2_test.cc
-)
-
-target_include_directories(server_chttp2_test
-  PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
-    ${_gRPC_SSL_INCLUDE_DIR}
-    ${_gRPC_UPB_GENERATED_DIR}
-    ${_gRPC_UPB_GRPC_GENERATED_DIR}
-    ${_gRPC_UPB_INCLUDE_DIR}
-    ${_gRPC_ZLIB_INCLUDE_DIR}
-)
-
-target_link_libraries(server_chttp2_test
-  ${_gRPC_ALLTARGETS_LIBRARIES}
-  grpc_test_util
-  grpc
-  gpr
-  address_sorting
-  upb
-)
-
-
-endif()
-if(gRPC_BUILD_TESTS)
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
   add_executable(server_ssl_test
@@ -6839,6 +6945,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6869,6 +6976,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6898,6 +7006,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6927,6 +7036,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6956,6 +7066,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -6985,6 +7096,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7015,6 +7127,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7045,6 +7158,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7074,6 +7188,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7105,6 +7220,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7135,6 +7251,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7164,6 +7281,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7193,6 +7311,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7222,6 +7341,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7251,6 +7371,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7280,6 +7401,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7310,6 +7432,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7342,6 +7465,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7373,6 +7497,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7403,6 +7528,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7432,6 +7558,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7461,6 +7588,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7490,6 +7618,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7519,6 +7648,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7548,6 +7678,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7577,6 +7708,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7606,6 +7738,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7635,6 +7768,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7664,6 +7798,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7693,6 +7828,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7722,6 +7858,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7752,6 +7889,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7774,7 +7912,7 @@
 if(gRPC_BUILD_TESTS)
 
 add_executable(uri_parser_test
-  test/core/client_channel/uri_parser_test.cc
+  test/core/uri/uri_parser_test.cc
 )
 
 target_include_directories(uri_parser_test
@@ -7782,6 +7920,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7811,6 +7950,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7840,6 +7980,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7872,6 +8013,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7918,6 +8060,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -7960,6 +8103,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8011,6 +8155,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8051,6 +8196,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8112,6 +8258,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8152,6 +8299,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8181,6 +8329,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(authorization_engine_test
+  test/core/security/authorization_engine_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(authorization_engine_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(authorization_engine_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(backoff_test
   test/core/backoff/backoff_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -8192,6 +8379,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8232,6 +8420,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8272,6 +8461,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8311,6 +8501,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8351,6 +8542,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8395,6 +8587,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8439,6 +8632,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8483,6 +8677,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8531,6 +8726,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8579,6 +8775,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8623,6 +8820,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8667,6 +8865,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8711,6 +8910,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8755,6 +8955,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8799,6 +9000,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8843,6 +9045,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8887,6 +9090,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8931,6 +9135,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -8975,6 +9180,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9019,6 +9225,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9063,6 +9270,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9107,6 +9315,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9151,6 +9360,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9195,6 +9405,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9239,6 +9450,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9282,6 +9494,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9322,6 +9535,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9362,6 +9576,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9392,6 +9607,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(certificate_provider_registry_test
+  test/core/client_channel/certificate_provider_registry_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(certificate_provider_registry_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(certificate_provider_registry_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(cfstream_test
   ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.pb.cc
   ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/echo.grpc.pb.cc
@@ -9416,6 +9670,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9456,6 +9711,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9495,6 +9751,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9539,6 +9796,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9578,6 +9836,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9630,6 +9889,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9676,6 +9936,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9737,6 +9998,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9791,6 +10053,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9853,6 +10116,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9908,6 +10172,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -9971,6 +10236,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10012,6 +10278,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10051,6 +10318,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10092,6 +10360,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10130,6 +10399,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10168,6 +10438,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10219,6 +10490,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10259,6 +10531,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10288,6 +10561,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(dual_ref_counted_test
+  test/core/gprpp/dual_ref_counted_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(dual_ref_counted_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(dual_ref_counted_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(duplicate_header_bad_client_test
   test/core/bad_client/bad_client.cc
   test/core/bad_client/tests/duplicate_header.cc
@@ -10301,6 +10613,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10357,6 +10670,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10402,6 +10716,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10431,6 +10746,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(evaluate_args_test
+  test/core/security/evaluate_args_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(evaluate_args_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(evaluate_args_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(eventmanager_libuv_test
   test/core/iomgr/poller/eventmanager_libuv_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -10442,6 +10796,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10492,6 +10847,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10548,6 +10904,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10601,6 +10958,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10657,6 +11015,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10698,6 +11057,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10737,6 +11097,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10764,6 +11125,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(google_mesh_ca_certificate_provider_factory_test
+  test/core/xds/google_mesh_ca_certificate_provider_factory_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(google_mesh_ca_certificate_provider_factory_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(google_mesh_ca_certificate_provider_factory_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(grpc_cli
   ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.pb.cc
   ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc
@@ -10785,6 +11185,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10822,6 +11223,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10859,6 +11261,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10896,6 +11299,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10933,6 +11337,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -10970,6 +11375,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11007,6 +11413,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11044,6 +11451,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11072,11 +11480,46 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(grpc_tls_certificate_distributor_test
+  test/core/security/grpc_tls_certificate_distributor_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(grpc_tls_certificate_distributor_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(grpc_tls_certificate_distributor_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(grpc_tls_credentials_options_test
-  test/core/end2end/data/client_certs.cc
-  test/core/end2end/data/server1_cert.cc
-  test/core/end2end/data/server1_key.cc
-  test/core/end2end/data/test_root_cert.cc
   test/core/security/grpc_tls_credentials_options_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
   third_party/googletest/googlemock/src/gmock-all.cc
@@ -11087,6 +11530,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11144,6 +11588,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11190,6 +11635,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11252,6 +11698,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11293,6 +11740,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11334,6 +11782,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11374,6 +11823,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11434,6 +11884,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11486,6 +11937,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11544,6 +11996,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11573,6 +12026,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(init_test
+  test/core/surface/init_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(init_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(init_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(initial_settings_frame_bad_client_test
   test/core/bad_client/bad_client.cc
   test/core/bad_client/tests/initial_settings_frame.cc
@@ -11586,6 +12078,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11639,6 +12132,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11694,6 +12188,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11736,6 +12231,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11778,6 +12274,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11818,6 +12315,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11860,6 +12358,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11900,6 +12399,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11939,6 +12439,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -11990,6 +12491,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12046,6 +12548,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12099,6 +12602,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12139,6 +12643,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12167,44 +12672,6 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
-add_executable(optional_test
-  test/core/gprpp/optional_test.cc
-  third_party/googletest/googletest/src/gtest-all.cc
-  third_party/googletest/googlemock/src/gmock-all.cc
-)
-
-target_include_directories(optional_test
-  PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
-    ${_gRPC_SSL_INCLUDE_DIR}
-    ${_gRPC_UPB_GENERATED_DIR}
-    ${_gRPC_UPB_GRPC_GENERATED_DIR}
-    ${_gRPC_UPB_INCLUDE_DIR}
-    ${_gRPC_ZLIB_INCLUDE_DIR}
-    third_party/googletest/googletest/include
-    third_party/googletest/googletest
-    third_party/googletest/googlemock/include
-    third_party/googletest/googlemock
-    ${_gRPC_PROTO_GENS_DIR}
-)
-
-target_link_libraries(optional_test
-  ${_gRPC_PROTOBUF_LIBRARIES}
-  ${_gRPC_ALLTARGETS_LIBRARIES}
-  grpc_test_util
-  grpc
-  gpr
-  address_sorting
-  upb
-  ${_gRPC_GFLAGS_LIBRARIES}
-)
-
-
-endif()
-if(gRPC_BUILD_TESTS)
-
 add_executable(orphanable_test
   test/core/gprpp/orphanable_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -12216,6 +12683,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12256,6 +12724,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12294,6 +12763,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12345,6 +12815,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12403,6 +12874,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12444,6 +12916,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12529,6 +13002,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12608,6 +13082,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12666,6 +13141,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12706,6 +13182,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12744,6 +13221,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12770,6 +13248,47 @@
 
 endif()
 if(gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+
+  add_executable(remove_stream_from_stalled_lists_test
+    test/core/transport/chttp2/remove_stream_from_stalled_lists_test.cc
+    third_party/googletest/googletest/src/gtest-all.cc
+    third_party/googletest/googlemock/src/gmock-all.cc
+  )
+
+  target_include_directories(remove_stream_from_stalled_lists_test
+    PRIVATE
+      ${CMAKE_CURRENT_SOURCE_DIR}
+      ${CMAKE_CURRENT_SOURCE_DIR}/include
+      ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
+      ${_gRPC_SSL_INCLUDE_DIR}
+      ${_gRPC_UPB_GENERATED_DIR}
+      ${_gRPC_UPB_GRPC_GENERATED_DIR}
+      ${_gRPC_UPB_INCLUDE_DIR}
+      ${_gRPC_ZLIB_INCLUDE_DIR}
+      third_party/googletest/googletest/include
+      third_party/googletest/googletest
+      third_party/googletest/googlemock/include
+      third_party/googletest/googlemock
+      ${_gRPC_PROTO_GENS_DIR}
+  )
+
+  target_link_libraries(remove_stream_from_stalled_lists_test
+    ${_gRPC_PROTOBUF_LIBRARIES}
+    ${_gRPC_ALLTARGETS_LIBRARIES}
+    grpc_test_util
+    grpc
+    gpr
+    address_sorting
+    upb
+    ${_gRPC_GFLAGS_LIBRARIES}
+  )
+
+
+endif()
+endif()
+if(gRPC_BUILD_TESTS)
 
 add_executable(retry_throttle_test
   test/core/client_channel/retry_throttle_test.cc
@@ -12782,6 +13301,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12820,6 +13340,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12877,6 +13398,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12930,6 +13452,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -12983,6 +13506,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13012,6 +13536,45 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(server_chttp2_test
+  test/core/surface/server_chttp2_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(server_chttp2_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(server_chttp2_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc_test_util
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(server_context_test_spouse_test
   test/cpp/test/server_context_test_spouse_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -13023,6 +13586,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13076,6 +13640,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13130,6 +13695,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13172,6 +13738,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13223,6 +13790,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13280,6 +13848,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13320,6 +13889,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13358,6 +13928,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13412,6 +13983,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13454,6 +14026,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13481,82 +14054,6 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
-add_executable(slice_hash_table_test
-  test/core/slice/slice_hash_table_test.cc
-  third_party/googletest/googletest/src/gtest-all.cc
-  third_party/googletest/googlemock/src/gmock-all.cc
-)
-
-target_include_directories(slice_hash_table_test
-  PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
-    ${_gRPC_SSL_INCLUDE_DIR}
-    ${_gRPC_UPB_GENERATED_DIR}
-    ${_gRPC_UPB_GRPC_GENERATED_DIR}
-    ${_gRPC_UPB_INCLUDE_DIR}
-    ${_gRPC_ZLIB_INCLUDE_DIR}
-    third_party/googletest/googletest/include
-    third_party/googletest/googletest
-    third_party/googletest/googlemock/include
-    third_party/googletest/googlemock
-    ${_gRPC_PROTO_GENS_DIR}
-)
-
-target_link_libraries(slice_hash_table_test
-  ${_gRPC_PROTOBUF_LIBRARIES}
-  ${_gRPC_ALLTARGETS_LIBRARIES}
-  grpc_test_util
-  grpc
-  gpr
-  address_sorting
-  upb
-  ${_gRPC_GFLAGS_LIBRARIES}
-)
-
-
-endif()
-if(gRPC_BUILD_TESTS)
-
-add_executable(slice_weak_hash_table_test
-  test/core/slice/slice_weak_hash_table_test.cc
-  third_party/googletest/googletest/src/gtest-all.cc
-  third_party/googletest/googlemock/src/gmock-all.cc
-)
-
-target_include_directories(slice_weak_hash_table_test
-  PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
-    ${_gRPC_SSL_INCLUDE_DIR}
-    ${_gRPC_UPB_GENERATED_DIR}
-    ${_gRPC_UPB_GRPC_GENERATED_DIR}
-    ${_gRPC_UPB_INCLUDE_DIR}
-    ${_gRPC_ZLIB_INCLUDE_DIR}
-    third_party/googletest/googletest/include
-    third_party/googletest/googletest
-    third_party/googletest/googlemock/include
-    third_party/googletest/googlemock
-    ${_gRPC_PROTO_GENS_DIR}
-)
-
-target_link_libraries(slice_weak_hash_table_test
-  ${_gRPC_PROTOBUF_LIBRARIES}
-  ${_gRPC_ALLTARGETS_LIBRARIES}
-  grpc_test_util
-  grpc
-  gpr
-  address_sorting
-  upb
-  ${_gRPC_GFLAGS_LIBRARIES}
-)
-
-
-endif()
-if(gRPC_BUILD_TESTS)
-
 add_executable(static_metadata_test
   test/core/transport/static_metadata_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -13568,6 +14065,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13606,6 +14104,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13644,6 +14143,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13682,6 +14182,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13710,6 +14211,48 @@
 if(gRPC_BUILD_TESTS)
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
+  add_executable(stranded_event_test
+    test/core/end2end/cq_verifier.cc
+    test/core/iomgr/stranded_event_test.cc
+    third_party/googletest/googletest/src/gtest-all.cc
+    third_party/googletest/googlemock/src/gmock-all.cc
+  )
+
+  target_include_directories(stranded_event_test
+    PRIVATE
+      ${CMAKE_CURRENT_SOURCE_DIR}
+      ${CMAKE_CURRENT_SOURCE_DIR}/include
+      ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
+      ${_gRPC_SSL_INCLUDE_DIR}
+      ${_gRPC_UPB_GENERATED_DIR}
+      ${_gRPC_UPB_GRPC_GENERATED_DIR}
+      ${_gRPC_UPB_INCLUDE_DIR}
+      ${_gRPC_ZLIB_INCLUDE_DIR}
+      third_party/googletest/googletest/include
+      third_party/googletest/googletest
+      third_party/googletest/googlemock/include
+      third_party/googletest/googlemock
+      ${_gRPC_PROTO_GENS_DIR}
+  )
+
+  target_link_libraries(stranded_event_test
+    ${_gRPC_PROTOBUF_LIBRARIES}
+    ${_gRPC_ALLTARGETS_LIBRARIES}
+    grpc_test_util
+    grpc
+    gpr
+    address_sorting
+    upb
+    ${_gRPC_GFLAGS_LIBRARIES}
+  )
+
+
+endif()
+endif()
+if(gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+
   add_executable(streaming_throughput_test
     ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc
     ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
@@ -13737,6 +14280,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13778,6 +14322,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13806,44 +14351,6 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
-add_executable(string_view_test
-  test/core/gprpp/string_view_test.cc
-  third_party/googletest/googletest/src/gtest-all.cc
-  third_party/googletest/googlemock/src/gmock-all.cc
-)
-
-target_include_directories(string_view_test
-  PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/include
-    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
-    ${_gRPC_SSL_INCLUDE_DIR}
-    ${_gRPC_UPB_GENERATED_DIR}
-    ${_gRPC_UPB_GRPC_GENERATED_DIR}
-    ${_gRPC_UPB_INCLUDE_DIR}
-    ${_gRPC_ZLIB_INCLUDE_DIR}
-    third_party/googletest/googletest/include
-    third_party/googletest/googletest
-    third_party/googletest/googlemock/include
-    third_party/googletest/googlemock
-    ${_gRPC_PROTO_GENS_DIR}
-)
-
-target_link_libraries(string_view_test
-  ${_gRPC_PROTOBUF_LIBRARIES}
-  ${_gRPC_ALLTARGETS_LIBRARIES}
-  grpc_test_util
-  grpc
-  gpr
-  address_sorting
-  upb
-  ${_gRPC_GFLAGS_LIBRARIES}
-)
-
-
-endif()
-if(gRPC_BUILD_TESTS)
-
 add_executable(test_cpp_client_credentials_test
   test/cpp/client/credentials_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -13855,6 +14362,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13894,6 +14402,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13934,6 +14443,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -13974,6 +14484,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14032,6 +14543,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14074,6 +14586,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14114,6 +14627,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14143,10 +14657,6 @@
 if(gRPC_BUILD_TESTS)
 
 add_executable(tls_security_connector_test
-  test/core/end2end/data/client_certs.cc
-  test/core/end2end/data/server1_cert.cc
-  test/core/end2end/data/server1_key.cc
-  test/core/end2end/data/test_root_cert.cc
   test/core/security/tls_security_connector_test.cc
   third_party/googletest/googletest/src/gtest-all.cc
   third_party/googletest/googlemock/src/gmock-all.cc
@@ -14157,6 +14667,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14184,6 +14695,49 @@
 endif()
 if(gRPC_BUILD_TESTS)
 
+add_executable(too_many_pings_test
+  test/core/end2end/cq_verifier.cc
+  test/core/transport/chttp2/too_many_pings_test.cc
+  third_party/googletest/googletest/src/gtest-all.cc
+  third_party/googletest/googlemock/src/gmock-all.cc
+)
+
+target_include_directories(too_many_pings_test
+  PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+    ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
+    ${_gRPC_SSL_INCLUDE_DIR}
+    ${_gRPC_UPB_GENERATED_DIR}
+    ${_gRPC_UPB_GRPC_GENERATED_DIR}
+    ${_gRPC_UPB_INCLUDE_DIR}
+    ${_gRPC_ZLIB_INCLUDE_DIR}
+    third_party/googletest/googletest/include
+    third_party/googletest/googletest
+    third_party/googletest/googlemock/include
+    third_party/googletest/googlemock
+    ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(too_many_pings_test
+  ${_gRPC_PROTOBUF_LIBRARIES}
+  ${_gRPC_ALLTARGETS_LIBRARIES}
+  grpc++_test_util
+  grpc_test_util
+  grpc++
+  grpc++_test_config
+  grpc
+  gpr
+  address_sorting
+  upb
+  ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+
+endif()
+if(gRPC_BUILD_TESTS)
+
 add_executable(unknown_frame_bad_client_test
   test/core/bad_client/bad_client.cc
   test/core/bad_client/tests/unknown_frame.cc
@@ -14197,6 +14751,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14237,6 +14792,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14276,6 +14832,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14320,6 +14877,8 @@
     ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/simple_messages.grpc.pb.h
     test/core/util/cmdline.cc
     test/core/util/debugger_macros.cc
+    test/core/util/eval_args_mock_endpoint.cc
+    test/core/util/examine_stack.cc
     test/core/util/fuzzer_util.cc
     test/core/util/grpc_profiler.cc
     test/core/util/histogram.cc
@@ -14348,6 +14907,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14368,6 +14928,9 @@
     gpr
     address_sorting
     upb
+    absl::symbolize
+    absl::stacktrace
+    absl::failure_signal_handler
     ${_gRPC_GFLAGS_LIBRARIES}
   )
 
@@ -14387,6 +14950,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14452,6 +15016,66 @@
     ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/lrs_for_test.grpc.pb.cc
     ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/lrs_for_test.pb.h
     ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/lrs_for_test.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/address.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/address.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/address.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/address.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/ads.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/ads.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/ads.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/ads.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/base.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/base.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/base.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/base.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/cluster.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/cluster.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/cluster.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/cluster.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/config_source.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/config_source.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/config_source.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/config_source.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/discovery.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/discovery.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/discovery.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/discovery.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/endpoint.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/endpoint.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/endpoint.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/endpoint.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/http_connection_manager.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/http_connection_manager.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/http_connection_manager.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/http_connection_manager.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/listener.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/listener.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/listener.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/listener.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/load_report.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/load_report.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/load_report.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/load_report.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/lrs.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/lrs.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/lrs.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/lrs.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/percent.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/range.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/regex.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/regex.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/regex.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/regex.grpc.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.grpc.pb.cc
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.pb.h
+    ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/route.grpc.pb.h
     test/cpp/end2end/test_service_impl.cc
     test/cpp/end2end/xds_end2end_test.cc
     third_party/googletest/googletest/src/gtest-all.cc
@@ -14463,6 +15087,7 @@
       ${CMAKE_CURRENT_SOURCE_DIR}
       ${CMAKE_CURRENT_SOURCE_DIR}/include
       ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+      ${_gRPC_RE2_INCLUDE_DIR}
       ${_gRPC_SSL_INCLUDE_DIR}
       ${_gRPC_UPB_GENERATED_DIR}
       ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14516,6 +15141,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14568,6 +15194,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14609,6 +15236,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14649,6 +15277,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14689,6 +15318,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14729,6 +15359,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14769,6 +15400,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14809,6 +15441,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14849,6 +15482,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14889,6 +15523,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14929,6 +15564,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -14969,6 +15605,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -15009,6 +15646,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -15038,10 +15676,6 @@
 if(gRPC_BUILD_TESTS)
 
 add_executable(ssl_server_fuzzer_one_entry
-  test/core/end2end/data/client_certs.cc
-  test/core/end2end/data/server1_cert.cc
-  test/core/end2end/data/server1_key.cc
-  test/core/end2end/data/test_root_cert.cc
   test/core/security/ssl_server_fuzzer.cc
   test/core/util/one_corpus_entry_fuzzer.cc
   third_party/googletest/googletest/src/gtest-all.cc
@@ -15053,6 +15687,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -15082,7 +15717,7 @@
 if(gRPC_BUILD_TESTS)
 
 add_executable(uri_fuzzer_test_one_entry
-  test/core/client_channel/uri_fuzzer_test.cc
+  test/core/uri/uri_fuzzer_test.cc
   test/core/util/one_corpus_entry_fuzzer.cc
   third_party/googletest/googletest/src/gtest-all.cc
   third_party/googletest/googlemock/src/gmock-all.cc
@@ -15093,6 +15728,7 @@
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+    ${_gRPC_RE2_INCLUDE_DIR}
     ${_gRPC_SSL_INCLUDE_DIR}
     ${_gRPC_UPB_GENERATED_DIR}
     ${_gRPC_UPB_GRPC_GENERATED_DIR}
@@ -15138,7 +15774,7 @@
 configure_file(cmake/gRPCConfig.cmake.in
   gRPCConfig.cmake @ONLY)
 write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/gRPCConfigVersion.cmake
-  VERSION ${PACKAGE_VERSION}
+  VERSION ${gRPC_CPP_VERSION}
   COMPATIBILITY AnyNewerVersion)
 install(FILES
     ${CMAKE_CURRENT_BINARY_DIR}/gRPCConfig.cmake
@@ -15147,6 +15783,7 @@
 )
 install(FILES
     ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/Findc-ares.cmake
+    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/Findre2.cmake
   DESTINATION ${gRPC_INSTALL_CMAKEDIR}/modules
 )
 
@@ -15177,7 +15814,7 @@
   "gRPC platform support library"
   "${gRPC_CORE_VERSION}"
   ""
-  "-lgpr -labsl_str_format_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+  "-lgpr -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
   ""
   "gpr.pc")
 
@@ -15187,7 +15824,7 @@
   "high performance general RPC framework"
   "${gRPC_CORE_VERSION}"
   "gpr openssl"
-  "-lgrpc -laddress_sorting -lupb -lcares -lz -labsl_bad_optional_access -labsl_str_format_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+  "-lgrpc -laddress_sorting -lre2 -lupb -lcares -lz -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
   ""
   "grpc.pc")
 
@@ -15197,7 +15834,7 @@
   "high performance general RPC framework without SSL"
   "${gRPC_CORE_VERSION}"
   "gpr"
-  "-lgrpc_unsecure -labsl_bad_optional_access -labsl_str_format_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+  "-lgrpc_unsecure -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
   ""
   "grpc_unsecure.pc")
 
@@ -15205,9 +15842,9 @@
 generate_pkgconfig(
   "gRPC++"
   "C++ wrapper for gRPC"
-  "${PACKAGE_VERSION}"
+  "${gRPC_CPP_VERSION}"
   "grpc"
-  "-lgrpc++ -labsl_bad_optional_access -labsl_str_format_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+  "-lgrpc++ -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
   ""
   "grpc++.pc")
 
@@ -15215,8 +15852,8 @@
 generate_pkgconfig(
   "gRPC++ unsecure"
   "C++ wrapper for gRPC without SSL"
-  "${PACKAGE_VERSION}"
+  "${gRPC_CPP_VERSION}"
   "grpc_unsecure"
-  "-lgrpc++_unsecure -labsl_bad_optional_access -labsl_str_format_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
+  "-lgrpc++_unsecure -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations"
   ""
   "grpc++_unsecure.pc")
diff --git a/grpc/CONTRIBUTING.md b/grpc/CONTRIBUTING.md
index c524257..1d074d8 100644
--- a/grpc/CONTRIBUTING.md
+++ b/grpc/CONTRIBUTING.md
@@ -7,6 +7,9 @@
 If you are new to github, please start by reading [Pull Request
 howto](https://help.github.com/articles/about-pull-requests/)
 
+If you are looking for features to work on, please filter the issues list with the label ["disposition/help wanted"](https://github.com/grpc/grpc/issues?q=label%3A%22disposition%2Fhelp+wanted%22).
+Please note that some of these feature requests might have been closed in the past as a result of them being marked as stale due to there being no activity, but these are still valid feature requests.
+
 ## Legal requirements
 
 In order to protect both you and ourselves, you will need to sign the
diff --git a/grpc/PYTHON-MANIFEST.in b/grpc/PYTHON-MANIFEST.in
index b63748b..391de4e 100644
--- a/grpc/PYTHON-MANIFEST.in
+++ b/grpc/PYTHON-MANIFEST.in
@@ -8,6 +8,7 @@
 graft third_party/address_sorting
 graft third_party/boringssl-with-bazel
 graft third_party/cares
+graft third_party/re2
 graft third_party/upb
 graft third_party/zlib
 include src/python/grpcio/_parallel_compile_patch.py
diff --git a/grpc/Rakefile b/grpc/Rakefile
index 3b23d0b..bad56df 100755
--- a/grpc/Rakefile
+++ b/grpc/Rakefile
@@ -7,6 +7,8 @@
 
 require_relative 'build_config.rb'
 
+load 'tools/distrib/rake_compiler_docker_image.rb'
+
 # Add rubocop style checking tasks
 RuboCop::RakeTask.new(:rubocop) do |task|
   task.options = ['-c', 'src/ruby/.rubocop.yml']
@@ -81,8 +83,6 @@
 
 desc 'Build the Windows gRPC DLLs for Ruby'
 task 'dlls' do
-  require 'rake_compiler_dock'
-
   grpc_config = ENV['GRPC_CONFIG'] || 'opt'
   verbose = ENV['V'] || '0'
 
@@ -106,7 +106,7 @@
     env_comp += "CXX=#{opt[:cross]}-g++ "
     env_comp += "LD=#{opt[:cross]}-gcc "
     env_comp += "LDXX=#{opt[:cross]}-g++ "
-    RakeCompilerDock.sh <<-EOT, platform: opt[:platform]
+    run_rake_compiler opt[:platform], <<-EOT
       gem update --system --no-document && \
       #{env} #{env_comp} make -j`nproc` #{out} && \
       #{opt[:cross]}-strip -x -S #{out} && \
@@ -121,6 +121,7 @@
   verbose = ENV['V'] || '0'
 
   grpc_config = ENV['GRPC_CONFIG'] || 'opt'
+  ruby_cc_versions = '2.7.0:2.6.0:2.5.0:2.4.0:2.3.0'
 
   if RUBY_PLATFORM =~ /darwin/
     FileUtils.touch 'grpc_c.32.ruby'
@@ -130,22 +131,28 @@
         "invoked on macos with ruby #{RUBY_VERSION}. The ruby macos artifact " \
         "build should be running on ruby 2.5."
     end
-    system "rake cross native gem RUBY_CC_VERSION=2.7.0:2.6.0:2.5.0:2.4.0:2.3.0 V=#{verbose} GRPC_CONFIG=#{grpc_config}"
+    system "rake cross native gem RUBY_CC_VERSION=#{ruby_cc_versions} V=#{verbose} GRPC_CONFIG=#{grpc_config}"
   else
-    require 'rake_compiler_dock'
-
     Rake::Task['dlls'].execute
-    ['x86-mingw32', 'x64-mingw32', 'x86_64-linux', 'x86-linux'].each do |plat|
-      RakeCompilerDock.sh <<-EOT, platform: plat
-        # Avoid conflicting declarations of gettimeofday: https://github.com/rake-compiler/rake-compiler-dock/issues/32
-        find /usr/local/rake-compiler -name win32.h | while read f ; do sudo sed -i 's/gettimeofday/rb_gettimeofday/' $f ; done && \
-
+    ['x86-mingw32', 'x64-mingw32'].each do |plat|
+      run_rake_compiler plat, <<-EOT
         gem update --system --no-document && \
         bundle && \
-        rake native:#{plat} pkg/#{spec.full_name}-#{plat}.gem \
-          RUBY_CC_VERSION=2.7.0:2.6.0:2.5.0:2.4.0:2.3.0 \
-          V=#{verbose} \
-          GRPC_CONFIG=#{grpc_config}
+        rake native:#{plat} pkg/#{spec.full_name}-#{plat}.gem pkg/#{spec.full_name}.gem \
+          RUBY_CC_VERSION=#{ruby_cc_versions} V=#{verbose} GRPC_CONFIG=#{grpc_config}
+      EOT
+    end
+    # Truncate grpc_c.*.ruby files because they're for Windows only.
+    File.truncate('grpc_c.32.ruby', 0)
+    File.truncate('grpc_c.64.ruby', 0)
+    ['x86_64-linux', 'x86-linux'].each do |plat|
+      run_rake_compiler plat,  <<-EOT
+        gem update --system --no-document && \
+        bundle && \
+        rake native:#{plat} pkg/#{spec.full_name}-#{plat}.gem pkg/#{spec.full_name}.gem \
+          RUBY_CC_VERSION=#{ruby_cc_versions} V=#{verbose} GRPC_CONFIG=#{grpc_config} &&
+        sudo chmod -R a+rw pkg &&
+        patchelf_gem.sh pkg/#{spec.full_name}-#{plat}.gem
       EOT
     end
   end
diff --git a/grpc/TROUBLESHOOTING.md b/grpc/TROUBLESHOOTING.md
index 6ef4801..035213b 100644
--- a/grpc/TROUBLESHOOTING.md
+++ b/grpc/TROUBLESHOOTING.md
@@ -16,7 +16,7 @@
 
 `GRPC_TRACE` can be used to enable extra logging for some internal gRPC components. Enabling the right traces can be invaluable
 for diagnosing for what is going wrong when things aren't working as intended. Possible values for `GRPC_TRACE` are listed in [Environment Variables Overview](doc/environment_variables.md).
-Multiple traces can be enable at once (use comma as separator).
+Multiple traces can be enabled at once (use comma as separator).
 
 ```
 # Enable debug logs for an application
diff --git a/grpc/WORKSPACE b/grpc/WORKSPACE
index f1eeb51..5d77280 100644
--- a/grpc/WORKSPACE
+++ b/grpc/WORKSPACE
@@ -18,12 +18,25 @@
     "//third_party/toolchains/bazel_0.26.0_rbe_windows:cc-toolchain-x64_windows",
 )
 
-load("@bazel_toolchains//rules/exec_properties:exec_properties.bzl", "create_exec_properties_dict", "custom_exec_properties")
+load("@bazel_toolchains//rules/exec_properties:exec_properties.bzl", "create_exec_properties_dict", "custom_exec_properties", "merge_dicts")
 
 custom_exec_properties(
     name = "grpc_custom_exec_properties",
     constants = {
-        "LARGE_MACHINE": create_exec_properties_dict(gce_machine_type = "n1-standard-8"),
+        "LARGE_MACHINE": merge_dicts(
+            create_exec_properties_dict(),
+            # TODO(jtattermusch): specifying 'labels = {"abc": "xyz"}' in create_exec_properties_dict
+            # is not possible without https://github.com/bazelbuild/bazel-toolchains/pull/748
+            # and currently the toolchain we're using is too old for that. To be able to select worker
+            # pools through labels, we use a workaround and populate the corresponding label values
+            # manually (see create_exec_properties_dict logic for how labels get transformed)
+            # Remove this workaround once we transition to a new-enough bazel toolchain.
+            # The next line corresponds to 'labels = {"os": "ubuntu", "machine_size": "large"}'
+            {
+                "label:os": "ubuntu",
+                "label:machine_size": "large",
+            },
+        ),
     },
 )
 
@@ -32,13 +45,23 @@
 # Create toolchain configuration for remote execution.
 rbe_autoconfig(
     name = "rbe_default",
-    exec_properties = create_exec_properties_dict(
-        docker_add_capabilities = "SYS_PTRACE",
-        docker_privileged = True,
-        # n1-highmem-2 is the default (small machine) machine type. Targets
-        # that want to use other machines (such as LARGE_MACHINE) will override
-        # this value.
-        gce_machine_type = "n1-highmem-2",
+    exec_properties = merge_dicts(
+        create_exec_properties_dict(
+            docker_add_capabilities = "SYS_PTRACE",
+            docker_privileged = True,
+            os_family = "Linux",
+        ),
+        # TODO(jtattermusch): specifying 'labels = {"abc": "xyz"}' in create_exec_properties_dict
+        # is not possible without https://github.com/bazelbuild/bazel-toolchains/pull/748
+        # and currently the toolchain we're using is too old for that. To be able to select worker
+        # pools through labels, we use a workaround and populate the corresponding label values
+        # manually (see create_exec_properties_dict logic for how labels get transformed)
+        # Remove this workaround once we transition to a new-enough bazel toolchain.
+        # The next line corresponds to 'labels = {"os": "ubuntu", "machine_size": "small"}'
+        {
+            "label:os": "ubuntu",
+            "label:machine_size": "small",
+        },
     ),
     # use exec_properties instead of deprecated remote_execution_properties
     use_legacy_platform_definition = False,
diff --git a/grpc/bazel/grpc_build_system.bzl b/grpc/bazel/grpc_build_system.bzl
index 56b57a1..3452788 100644
--- a/grpc/bazel/grpc_build_system.bzl
+++ b/grpc/bazel/grpc_build_system.bzl
@@ -67,7 +67,9 @@
         public_hdrs = [],
         hdrs = [],
         external_deps = [],
+        defines = [],
         deps = [],
+        select_deps = None,
         standalone = False,
         language = "C++",
         testonly = False,
@@ -85,10 +87,14 @@
     if use_cfstream:
         linkopts = linkopts + if_mac(["-framework CoreFoundation"])
 
+    if select_deps:
+        deps += select(select_deps)
+
     native.cc_library(
         name = name,
         srcs = srcs,
-        defines = select({
+        defines = defines +
+                  select({
                       "//:grpc_no_ares": ["GRPC_ARES=0"],
                       "//conditions:default": [],
                   }) +
@@ -110,6 +116,7 @@
         includes = [
             "include",
             "src/core/ext/upb-generated",  # Once upb code-gen issue is resolved, remove this.
+            "src/core/ext/upbdefs-generated",  # Once upb code-gen issue is resolved, remove this.
         ],
         alwayslink = alwayslink,
         data = data,
@@ -230,7 +237,7 @@
         **args
     )
 
-def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], data = [], language = "C++", testonly = False, linkshared = False, linkopts = [], tags = []):
+def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], data = [], language = "C++", testonly = False, linkshared = False, linkopts = [], tags = [], features = []):
     copts = []
     if language.upper() == "C":
         copts = ["-std=c99"]
@@ -245,6 +252,7 @@
         copts = copts,
         linkopts = if_not_windows(["-pthread"]) + linkopts,
         tags = tags,
+        features = features,
     )
 
 def grpc_generate_one_off_targets():
diff --git a/grpc/bazel/grpc_deps.bzl b/grpc/bazel/grpc_deps.bzl
index bc66dfe..ed8786e 100644
--- a/grpc/bazel/grpc_deps.bzl
+++ b/grpc/bazel/grpc_deps.bzl
@@ -63,7 +63,7 @@
 
     native.bind(
         name = "gtest",
-        actual = "@com_github_google_googletest//:gtest",
+        actual = "@com_google_googletest//:gtest",
     )
 
     native.bind(
@@ -72,6 +72,11 @@
     )
 
     native.bind(
+        name = "re2",
+        actual = "@com_github_google_re2//:re2",
+    )
+
+    native.bind(
         name = "gflags",
         actual = "@com_github_gflags_gflags//:gflags",
     )
@@ -131,9 +136,12 @@
             name = "boringssl",
             # Use github mirror instead of https://boringssl.googlesource.com/boringssl
             # to obtain a boringssl archive with consistent sha256
-            sha256 = "a3d4de4f03cb321ef943678d72a045c9a19d26b23d6f4e313f97600c65201a27",
-            strip_prefix = "boringssl-1c2769383f027befac5b75b6cedd25daf3bf4dcf",
-            url = "https://github.com/google/boringssl/archive/1c2769383f027befac5b75b6cedd25daf3bf4dcf.tar.gz",
+            sha256 = "cb0fd3eda612d4ae4be21108938800a19b015717a7627ea7f530e3469d207707",
+            strip_prefix = "boringssl-88aeb757f1a415c71fb4cbf5af936ecae4bc8179",
+            urls = [
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/88aeb757f1a415c71fb4cbf5af936ecae4bc8179.tar.gz",
+                "https://github.com/google/boringssl/archive/88aeb757f1a415c71fb4cbf5af936ecae4bc8179.tar.gz",
+            ],
         )
 
     if "zlib" not in native.existing_rules():
@@ -142,23 +150,33 @@
             build_file = "@com_github_grpc_grpc//third_party:zlib.BUILD",
             sha256 = "6d4d6640ca3121620995ee255945161821218752b551a1a180f4215f7d124d45",
             strip_prefix = "zlib-cacf7f1d4e3d44d871b605da3b647f07d718623f",
-            url = "https://github.com/madler/zlib/archive/cacf7f1d4e3d44d871b605da3b647f07d718623f.tar.gz",
+            urls = [
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/madler/zlib/archive/cacf7f1d4e3d44d871b605da3b647f07d718623f.tar.gz",
+                "https://github.com/madler/zlib/archive/cacf7f1d4e3d44d871b605da3b647f07d718623f.tar.gz",
+            ],
         )
 
     if "com_google_protobuf" not in native.existing_rules():
         http_archive(
             name = "com_google_protobuf",
-            sha256 = "51398b0b97b353c1c226d0ade0bae80c80380e691cba7c1a108918986784a1c7",
-            strip_prefix = "protobuf-29cd005ce1fe1a8fabf11e325cb13006a6646d59",
-            url = "https://github.com/google/protobuf/archive/29cd005ce1fe1a8fabf11e325cb13006a6646d59.tar.gz",
+            sha256 = "e589e39ef46fb2b3b476b3ca355bd324e5984cbdfac19f0e1625f0042e99c276",
+            strip_prefix = "protobuf-fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a",
+            urls = [
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/protobuf/archive/fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a.tar.gz",
+                "https://github.com/google/protobuf/archive/fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a.tar.gz",
+            ],
         )
 
-    if "com_github_google_googletest" not in native.existing_rules():
+    if "com_google_googletest" not in native.existing_rules():
         http_archive(
-            name = "com_github_google_googletest",
+            name = "com_google_googletest",
             sha256 = "443d383db648ebb8e391382c0ab63263b7091d03197f304390baac10f178a468",
             strip_prefix = "googletest-c9ccac7cb7345901884aabf5d1a786cfa6e2f397",
-            url = "https://github.com/google/googletest/archive/c9ccac7cb7345901884aabf5d1a786cfa6e2f397.tar.gz",  # 2019-08-19
+            urls = [
+                # 2019-08-19
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/googletest/archive/c9ccac7cb7345901884aabf5d1a786cfa6e2f397.tar.gz",
+                "https://github.com/google/googletest/archive/c9ccac7cb7345901884aabf5d1a786cfa6e2f397.tar.gz",
+            ],
         )
 
     if "rules_cc" not in native.existing_rules():
@@ -166,7 +184,11 @@
             name = "rules_cc",
             sha256 = "35f2fb4ea0b3e61ad64a369de284e4fbbdcdba71836a5555abb5e194cf119509",
             strip_prefix = "rules_cc-624b5d59dfb45672d4239422fa1e3de1822ee110",
-            url = "https://github.com/bazelbuild/rules_cc/archive/624b5d59dfb45672d4239422fa1e3de1822ee110.tar.gz",  #2019-08-15
+            urls = [
+                #2019-08-15
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/bazelbuild/rules_cc/archive/624b5d59dfb45672d4239422fa1e3de1822ee110.tar.gz",
+                "https://github.com/bazelbuild/rules_cc/archive/624b5d59dfb45672d4239422fa1e3de1822ee110.tar.gz",
+            ],
         )
 
     if "com_github_gflags_gflags" not in native.existing_rules():
@@ -174,7 +196,10 @@
             name = "com_github_gflags_gflags",
             sha256 = "63ae70ea3e05780f7547d03503a53de3a7d2d83ad1caaa443a31cb20aea28654",
             strip_prefix = "gflags-28f50e0fed19872e0fd50dd23ce2ee8cd759338e",
-            url = "https://github.com/gflags/gflags/archive/28f50e0fed19872e0fd50dd23ce2ee8cd759338e.tar.gz",
+            urls = [
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/gflags/gflags/archive/28f50e0fed19872e0fd50dd23ce2ee8cd759338e.tar.gz",
+                "https://github.com/gflags/gflags/archive/28f50e0fed19872e0fd50dd23ce2ee8cd759338e.tar.gz",
+            ],
         )
 
     if "com_github_google_benchmark" not in native.existing_rules():
@@ -182,7 +207,21 @@
             name = "com_github_google_benchmark",
             sha256 = "f68aec93154d010324c05bcd8c5cc53468b87af88d87acb5ddcfaa1bba044837",
             strip_prefix = "benchmark-090faecb454fbd6e6e17a75ef8146acb037118d4",
-            url = "https://github.com/google/benchmark/archive/090faecb454fbd6e6e17a75ef8146acb037118d4.tar.gz",
+            urls = [
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/benchmark/archive/090faecb454fbd6e6e17a75ef8146acb037118d4.tar.gz",
+                "https://github.com/google/benchmark/archive/090faecb454fbd6e6e17a75ef8146acb037118d4.tar.gz",
+            ],
+        )
+
+    if "com_github_google_re2" not in native.existing_rules():
+        http_archive(
+            name = "com_github_google_re2",
+            sha256 = "9f385e146410a8150b6f4cb1a57eab7ec806ced48d427554b1e754877ff26c3e",
+            strip_prefix = "re2-aecba11114cf1fac5497aeb844b6966106de3eb6",
+            urls = [
+                "https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/re2/archive/aecba11114cf1fac5497aeb844b6966106de3eb6.tar.gz",
+                "https://github.com/google/re2/archive/aecba11114cf1fac5497aeb844b6966106de3eb6.tar.gz",
+            ],
         )
 
     if "com_github_cares_cares" not in native.existing_rules():
@@ -191,7 +230,10 @@
             build_file = "@com_github_grpc_grpc//third_party:cares/cares.BUILD",
             sha256 = "e8c2751ddc70fed9dc6f999acd92e232d5846f009ee1674f8aee81f19b2b915a",
             strip_prefix = "c-ares-e982924acee7f7313b4baa4ee5ec000c5e373c30",
-            url = "https://github.com/c-ares/c-ares/archive/e982924acee7f7313b4baa4ee5ec000c5e373c30.tar.gz",