diff --git a/HISTORY.md b/HISTORY.md index ec2c7db1..4ad33df3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,7 +2,18 @@ ## Unrelease -1. 优化整数类型的验证,不允许浮点数转整数 +## 2.19.0 + +1. 优化整数类型的验证,不允许浮点数转整数。 +2. 增加 `org.xresloader.field_tag=` 插件,并允许通过 `ignore-field-tags` 忽略部分数据。 +3. 更新依赖库 + + `maven-surefire-plugin` -> 3.5.0 + + `maven-shade-plugin` -> 3.6.0 + + `commons-cli` -> 1.9.0 + + `commons-codec` -> 1.17.1 + + `log4j` -> 2.24.0 + + `com.google.protobuf` -> 4.28.0 + + `org.apache.poi` -> 5.3.0 ## 2.18.2 diff --git a/README.md b/README.md index 303a091a..9c1aac6e 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ echo " | --disable-data-validator | 允许忽略数据验证错误 | (>=2.17.0版本) | | --data-source-lru-cache-rows | 数据源的LRU Cache行数 | 仅缓存流式索引 | | --tolerate-max-empty-rows | 连续空行检测的行数 | 设置连续空行检测的行数(>=2.14.1版本) ,大量的连续空行通常是误操作 | +| --ignore-field-tags | 字段Tag | 忽略指定tag的字段转出(>=2.19.0版本) | ### 协议类型 @@ -316,30 +317,30 @@ validator: #### Protobuf插件 - Message插件 -| 插件名称 | 插件功能 | -| :------------------------------------ | :------------------------------------------------------------------------------------------------ | -| org.xresloader.msg_description | 消息体描述信息,会写入输出的header中和代码中 | -| org.xresloader.msg_require_mapping_all | 设置message的所有字段必须被全部映射 | -| org.xresloader.msg_separator | Plain模式字段分隔符,可指定多个,用于在一个单元格内配置复杂格式时的分隔符列表,默认值: `,;、|` | -| org.xresloader.ue.helper | 生成UE Utility代码的类名后缀 | -| org.xresloader.ue.not_data_table | 不是DataTable,helper类里不生成加载代码 | -| org.xresloader.ue.default_loader | Message是否开启默认Loader(`EN_LOADER_MODE_DEFAULT,EN_LOADER_MODE_ENABLE,EN_LOADER_MODE_DISABLE`) | -| org.xresloader.ue.include_header | Message输出的代码额外包含头文件,可多个 | +| 插件名称 | 插件功能 | +| :------------------------------------- | :------------------------------------------------------------------------------------------------- | +| org.xresloader.msg_description | 消息体描述信息,会写入输出的header中和代码中 | +| org.xresloader.msg_require_mapping_all | 设置message的所有字段必须被全部映射 | +| org.xresloader.msg_separator | Plain模式字段分隔符,可指定多个,用于在一个单元格内配置复杂格式时的分隔符列表,默认值: `,;、 | ` | +| org.xresloader.ue.helper | 生成UE Utility代码的类名后缀 | +| org.xresloader.ue.not_data_table | 不是DataTable,helper类里不生成加载代码 | +| org.xresloader.ue.default_loader | Message是否开启默认Loader(`EN_LOADER_MODE_DEFAULT,EN_LOADER_MODE_ENABLE,EN_LOADER_MODE_DISABLE`) | +| org.xresloader.ue.include_header | Message输出的代码额外包含头文件,可多个 | #### Protobuf插件 - Field插件 -| 插件名称 | 插件功能 | -| :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | -| org.xresloader.validator | 验证器,可填范围(log-high),message名,enum名。多个由 `\|` 分隔。任意验证器通过检查则认为数据有效 | -| org.xresloader.field_unique_tag | 设置唯一性检测Tag,多个相同tag的字段将合并并在转出数据时检测唯一性(可多个) | -| org.xresloader.field_not_null | 如果配置了字段映射且某个数据行对应的oneof数据为空,则忽略此行 | -| org.xresloader.map_key_validator | 用于Map类型Key的验证器,可填范围(log-high),message名,enum名。多个由 `\|` 分隔。任意验证器通过检查则认为数据有效 | -| org.xresloader.map_value_validator | 用于Map类型Value的验证器,可填范围(log-high),message名,enum名。多个由 `\|` 分隔。任意验证器通过检查则认为数据有效 | +| 插件名称 | 插件功能 | +| :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | +| org.xresloader.validator | 验证器,可填范围(log-high),message名,enum名。多个由 `\|` 分隔。任意验证器通过检查则认为数据有效 | +| org.xresloader.field_unique_tag | 设置唯一性检测Tag,多个相同tag的字段将合并并在转出数据时检测唯一性(可多个) | +| org.xresloader.field_not_null | 如果配置了字段映射且某个数据行对应的oneof数据为空,则忽略此行 | +| org.xresloader.map_key_validator | 用于Map类型Key的验证器,可填范围(low-high),message名,enum名。多个由 `\|` 分隔。任意验证器通过检查则认为数据有效 | +| org.xresloader.map_value_validator | 用于Map类型Value的验证器,可填范围(low-high),message名,enum名。多个由 `\|` 分隔。任意验证器通过检查则认为数据有效 | | org.xresloader.field_description | 字段描述信息,会写入输出的header中和代码中 | -| org.xresloader.field_alias | 字段别名,配合 **验证器** 功能,允许在数据源中直接填写别名来配置数据 | -| org.xresloader.field_ratio | 字段放大,用于比如配置百分率为 0.12,当 org.xresloader.field_ratio=100时转出的数据为12 | -| org.xresloader.field_separator | Plain模式分隔符,可指定多个,用于在一个单元格内配置复杂格式时的分隔符列表,默认值: `,;\| ` | -| org.xresloader.field_required | 设置字段为 **required** ,用于向proto3提供,proto2的 **required** 约束 | +| org.xresloader.field_alias | 字段别名,配合 **验证器** 功能,允许在数据源中直接填写别名来配置数据 | +| org.xresloader.field_ratio | 字段放大,用于比如配置百分率为 0.12,当 org.xresloader.field_ratio=100时转出的数据为12 | +| org.xresloader.field_separator | Plain模式分隔符,可指定多个,用于在一个单元格内配置复杂格式时的分隔符列表,默认值: `,;\| ` | +| org.xresloader.field_required | 设置字段为 **required** ,用于向proto3提供,proto2的 **required** 约束 | | org.xresloader.field_origin_value | 写出原始数据到指定字段( `Timestamp` 和 `Duration` 类型) | | org.xresloader.field_allow_missing_in_plain_mode | Plain模式下设置此字段可选,如果未设置则使用默认值(版本 2.16.0 版本开始支持) | | org.xresloader.field_list_strip_option | 给单个字段设置数组裁剪,可选值( `LIST_STRIP_DEFAULT\|LIST_STRIP_NOTHING\|LIST_STRIP_TAIL\|LIST_STRIP_ALL` )(版本 2.18.0 版本开始支持) | @@ -350,27 +351,29 @@ validator: | org.xresloader.field_list_min_size | 给单个字段设置数组最小长度,输入字符串:`"\|枚举名"`(版本 2.18.0 版本开始支持) | | org.xresloader.field_list_max_size | 给单个字段设置数组最大长度,输入字符串:`"\|枚举名"`(版本 2.18.0 版本开始支持) | | org.xresloader.field_list_strict_size | 设置单个字段设置数组严格长度要求,即不自动补全最小长度,而是报错。:`false\|true`(默认值: `false` ,版本 2.18.0 版本开始支持) | -| org.xresloader.ue.key_tag | 生成UE代码时,如果需要支持多个Key组合成一个Name,用这个字段指定系数(必须大于0) | -| org.xresloader.ue.ue_type_name | 生成UE代码时,如果指定了这个字段,那么生成的字段类型将是 `TSoftObjectPtr` , 并且支持蓝图中直接引用 | -| org.xresloader.ue.ue_type_is_class | 生成UE代码时,如果指定了这个字段,那么生成的字段类型将是 `TSoftClassPtr` , 并且支持蓝图中直接引用 | -| org.xresloader.ue.ue_origin_type_name | 生成UE代码时,如果指定了这个字段,那么生成的字段类型将使用这个类型,需要用户自己确保类型有效且对应的proto类型可以隐式转换到该类型 | -| org.xresloader.ue.ue_origin_type_default_value | 生成UE代码时,如果指定了这个字段,那么生成的字段的Reset代码将使用这个表达式,需要用户自己确保表达式有效且对应的proto类型可以隐式转换到该类型 | +| org.xresloader.field_tag | 设置字段Tag,配合 `--ignore-field-tags` 选项可用于跳过某些数据。(版本 2.19.0 版本开始支持) | +| org.xresloader.ue.key_tag | 生成UE代码时,如果需要支持多个Key组合成一个Name,用这个字段指定系数(必须大于0) | +| org.xresloader.ue.ue_type_name | 生成UE代码时,如果指定了这个字段,那么生成的字段类型将是 `TSoftObjectPtr` , 并且支持蓝图中直接引用 | +| org.xresloader.ue.ue_type_is_class | 生成UE代码时,如果指定了这个字段,那么生成的字段类型将是 `TSoftClassPtr` , 并且支持蓝图中直接引用 | +| org.xresloader.ue.ue_origin_type_name | 生成UE代码时,如果指定了这个字段,那么生成的字段类型将使用这个类型,需要用户自己确保类型有效且对应的proto类型可以隐式转换到该类型 | +| org.xresloader.ue.ue_origin_type_default_value | 生成UE代码时,如果指定了这个字段,那么生成的字段的Reset代码将使用这个表达式,需要用户自己确保表达式有效且对应的proto类型可以隐式转换到该类型 | #### Protobuf插件 - EnumValue插件 -| 插件名称 | 插件功能 | -| :------------------------------ | :-------------------------------------------------------------------- | +| 插件名称 | 插件功能 | +| :------------------------------- | :--------------------------------------------------------------------- | | org.xresloader.enumv_description | 枚举值描述信息,可能会写入输出的header中和代码中 | -| org.xresloader.enum_alias | 枚举值别名,配合 **验证器** 功能,允许在数据源中直接填写别名来配置数据 | +| org.xresloader.enum_alias | 枚举值别名,配合 **验证器** 功能,允许在数据源中直接填写别名来配置数据 | #### Protobuf插件 - Oneof插件(2.8.0版本及以上) -| 插件名称 | 插件功能 | -| :---------------------------------------------- | :-------------------------------------------------------------------------------------------------- | -| org.xresloader.oneof_description | oneof描述信息,可能会写入输出的header中和代码中 | -| org.xresloader.oneof_separator | Plain模式类型和值字段的分隔符,可指定多个,用于在一个单元格内配置复杂格式时的分隔符列表,默认值: `,;\| ` | -| org.xresloader.oneof_not_null | 如果配置了字段映射且某个数据行对应的oneof数据为空,则忽略此行 | -| org.xresloader.oneof_allow_missing_in_plain_mode | Plain模式下设置此字段可选,如果未设置则使用默认值(版本 2.16.0 版本开始支持) | +| 插件名称 | 插件功能 | +| :----------------------------------------------- | :------------------------------------------------------------------------------------------------------- | +| org.xresloader.oneof_description | oneof描述信息,可能会写入输出的header中和代码中 | +| org.xresloader.oneof_separator | Plain模式类型和值字段的分隔符,可指定多个,用于在一个单元格内配置复杂格式时的分隔符列表,默认值: `,;\| ` | +| org.xresloader.oneof_not_null | 如果配置了字段映射且某个数据行对应的oneof数据为空,则忽略此行 | +| org.xresloader.oneof_allow_missing_in_plain_mode | Plain模式下设置此字段可选,如果未设置则使用默认值(版本 2.16.0 版本开始支持) | +| org.xresloader.oneof_tag | 设置字段Tag,配合 `--ignore-field-tags` 选项可用于跳过某些数据。(版本 2.19.0 版本开始支持) | ## 生态和工具 diff --git a/header/org/xresloader/Xresloader.java b/header/org/xresloader/Xresloader.java index 4c048d9d..35cb56a2 100644 --- a/header/org/xresloader/Xresloader.java +++ b/header/org/xresloader/Xresloader.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // NO CHECKED-IN PROTOBUF GENCODE // source: xresloader.proto -// Protobuf Java Version: 4.27.0 +// Protobuf Java Version: 4.28.0 package org.xresloader; @@ -11,7 +11,7 @@ private Xresloader() {} com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 27, + /* minor= */ 28, /* patch= */ 0, /* suffix= */ "", Xresloader.class.getName()); @@ -39,10 +39,12 @@ public static void registerAllExtensions( registry.add(org.xresloader.Xresloader.fieldListMinSize); registry.add(org.xresloader.Xresloader.fieldListMaxSize); registry.add(org.xresloader.Xresloader.fieldListStrictSize); + registry.add(org.xresloader.Xresloader.fieldTag); registry.add(org.xresloader.Xresloader.oneofDescription); registry.add(org.xresloader.Xresloader.oneofSeparator); registry.add(org.xresloader.Xresloader.oneofNotNull); registry.add(org.xresloader.Xresloader.oneofAllowMissingInPlainMode); + registry.add(org.xresloader.Xresloader.oneofTag); registry.add(org.xresloader.Xresloader.enumDescription); registry.add(org.xresloader.Xresloader.enumvDescription); registry.add(org.xresloader.Xresloader.enumAlias); @@ -97,7 +99,7 @@ public enum ListStripOption com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, /* major= */ 4, - /* minor= */ 27, + /* minor= */ 28, /* patch= */ 0, /* suffix= */ "", ListStripOption.class.getName()); @@ -536,6 +538,21 @@ private ListStripOption(int value) { .newFileScopedGeneratedExtension( java.lang.Boolean.class, null); + public static final int FIELD_TAG_FIELD_NUMBER = 1022; + /** + *
+   * 字段Tag,可用于转出时设置跳过
+   * 
+ * + * extend .google.protobuf.FieldOptions { ... } + */ + public static final + com.google.protobuf.GeneratedMessage.GeneratedExtension< + com.google.protobuf.DescriptorProtos.FieldOptions, + java.util.List> fieldTag = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.String.class, + null); public static final int ONEOF_DESCRIPTION_FIELD_NUMBER = 1001; /** *
@@ -596,6 +613,21 @@ private ListStripOption(int value) {
           .newFileScopedGeneratedExtension(
         java.lang.Boolean.class,
         null);
+  public static final int ONEOF_TAG_FIELD_NUMBER = 1005;
+  /**
+   * 
+   * 字段Tag,可用于转出时设置跳过
+   * 
+ * + * extend .google.protobuf.OneofOptions { ... } + */ + public static final + com.google.protobuf.GeneratedMessage.GeneratedExtension< + com.google.protobuf.DescriptorProtos.OneofOptions, + java.util.List> oneofTag = com.google.protobuf.GeneratedMessage + .newFileScopedGeneratedExtension( + java.lang.String.class, + null); public static final int ENUM_DESCRIPTION_FIELD_NUMBER = 1001; /** *
@@ -686,17 +718,20 @@ private ListStripOption(int value) {
       "\001(\t:;\n\023field_list_max_size\022\035.google.prot" +
       "obuf.FieldOptions\030\374\007 \001(\t:>\n\026field_list_s" +
       "trict_size\022\035.google.protobuf.FieldOption" +
-      "s\030\375\007 \001(\010:9\n\021oneof_description\022\035.google.p" +
-      "rotobuf.OneofOptions\030\351\007 \001(\t:7\n\017oneof_sep" +
-      "arator\022\035.google.protobuf.OneofOptions\030\352\007" +
-      " \001(\t:6\n\016oneof_not_null\022\035.google.protobuf" +
-      ".OneofOptions\030\353\007 \001(\010:I\n!oneof_allow_miss" +
-      "ing_in_plain_mode\022\035.google.protobuf.Oneo" +
-      "fOptions\030\354\007 \001(\010:7\n\020enum_description\022\034.go" +
-      "ogle.protobuf.EnumOptions\030\351\007 \001(\t:=\n\021enum" +
-      "v_description\022!.google.protobuf.EnumValu" +
-      "eOptions\030\351\007 \001(\t:6\n\nenum_alias\022!.google.p" +
-      "rotobuf.EnumValueOptions\030\352\007 \003(\tb\006proto3"
+      "s\030\375\007 \001(\010:1\n\tfield_tag\022\035.google.protobuf." +
+      "FieldOptions\030\376\007 \003(\t:9\n\021oneof_description" +
+      "\022\035.google.protobuf.OneofOptions\030\351\007 \001(\t:7" +
+      "\n\017oneof_separator\022\035.google.protobuf.Oneo" +
+      "fOptions\030\352\007 \001(\t:6\n\016oneof_not_null\022\035.goog" +
+      "le.protobuf.OneofOptions\030\353\007 \001(\010:I\n!oneof" +
+      "_allow_missing_in_plain_mode\022\035.google.pr" +
+      "otobuf.OneofOptions\030\354\007 \001(\010:1\n\toneof_tag\022" +
+      "\035.google.protobuf.OneofOptions\030\355\007 \003(\t:7\n" +
+      "\020enum_description\022\034.google.protobuf.Enum" +
+      "Options\030\351\007 \001(\t:=\n\021enumv_description\022!.go" +
+      "ogle.protobuf.EnumValueOptions\030\351\007 \001(\t:6\n" +
+      "\nenum_alias\022!.google.protobuf.EnumValueO" +
+      "ptions\030\352\007 \003(\tb\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -724,13 +759,15 @@ private ListStripOption(int value) {
     fieldListMinSize.internalInit(descriptor.getExtensions().get(18));
     fieldListMaxSize.internalInit(descriptor.getExtensions().get(19));
     fieldListStrictSize.internalInit(descriptor.getExtensions().get(20));
-    oneofDescription.internalInit(descriptor.getExtensions().get(21));
-    oneofSeparator.internalInit(descriptor.getExtensions().get(22));
-    oneofNotNull.internalInit(descriptor.getExtensions().get(23));
-    oneofAllowMissingInPlainMode.internalInit(descriptor.getExtensions().get(24));
-    enumDescription.internalInit(descriptor.getExtensions().get(25));
-    enumvDescription.internalInit(descriptor.getExtensions().get(26));
-    enumAlias.internalInit(descriptor.getExtensions().get(27));
+    fieldTag.internalInit(descriptor.getExtensions().get(21));
+    oneofDescription.internalInit(descriptor.getExtensions().get(22));
+    oneofSeparator.internalInit(descriptor.getExtensions().get(23));
+    oneofNotNull.internalInit(descriptor.getExtensions().get(24));
+    oneofAllowMissingInPlainMode.internalInit(descriptor.getExtensions().get(25));
+    oneofTag.internalInit(descriptor.getExtensions().get(26));
+    enumDescription.internalInit(descriptor.getExtensions().get(27));
+    enumvDescription.internalInit(descriptor.getExtensions().get(28));
+    enumAlias.internalInit(descriptor.getExtensions().get(29));
     descriptor.resolveAllFeaturesImmutable();
     com.google.protobuf.DescriptorProtos.getDescriptor();
   }
diff --git a/header/org/xresloader/pb/PbHeaderV3.java b/header/org/xresloader/pb/PbHeaderV3.java
index 3b4b11f8..1385ba7a 100644
--- a/header/org/xresloader/pb/PbHeaderV3.java
+++ b/header/org/xresloader/pb/PbHeaderV3.java
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: pb_header_v3.proto
-// Protobuf Java Version: 4.27.0
+// Protobuf Java Version: 4.28.0
 
 package org.xresloader.pb;
 
@@ -11,7 +11,7 @@ private PbHeaderV3() {}
     com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
       com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
       /* major= */ 4,
-      /* minor= */ 27,
+      /* minor= */ 28,
       /* patch= */ 0,
       /* suffix= */ "",
       PbHeaderV3.class.getName());
@@ -71,7 +71,7 @@ public static final class xresloader_data_source extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 27,
+        /* minor= */ 28,
         /* patch= */ 0,
         /* suffix= */ "",
         xresloader_data_source.class.getName());
@@ -849,7 +849,7 @@ public static final class xresloader_header extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 27,
+        /* minor= */ 28,
         /* patch= */ 0,
         /* suffix= */ "",
         xresloader_header.class.getName());
@@ -2219,7 +2219,7 @@ public static final class xresloader_datablocks extends
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 27,
+        /* minor= */ 28,
         /* patch= */ 0,
         /* suffix= */ "",
         xresloader_datablocks.class.getName());
diff --git a/header/org/xresloader/ue/XresloaderUe.java b/header/org/xresloader/ue/XresloaderUe.java
index 30280088..9b2b6ae6 100644
--- a/header/org/xresloader/ue/XresloaderUe.java
+++ b/header/org/xresloader/ue/XresloaderUe.java
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: xresloader_ue.proto
-// Protobuf Java Version: 4.27.0
+// Protobuf Java Version: 4.28.0
 
 package org.xresloader.ue;
 
@@ -11,7 +11,7 @@ private XresloaderUe() {}
     com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
       com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
       /* major= */ 4,
-      /* minor= */ 27,
+      /* minor= */ 28,
       /* patch= */ 0,
       /* suffix= */ "",
       XresloaderUe.class.getName());
@@ -58,7 +58,7 @@ public enum loader_mode
       com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
         com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
         /* major= */ 4,
-        /* minor= */ 27,
+        /* minor= */ 28,
         /* patch= */ 0,
         /* suffix= */ "",
         loader_mode.class.getName());
diff --git a/loader-binding/cxx/pb_header.pb.cc b/loader-binding/cxx/pb_header.pb.cc
index cb3f4c51..e26a84a0 100644
--- a/loader-binding/cxx/pb_header.pb.cc
+++ b/loader-binding/cxx/pb_header.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: pb_header.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "pb_header.pb.h"
 
@@ -40,7 +40,13 @@ inline constexpr xresloader_data_source::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR xresloader_data_source::xresloader_data_source(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct xresloader_data_sourceDefaultTypeInternal {
   PROTOBUF_CONSTEXPR xresloader_data_sourceDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~xresloader_data_sourceDefaultTypeInternal() {}
@@ -72,7 +78,13 @@ inline constexpr xresloader_header::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR xresloader_header::xresloader_header(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct xresloader_headerDefaultTypeInternal {
   PROTOBUF_CONSTEXPR xresloader_headerDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~xresloader_headerDefaultTypeInternal() {}
@@ -95,7 +107,13 @@ inline constexpr xresloader_datablocks::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR xresloader_datablocks::xresloader_datablocks(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct xresloader_datablocksDefaultTypeInternal {
   PROTOBUF_CONSTEXPR xresloader_datablocksDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~xresloader_datablocksDefaultTypeInternal() {}
@@ -222,7 +240,11 @@ class xresloader_data_source::_Internal {
 };
 
 xresloader_data_source::xresloader_data_source(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:org.xresloader.pb.xresloader_data_source)
 }
@@ -237,7 +259,11 @@ inline PROTOBUF_NDEBUG_INLINE xresloader_data_source::Impl_::Impl_(
 xresloader_data_source::xresloader_data_source(
     ::google::protobuf::Arena* arena,
     const xresloader_data_source& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   xresloader_data_source* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -270,25 +296,33 @@ inline void xresloader_data_source::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-xresloader_data_source::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(xresloader_data_source, _impl_._cached_size_),
-              false,
-          },
-          &xresloader_data_source::MergeImpl,
-          &xresloader_data_source::kDescriptorMethods,
-          &descriptor_table_pb_5fheader_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    xresloader_data_source::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_xresloader_data_source_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &xresloader_data_source::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &xresloader_data_source::ByteSizeLong,
+                &xresloader_data_source::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(xresloader_data_source, _impl_._cached_size_),
+            false,
+        },
+        &xresloader_data_source::kDescriptorMethods,
+        &descriptor_table_pb_5fheader_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* xresloader_data_source::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 0, 58, 2> xresloader_data_source::_table_ = {
@@ -302,7 +336,7 @@ const ::_pbi::TcParseTable<2, 3, 0, 58, 2> xresloader_data_source::_table_ = {
     3,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_xresloader_data_source_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -362,79 +396,90 @@ PROTOBUF_NOINLINE void xresloader_data_source::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* xresloader_data_source::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_data_source)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional string file = 1;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_file();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_data_source.file");
-    target = stream->WriteStringMaybeAliased(1, _s, target);
-  }
-
-  // optional string sheet = 2;
-  if (cached_has_bits & 0x00000002u) {
-    const std::string& _s = this->_internal_sheet();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_data_source.sheet");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  // optional int32 count = 3;
-  if (cached_has_bits & 0x00000004u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<3>(
-            stream, this->_internal_count(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_data_source)
-  return target;
-}
-
-::size_t xresloader_data_source::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_data_source)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000007u) {
-    // optional string file = 1;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_file());
-    }
-
-    // optional string sheet = 2;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_sheet());
-    }
-
-    // optional int32 count = 3;
-    if (cached_has_bits & 0x00000004u) {
-      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-          this->_internal_count());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* xresloader_data_source::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const xresloader_data_source& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* xresloader_data_source::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const xresloader_data_source& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_data_source)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional string file = 1;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_file();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_data_source.file");
+            target = stream->WriteStringMaybeAliased(1, _s, target);
+          }
+
+          // optional string sheet = 2;
+          if (cached_has_bits & 0x00000002u) {
+            const std::string& _s = this_._internal_sheet();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_data_source.sheet");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
+
+          // optional int32 count = 3;
+          if (cached_has_bits & 0x00000004u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<3>(
+                    stream, this_._internal_count(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_data_source)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t xresloader_data_source::ByteSizeLong(const MessageLite& base) {
+          const xresloader_data_source& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t xresloader_data_source::ByteSizeLong() const {
+          const xresloader_data_source& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_data_source)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000007u) {
+            // optional string file = 1;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_file());
+            }
+            // optional string sheet = 2;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_sheet());
+            }
+            // optional int32 count = 3;
+            if (cached_has_bits & 0x00000004u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_count());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void xresloader_data_source::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -496,7 +541,11 @@ class xresloader_header::_Internal {
 };
 
 xresloader_header::xresloader_header(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:org.xresloader.pb.xresloader_header)
 }
@@ -514,7 +563,11 @@ inline PROTOBUF_NDEBUG_INLINE xresloader_header::Impl_::Impl_(
 xresloader_header::xresloader_header(
     ::google::protobuf::Arena* arena,
     const xresloader_header& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   xresloader_header* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -552,25 +605,33 @@ inline void xresloader_header::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-xresloader_header::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              xresloader_header::IsInitializedImpl,
-              PROTOBUF_FIELD_OFFSET(xresloader_header, _impl_._cached_size_),
-              false,
-          },
-          &xresloader_header::MergeImpl,
-          &xresloader_header::kDescriptorMethods,
-          &descriptor_table_pb_5fheader_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    xresloader_header::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_xresloader_header_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            xresloader_header::IsInitializedImpl,
+            &xresloader_header::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &xresloader_header::ByteSizeLong,
+                &xresloader_header::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(xresloader_header, _impl_._cached_size_),
+            false,
+        },
+        &xresloader_header::kDescriptorMethods,
+        &descriptor_table_pb_5fheader_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* xresloader_header::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 6, 1, 80, 2> xresloader_header::_table_ = {
@@ -584,7 +645,7 @@ const ::_pbi::TcParseTable<3, 6, 1, 80, 2> xresloader_header::_table_ = {
     6,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_xresloader_header_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -670,123 +731,142 @@ PROTOBUF_NOINLINE void xresloader_header::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* xresloader_header::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_header)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional string xres_ver = 1;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_xres_ver();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_header.xres_ver");
-    target = stream->WriteStringMaybeAliased(1, _s, target);
-  }
-
-  // optional string data_ver = 2;
-  if (cached_has_bits & 0x00000002u) {
-    const std::string& _s = this->_internal_data_ver();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_header.data_ver");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  // required uint32 count = 3;
-  if (cached_has_bits & 0x00000010u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        3, this->_internal_count(), target);
-  }
-
-  // required string hash_code = 4;
-  if (cached_has_bits & 0x00000004u) {
-    const std::string& _s = this->_internal_hash_code();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_header.hash_code");
-    target = stream->WriteStringMaybeAliased(4, _s, target);
-  }
-
-  // optional string description = 5;
-  if (cached_has_bits & 0x00000008u) {
-    const std::string& _s = this->_internal_description();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_header.description");
-    target = stream->WriteStringMaybeAliased(5, _s, target);
-  }
-
-  // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_data_source_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_data_source().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            11, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_header)
-  return target;
-}
-
-::size_t xresloader_header::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_header)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
-  total_size += 1UL * this->_internal_data_source_size();
-  for (const auto& msg : this->_internal_data_source()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional string xres_ver = 1;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_xres_ver());
-    }
-
-    // optional string data_ver = 2;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_data_ver());
-    }
-
-  }
-  // required string hash_code = 4;
-  if (cached_has_bits & 0x00000004u) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_hash_code());
-  }
-
-  // optional string description = 5;
-  if (cached_has_bits & 0x00000008u) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_description());
-  }
-
-  // required uint32 count = 3;
-  if (cached_has_bits & 0x00000010u) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_count());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* xresloader_header::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const xresloader_header& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* xresloader_header::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const xresloader_header& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_header)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional string xres_ver = 1;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_xres_ver();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_header.xres_ver");
+            target = stream->WriteStringMaybeAliased(1, _s, target);
+          }
+
+          // optional string data_ver = 2;
+          if (cached_has_bits & 0x00000002u) {
+            const std::string& _s = this_._internal_data_ver();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_header.data_ver");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
+
+          // required uint32 count = 3;
+          if (cached_has_bits & 0x00000010u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                3, this_._internal_count(), target);
+          }
+
+          // required string hash_code = 4;
+          if (cached_has_bits & 0x00000004u) {
+            const std::string& _s = this_._internal_hash_code();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_header.hash_code");
+            target = stream->WriteStringMaybeAliased(4, _s, target);
+          }
+
+          // optional string description = 5;
+          if (cached_has_bits & 0x00000008u) {
+            const std::string& _s = this_._internal_description();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_header.description");
+            target = stream->WriteStringMaybeAliased(5, _s, target);
+          }
+
+          // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_data_source_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_data_source().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    11, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_header)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t xresloader_header::ByteSizeLong(const MessageLite& base) {
+          const xresloader_header& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t xresloader_header::ByteSizeLong() const {
+          const xresloader_header& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_header)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
+             {
+              total_size += 1UL * this_._internal_data_source_size();
+              for (const auto& msg : this_._internal_data_source()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional string xres_ver = 1;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_xres_ver());
+            }
+            // optional string data_ver = 2;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_data_ver());
+            }
+          }
+           {
+            // required string hash_code = 4;
+            if (cached_has_bits & 0x00000004u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_hash_code());
+            }
+          }
+           {
+            // optional string description = 5;
+            if (cached_has_bits & 0x00000008u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_description());
+            }
+          }
+           {
+            // required uint32 count = 3;
+            if (cached_has_bits & 0x00000010u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_count());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void xresloader_header::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -864,7 +944,11 @@ class xresloader_datablocks::_Internal {
 };
 
 xresloader_datablocks::xresloader_datablocks(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:org.xresloader.pb.xresloader_datablocks)
 }
@@ -879,7 +963,11 @@ inline PROTOBUF_NDEBUG_INLINE xresloader_datablocks::Impl_::Impl_(
 xresloader_datablocks::xresloader_datablocks(
     ::google::protobuf::Arena* arena,
     const xresloader_datablocks& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   xresloader_datablocks* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -915,25 +1003,33 @@ inline void xresloader_datablocks::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-xresloader_datablocks::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              xresloader_datablocks::IsInitializedImpl,
-              PROTOBUF_FIELD_OFFSET(xresloader_datablocks, _impl_._cached_size_),
-              false,
-          },
-          &xresloader_datablocks::MergeImpl,
-          &xresloader_datablocks::kDescriptorMethods,
-          &descriptor_table_pb_5fheader_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    xresloader_datablocks::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_xresloader_datablocks_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            xresloader_datablocks::IsInitializedImpl,
+            &xresloader_datablocks::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &xresloader_datablocks::ByteSizeLong,
+                &xresloader_datablocks::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(xresloader_datablocks, _impl_._cached_size_),
+            false,
+        },
+        &xresloader_datablocks::kDescriptorMethods,
+        &descriptor_table_pb_5fheader_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* xresloader_datablocks::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 1, 65, 2> xresloader_datablocks::_table_ = {
@@ -947,7 +1043,7 @@ const ::_pbi::TcParseTable<2, 3, 1, 65, 2> xresloader_datablocks::_table_ = {
     3,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_xresloader_datablocks_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -1007,76 +1103,94 @@ PROTOBUF_NOINLINE void xresloader_datablocks::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* xresloader_datablocks::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_datablocks)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional .org.xresloader.pb.xresloader_header header = 1;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        1, *_impl_.header_, _impl_.header_->GetCachedSize(), target, stream);
-  }
-
-  // repeated bytes data_block = 2;
-  for (int i = 0, n = this->_internal_data_block_size(); i < n; ++i) {
-    const auto& s = this->_internal_data_block().Get(i);
-    target = stream->WriteBytes(2, s, target);
-  }
-
-  // optional string data_message_type = 3;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_data_message_type();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "org.xresloader.pb.xresloader_datablocks.data_message_type");
-    target = stream->WriteStringMaybeAliased(3, _s, target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_datablocks)
-  return target;
-}
-
-::size_t xresloader_datablocks::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_datablocks)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated bytes data_block = 2;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_data_block().size());
-  for (int i = 0, n = _internal_data_block().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
-        _internal_data_block().Get(i));
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional string data_message_type = 3;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_data_message_type());
-    }
-
-    // optional .org.xresloader.pb.xresloader_header header = 1;
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.header_);
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* xresloader_datablocks::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const xresloader_datablocks& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* xresloader_datablocks::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const xresloader_datablocks& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_datablocks)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional .org.xresloader.pb.xresloader_header header = 1;
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                1, *this_._impl_.header_, this_._impl_.header_->GetCachedSize(), target,
+                stream);
+          }
+
+          // repeated bytes data_block = 2;
+          for (int i = 0, n = this_._internal_data_block_size(); i < n; ++i) {
+            const auto& s = this_._internal_data_block().Get(i);
+            target = stream->WriteBytes(2, s, target);
+          }
+
+          // optional string data_message_type = 3;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_data_message_type();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "org.xresloader.pb.xresloader_datablocks.data_message_type");
+            target = stream->WriteStringMaybeAliased(3, _s, target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_datablocks)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t xresloader_datablocks::ByteSizeLong(const MessageLite& base) {
+          const xresloader_datablocks& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t xresloader_datablocks::ByteSizeLong() const {
+          const xresloader_datablocks& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_datablocks)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated bytes data_block = 2;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_data_block().size());
+              for (int i = 0, n = this_._internal_data_block().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
+                    this_._internal_data_block().Get(i));
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional string data_message_type = 3;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_data_message_type());
+            }
+            // optional .org.xresloader.pb.xresloader_header header = 1;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.header_);
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void xresloader_datablocks::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/loader-binding/cxx/pb_header.pb.h b/loader-binding/cxx/pb_header.pb.h
index 22336c4a..3036c3e8 100644
--- a/loader-binding/cxx/pb_header.pb.h
+++ b/loader-binding/cxx/pb_header.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: pb_header.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_pb_5fheader_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_pb_5fheader_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -82,7 +82,7 @@ class xresloader_data_source final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:org.xresloader.pb.xresloader_data_source) */ {
  public:
   inline xresloader_data_source() : xresloader_data_source(nullptr) {}
-  ~xresloader_data_source() override;
+  ~xresloader_data_source() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR xresloader_data_source(
       ::google::protobuf::internal::ConstantInitialized);
@@ -155,7 +155,7 @@ class xresloader_data_source final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  xresloader_data_source* New(::google::protobuf::Arena* arena = nullptr) const final {
+  xresloader_data_source* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -172,11 +172,27 @@ class xresloader_data_source final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -194,7 +210,8 @@ class xresloader_data_source final : public ::google::protobuf::Message
       : xresloader_data_source(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -293,7 +310,7 @@ class xresloader_header final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:org.xresloader.pb.xresloader_header) */ {
  public:
   inline xresloader_header() : xresloader_header(nullptr) {}
-  ~xresloader_header() override;
+  ~xresloader_header() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR xresloader_header(
       ::google::protobuf::internal::ConstantInitialized);
@@ -366,7 +383,7 @@ class xresloader_header final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  xresloader_header* New(::google::protobuf::Arena* arena = nullptr) const final {
+  xresloader_header* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -388,11 +405,27 @@ class xresloader_header final : public ::google::protobuf::Message
   static bool IsInitializedImpl(const MessageLite& msg);
 
   public:
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -410,7 +443,8 @@ class xresloader_header final : public ::google::protobuf::Message
       : xresloader_header(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -566,7 +600,7 @@ class xresloader_datablocks final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:org.xresloader.pb.xresloader_datablocks) */ {
  public:
   inline xresloader_datablocks() : xresloader_datablocks(nullptr) {}
-  ~xresloader_datablocks() override;
+  ~xresloader_datablocks() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR xresloader_datablocks(
       ::google::protobuf::internal::ConstantInitialized);
@@ -639,7 +673,7 @@ class xresloader_datablocks final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  xresloader_datablocks* New(::google::protobuf::Arena* arena = nullptr) const final {
+  xresloader_datablocks* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -661,11 +695,27 @@ class xresloader_datablocks final : public ::google::protobuf::Message
   static bool IsInitializedImpl(const MessageLite& msg);
 
   public:
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -683,7 +733,8 @@ class xresloader_datablocks final : public ::google::protobuf::Message
       : xresloader_datablocks(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -704,17 +755,11 @@ class xresloader_datablocks final : public ::google::protobuf::Message
   void clear_data_block() ;
   const std::string& data_block(int index) const;
   std::string* mutable_data_block(int index);
-  void set_data_block(int index, const std::string& value);
-  void set_data_block(int index, std::string&& value);
-  void set_data_block(int index, const char* value);
-  void set_data_block(int index, const void* value, std::size_t size);
-  void set_data_block(int index, absl::string_view value);
+  template 
+  void set_data_block(int index, Arg_&& value, Args_... args);
   std::string* add_data_block();
-  void add_data_block(const std::string& value);
-  void add_data_block(std::string&& value);
-  void add_data_block(const char* value);
-  void add_data_block(const void* value, std::size_t size);
-  void add_data_block(absl::string_view value);
+  template 
+  void add_data_block(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& data_block() const;
   ::google::protobuf::RepeatedPtrField* mutable_data_block();
 
@@ -1454,8 +1499,7 @@ inline void xresloader_datablocks::clear_data_block() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.data_block_.Clear();
 }
-inline std::string* xresloader_datablocks::add_data_block()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* xresloader_datablocks::add_data_block() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_data_block()->Add();
   // @@protoc_insertion_point(field_add_mutable:org.xresloader.pb.xresloader_datablocks.data_block)
@@ -1471,58 +1515,21 @@ inline std::string* xresloader_datablocks::mutable_data_block(int index)
   // @@protoc_insertion_point(field_mutable:org.xresloader.pb.xresloader_datablocks.data_block)
   return _internal_mutable_data_block()->Mutable(index);
 }
-inline void xresloader_datablocks::set_data_block(int index, const std::string& value) {
-  _internal_mutable_data_block()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::set_data_block(int index, std::string&& value) {
-  _internal_mutable_data_block()->Mutable(index)->assign(std::move(value));
+template 
+inline void xresloader_datablocks::set_data_block(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_data_block()->Mutable(index),
+      std::forward(value), args... , ::google::protobuf::internal::BytesTag{});
   // @@protoc_insertion_point(field_set:org.xresloader.pb.xresloader_datablocks.data_block)
 }
-inline void xresloader_datablocks::set_data_block(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_data_block()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::set_data_block(int index, const void* value,
-                              std::size_t size) {
-  _internal_mutable_data_block()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::set_data_block(int index, absl::string_view value) {
-  _internal_mutable_data_block()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(std::string&& value) {
+template 
+inline void xresloader_datablocks::add_data_block(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_data_block(),
+                               std::forward(value),
+                               args... , ::google::protobuf::internal::BytesTag{});
   // @@protoc_insertion_point(field_add:org.xresloader.pb.xresloader_datablocks.data_block)
 }
-inline void xresloader_datablocks::add_data_block(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(const void* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:org.xresloader.pb.xresloader_datablocks.data_block)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 xresloader_datablocks::data_block() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:org.xresloader.pb.xresloader_datablocks.data_block)
diff --git a/loader-binding/cxx/pb_header_v3.pb.cc b/loader-binding/cxx/pb_header_v3.pb.cc
index 214aa5a7..8830bdcd 100644
--- a/loader-binding/cxx/pb_header_v3.pb.cc
+++ b/loader-binding/cxx/pb_header_v3.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: pb_header_v3.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "pb_header_v3.pb.h"
 
@@ -40,7 +40,13 @@ inline constexpr xresloader_data_source::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR xresloader_data_source::xresloader_data_source(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct xresloader_data_sourceDefaultTypeInternal {
   PROTOBUF_CONSTEXPR xresloader_data_sourceDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~xresloader_data_sourceDefaultTypeInternal() {}
@@ -72,7 +78,13 @@ inline constexpr xresloader_header::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR xresloader_header::xresloader_header(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct xresloader_headerDefaultTypeInternal {
   PROTOBUF_CONSTEXPR xresloader_headerDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~xresloader_headerDefaultTypeInternal() {}
@@ -95,7 +107,13 @@ inline constexpr xresloader_datablocks::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR xresloader_datablocks::xresloader_datablocks(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct xresloader_datablocksDefaultTypeInternal {
   PROTOBUF_CONSTEXPR xresloader_datablocksDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~xresloader_datablocksDefaultTypeInternal() {}
@@ -209,7 +227,11 @@ class xresloader_data_source::_Internal {
 };
 
 xresloader_data_source::xresloader_data_source(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:org.xresloader.pb.xresloader_data_source)
 }
@@ -223,7 +245,11 @@ inline PROTOBUF_NDEBUG_INLINE xresloader_data_source::Impl_::Impl_(
 xresloader_data_source::xresloader_data_source(
     ::google::protobuf::Arena* arena,
     const xresloader_data_source& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   xresloader_data_source* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -256,25 +282,33 @@ inline void xresloader_data_source::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-xresloader_data_source::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(xresloader_data_source, _impl_._cached_size_),
-              false,
-          },
-          &xresloader_data_source::MergeImpl,
-          &xresloader_data_source::kDescriptorMethods,
-          &descriptor_table_pb_5fheader_5fv3_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    xresloader_data_source::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_xresloader_data_source_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &xresloader_data_source::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &xresloader_data_source::ByteSizeLong,
+                &xresloader_data_source::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(xresloader_data_source, _impl_._cached_size_),
+            false,
+        },
+        &xresloader_data_source::kDescriptorMethods,
+        &descriptor_table_pb_5fheader_5fv3_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* xresloader_data_source::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 0, 58, 2> xresloader_data_source::_table_ = {
@@ -288,7 +322,7 @@ const ::_pbi::TcParseTable<2, 3, 0, 58, 2> xresloader_data_source::_table_ = {
     3,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_xresloader_data_source_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -340,75 +374,88 @@ PROTOBUF_NOINLINE void xresloader_data_source::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* xresloader_data_source::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_data_source)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // string file = 1;
-  if (!this->_internal_file().empty()) {
-    const std::string& _s = this->_internal_file();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_data_source.file");
-    target = stream->WriteStringMaybeAliased(1, _s, target);
-  }
-
-  // string sheet = 2;
-  if (!this->_internal_sheet().empty()) {
-    const std::string& _s = this->_internal_sheet();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_data_source.sheet");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  // int32 count = 3;
-  if (this->_internal_count() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<3>(
-            stream, this->_internal_count(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_data_source)
-  return target;
-}
-
-::size_t xresloader_data_source::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_data_source)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // string file = 1;
-  if (!this->_internal_file().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_file());
-  }
-
-  // string sheet = 2;
-  if (!this->_internal_sheet().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_sheet());
-  }
-
-  // int32 count = 3;
-  if (this->_internal_count() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_count());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* xresloader_data_source::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const xresloader_data_source& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* xresloader_data_source::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const xresloader_data_source& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_data_source)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // string file = 1;
+          if (!this_._internal_file().empty()) {
+            const std::string& _s = this_._internal_file();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_data_source.file");
+            target = stream->WriteStringMaybeAliased(1, _s, target);
+          }
+
+          // string sheet = 2;
+          if (!this_._internal_sheet().empty()) {
+            const std::string& _s = this_._internal_sheet();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_data_source.sheet");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
+
+          // int32 count = 3;
+          if (this_._internal_count() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<3>(
+                    stream, this_._internal_count(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_data_source)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t xresloader_data_source::ByteSizeLong(const MessageLite& base) {
+          const xresloader_data_source& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t xresloader_data_source::ByteSizeLong() const {
+          const xresloader_data_source& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_data_source)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // string file = 1;
+            if (!this_._internal_file().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_file());
+            }
+            // string sheet = 2;
+            if (!this_._internal_sheet().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_sheet());
+            }
+            // int32 count = 3;
+            if (this_._internal_count() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_count());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void xresloader_data_source::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -458,7 +505,11 @@ class xresloader_header::_Internal {
 };
 
 xresloader_header::xresloader_header(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:org.xresloader.pb.xresloader_header)
 }
@@ -475,7 +526,11 @@ inline PROTOBUF_NDEBUG_INLINE xresloader_header::Impl_::Impl_(
 xresloader_header::xresloader_header(
     ::google::protobuf::Arena* arena,
     const xresloader_header& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   xresloader_header* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -513,25 +568,33 @@ inline void xresloader_header::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-xresloader_header::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(xresloader_header, _impl_._cached_size_),
-              false,
-          },
-          &xresloader_header::MergeImpl,
-          &xresloader_header::kDescriptorMethods,
-          &descriptor_table_pb_5fheader_5fv3_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    xresloader_header::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_xresloader_header_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &xresloader_header::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &xresloader_header::ByteSizeLong,
+                &xresloader_header::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(xresloader_header, _impl_._cached_size_),
+            false,
+        },
+        &xresloader_header::kDescriptorMethods,
+        &descriptor_table_pb_5fheader_5fv3_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* xresloader_header::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 6, 1, 80, 2> xresloader_header::_table_ = {
@@ -545,7 +608,7 @@ const ::_pbi::TcParseTable<3, 6, 1, 80, 2> xresloader_header::_table_ = {
     6,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_xresloader_header_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -619,119 +682,134 @@ PROTOBUF_NOINLINE void xresloader_header::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* xresloader_header::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_header)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // string xres_ver = 1;
-  if (!this->_internal_xres_ver().empty()) {
-    const std::string& _s = this->_internal_xres_ver();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.xres_ver");
-    target = stream->WriteStringMaybeAliased(1, _s, target);
-  }
-
-  // string data_ver = 2;
-  if (!this->_internal_data_ver().empty()) {
-    const std::string& _s = this->_internal_data_ver();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.data_ver");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  // uint32 count = 3;
-  if (this->_internal_count() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        3, this->_internal_count(), target);
-  }
-
-  // string hash_code = 4;
-  if (!this->_internal_hash_code().empty()) {
-    const std::string& _s = this->_internal_hash_code();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.hash_code");
-    target = stream->WriteStringMaybeAliased(4, _s, target);
-  }
-
-  // string description = 5;
-  if (!this->_internal_description().empty()) {
-    const std::string& _s = this->_internal_description();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.description");
-    target = stream->WriteStringMaybeAliased(5, _s, target);
-  }
-
-  // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_data_source_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_data_source().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            11, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_header)
-  return target;
-}
-
-::size_t xresloader_header::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_header)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
-  total_size += 1UL * this->_internal_data_source_size();
-  for (const auto& msg : this->_internal_data_source()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // string xres_ver = 1;
-  if (!this->_internal_xres_ver().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_xres_ver());
-  }
-
-  // string data_ver = 2;
-  if (!this->_internal_data_ver().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_data_ver());
-  }
-
-  // string hash_code = 4;
-  if (!this->_internal_hash_code().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_hash_code());
-  }
-
-  // string description = 5;
-  if (!this->_internal_description().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_description());
-  }
-
-  // uint32 count = 3;
-  if (this->_internal_count() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_count());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* xresloader_header::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const xresloader_header& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* xresloader_header::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const xresloader_header& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_header)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // string xres_ver = 1;
+          if (!this_._internal_xres_ver().empty()) {
+            const std::string& _s = this_._internal_xres_ver();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.xres_ver");
+            target = stream->WriteStringMaybeAliased(1, _s, target);
+          }
+
+          // string data_ver = 2;
+          if (!this_._internal_data_ver().empty()) {
+            const std::string& _s = this_._internal_data_ver();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.data_ver");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
+
+          // uint32 count = 3;
+          if (this_._internal_count() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                3, this_._internal_count(), target);
+          }
+
+          // string hash_code = 4;
+          if (!this_._internal_hash_code().empty()) {
+            const std::string& _s = this_._internal_hash_code();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.hash_code");
+            target = stream->WriteStringMaybeAliased(4, _s, target);
+          }
+
+          // string description = 5;
+          if (!this_._internal_description().empty()) {
+            const std::string& _s = this_._internal_description();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_header.description");
+            target = stream->WriteStringMaybeAliased(5, _s, target);
+          }
+
+          // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_data_source_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_data_source().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    11, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_header)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t xresloader_header::ByteSizeLong(const MessageLite& base) {
+          const xresloader_header& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t xresloader_header::ByteSizeLong() const {
+          const xresloader_header& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_header)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .org.xresloader.pb.xresloader_data_source data_source = 11;
+             {
+              total_size += 1UL * this_._internal_data_source_size();
+              for (const auto& msg : this_._internal_data_source()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+          }
+           {
+            // string xres_ver = 1;
+            if (!this_._internal_xres_ver().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_xres_ver());
+            }
+            // string data_ver = 2;
+            if (!this_._internal_data_ver().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_data_ver());
+            }
+            // string hash_code = 4;
+            if (!this_._internal_hash_code().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_hash_code());
+            }
+            // string description = 5;
+            if (!this_._internal_description().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_description());
+            }
+            // uint32 count = 3;
+            if (this_._internal_count() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_count());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void xresloader_header::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -796,7 +874,11 @@ class xresloader_datablocks::_Internal {
 };
 
 xresloader_datablocks::xresloader_datablocks(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:org.xresloader.pb.xresloader_datablocks)
 }
@@ -811,7 +893,11 @@ inline PROTOBUF_NDEBUG_INLINE xresloader_datablocks::Impl_::Impl_(
 xresloader_datablocks::xresloader_datablocks(
     ::google::protobuf::Arena* arena,
     const xresloader_datablocks& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   xresloader_datablocks* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -847,25 +933,33 @@ inline void xresloader_datablocks::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-xresloader_datablocks::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(xresloader_datablocks, _impl_._cached_size_),
-              false,
-          },
-          &xresloader_datablocks::MergeImpl,
-          &xresloader_datablocks::kDescriptorMethods,
-          &descriptor_table_pb_5fheader_5fv3_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    xresloader_datablocks::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_xresloader_datablocks_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &xresloader_datablocks::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &xresloader_datablocks::ByteSizeLong,
+                &xresloader_datablocks::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(xresloader_datablocks, _impl_._cached_size_),
+            false,
+        },
+        &xresloader_datablocks::kDescriptorMethods,
+        &descriptor_table_pb_5fheader_5fv3_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* xresloader_datablocks::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 1, 65, 2> xresloader_datablocks::_table_ = {
@@ -879,7 +973,7 @@ const ::_pbi::TcParseTable<2, 3, 1, 65, 2> xresloader_datablocks::_table_ = {
     3,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_xresloader_datablocks_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -935,74 +1029,97 @@ PROTOBUF_NOINLINE void xresloader_datablocks::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* xresloader_datablocks::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_datablocks)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .org.xresloader.pb.xresloader_header header = 1;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        1, *_impl_.header_, _impl_.header_->GetCachedSize(), target, stream);
-  }
-
-  // repeated bytes data_block = 2;
-  for (int i = 0, n = this->_internal_data_block_size(); i < n; ++i) {
-    const auto& s = this->_internal_data_block().Get(i);
-    target = stream->WriteBytes(2, s, target);
-  }
-
-  // string data_message_type = 3;
-  if (!this->_internal_data_message_type().empty()) {
-    const std::string& _s = this->_internal_data_message_type();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_datablocks.data_message_type");
-    target = stream->WriteStringMaybeAliased(3, _s, target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_datablocks)
-  return target;
-}
-
-::size_t xresloader_datablocks::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_datablocks)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated bytes data_block = 2;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_data_block().size());
-  for (int i = 0, n = _internal_data_block().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
-        _internal_data_block().Get(i));
-  }
-  // string data_message_type = 3;
-  if (!this->_internal_data_message_type().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_data_message_type());
-  }
-
-  // .org.xresloader.pb.xresloader_header header = 1;
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size +=
-        1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.header_);
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* xresloader_datablocks::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const xresloader_datablocks& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* xresloader_datablocks::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const xresloader_datablocks& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:org.xresloader.pb.xresloader_datablocks)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .org.xresloader.pb.xresloader_header header = 1;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                1, *this_._impl_.header_, this_._impl_.header_->GetCachedSize(), target,
+                stream);
+          }
+
+          // repeated bytes data_block = 2;
+          for (int i = 0, n = this_._internal_data_block_size(); i < n; ++i) {
+            const auto& s = this_._internal_data_block().Get(i);
+            target = stream->WriteBytes(2, s, target);
+          }
+
+          // string data_message_type = 3;
+          if (!this_._internal_data_message_type().empty()) {
+            const std::string& _s = this_._internal_data_message_type();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "org.xresloader.pb.xresloader_datablocks.data_message_type");
+            target = stream->WriteStringMaybeAliased(3, _s, target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:org.xresloader.pb.xresloader_datablocks)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t xresloader_datablocks::ByteSizeLong(const MessageLite& base) {
+          const xresloader_datablocks& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t xresloader_datablocks::ByteSizeLong() const {
+          const xresloader_datablocks& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:org.xresloader.pb.xresloader_datablocks)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated bytes data_block = 2;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_data_block().size());
+              for (int i = 0, n = this_._internal_data_block().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::BytesSize(
+                    this_._internal_data_block().Get(i));
+              }
+            }
+          }
+           {
+            // string data_message_type = 3;
+            if (!this_._internal_data_message_type().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_data_message_type());
+            }
+          }
+           {
+            // .org.xresloader.pb.xresloader_header header = 1;
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.header_);
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void xresloader_datablocks::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/loader-binding/cxx/pb_header_v3.pb.h b/loader-binding/cxx/pb_header_v3.pb.h
index 49c9b15b..82bf15f0 100644
--- a/loader-binding/cxx/pb_header_v3.pb.h
+++ b/loader-binding/cxx/pb_header_v3.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: pb_header_v3.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_pb_5fheader_5fv3_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_pb_5fheader_5fv3_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -82,7 +82,7 @@ class xresloader_data_source final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:org.xresloader.pb.xresloader_data_source) */ {
  public:
   inline xresloader_data_source() : xresloader_data_source(nullptr) {}
-  ~xresloader_data_source() override;
+  ~xresloader_data_source() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR xresloader_data_source(
       ::google::protobuf::internal::ConstantInitialized);
@@ -155,7 +155,7 @@ class xresloader_data_source final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  xresloader_data_source* New(::google::protobuf::Arena* arena = nullptr) const final {
+  xresloader_data_source* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -172,11 +172,27 @@ class xresloader_data_source final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -194,7 +210,8 @@ class xresloader_data_source final : public ::google::protobuf::Message
       : xresloader_data_source(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -289,7 +306,7 @@ class xresloader_header final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:org.xresloader.pb.xresloader_header) */ {
  public:
   inline xresloader_header() : xresloader_header(nullptr) {}
-  ~xresloader_header() override;
+  ~xresloader_header() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR xresloader_header(
       ::google::protobuf::internal::ConstantInitialized);
@@ -362,7 +379,7 @@ class xresloader_header final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  xresloader_header* New(::google::protobuf::Arena* arena = nullptr) const final {
+  xresloader_header* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -379,11 +396,27 @@ class xresloader_header final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -401,7 +434,8 @@ class xresloader_header final : public ::google::protobuf::Message
       : xresloader_header(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -551,7 +585,7 @@ class xresloader_datablocks final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:org.xresloader.pb.xresloader_datablocks) */ {
  public:
   inline xresloader_datablocks() : xresloader_datablocks(nullptr) {}
-  ~xresloader_datablocks() override;
+  ~xresloader_datablocks() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR xresloader_datablocks(
       ::google::protobuf::internal::ConstantInitialized);
@@ -624,7 +658,7 @@ class xresloader_datablocks final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  xresloader_datablocks* New(::google::protobuf::Arena* arena = nullptr) const final {
+  xresloader_datablocks* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -641,11 +675,27 @@ class xresloader_datablocks final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -663,7 +713,8 @@ class xresloader_datablocks final : public ::google::protobuf::Message
       : xresloader_datablocks(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -684,17 +735,11 @@ class xresloader_datablocks final : public ::google::protobuf::Message
   void clear_data_block() ;
   const std::string& data_block(int index) const;
   std::string* mutable_data_block(int index);
-  void set_data_block(int index, const std::string& value);
-  void set_data_block(int index, std::string&& value);
-  void set_data_block(int index, const char* value);
-  void set_data_block(int index, const void* value, std::size_t size);
-  void set_data_block(int index, absl::string_view value);
+  template 
+  void set_data_block(int index, Arg_&& value, Args_... args);
   std::string* add_data_block();
-  void add_data_block(const std::string& value);
-  void add_data_block(std::string&& value);
-  void add_data_block(const char* value);
-  void add_data_block(const void* value, std::size_t size);
-  void add_data_block(absl::string_view value);
+  template 
+  void add_data_block(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& data_block() const;
   ::google::protobuf::RepeatedPtrField* mutable_data_block();
 
@@ -1295,8 +1340,7 @@ inline void xresloader_datablocks::clear_data_block() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.data_block_.Clear();
 }
-inline std::string* xresloader_datablocks::add_data_block()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* xresloader_datablocks::add_data_block() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_data_block()->Add();
   // @@protoc_insertion_point(field_add_mutable:org.xresloader.pb.xresloader_datablocks.data_block)
@@ -1312,58 +1356,21 @@ inline std::string* xresloader_datablocks::mutable_data_block(int index)
   // @@protoc_insertion_point(field_mutable:org.xresloader.pb.xresloader_datablocks.data_block)
   return _internal_mutable_data_block()->Mutable(index);
 }
-inline void xresloader_datablocks::set_data_block(int index, const std::string& value) {
-  _internal_mutable_data_block()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::set_data_block(int index, std::string&& value) {
-  _internal_mutable_data_block()->Mutable(index)->assign(std::move(value));
+template 
+inline void xresloader_datablocks::set_data_block(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_data_block()->Mutable(index),
+      std::forward(value), args... , ::google::protobuf::internal::BytesTag{});
   // @@protoc_insertion_point(field_set:org.xresloader.pb.xresloader_datablocks.data_block)
 }
-inline void xresloader_datablocks::set_data_block(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_data_block()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::set_data_block(int index, const void* value,
-                              std::size_t size) {
-  _internal_mutable_data_block()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::set_data_block(int index, absl::string_view value) {
-  _internal_mutable_data_block()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(std::string&& value) {
+template 
+inline void xresloader_datablocks::add_data_block(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_data_block(),
+                               std::forward(value),
+                               args... , ::google::protobuf::internal::BytesTag{});
   // @@protoc_insertion_point(field_add:org.xresloader.pb.xresloader_datablocks.data_block)
 }
-inline void xresloader_datablocks::add_data_block(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(const void* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:org.xresloader.pb.xresloader_datablocks.data_block)
-}
-inline void xresloader_datablocks::add_data_block(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_data_block()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:org.xresloader.pb.xresloader_datablocks.data_block)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 xresloader_datablocks::data_block() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:org.xresloader.pb.xresloader_datablocks.data_block)
diff --git a/pom.xml b/pom.xml
index faebed05..79159b39 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
     org.xresloader
     xresloader
-    2.18.2
+    2.19.0
     jar
     xresloader
 
@@ -59,12 +59,12 @@
             
             
                 maven-surefire-plugin
-                3.2.5
+                3.5.0
             
             
                 org.apache.maven.plugins
                 maven-shade-plugin
-                3.5.3
+                3.6.0
                 
                     
                         package
@@ -199,33 +199,27 @@
     
     
     
-        
-            org.openjdk.nashorn
-            nashorn-core
-            15.4
-            compile
-        
         
             commons-cli
             commons-cli
-            1.8.0
+            1.9.0
         
 
         
             commons-codec
             commons-codec
-            1.17.0
+            1.17.1
         
 
         
             org.apache.logging.log4j
             log4j-api
-            2.23.1
+            2.24.0
         
         
             org.apache.logging.log4j
             log4j-core
-            2.23.1
+            2.24.0
         
 
         
@@ -249,12 +243,12 @@
         
             com.google.protobuf
             protobuf-java
-            4.27.2
+            4.28.0
         
         
             com.google.protobuf
             protobuf-java-util
-            4.27.2
+            4.28.0
         
 
         
@@ -290,7 +284,7 @@
         
             org.junit.jupiter
             junit-jupiter-api
-            5.10.2
+            5.11.0
             test
 		
     
diff --git a/sample/cxx/v2/dep_level2.pb.cc b/sample/cxx/v2/dep_level2.pb.cc
index 107dec28..484d0c1e 100755
--- a/sample/cxx/v2/dep_level2.pb.cc
+++ b/sample/cxx/v2/dep_level2.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dep_level2.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "dep_level2.pb.h"
 
@@ -34,7 +34,13 @@ inline constexpr dep2_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR dep2_cfg::dep2_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct dep2_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR dep2_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~dep2_cfgDefaultTypeInternal() {}
@@ -106,7 +112,11 @@ class dep2_cfg::_Internal {
 };
 
 dep2_cfg::dep2_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:dep2_cfg)
 }
@@ -120,7 +130,11 @@ inline PROTOBUF_NDEBUG_INLINE dep2_cfg::Impl_::Impl_(
 dep2_cfg::dep2_cfg(
     ::google::protobuf::Arena* arena,
     const dep2_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   dep2_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -151,25 +165,33 @@ inline void dep2_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-dep2_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(dep2_cfg, _impl_._cached_size_),
-              false,
-          },
-          &dep2_cfg::MergeImpl,
-          &dep2_cfg::kDescriptorMethods,
-          &descriptor_table_dep_5flevel2_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    dep2_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_dep2_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &dep2_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &dep2_cfg::ByteSizeLong,
+                &dep2_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(dep2_cfg, _impl_._cached_size_),
+            false,
+        },
+        &dep2_cfg::kDescriptorMethods,
+        &descriptor_table_dep_5flevel2_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* dep2_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 2, 0, 22, 2> dep2_cfg::_table_ = {
@@ -183,7 +205,7 @@ const ::_pbi::TcParseTable<1, 2, 0, 22, 2> dep2_cfg::_table_ = {
     2,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_dep2_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -230,65 +252,77 @@ PROTOBUF_NOINLINE void dep2_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* dep2_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:dep2_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* dep2_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const dep2_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* dep2_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const dep2_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:dep2_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
 
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1;
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1;
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
 
-  // optional string level = 2;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_level();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "dep2_cfg.level");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
+          // optional string level = 2;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_level();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "dep2_cfg.level");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
 
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:dep2_cfg)
-  return target;
-}
-
-::size_t dep2_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:dep2_cfg)
-  ::size_t total_size = 0;
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:dep2_cfg)
+          return target;
+        }
 
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t dep2_cfg::ByteSizeLong(const MessageLite& base) {
+          const dep2_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t dep2_cfg::ByteSizeLong() const {
+          const dep2_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:dep2_cfg)
+          ::size_t total_size = 0;
 
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional string level = 2;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_level());
-    }
-
-    // optional uint32 id = 1;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
 
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional string level = 2;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_level());
+            }
+            // optional uint32 id = 1;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void dep2_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/sample/cxx/v2/dep_level2.pb.h b/sample/cxx/v2/dep_level2.pb.h
index e6e0af4a..f0edfc27 100755
--- a/sample/cxx/v2/dep_level2.pb.h
+++ b/sample/cxx/v2/dep_level2.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dep_level2.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_dep_5flevel2_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_dep_5flevel2_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -67,7 +67,7 @@ class dep2_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:dep2_cfg) */ {
  public:
   inline dep2_cfg() : dep2_cfg(nullptr) {}
-  ~dep2_cfg() override;
+  ~dep2_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR dep2_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -140,7 +140,7 @@ class dep2_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  dep2_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  dep2_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -157,11 +157,27 @@ class dep2_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -179,7 +195,8 @@ class dep2_cfg final : public ::google::protobuf::Message
       : dep2_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
diff --git a/sample/cxx/v2/dependency.pb.cc b/sample/cxx/v2/dependency.pb.cc
index 7ddc51dd..4389bdb8 100755
--- a/sample/cxx/v2/dependency.pb.cc
+++ b/sample/cxx/v2/dependency.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dependency.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "dependency.pb.h"
 
@@ -35,7 +35,13 @@ inline constexpr dep_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR dep_cfg::dep_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct dep_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR dep_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~dep_cfgDefaultTypeInternal() {}
@@ -148,7 +154,11 @@ void dep_cfg::clear_dep2() {
   _impl_._has_bits_[0] &= ~0x00000002u;
 }
 dep_cfg::dep_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:dep_cfg)
 }
@@ -162,7 +172,11 @@ inline PROTOBUF_NDEBUG_INLINE dep_cfg::Impl_::Impl_(
 dep_cfg::dep_cfg(
     ::google::protobuf::Arena* arena,
     const dep_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   dep_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -203,25 +217,33 @@ inline void dep_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-dep_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(dep_cfg, _impl_._cached_size_),
-              false,
-          },
-          &dep_cfg::MergeImpl,
-          &dep_cfg::kDescriptorMethods,
-          &descriptor_table_dependency_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    dep_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_dep_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &dep_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &dep_cfg::ByteSizeLong,
+                &dep_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(dep_cfg, _impl_._cached_size_),
+            false,
+        },
+        &dep_cfg::kDescriptorMethods,
+        &descriptor_table_dependency_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* dep_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 1, 20, 2> dep_cfg::_table_ = {
@@ -235,7 +257,7 @@ const ::_pbi::TcParseTable<2, 3, 1, 20, 2> dep_cfg::_table_ = {
     3,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_dep_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -295,77 +317,89 @@ PROTOBUF_NOINLINE void dep_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* dep_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:dep_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1;
-  if (cached_has_bits & 0x00000004u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // optional string name = 2;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_name();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "dep_cfg.name");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  // optional .dep2_cfg dep2 = 3;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        3, *_impl_.dep2_, _impl_.dep2_->GetCachedSize(), target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:dep_cfg)
-  return target;
-}
-
-::size_t dep_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:dep_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000007u) {
-    // optional string name = 2;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_name());
-    }
-
-    // optional .dep2_cfg dep2 = 3;
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.dep2_);
-    }
-
-    // optional uint32 id = 1;
-    if (cached_has_bits & 0x00000004u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* dep_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const dep_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* dep_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const dep_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:dep_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1;
+          if (cached_has_bits & 0x00000004u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // optional string name = 2;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_name();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "dep_cfg.name");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
+
+          // optional .dep2_cfg dep2 = 3;
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                3, *this_._impl_.dep2_, this_._impl_.dep2_->GetCachedSize(), target,
+                stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:dep_cfg)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t dep_cfg::ByteSizeLong(const MessageLite& base) {
+          const dep_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t dep_cfg::ByteSizeLong() const {
+          const dep_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:dep_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000007u) {
+            // optional string name = 2;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_name());
+            }
+            // optional .dep2_cfg dep2 = 3;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dep2_);
+            }
+            // optional uint32 id = 1;
+            if (cached_has_bits & 0x00000004u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void dep_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/sample/cxx/v2/dependency.pb.h b/sample/cxx/v2/dependency.pb.h
index 4d97b5cf..b2372929 100755
--- a/sample/cxx/v2/dependency.pb.h
+++ b/sample/cxx/v2/dependency.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dependency.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_dependency_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_dependency_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -126,7 +126,7 @@ class dep_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:dep_cfg) */ {
  public:
   inline dep_cfg() : dep_cfg(nullptr) {}
-  ~dep_cfg() override;
+  ~dep_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR dep_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -199,7 +199,7 @@ class dep_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  dep_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  dep_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -216,11 +216,27 @@ class dep_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -238,7 +254,8 @@ class dep_cfg final : public ::google::protobuf::Message
       : dep_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
diff --git a/sample/cxx/v2/kind.pb.cc b/sample/cxx/v2/kind.pb.cc
index 6e7cd064..f8bb1287 100755
--- a/sample/cxx/v2/kind.pb.cc
+++ b/sample/cxx/v2/kind.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: kind.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "kind.pb.h"
 
@@ -33,7 +33,13 @@ inline constexpr test_msg_verifier::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR test_msg_verifier::test_msg_verifier(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct test_msg_verifierDefaultTypeInternal {
   PROTOBUF_CONSTEXPR test_msg_verifierDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~test_msg_verifierDefaultTypeInternal() {}
@@ -56,7 +62,13 @@ inline constexpr role_upgrade_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR role_upgrade_cfg::role_upgrade_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct role_upgrade_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR role_upgrade_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~role_upgrade_cfgDefaultTypeInternal() {}
@@ -67,8 +79,14 @@ struct role_upgrade_cfgDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 role_upgrade_cfgDefaultTypeInternal _role_upgrade_cfg_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : process_by_script_TestMapIsEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : process_by_script_TestMapIsEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal() {}
@@ -79,8 +97,14 @@ struct process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal _process_by_script_TestMapIsEntry_DoNotUse_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : process_by_script_MapU32StringEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : process_by_script_MapU32StringEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct process_by_script_MapU32StringEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_script_MapU32StringEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_script_MapU32StringEntry_DoNotUseDefaultTypeInternal() {}
@@ -100,7 +124,13 @@ inline constexpr inner_alias_message::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR inner_alias_message::inner_alias_message(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct inner_alias_messageDefaultTypeInternal {
   PROTOBUF_CONSTEXPR inner_alias_messageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~inner_alias_messageDefaultTypeInternal() {}
@@ -122,7 +152,13 @@ inline constexpr event_rule_item::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR event_rule_item::event_rule_item(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct event_rule_itemDefaultTypeInternal {
   PROTOBUF_CONSTEXPR event_rule_itemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~event_rule_itemDefaultTypeInternal() {}
@@ -144,7 +180,13 @@ inline constexpr event_reward_item::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR event_reward_item::event_reward_item(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct event_reward_itemDefaultTypeInternal {
   PROTOBUF_CONSTEXPR event_reward_itemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~event_reward_itemDefaultTypeInternal() {}
@@ -164,7 +206,13 @@ inline constexpr combine_id::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR combine_id::combine_id(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct combine_idDefaultTypeInternal {
   PROTOBUF_CONSTEXPR combine_idDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~combine_idDefaultTypeInternal() {}
@@ -175,8 +223,14 @@ struct combine_idDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 combine_idDefaultTypeInternal _combine_id_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal() {}
@@ -200,7 +254,13 @@ inline constexpr arr_in_arr::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR arr_in_arr::arr_in_arr(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct arr_in_arrDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arrDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arrDefaultTypeInternal() {}
@@ -211,8 +271,14 @@ struct arr_in_arrDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 arr_in_arrDefaultTypeInternal _arr_in_arr_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : process_by_script_TestMapSmEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : process_by_script_TestMapSmEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct process_by_script_TestMapSmEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_script_TestMapSmEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_script_TestMapSmEntry_DoNotUseDefaultTypeInternal() {}
@@ -233,7 +299,13 @@ inline constexpr outer_alias_message::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR outer_alias_message::outer_alias_message(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct outer_alias_messageDefaultTypeInternal {
   PROTOBUF_CONSTEXPR outer_alias_messageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~outer_alias_messageDefaultTypeInternal() {}
@@ -260,7 +332,13 @@ inline constexpr large_file_test::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR large_file_test::large_file_test(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct large_file_testDefaultTypeInternal {
   PROTOBUF_CONSTEXPR large_file_testDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~large_file_testDefaultTypeInternal() {}
@@ -283,7 +361,13 @@ inline constexpr keep_or_strip_empty_list_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR keep_or_strip_empty_list_cfg::keep_or_strip_empty_list_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct keep_or_strip_empty_list_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR keep_or_strip_empty_list_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~keep_or_strip_empty_list_cfgDefaultTypeInternal() {}
@@ -310,7 +394,13 @@ inline constexpr event_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR event_cfg::event_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct event_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR event_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~event_cfgDefaultTypeInternal() {}
@@ -321,8 +411,14 @@ struct event_cfgDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 event_cfgDefaultTypeInternal _event_cfg_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct arr_in_arr_cfg_TestMapSmEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapSmEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_cfg_TestMapSmEntry_DoNotUseDefaultTypeInternal() {}
@@ -365,7 +461,13 @@ inline constexpr role_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR role_cfg::role_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct role_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR role_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~role_cfgDefaultTypeInternal() {}
@@ -388,7 +490,13 @@ inline constexpr process_by_script::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR process_by_script::process_by_script(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct process_by_scriptDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_scriptDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_scriptDefaultTypeInternal() {}
@@ -414,7 +522,13 @@ inline constexpr arr_in_arr_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR arr_in_arr_cfg::arr_in_arr_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct arr_in_arr_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_cfgDefaultTypeInternal() {}
@@ -520,7 +634,7 @@ const ::uint32_t
         0,
         ~0u,
         ~0u,
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -528,11 +642,11 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.value_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -540,8 +654,8 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.value_),
         0,
         1,
         PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg, _impl_._has_bits_),
@@ -664,7 +778,7 @@ const ::uint32_t
         PROTOBUF_FIELD_OFFSET(::combine_id, _impl_.id_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -672,11 +786,11 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _impl_.value_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -684,11 +798,11 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _impl_.value_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -696,8 +810,8 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _impl_.value_),
         0,
         1,
         PROTOBUF_FIELD_OFFSET(::process_by_script, _impl_._has_bits_),
@@ -838,74 +952,76 @@ const char descriptor_table_protodef_kind_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIA
     "\001(\rB\003\350D\001\0226\n\010CostType\030\003 \001(\005B$\312>\014custom_ru"
     "le1\232\?\022Refer to cost_type\022\021\n\tCostValue\030\004 "
     "\001(\003\022\020\n\010ScoreAdd\030\005 \001(\005:1\312>%Test role_upgr"
-    "ade_cfg with multi keys\352D\006helper\"o\n\021test"
-    "_msg_verifier\022\022\n\ttest_id_1\030\221N \001(\r\022&\n\ttes"
-    "t_id_2\030\222N \001(\rB\022\242\?\017\346\265\213\350\257\225ID\345\210\253\345\220\2152\022\027\n\ttes"
-    "t_id_3\030\223N \001(\rB\003\310\?\001:\005\242\?\002-^\"\231\001\n\narr_in_arr"
-    "\022-\n\004name\030\001 \001(\tB\037\232\?\034This is a test name i"
-    "n array\022=\n\007int_arr\030\002 \003(\005B,\020\001\320\?\001\332\? game_c"
-    "onst_config.EN_GCC_UNKNOWN\342\?\0013\022\017\n\007str_ar"
-    "r\030\003 \003(\t:\014\352D\006helper\360D\001\"\374\003\n\016arr_in_arr_cfg"
-    "\022\037\n\002id\030\001 \001(\rB\023\232\?\rThis is a Key\350D\001\022\030\n\003arr"
-    "\030\002 \003(\0132\013.arr_in_arr\022$\n\022test_plain_int_ar"
-    "r\030\003 \003(\005B\010\332\?\0011\342\?\0013\022\'\n\023test_plain_enum_arr"
-    "\030\004 \003(\0162\n.cost_type\0220\n\016test_plain_msg\030\005 \001"
-    "(\0132\022.test_msg_verifierB\004\262\?\001&\022.\n\022test_pla"
-    "in_msg_arr\030\006 \003(\0132\022.test_msg_verifier\0223\n\013"
-    "test_map_is\030\007 \003(\0132\036.arr_in_arr_cfg.TestM"
-    "apIsEntry\0229\n\013test_map_sm\030\010 \003(\0132\036.arr_in_"
-    "arr_cfg.TestMapSmEntryB\004\262\?\001|\0320\n\016TestMapI"
-    "sEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\032;"
-    "\n\016TestMapSmEntry\022\013\n\003key\030\001 \001(\t\022\030\n\005value\030\002"
-    " \001(\0132\t.dep2_cfg:\0028\001:\037\312>\023Test arr_in_arr_"
-    "cfg\352D\006helper\"\243\001\n\021event_reward_item\022\017\n\007it"
-    "em_id\030\001 \001(\r\022\022\n\nitem_count\030\002 \001(\r\022&\n\013neste"
-    "d_note\030\013 \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0227\n\020neste"
-    "d_enum_type\030\014 \001(\0162\n.cost_typeB\017\242\?\014\350\264\247\345\270\201"
-    "\347\261\273\345\236\213H\000B\010\n\006nested\"\241\001\n\017event_rule_item\022\017"
-    "\n\007rule_id\030\001 \001(\r\022\022\n\nrule_param\030\002 \001(\r\022&\n\013n"
+    "ade_cfg with multi keys\352D\006helper\"}\n\021test"
+    "_msg_verifier\022\022\n\ttest_id_1\030\221N \001(\r\0224\n\ttes"
+    "t_id_2\030\222N \001(\rB \242\?\017\346\265\213\350\257\225ID\345\210\253\345\220\2152\362\?\013serv"
+    "er_only\022\027\n\ttest_id_3\030\223N \001(\rB\003\310\?\001:\005\242\?\002-^\""
+    "\231\001\n\narr_in_arr\022-\n\004name\030\001 \001(\tB\037\232\?\034This is"
+    " a test name in array\022=\n\007int_arr\030\002 \003(\005B,"
+    "\020\001\320\?\001\332\? game_const_config.EN_GCC_UNKNOWN"
+    "\342\?\0013\022\017\n\007str_arr\030\003 \003(\t:\014\352D\006helper\360D\001\"\232\004\n\016"
+    "arr_in_arr_cfg\022\037\n\002id\030\001 \001(\rB\023\232\?\rThis is a"
+    " Key\350D\001\022(\n\003arr\030\002 \003(\0132\013.arr_in_arrB\016\362\?\013se"
+    "rver_only\0222\n\022test_plain_int_arr\030\003 \003(\005B\026\332"
+    "\?\0011\342\?\0013\362\?\013server_only\022\'\n\023test_plain_enum"
+    "_arr\030\004 \003(\0162\n.cost_type\0220\n\016test_plain_msg"
+    "\030\005 \001(\0132\022.test_msg_verifierB\004\262\?\001&\022.\n\022test"
+    "_plain_msg_arr\030\006 \003(\0132\022.test_msg_verifier"
+    "\0223\n\013test_map_is\030\007 \003(\0132\036.arr_in_arr_cfg.T"
+    "estMapIsEntry\0229\n\013test_map_sm\030\010 \003(\0132\036.arr"
+    "_in_arr_cfg.TestMapSmEntryB\004\262\?\001|\0320\n\016Test"
+    "MapIsEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\002"
+    "8\001\032;\n\016TestMapSmEntry\022\013\n\003key\030\001 \001(\t\022\030\n\005val"
+    "ue\030\002 \001(\0132\t.dep2_cfg:\0028\001:\037\312>\023Test arr_in_"
+    "arr_cfg\352D\006helper\"\243\001\n\021event_reward_item\022\017"
+    "\n\007item_id\030\001 \001(\r\022\022\n\nitem_count\030\002 \001(\r\022&\n\013n"
     "ested_note\030\013 \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0227\n\020n"
     "ested_enum_type\030\014 \001(\0162\n.cost_typeB\017\242\?\014\350\264"
-    "\247\345\270\201\347\261\273\345\236\213H\000B\010\n\006nested\"\244\004\n\tevent_cfg\022.\n\002"
-    "id\030\001 \001(\rB\"\312>\014custom_rule4\322>\nunique_tag\330>"
-    "\001\350Dd\022$\n\007process\030\002 \001(\rB\023\322>\nunique_tag\330>\001\350"
-    "D\001\022\036\n\004rule\030\006 \001(\0132\020.event_rule_item\022\'\n\rsp"
-    "ecify_field\030\007 \001(\0132\020.event_rule_item\0223\n\004i"
-    "tem\030\013 \001(\0132\022.event_reward_itemB\017\242\?\014\345\245\226\345\212\261"
-    "\351\201\223\345\205\267H\000\022#\n\010user_exp\030\014 \001(\003B\017\242\?\014\345\245\226\345\212\261\347\273\217"
-    "\351\252\214H\000\022\037\n\004note\030\r \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0220"
-    "\n\tenum_type\030\016 \001(\0162\n.cost_typeB\017\242\?\014\350\264\247\345\270\201"
-    "\347\261\273\345\236\213H\000\022%\n\nuser_level\0303 \001(\rB\017\242\?\014\347\216\251\345\256\266\347"
-    "\255\211\347\272\247H\001\022(\n\010test_arr\030[ \003(\0132\020.event_rule_i"
-    "temB\004\262\?\001;\022.\n\016test_empty_arr\030\\ \003(\0132\020.even"
-    "t_rule_itemB\004\262\?\001;:,\312> Test event_cfg wit"
-    "h oneof fields\352D\006helperB\r\n\006reward\022\003\330>\001B\r"
-    "\n\013unlock_type\"\266\001\n\034keep_or_strip_empty_li"
-    "st_cfg\022\037\n\002id\030\001 \001(\rB\023\232\?\rThis is a Key\350D\001\022"
-    "\034\n\tarray_msg\030\002 \003(\0132\t.dep2_cfg\022\"\n\017array_p"
-    "lain_msg\030\003 \003(\0132\t.dep2_cfg\022\023\n\013array_int32"
-    "\030\004 \003(\005\022\023\n\013array_int64\030\005 \003(\003:\t\352D\006helper\"4"
-    "\n\ncombine_id\022\016\n\006prefix\030\001 \001(\r\022\026\n\002id\030\002 \001(\r"
-    "B\n\312>\0070-99999\"\224\003\n\021process_by_script\022\n\n\002id"
-    "\030\001 \001(\r\022<\n\016map_u32_string\030\002 \003(\0132$.process"
-    "_by_script.MapU32StringEntry\0226\n\013test_map"
-    "_is\030\007 \003(\0132!.process_by_script.TestMapIsE"
-    "ntry\022<\n\013test_map_sm\030\010 \003(\0132!.process_by_s"
-    "cript.TestMapSmEntryB\004\262\?\001|\022\033\n\005id_id\030\351\007 \001"
-    "(\0132\013.combine_id\0323\n\021MapU32StringEntry\022\013\n\003"
-    "key\030\001 \001(\r\022\r\n\005value\030\002 \001(\t:\0028\001\0320\n\016TestMapI"
-    "sEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\032;"
-    "\n\016TestMapSmEntry\022\013\n\003key\030\001 \001(\t\022\030\n\005value\030\002"
-    " \001(\0132\t.dep2_cfg:\0028\001\"\222\001\n\017large_file_test\022"
-    "\n\n\002id\030\001 \001(\r\022\020\n\010i32value\030\002 \001(\005\022\020\n\010u64valu"
-    "e\030\003 \001(\004\022\020\n\010f64value\030\004 \001(\001\022\020\n\010f32value\030\005 "
-    "\001(\002\022\017\n\007szvalue\030\006 \001(\t\022\032\n\005id_id\030\007 \001(\0132\013.co"
-    "mbine_id\"N\n\023inner_alias_message\022\026\n\005iType"
-    "\030\001 \001(\005B\007\242\?\004Type\022\037\n\tparamList\030\002 \003(\003B\014\242\?\005P"
-    "aram\332\?\0012\"|\n\023outer_alias_message\022\022\n\003iId\030\001"
-    " \001(\005B\005\242\?\002ID\0222\n\006inners\030\002 \003(\0132\024.inner_alia"
-    "s_messageB\014\242\?\tCondition\022\035\n\010nest_int\030\003 \003("
-    "\005B\013\242\?\004Nest\332\?\0012"
+    "\247\345\270\201\347\261\273\345\236\213H\000B\010\n\006nested\"\241\001\n\017event_rule_it"
+    "em\022\017\n\007rule_id\030\001 \001(\r\022\022\n\nrule_param\030\002 \001(\r\022"
+    "&\n\013nested_note\030\013 \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\022"
+    "7\n\020nested_enum_type\030\014 \001(\0162\n.cost_typeB\017\242"
+    "\?\014\350\264\247\345\270\201\347\261\273\345\236\213H\000B\010\n\006nested\"\302\004\n\tevent_cfg"
+    "\022.\n\002id\030\001 \001(\rB\"\312>\014custom_rule4\322>\nunique_t"
+    "ag\330>\001\350Dd\022$\n\007process\030\002 \001(\rB\023\322>\nunique_tag"
+    "\330>\001\350D\001\022\036\n\004rule\030\006 \001(\0132\020.event_rule_item\0227"
+    "\n\rspecify_field\030\007 \001(\0132\020.event_rule_itemB"
+    "\016\362\?\013server_only\0223\n\004item\030\013 \001(\0132\022.event_re"
+    "ward_itemB\017\242\?\014\345\245\226\345\212\261\351\201\223\345\205\267H\000\022#\n\010user_exp"
+    "\030\014 \001(\003B\017\242\?\014\345\245\226\345\212\261\347\273\217\351\252\214H\000\022\037\n\004note\030\r \001(\tB"
+    "\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0220\n\tenum_type\030\016 \001(\0162\n."
+    "cost_typeB\017\242\?\014\350\264\247\345\270\201\347\261\273\345\236\213H\000\022%\n\nuser_lev"
+    "el\0303 \001(\rB\017\242\?\014\347\216\251\345\256\266\347\255\211\347\272\247H\001\022(\n\010test_arr\030"
+    "[ \003(\0132\020.event_rule_itemB\004\262\?\001;\022.\n\016test_em"
+    "pty_arr\030\\ \003(\0132\020.event_rule_itemB\004\262\?\001;:,\312"
+    "> Test event_cfg with oneof fields\352D\006hel"
+    "perB\033\n\006reward\022\021\330>\001\352>\013server_onlyB\r\n\013unlo"
+    "ck_type\"\266\001\n\034keep_or_strip_empty_list_cfg"
+    "\022\037\n\002id\030\001 \001(\rB\023\232\?\rThis is a Key\350D\001\022\034\n\tarr"
+    "ay_msg\030\002 \003(\0132\t.dep2_cfg\022\"\n\017array_plain_m"
+    "sg\030\003 \003(\0132\t.dep2_cfg\022\023\n\013array_int32\030\004 \003(\005"
+    "\022\023\n\013array_int64\030\005 \003(\003:\t\352D\006helper\"4\n\ncomb"
+    "ine_id\022\016\n\006prefix\030\001 \001(\r\022\026\n\002id\030\002 \001(\rB\n\312>\0070"
+    "-99999\"\224\003\n\021process_by_script\022\n\n\002id\030\001 \001(\r"
+    "\022<\n\016map_u32_string\030\002 \003(\0132$.process_by_sc"
+    "ript.MapU32StringEntry\0226\n\013test_map_is\030\007 "
+    "\003(\0132!.process_by_script.TestMapIsEntry\022<"
+    "\n\013test_map_sm\030\010 \003(\0132!.process_by_script."
+    "TestMapSmEntryB\004\262\?\001|\022\033\n\005id_id\030\351\007 \001(\0132\013.c"
+    "ombine_id\0323\n\021MapU32StringEntry\022\013\n\003key\030\001 "
+    "\001(\r\022\r\n\005value\030\002 \001(\t:\0028\001\0320\n\016TestMapIsEntry"
+    "\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\032;\n\016Test"
+    "MapSmEntry\022\013\n\003key\030\001 \001(\t\022\030\n\005value\030\002 \001(\0132\t"
+    ".dep2_cfg:\0028\001\"\222\001\n\017large_file_test\022\n\n\002id\030"
+    "\001 \001(\r\022\020\n\010i32value\030\002 \001(\005\022\020\n\010u64value\030\003 \001("
+    "\004\022\020\n\010f64value\030\004 \001(\001\022\020\n\010f32value\030\005 \001(\002\022\017\n"
+    "\007szvalue\030\006 \001(\t\022\032\n\005id_id\030\007 \001(\0132\013.combine_"
+    "id\"N\n\023inner_alias_message\022\026\n\005iType\030\001 \001(\005"
+    "B\007\242\?\004Type\022\037\n\tparamList\030\002 \003(\003B\014\242\?\005Param\332\?"
+    "\0012\"|\n\023outer_alias_message\022\022\n\003iId\030\001 \001(\005B\005"
+    "\242\?\002ID\0222\n\006inners\030\002 \003(\0132\024.inner_alias_mess"
+    "ageB\014\242\?\tCondition\022\035\n\010nest_int\030\003 \003(\005B\013\242\?\004"
+    "Nest\332\?\0012"
 };
 static const ::_pbi::DescriptorTable* const descriptor_table_kind_2eproto_deps[6] =
     {
@@ -920,7 +1036,7 @@ static ::absl::once_flag descriptor_table_kind_2eproto_once;
 PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_kind_2eproto = {
     false,
     false,
-    3694,
+    3768,
     descriptor_table_protodef_kind_2eproto,
     "kind.proto",
     &descriptor_table_kind_2eproto_once,
@@ -967,7 +1083,11 @@ void role_cfg::clear_convert_duration_arr() {
   _impl_.convert_duration_arr_.Clear();
 }
 role_cfg::role_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:role_cfg)
 }
@@ -990,7 +1110,11 @@ inline PROTOBUF_NDEBUG_INLINE role_cfg::Impl_::Impl_(
 role_cfg::role_cfg(
     ::google::protobuf::Arena* arena,
     const role_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   role_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -1057,25 +1181,33 @@ inline void role_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-role_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(role_cfg, _impl_._cached_size_),
-              false,
-          },
-          &role_cfg::MergeImpl,
-          &role_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    role_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_role_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &role_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &role_cfg::ByteSizeLong,
+                &role_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(role_cfg, _impl_._cached_size_),
+            false,
+        },
+        &role_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* role_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<5, 17, 6, 138, 2> role_cfg::_table_ = {
@@ -1089,7 +1221,7 @@ const ::_pbi::TcParseTable<5, 17, 6, 138, 2> role_cfg::_table_ = {
     17,  // num_field_entries
     6,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_role_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -1286,278 +1418,299 @@ PROTOBUF_NOINLINE void role_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* role_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:role_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1;
-  if (cached_has_bits & 0x00000080u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // optional uint32 unlock_level = 2;
-  if (cached_has_bits & 0x00000100u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_unlock_level(), target);
-  }
-
-  // optional int32 cost_type = 3;
-  if (cached_has_bits & 0x00000200u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<3>(
-            stream, this->_internal_cost_type(), target);
-  }
-
-  // optional int32 cost_value = 4;
-  if (cached_has_bits & 0x00000400u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<4>(
-            stream, this->_internal_cost_value(), target);
-  }
-
-  // optional string name = 5;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_name();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.name");
-    target = stream->WriteStringMaybeAliased(5, _s, target);
-  }
-
-  // optional .dep_cfg dep_test = 10;
-  if (cached_has_bits & 0x00000010u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        10, *_impl_.dep_test_, _impl_.dep_test_->GetCachedSize(), target, stream);
-  }
-
-  // repeated string test_array = 11;
-  for (int i = 0, n = this->_internal_test_array_size(); i < n; ++i) {
-    const auto& s = this->_internal_test_array().Get(i);
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.test_array");
-    target = stream->WriteString(11, s, target);
-  }
-
-  // optional string int_as_string = 12;
-  if (cached_has_bits & 0x00000002u) {
-    const std::string& _s = this->_internal_int_as_string();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.int_as_string");
-    target = stream->WriteStringMaybeAliased(12, _s, target);
-  }
-
-  // repeated .cost_type test_plain_enum_array = 13;
-  for (int i = 0, n = this->_internal_test_plain_enum_array_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteEnumToArray(
-        13, static_cast<::cost_type>(this->_internal_test_plain_enum_array().Get(i)),
-        target);
-  }
-
-  // optional .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
-  if (cached_has_bits & 0x00000020u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        21, *_impl_.convert_timepoint_one_, _impl_.convert_timepoint_one_->GetCachedSize(), target, stream);
-  }
-
-  // optional string origin_timepoint_one = 22;
-  if (cached_has_bits & 0x00000004u) {
-    const std::string& _s = this->_internal_origin_timepoint_one();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.origin_timepoint_one");
-    target = stream->WriteStringMaybeAliased(22, _s, target);
-  }
-
-  // optional .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
-  if (cached_has_bits & 0x00000040u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        23, *_impl_.convert_duration_one_, _impl_.convert_duration_one_->GetCachedSize(), target, stream);
-  }
-
-  // optional string origin_duration_one = 24;
-  if (cached_has_bits & 0x00000008u) {
-    const std::string& _s = this->_internal_origin_duration_one();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.origin_duration_one");
-    target = stream->WriteStringMaybeAliased(24, _s, target);
-  }
-
-  // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_convert_timepoint_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_convert_timepoint_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            25, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated string origin_timepoint_arr = 26;
-  for (int i = 0, n = this->_internal_origin_timepoint_arr_size(); i < n; ++i) {
-    const auto& s = this->_internal_origin_timepoint_arr().Get(i);
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.origin_timepoint_arr");
-    target = stream->WriteString(26, s, target);
-  }
-
-  // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_convert_duration_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_convert_duration_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            27, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated string origin_duration_arr = 28;
-  for (int i = 0, n = this->_internal_origin_duration_arr_size(); i < n; ++i) {
-    const auto& s = this->_internal_origin_duration_arr().Get(i);
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "role_cfg.origin_duration_arr");
-    target = stream->WriteString(28, s, target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:role_cfg)
-  return target;
-}
-
-::size_t role_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:role_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated string test_array = 11;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_array().size());
-  for (int i = 0, n = _internal_test_array().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_test_array().Get(i));
-  }
-  // repeated .cost_type test_plain_enum_array = 13;
-  {
-    std::size_t data_size = 0;
-    auto count = static_cast(this->_internal_test_plain_enum_array_size());
-
-    for (std::size_t i = 0; i < count; ++i) {
-      data_size += ::_pbi::WireFormatLite::EnumSize(
-          this->_internal_test_plain_enum_array().Get(static_cast(i)));
-    }
-    total_size += data_size;
-    total_size += std::size_t{1} * count;
-  }
-  // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
-  total_size += 2UL * this->_internal_convert_timepoint_arr_size();
-  for (const auto& msg : this->_internal_convert_timepoint_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated string origin_timepoint_arr = 26;
-  total_size += 2 * ::google::protobuf::internal::FromIntSize(_internal_origin_timepoint_arr().size());
-  for (int i = 0, n = _internal_origin_timepoint_arr().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_origin_timepoint_arr().Get(i));
-  }
-  // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
-  total_size += 2UL * this->_internal_convert_duration_arr_size();
-  for (const auto& msg : this->_internal_convert_duration_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated string origin_duration_arr = 28;
-  total_size += 2 * ::google::protobuf::internal::FromIntSize(_internal_origin_duration_arr().size());
-  for (int i = 0, n = _internal_origin_duration_arr().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_origin_duration_arr().Get(i));
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x000000ffu) {
-    // optional string name = 5;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_name());
-    }
-
-    // optional string int_as_string = 12;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_int_as_string());
-    }
-
-    // optional string origin_timepoint_one = 22;
-    if (cached_has_bits & 0x00000004u) {
-      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_origin_timepoint_one());
-    }
-
-    // optional string origin_duration_one = 24;
-    if (cached_has_bits & 0x00000008u) {
-      total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_origin_duration_one());
-    }
-
-    // optional .dep_cfg dep_test = 10;
-    if (cached_has_bits & 0x00000010u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.dep_test_);
-    }
-
-    // optional .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
-    if (cached_has_bits & 0x00000020u) {
-      total_size +=
-          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.convert_timepoint_one_);
-    }
-
-    // optional .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
-    if (cached_has_bits & 0x00000040u) {
-      total_size +=
-          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.convert_duration_one_);
-    }
-
-    // optional uint32 id = 1;
-    if (cached_has_bits & 0x00000080u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-  }
-  if (cached_has_bits & 0x00000700u) {
-    // optional uint32 unlock_level = 2;
-    if (cached_has_bits & 0x00000100u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_unlock_level());
-    }
-
-    // optional int32 cost_type = 3;
-    if (cached_has_bits & 0x00000200u) {
-      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-          this->_internal_cost_type());
-    }
-
-    // optional int32 cost_value = 4;
-    if (cached_has_bits & 0x00000400u) {
-      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-          this->_internal_cost_value());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* role_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const role_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* role_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const role_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:role_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1;
+          if (cached_has_bits & 0x00000080u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // optional uint32 unlock_level = 2;
+          if (cached_has_bits & 0x00000100u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_unlock_level(), target);
+          }
+
+          // optional int32 cost_type = 3;
+          if (cached_has_bits & 0x00000200u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<3>(
+                    stream, this_._internal_cost_type(), target);
+          }
+
+          // optional int32 cost_value = 4;
+          if (cached_has_bits & 0x00000400u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<4>(
+                    stream, this_._internal_cost_value(), target);
+          }
+
+          // optional string name = 5;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_name();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.name");
+            target = stream->WriteStringMaybeAliased(5, _s, target);
+          }
+
+          // optional .dep_cfg dep_test = 10;
+          if (cached_has_bits & 0x00000010u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                10, *this_._impl_.dep_test_, this_._impl_.dep_test_->GetCachedSize(), target,
+                stream);
+          }
+
+          // repeated string test_array = 11;
+          for (int i = 0, n = this_._internal_test_array_size(); i < n; ++i) {
+            const auto& s = this_._internal_test_array().Get(i);
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.test_array");
+            target = stream->WriteString(11, s, target);
+          }
+
+          // optional string int_as_string = 12;
+          if (cached_has_bits & 0x00000002u) {
+            const std::string& _s = this_._internal_int_as_string();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.int_as_string");
+            target = stream->WriteStringMaybeAliased(12, _s, target);
+          }
+
+          // repeated .cost_type test_plain_enum_array = 13;
+          for (int i = 0, n = this_._internal_test_plain_enum_array_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                13, static_cast<::cost_type>(this_._internal_test_plain_enum_array().Get(i)),
+                target);
+          }
+
+          // optional .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
+          if (cached_has_bits & 0x00000020u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                21, *this_._impl_.convert_timepoint_one_, this_._impl_.convert_timepoint_one_->GetCachedSize(), target,
+                stream);
+          }
+
+          // optional string origin_timepoint_one = 22;
+          if (cached_has_bits & 0x00000004u) {
+            const std::string& _s = this_._internal_origin_timepoint_one();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.origin_timepoint_one");
+            target = stream->WriteStringMaybeAliased(22, _s, target);
+          }
+
+          // optional .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
+          if (cached_has_bits & 0x00000040u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                23, *this_._impl_.convert_duration_one_, this_._impl_.convert_duration_one_->GetCachedSize(), target,
+                stream);
+          }
+
+          // optional string origin_duration_one = 24;
+          if (cached_has_bits & 0x00000008u) {
+            const std::string& _s = this_._internal_origin_duration_one();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.origin_duration_one");
+            target = stream->WriteStringMaybeAliased(24, _s, target);
+          }
+
+          // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_convert_timepoint_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_convert_timepoint_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    25, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated string origin_timepoint_arr = 26;
+          for (int i = 0, n = this_._internal_origin_timepoint_arr_size(); i < n; ++i) {
+            const auto& s = this_._internal_origin_timepoint_arr().Get(i);
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.origin_timepoint_arr");
+            target = stream->WriteString(26, s, target);
+          }
+
+          // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_convert_duration_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_convert_duration_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    27, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated string origin_duration_arr = 28;
+          for (int i = 0, n = this_._internal_origin_duration_arr_size(); i < n; ++i) {
+            const auto& s = this_._internal_origin_duration_arr().Get(i);
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "role_cfg.origin_duration_arr");
+            target = stream->WriteString(28, s, target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:role_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t role_cfg::ByteSizeLong(const MessageLite& base) {
+          const role_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t role_cfg::ByteSizeLong() const {
+          const role_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:role_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated string test_array = 11;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_array().size());
+              for (int i = 0, n = this_._internal_test_array().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_test_array().Get(i));
+              }
+            }
+            // repeated .cost_type test_plain_enum_array = 13;
+             {
+              std::size_t data_size = 0;
+              auto count = static_cast(this_._internal_test_plain_enum_array_size());
+
+              for (std::size_t i = 0; i < count; ++i) {
+                data_size += ::_pbi::WireFormatLite::EnumSize(
+                    this_._internal_test_plain_enum_array().Get(static_cast(i)));
+              }
+              total_size += data_size;
+              total_size += std::size_t{1} * count;
+            }
+            // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
+             {
+              total_size += 2UL * this_._internal_convert_timepoint_arr_size();
+              for (const auto& msg : this_._internal_convert_timepoint_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated string origin_timepoint_arr = 26;
+             {
+              total_size +=
+                  2 * ::google::protobuf::internal::FromIntSize(this_._internal_origin_timepoint_arr().size());
+              for (int i = 0, n = this_._internal_origin_timepoint_arr().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_origin_timepoint_arr().Get(i));
+              }
+            }
+            // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
+             {
+              total_size += 2UL * this_._internal_convert_duration_arr_size();
+              for (const auto& msg : this_._internal_convert_duration_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated string origin_duration_arr = 28;
+             {
+              total_size +=
+                  2 * ::google::protobuf::internal::FromIntSize(this_._internal_origin_duration_arr().size());
+              for (int i = 0, n = this_._internal_origin_duration_arr().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_origin_duration_arr().Get(i));
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x000000ffu) {
+            // optional string name = 5;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_name());
+            }
+            // optional string int_as_string = 12;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_int_as_string());
+            }
+            // optional string origin_timepoint_one = 22;
+            if (cached_has_bits & 0x00000004u) {
+              total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_origin_timepoint_one());
+            }
+            // optional string origin_duration_one = 24;
+            if (cached_has_bits & 0x00000008u) {
+              total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_origin_duration_one());
+            }
+            // optional .dep_cfg dep_test = 10;
+            if (cached_has_bits & 0x00000010u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dep_test_);
+            }
+            // optional .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
+            if (cached_has_bits & 0x00000020u) {
+              total_size += 2 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.convert_timepoint_one_);
+            }
+            // optional .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
+            if (cached_has_bits & 0x00000040u) {
+              total_size += 2 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.convert_duration_one_);
+            }
+            // optional uint32 id = 1;
+            if (cached_has_bits & 0x00000080u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          if (cached_has_bits & 0x00000700u) {
+            // optional uint32 unlock_level = 2;
+            if (cached_has_bits & 0x00000100u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_unlock_level());
+            }
+            // optional int32 cost_type = 3;
+            if (cached_has_bits & 0x00000200u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_cost_type());
+            }
+            // optional int32 cost_value = 4;
+            if (cached_has_bits & 0x00000400u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_cost_value());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void role_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -1682,7 +1835,11 @@ class role_upgrade_cfg::_Internal {
 };
 
 role_upgrade_cfg::role_upgrade_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:role_upgrade_cfg)
 }
@@ -1715,25 +1872,33 @@ inline void role_upgrade_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-role_upgrade_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(role_upgrade_cfg, _impl_._cached_size_),
-              false,
-          },
-          &role_upgrade_cfg::MergeImpl,
-          &role_upgrade_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    role_upgrade_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_role_upgrade_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &role_upgrade_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &role_upgrade_cfg::ByteSizeLong,
+                &role_upgrade_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(role_upgrade_cfg, _impl_._cached_size_),
+            false,
+        },
+        &role_upgrade_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* role_upgrade_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 5, 0, 0, 2> role_upgrade_cfg::_table_ = {
@@ -1747,7 +1912,7 @@ const ::_pbi::TcParseTable<3, 5, 0, 0, 2> role_upgrade_cfg::_table_ = {
     5,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_role_upgrade_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -1813,103 +1978,112 @@ PROTOBUF_NOINLINE void role_upgrade_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* role_upgrade_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:role_upgrade_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
-  if (cached_has_bits & 0x00000001u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // optional uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_level(), target);
-  }
-
-  // optional int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
-  if (cached_has_bits & 0x00000008u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<3>(
-            stream, this->_internal_costtype(), target);
-  }
-
-  // optional int64 CostValue = 4;
-  if (cached_has_bits & 0x00000004u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt64ToArrayWithField<4>(
-            stream, this->_internal_costvalue(), target);
-  }
-
-  // optional int32 ScoreAdd = 5;
-  if (cached_has_bits & 0x00000010u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<5>(
-            stream, this->_internal_scoreadd(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:role_upgrade_cfg)
-  return target;
-}
-
-::size_t role_upgrade_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:role_upgrade_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x0000001fu) {
-    // optional uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
-    if (cached_has_bits & 0x00000001u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-    // optional uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_level());
-    }
-
-    // optional int64 CostValue = 4;
-    if (cached_has_bits & 0x00000004u) {
-      total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
-          this->_internal_costvalue());
-    }
-
-    // optional int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
-    if (cached_has_bits & 0x00000008u) {
-      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-          this->_internal_costtype());
-    }
-
-    // optional int32 ScoreAdd = 5;
-    if (cached_has_bits & 0x00000010u) {
-      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-          this->_internal_scoreadd());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* role_upgrade_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const role_upgrade_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* role_upgrade_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const role_upgrade_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:role_upgrade_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
+          if (cached_has_bits & 0x00000001u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // optional uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_level(), target);
+          }
+
+          // optional int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
+          if (cached_has_bits & 0x00000008u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<3>(
+                    stream, this_._internal_costtype(), target);
+          }
+
+          // optional int64 CostValue = 4;
+          if (cached_has_bits & 0x00000004u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt64ToArrayWithField<4>(
+                    stream, this_._internal_costvalue(), target);
+          }
+
+          // optional int32 ScoreAdd = 5;
+          if (cached_has_bits & 0x00000010u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<5>(
+                    stream, this_._internal_scoreadd(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:role_upgrade_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t role_upgrade_cfg::ByteSizeLong(const MessageLite& base) {
+          const role_upgrade_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t role_upgrade_cfg::ByteSizeLong() const {
+          const role_upgrade_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:role_upgrade_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x0000001fu) {
+            // optional uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // optional uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_level());
+            }
+            // optional int64 CostValue = 4;
+            if (cached_has_bits & 0x00000004u) {
+              total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
+                  this_._internal_costvalue());
+            }
+            // optional int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
+            if (cached_has_bits & 0x00000008u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_costtype());
+            }
+            // optional int32 ScoreAdd = 5;
+            if (cached_has_bits & 0x00000010u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_scoreadd());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void role_upgrade_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -1975,7 +2149,11 @@ class test_msg_verifier::_Internal {
 };
 
 test_msg_verifier::test_msg_verifier(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:test_msg_verifier)
 }
@@ -2008,25 +2186,33 @@ inline void test_msg_verifier::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-test_msg_verifier::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_._cached_size_),
-              false,
-          },
-          &test_msg_verifier::MergeImpl,
-          &test_msg_verifier::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    test_msg_verifier::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_test_msg_verifier_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &test_msg_verifier::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &test_msg_verifier::ByteSizeLong,
+                &test_msg_verifier::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_._cached_size_),
+            false,
+        },
+        &test_msg_verifier::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* test_msg_verifier::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<0, 3, 0, 0, 7> test_msg_verifier::_table_ = {
@@ -2040,7 +2226,7 @@ const ::_pbi::TcParseTable<0, 3, 0, 0, 7> test_msg_verifier::_table_ = {
     3,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_test_msg_verifier_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -2056,7 +2242,7 @@ const ::_pbi::TcParseTable<0, 3, 0, 0, 7> test_msg_verifier::_table_ = {
     // optional uint32 test_id_1 = 10001;
     {PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_.test_id_1_), _Internal::kHasBitsOffset + 0, 0,
     (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
-    // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
+    // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_.test_id_2_), _Internal::kHasBitsOffset + 1, 0,
     (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
     // optional uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
@@ -2085,77 +2271,88 @@ PROTOBUF_NOINLINE void test_msg_verifier::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* test_msg_verifier::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:test_msg_verifier)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 test_id_1 = 10001;
-  if (cached_has_bits & 0x00000001u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        10001, this->_internal_test_id_1(), target);
-  }
-
-  // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        10002, this->_internal_test_id_2(), target);
-  }
-
-  // optional uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
-  if (cached_has_bits & 0x00000004u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        10003, this->_internal_test_id_3(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:test_msg_verifier)
-  return target;
-}
-
-::size_t test_msg_verifier::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:test_msg_verifier)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000007u) {
-    // optional uint32 test_id_1 = 10001;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
-                                      this->_internal_test_id_1());
-    }
-
-    // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
-    if (cached_has_bits & 0x00000002u) {
-      total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
-                                      this->_internal_test_id_2());
-    }
-
-    // optional uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
-    if (cached_has_bits & 0x00000004u) {
-      total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
-                                      this->_internal_test_id_3());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* test_msg_verifier::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const test_msg_verifier& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* test_msg_verifier::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const test_msg_verifier& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:test_msg_verifier)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 test_id_1 = 10001;
+          if (cached_has_bits & 0x00000001u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                10001, this_._internal_test_id_1(), target);
+          }
+
+          // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                10002, this_._internal_test_id_2(), target);
+          }
+
+          // optional uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
+          if (cached_has_bits & 0x00000004u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                10003, this_._internal_test_id_3(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:test_msg_verifier)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t test_msg_verifier::ByteSizeLong(const MessageLite& base) {
+          const test_msg_verifier& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t test_msg_verifier::ByteSizeLong() const {
+          const test_msg_verifier& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:test_msg_verifier)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000007u) {
+            // optional uint32 test_id_1 = 10001;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_test_id_1());
+            }
+            // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_test_id_2());
+            }
+            // optional uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
+            if (cached_has_bits & 0x00000004u) {
+              total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_test_id_3());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void test_msg_verifier::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -2215,7 +2412,11 @@ class arr_in_arr::_Internal {
 };
 
 arr_in_arr::arr_in_arr(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:arr_in_arr)
 }
@@ -2232,7 +2433,11 @@ inline PROTOBUF_NDEBUG_INLINE arr_in_arr::Impl_::Impl_(
 arr_in_arr::arr_in_arr(
     ::google::protobuf::Arena* arena,
     const arr_in_arr& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   arr_in_arr* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -2264,25 +2469,33 @@ inline void arr_in_arr::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr, _impl_._cached_size_),
-              false,
-          },
-          &arr_in_arr::MergeImpl,
-          &arr_in_arr::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    arr_in_arr::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_arr_in_arr_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &arr_in_arr::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &arr_in_arr::ByteSizeLong,
+                &arr_in_arr::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(arr_in_arr, _impl_._cached_size_),
+            false,
+        },
+        &arr_in_arr::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* arr_in_arr::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 0, 30, 2> arr_in_arr::_table_ = {
@@ -2296,7 +2509,7 @@ const ::_pbi::TcParseTable<2, 3, 0, 30, 2> arr_in_arr::_table_ = {
     3,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_arr_in_arr_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -2352,86 +2565,108 @@ PROTOBUF_NOINLINE void arr_in_arr::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* arr_in_arr::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_name();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "arr_in_arr.name");
-    target = stream->WriteStringMaybeAliased(1, _s, target);
-  }
-
-  // repeated int32 int_arr = 2 [packed = true, (.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    int byte_size = _impl_._int_arr_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt32Packed(
-          2, _internal_int_arr(), byte_size, target);
-    }
-  }
-
-  // repeated string str_arr = 3;
-  for (int i = 0, n = this->_internal_str_arr_size(); i < n; ++i) {
-    const auto& s = this->_internal_str_arr().Get(i);
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "arr_in_arr.str_arr");
-    target = stream->WriteString(3, s, target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr)
-  return target;
-}
-
-::size_t arr_in_arr::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:arr_in_arr)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated int32 int_arr = 2 [packed = true, (.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_int_arr())
-    ;
-    _impl_._int_arr_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // repeated string str_arr = 3;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_str_arr().size());
-  for (int i = 0, n = _internal_str_arr().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_str_arr().Get(i));
-  }
-  // optional string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_name());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* arr_in_arr::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const arr_in_arr& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* arr_in_arr::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const arr_in_arr& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_name();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "arr_in_arr.name");
+            target = stream->WriteStringMaybeAliased(1, _s, target);
+          }
+
+          // repeated int32 int_arr = 2 [packed = true, (.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
+          {
+            int byte_size = this_._impl_._int_arr_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt32Packed(
+                  2, this_._internal_int_arr(), byte_size, target);
+            }
+          }
+
+          // repeated string str_arr = 3;
+          for (int i = 0, n = this_._internal_str_arr_size(); i < n; ++i) {
+            const auto& s = this_._internal_str_arr().Get(i);
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "arr_in_arr.str_arr");
+            target = stream->WriteString(3, s, target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t arr_in_arr::ByteSizeLong(const MessageLite& base) {
+          const arr_in_arr& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t arr_in_arr::ByteSizeLong() const {
+          const arr_in_arr& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:arr_in_arr)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated int32 int_arr = 2 [packed = true, (.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_int_arr())
+              ;
+              this_._impl_._int_arr_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+            // repeated string str_arr = 3;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_str_arr().size());
+              for (int i = 0, n = this_._internal_str_arr().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_str_arr().Get(i));
+              }
+            }
+          }
+           {
+            // optional string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_name());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void arr_in_arr::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -2475,59 +2710,173 @@ ::google::protobuf::Metadata arr_in_arr::GetMetadata() const {
 }
 // ===================================================================
 
-arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse() {}
-arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_cfg_TestMapIsEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MergeImpl,
-          &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
-// ===================================================================
-
-arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse() {}
-arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_cfg_TestMapSmEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MergeImpl,
-          &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
-// ===================================================================
-
-class arr_in_arr_cfg::_Internal {
- public:
-  using HasBits =
-      decltype(std::declval()._impl_._has_bits_);
-  static constexpr ::int32_t kHasBitsOffset =
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse() : SuperType() {}
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  arr_in_arr_cfg_TestMapIsEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_arr_in_arr_cfg_TestMapIsEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* arr_in_arr_cfg_TestMapIsEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 43, 2> arr_in_arr_cfg_TestMapIsEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    0,  // num_aux_entries
+    offsetof(decltype(_table_), field_names),  // no aux_entries
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::arr_in_arr_cfg_TestMapIsEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // optional string value = 2;
+    {::_pbi::TcParser::FastSS1,
+     {18, 0, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.value_)}},
+    // optional int32 key = 1;
+    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_), 1>(),
+     {8, 1, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // optional int32 key = 1;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_), _Internal::kHasBitsOffset + 1, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
+    // optional string value = 2;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
+  }},
+  // no aux_entries
+  {{
+    "\35\0\5\0\0\0\0\0"
+    "arr_in_arr_cfg.TestMapIsEntry"
+    "value"
+  }},
+};
+
+// ===================================================================
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse() : SuperType() {}
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  arr_in_arr_cfg_TestMapSmEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_arr_in_arr_cfg_TestMapSmEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* arr_in_arr_cfg_TestMapSmEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 1, 41, 2> arr_in_arr_cfg_TestMapSmEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    1,  // num_aux_entries
+    offsetof(decltype(_table_), aux_entries),
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::arr_in_arr_cfg_TestMapSmEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // optional .dep2_cfg value = 2;
+    {::_pbi::TcParser::FastMtS1,
+     {18, 1, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.value_)}},
+    // optional string key = 1;
+    {::_pbi::TcParser::FastSS1,
+     {10, 0, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // optional string key = 1;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.key_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
+    // optional .dep2_cfg value = 2;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 1, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
+  }}, {{
+    {::_pbi::TcParser::GetTable<::dep2_cfg>()},
+  }}, {{
+    "\35\3\0\0\0\0\0\0"
+    "arr_in_arr_cfg.TestMapSmEntry"
+    "key"
+  }},
+};
+
+// ===================================================================
+
+class arr_in_arr_cfg::_Internal {
+ public:
+  using HasBits =
+      decltype(std::declval()._impl_._has_bits_);
+  static constexpr ::int32_t kHasBitsOffset =
       8 * PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_._has_bits_);
 };
 
@@ -2536,7 +2885,11 @@ void arr_in_arr_cfg::clear_test_map_sm() {
   _impl_.test_map_sm_.Clear();
 }
 arr_in_arr_cfg::arr_in_arr_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:arr_in_arr_cfg)
 }
@@ -2555,7 +2908,11 @@ inline PROTOBUF_NDEBUG_INLINE arr_in_arr_cfg::Impl_::Impl_(
 arr_in_arr_cfg::arr_in_arr_cfg(
     ::google::protobuf::Arena* arena,
     const arr_in_arr_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   arr_in_arr_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -2600,25 +2957,33 @@ inline void arr_in_arr_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_._cached_size_),
-              false,
-          },
-          &arr_in_arr_cfg::MergeImpl,
-          &arr_in_arr_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    arr_in_arr_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_arr_in_arr_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &arr_in_arr_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &arr_in_arr_cfg::ByteSizeLong,
+                &arr_in_arr_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_._cached_size_),
+            false,
+        },
+        &arr_in_arr_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* arr_in_arr_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 8, 7, 53, 2> arr_in_arr_cfg::_table_ = {
@@ -2632,7 +2997,7 @@ const ::_pbi::TcParseTable<3, 8, 7, 53, 2> arr_in_arr_cfg::_table_ = {
     8,  // num_field_entries
     7,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_arr_in_arr_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -2643,10 +3008,10 @@ const ::_pbi::TcParseTable<3, 8, 7, 53, 2> arr_in_arr_cfg::_table_ = {
     // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
     {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(arr_in_arr_cfg, _impl_.id_), 1>(),
      {8, 1, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.id_)}},
-    // repeated .arr_in_arr arr = 2;
+    // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
     {::_pbi::TcParser::FastMtR1,
      {18, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.arr_)}},
-    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
     {::_pbi::TcParser::FastV32R1,
      {24, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.test_plain_int_arr_)}},
     // repeated .cost_type test_plain_enum_arr = 4;
@@ -2665,10 +3030,10 @@ const ::_pbi::TcParseTable<3, 8, 7, 53, 2> arr_in_arr_cfg::_table_ = {
     // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
     {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.id_), _Internal::kHasBitsOffset + 1, 0,
     (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
-    // repeated .arr_in_arr arr = 2;
+    // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.arr_), -1, 0,
     (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
-    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.test_plain_int_arr_), -1, 0,
     (0 | ::_fl::kFcRepeated | ::_fl::kInt32)},
     // repeated .cost_type test_plain_enum_arr = 4;
@@ -2731,200 +3096,225 @@ PROTOBUF_NOINLINE void arr_in_arr_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* arr_in_arr_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // repeated .arr_in_arr arr = 2;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            2, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
-  for (int i = 0, n = this->_internal_test_plain_int_arr_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
-        3, this->_internal_test_plain_int_arr().Get(i), target);
-  }
-
-  // repeated .cost_type test_plain_enum_arr = 4;
-  for (int i = 0, n = this->_internal_test_plain_enum_arr_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteEnumToArray(
-        4, static_cast<::cost_type>(this->_internal_test_plain_enum_arr().Get(i)),
-        target);
-  }
-
-  // optional .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        5, *_impl_.test_plain_msg_, _impl_.test_plain_msg_->GetCachedSize(), target, stream);
-  }
-
-  // repeated .test_msg_verifier test_plain_msg_arr = 6;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_test_plain_msg_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_test_plain_msg_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            6, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // map test_map_is = 7;
-  if (!_internal_test_map_is().empty()) {
-    using MapType = ::google::protobuf::Map<::int32_t, std::string>;
-    using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>;
-    const auto& field = _internal_test_map_is();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* arr_in_arr_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const arr_in_arr_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* arr_in_arr_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const arr_in_arr_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    2, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
+          for (int i = 0, n = this_._internal_test_plain_int_arr_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteInt32ToArray(
+                3, this_._internal_test_plain_int_arr().Get(i), target);
+          }
+
+          // repeated .cost_type test_plain_enum_arr = 4;
+          for (int i = 0, n = this_._internal_test_plain_enum_arr_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                4, static_cast<::cost_type>(this_._internal_test_plain_enum_arr().Get(i)),
+                target);
+          }
+
+          // optional .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                5, *this_._impl_.test_plain_msg_, this_._impl_.test_plain_msg_->GetCachedSize(), target,
+                stream);
+          }
+
+          // repeated .test_msg_verifier test_plain_msg_arr = 6;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_test_plain_msg_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_test_plain_msg_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    6, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // map test_map_is = 7;
+          if (!this_._internal_test_map_is().empty()) {
+            using MapType = ::google::protobuf::Map<::int32_t, std::string>;
+            using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
+                                           _pbi::WireFormatLite::TYPE_INT32,
+                                           _pbi::WireFormatLite::TYPE_STRING>;
+            const auto& field = this_._internal_test_map_is();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "arr_in_arr_cfg.test_map_is");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
+                                            "arr_in_arr_cfg.test_map_is");
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "arr_in_arr_cfg.test_map_is");
-      }
-    }
-  }
-
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  if (!_internal_test_map_sm().empty()) {
-    using MapType = ::google::protobuf::Map;
-    using WireHelper = _pbi::MapEntryFuncs;
-    const auto& field = _internal_test_map_sm();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
+                                            "arr_in_arr_cfg.test_map_is");
+              }
+            }
+          }
+
+          // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+          if (!this_._internal_test_map_sm().empty()) {
+            using MapType = ::google::protobuf::Map;
+            using WireHelper = _pbi::MapEntryFuncs;
+            const auto& field = this_._internal_test_map_sm();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "arr_in_arr_cfg.test_map_sm");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
+                                            "arr_in_arr_cfg.test_map_sm");
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "arr_in_arr_cfg.test_map_sm");
-      }
-    }
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr_cfg)
-  return target;
-}
-
-::size_t arr_in_arr_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:arr_in_arr_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .arr_in_arr arr = 2;
-  total_size += 1UL * this->_internal_arr_size();
-  for (const auto& msg : this->_internal_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_test_plain_int_arr())
-    ;
-    std::size_t tag_size = std::size_t{1} *
-        ::_pbi::FromIntSize(this->_internal_test_plain_int_arr_size());
-    ;
-    total_size += tag_size + data_size;
-  }
-  // repeated .cost_type test_plain_enum_arr = 4;
-  {
-    std::size_t data_size = 0;
-    auto count = static_cast(this->_internal_test_plain_enum_arr_size());
-
-    for (std::size_t i = 0; i < count; ++i) {
-      data_size += ::_pbi::WireFormatLite::EnumSize(
-          this->_internal_test_plain_enum_arr().Get(static_cast(i)));
-    }
-    total_size += data_size;
-    total_size += std::size_t{1} * count;
-  }
-  // repeated .test_msg_verifier test_plain_msg_arr = 6;
-  total_size += 1UL * this->_internal_test_plain_msg_arr_size();
-  for (const auto& msg : this->_internal_test_plain_msg_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // map test_map_is = 7;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_is_size());
-  for (const auto& entry : _internal_test_map_is()) {
-    total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
-  }
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_sm_size());
-  for (const auto& entry : _internal_test_map_sm()) {
-    total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
-    if (cached_has_bits & 0x00000001u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.test_plain_msg_);
-    }
-
-    // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+                                            "arr_in_arr_cfg.test_map_sm");
+              }
+            }
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t arr_in_arr_cfg::ByteSizeLong(const MessageLite& base) {
+          const arr_in_arr_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t arr_in_arr_cfg::ByteSizeLong() const {
+          const arr_in_arr_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:arr_in_arr_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
+             {
+              total_size += 1UL * this_._internal_arr_size();
+              for (const auto& msg : this_._internal_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_test_plain_int_arr())
+              ;
+              std::size_t tag_size = std::size_t{1} *
+                  ::_pbi::FromIntSize(this_._internal_test_plain_int_arr_size());
+              ;
+              total_size += tag_size + data_size;
+            }
+            // repeated .cost_type test_plain_enum_arr = 4;
+             {
+              std::size_t data_size = 0;
+              auto count = static_cast(this_._internal_test_plain_enum_arr_size());
+
+              for (std::size_t i = 0; i < count; ++i) {
+                data_size += ::_pbi::WireFormatLite::EnumSize(
+                    this_._internal_test_plain_enum_arr().Get(static_cast(i)));
+              }
+              total_size += data_size;
+              total_size += std::size_t{1} * count;
+            }
+            // repeated .test_msg_verifier test_plain_msg_arr = 6;
+             {
+              total_size += 1UL * this_._internal_test_plain_msg_arr_size();
+              for (const auto& msg : this_._internal_test_plain_msg_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // map test_map_is = 7;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_is_size());
+              for (const auto& entry : this_._internal_test_map_is()) {
+                total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
+                                               _pbi::WireFormatLite::TYPE_INT32,
+                                               _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+            // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_sm_size());
+              for (const auto& entry : this_._internal_test_map_sm()) {
+                total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.test_plain_msg_);
+            }
+            // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void arr_in_arr_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -3004,7 +3394,11 @@ class event_reward_item::_Internal {
 };
 
 event_reward_item::event_reward_item(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:event_reward_item)
 }
@@ -3019,7 +3413,11 @@ inline PROTOBUF_NDEBUG_INLINE event_reward_item::Impl_::Impl_(
 event_reward_item::event_reward_item(
     ::google::protobuf::Arena* arena,
     const event_reward_item& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   event_reward_item* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -3094,25 +3492,33 @@ void event_reward_item::clear_nested() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-event_reward_item::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(event_reward_item, _impl_._cached_size_),
-              false,
-          },
-          &event_reward_item::MergeImpl,
-          &event_reward_item::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    event_reward_item::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_event_reward_item_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &event_reward_item::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &event_reward_item::ByteSizeLong,
+                &event_reward_item::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(event_reward_item, _impl_._cached_size_),
+            false,
+        },
+        &event_reward_item::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* event_reward_item::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 4, 1, 37, 2> event_reward_item::_table_ = {
@@ -3126,7 +3532,7 @@ const ::_pbi::TcParseTable<1, 4, 1, 37, 2> event_reward_item::_table_ = {
     4,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_event_reward_item_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -3181,98 +3587,110 @@ PROTOBUF_NOINLINE void event_reward_item::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* event_reward_item::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:event_reward_item)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 item_id = 1;
-  if (cached_has_bits & 0x00000001u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_item_id(), target);
-  }
-
-  // optional uint32 item_count = 2;
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_item_count(), target);
-  }
-
-  switch (nested_case()) {
-    case kNestedNote: {
-      const std::string& _s = this->_internal_nested_note();
-      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                  "event_reward_item.nested_note");
-      target = stream->WriteStringMaybeAliased(11, _s, target);
-      break;
-    }
-    case kNestedEnumType: {
-      target = stream->EnsureSpace(target);
-      target = ::_pbi::WireFormatLite::WriteEnumToArray(
-          12, this->_internal_nested_enum_type(), target);
-      break;
-    }
-    default:
-      break;
-  }
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:event_reward_item)
-  return target;
-}
-
-::size_t event_reward_item::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:event_reward_item)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional uint32 item_id = 1;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_item_id());
-    }
-
-    // optional uint32 item_count = 2;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_item_count());
-    }
-
-  }
-  switch (nested_case()) {
-    // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
-    case kNestedNote: {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_nested_note());
-      break;
-    }
-    // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
-    case kNestedEnumType: {
-      total_size += 1 +
-                    ::_pbi::WireFormatLite::EnumSize(this->_internal_nested_enum_type());
-      break;
-    }
-    case NESTED_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* event_reward_item::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const event_reward_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* event_reward_item::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const event_reward_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:event_reward_item)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 item_id = 1;
+          if (cached_has_bits & 0x00000001u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_item_id(), target);
+          }
+
+          // optional uint32 item_count = 2;
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_item_count(), target);
+          }
+
+          switch (this_.nested_case()) {
+            case kNestedNote: {
+              const std::string& _s = this_._internal_nested_note();
+              ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                          "event_reward_item.nested_note");
+              target = stream->WriteStringMaybeAliased(11, _s, target);
+              break;
+            }
+            case kNestedEnumType: {
+              target = stream->EnsureSpace(target);
+              target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                  12, this_._internal_nested_enum_type(), target);
+              break;
+            }
+            default:
+              break;
+          }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:event_reward_item)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t event_reward_item::ByteSizeLong(const MessageLite& base) {
+          const event_reward_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t event_reward_item::ByteSizeLong() const {
+          const event_reward_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:event_reward_item)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional uint32 item_id = 1;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_item_id());
+            }
+            // optional uint32 item_count = 2;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_item_count());
+            }
+          }
+          switch (this_.nested_case()) {
+            // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
+            case kNestedNote: {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_nested_note());
+              break;
+            }
+            // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
+            case kNestedEnumType: {
+              total_size += 1 +
+                            ::_pbi::WireFormatLite::EnumSize(this_._internal_nested_enum_type());
+              break;
+            }
+            case NESTED_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void event_reward_item::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -3360,7 +3778,11 @@ class event_rule_item::_Internal {
 };
 
 event_rule_item::event_rule_item(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:event_rule_item)
 }
@@ -3375,7 +3797,11 @@ inline PROTOBUF_NDEBUG_INLINE event_rule_item::Impl_::Impl_(
 event_rule_item::event_rule_item(
     ::google::protobuf::Arena* arena,
     const event_rule_item& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   event_rule_item* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -3450,25 +3876,33 @@ void event_rule_item::clear_nested() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-event_rule_item::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(event_rule_item, _impl_._cached_size_),
-              false,
-          },
-          &event_rule_item::MergeImpl,
-          &event_rule_item::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    event_rule_item::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_event_rule_item_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &event_rule_item::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &event_rule_item::ByteSizeLong,
+                &event_rule_item::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(event_rule_item, _impl_._cached_size_),
+            false,
+        },
+        &event_rule_item::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* event_rule_item::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 4, 1, 35, 2> event_rule_item::_table_ = {
@@ -3482,7 +3916,7 @@ const ::_pbi::TcParseTable<1, 4, 1, 35, 2> event_rule_item::_table_ = {
     4,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_event_rule_item_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -3537,98 +3971,110 @@ PROTOBUF_NOINLINE void event_rule_item::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* event_rule_item::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:event_rule_item)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 rule_id = 1;
-  if (cached_has_bits & 0x00000001u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_rule_id(), target);
-  }
-
-  // optional uint32 rule_param = 2;
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_rule_param(), target);
-  }
-
-  switch (nested_case()) {
-    case kNestedNote: {
-      const std::string& _s = this->_internal_nested_note();
-      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                  "event_rule_item.nested_note");
-      target = stream->WriteStringMaybeAliased(11, _s, target);
-      break;
-    }
-    case kNestedEnumType: {
-      target = stream->EnsureSpace(target);
-      target = ::_pbi::WireFormatLite::WriteEnumToArray(
-          12, this->_internal_nested_enum_type(), target);
-      break;
-    }
-    default:
-      break;
-  }
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:event_rule_item)
-  return target;
-}
-
-::size_t event_rule_item::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:event_rule_item)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional uint32 rule_id = 1;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_rule_id());
-    }
-
-    // optional uint32 rule_param = 2;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_rule_param());
-    }
-
-  }
-  switch (nested_case()) {
-    // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
-    case kNestedNote: {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_nested_note());
-      break;
-    }
-    // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
-    case kNestedEnumType: {
-      total_size += 1 +
-                    ::_pbi::WireFormatLite::EnumSize(this->_internal_nested_enum_type());
-      break;
-    }
-    case NESTED_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* event_rule_item::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const event_rule_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* event_rule_item::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const event_rule_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:event_rule_item)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 rule_id = 1;
+          if (cached_has_bits & 0x00000001u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_rule_id(), target);
+          }
+
+          // optional uint32 rule_param = 2;
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_rule_param(), target);
+          }
+
+          switch (this_.nested_case()) {
+            case kNestedNote: {
+              const std::string& _s = this_._internal_nested_note();
+              ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                          "event_rule_item.nested_note");
+              target = stream->WriteStringMaybeAliased(11, _s, target);
+              break;
+            }
+            case kNestedEnumType: {
+              target = stream->EnsureSpace(target);
+              target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                  12, this_._internal_nested_enum_type(), target);
+              break;
+            }
+            default:
+              break;
+          }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:event_rule_item)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t event_rule_item::ByteSizeLong(const MessageLite& base) {
+          const event_rule_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t event_rule_item::ByteSizeLong() const {
+          const event_rule_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:event_rule_item)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional uint32 rule_id = 1;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_rule_id());
+            }
+            // optional uint32 rule_param = 2;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_rule_param());
+            }
+          }
+          switch (this_.nested_case()) {
+            // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
+            case kNestedNote: {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_nested_note());
+              break;
+            }
+            // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
+            case kNestedEnumType: {
+              total_size += 1 +
+                            ::_pbi::WireFormatLite::EnumSize(this_._internal_nested_enum_type());
+              break;
+            }
+            case NESTED_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void event_rule_item::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -3729,7 +4175,11 @@ void event_cfg::set_allocated_item(::event_reward_item* item) {
   // @@protoc_insertion_point(field_set_allocated:event_cfg.item)
 }
 event_cfg::event_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:event_cfg)
 }
@@ -3747,7 +4197,11 @@ inline PROTOBUF_NDEBUG_INLINE event_cfg::Impl_::Impl_(
 event_cfg::event_cfg(
     ::google::protobuf::Arena* arena,
     const event_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   event_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -3877,25 +4331,33 @@ void event_cfg::clear_unlock_type() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-event_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(event_cfg, _impl_._cached_size_),
-              false,
-          },
-          &event_cfg::MergeImpl,
-          &event_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    event_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_event_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &event_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &event_cfg::ByteSizeLong,
+                &event_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(event_cfg, _impl_._cached_size_),
+            false,
+        },
+        &event_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* event_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 11, 6, 30, 11> event_cfg::_table_ = {
@@ -3909,7 +4371,7 @@ const ::_pbi::TcParseTable<3, 11, 6, 30, 11> event_cfg::_table_ = {
     11,  // num_field_entries
     6,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_event_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -3933,7 +4395,7 @@ const ::_pbi::TcParseTable<3, 11, 6, 30, 11> event_cfg::_table_ = {
     // optional .event_rule_item rule = 6;
     {::_pbi::TcParser::FastMtS1,
      {50, 0, 0, PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.rule_)}},
-    // optional .event_rule_item specify_field = 7;
+    // optional .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
     {::_pbi::TcParser::FastMtS1,
      {58, 1, 1, PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.specify_field_)}},
   }}, {{
@@ -3950,7 +4412,7 @@ const ::_pbi::TcParseTable<3, 11, 6, 30, 11> event_cfg::_table_ = {
     // optional .event_rule_item rule = 6;
     {PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.rule_), _Internal::kHasBitsOffset + 0, 0,
     (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
-    // optional .event_rule_item specify_field = 7;
+    // optional .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.specify_field_), _Internal::kHasBitsOffset + 1, 1,
     (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
     // .event_reward_item item = 11 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\351\201\223\345\205\267"];
@@ -4019,204 +4481,223 @@ PROTOBUF_NOINLINE void event_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* event_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:event_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
-  if (cached_has_bits & 0x00000004u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // optional uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
-  if (cached_has_bits & 0x00000008u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_process(), target);
-  }
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* event_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const event_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* event_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const event_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:event_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
+          if (cached_has_bits & 0x00000004u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // optional uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
+          if (cached_has_bits & 0x00000008u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_process(), target);
+          }
+
+          // optional .event_rule_item rule = 6;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                6, *this_._impl_.rule_, this_._impl_.rule_->GetCachedSize(), target,
+                stream);
+          }
+
+          // optional .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                7, *this_._impl_.specify_field_, this_._impl_.specify_field_->GetCachedSize(), target,
+                stream);
+          }
+
+          switch (this_.reward_case()) {
+            case kItem: {
+              target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                  11, *this_._impl_.reward_.item_, this_._impl_.reward_.item_->GetCachedSize(), target,
+                  stream);
+              break;
+            }
+            case kUserExp: {
+              target = ::google::protobuf::internal::WireFormatLite::
+                  WriteInt64ToArrayWithField<12>(
+                      stream, this_._internal_user_exp(), target);
+              break;
+            }
+            case kNote: {
+              const std::string& _s = this_._internal_note();
+              ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                          "event_cfg.note");
+              target = stream->WriteStringMaybeAliased(13, _s, target);
+              break;
+            }
+            case kEnumType: {
+              target = stream->EnsureSpace(target);
+              target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                  14, this_._internal_enum_type(), target);
+              break;
+            }
+            default:
+              break;
+          }
+          // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
+          if (this_.unlock_type_case() == kUserLevel) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                51, this_._internal_user_level(), target);
+          }
+
+          // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_test_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_test_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    91, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_test_empty_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_test_empty_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    92, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:event_cfg)
+          return target;
+        }
 
-  // optional .event_rule_item rule = 6;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        6, *_impl_.rule_, _impl_.rule_->GetCachedSize(), target, stream);
-  }
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t event_cfg::ByteSizeLong(const MessageLite& base) {
+          const event_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t event_cfg::ByteSizeLong() const {
+          const event_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:event_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
+             {
+              total_size += 2UL * this_._internal_test_arr_size();
+              for (const auto& msg : this_._internal_test_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
+             {
+              total_size += 2UL * this_._internal_test_empty_arr_size();
+              for (const auto& msg : this_._internal_test_empty_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x0000000fu) {
+            // optional .event_rule_item rule = 6;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.rule_);
+            }
+            // optional .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.specify_field_);
+            }
+            // optional uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
+            if (cached_has_bits & 0x00000004u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // optional uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
+            if (cached_has_bits & 0x00000008u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_process());
+            }
+          }
+          switch (this_.reward_case()) {
+            // .event_reward_item item = 11 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\351\201\223\345\205\267"];
+            case kItem: {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.reward_.item_);
+              break;
+            }
+            // int64 user_exp = 12 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\347\273\217\351\252\214"];
+            case kUserExp: {
+              total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
+                  this_._internal_user_exp());
+              break;
+            }
+            // string note = 13 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
+            case kNote: {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_note());
+              break;
+            }
+            // .cost_type enum_type = 14 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
+            case kEnumType: {
+              total_size += 1 +
+                            ::_pbi::WireFormatLite::EnumSize(this_._internal_enum_type());
+              break;
+            }
+            case REWARD_NOT_SET: {
+              break;
+            }
+          }
+          switch (this_.unlock_type_case()) {
+            // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
+            case kUserLevel: {
+              total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_user_level());
+              break;
+            }
+            case UNLOCK_TYPE_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
-  // optional .event_rule_item specify_field = 7;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        7, *_impl_.specify_field_, _impl_.specify_field_->GetCachedSize(), target, stream);
-  }
-
-  switch (reward_case()) {
-    case kItem: {
-      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-          11, *_impl_.reward_.item_, _impl_.reward_.item_->GetCachedSize(), target, stream);
-      break;
-    }
-    case kUserExp: {
-      target = ::google::protobuf::internal::WireFormatLite::
-          WriteInt64ToArrayWithField<12>(
-              stream, this->_internal_user_exp(), target);
-      break;
-    }
-    case kNote: {
-      const std::string& _s = this->_internal_note();
-      ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                  "event_cfg.note");
-      target = stream->WriteStringMaybeAliased(13, _s, target);
-      break;
-    }
-    case kEnumType: {
-      target = stream->EnsureSpace(target);
-      target = ::_pbi::WireFormatLite::WriteEnumToArray(
-          14, this->_internal_enum_type(), target);
-      break;
-    }
-    default:
-      break;
-  }
-  // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
-  if (unlock_type_case() == kUserLevel) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        51, this->_internal_user_level(), target);
-  }
-
-  // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_test_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_test_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            91, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_test_empty_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_test_empty_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            92, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:event_cfg)
-  return target;
-}
-
-::size_t event_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:event_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
-  total_size += 2UL * this->_internal_test_arr_size();
-  for (const auto& msg : this->_internal_test_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
-  total_size += 2UL * this->_internal_test_empty_arr_size();
-  for (const auto& msg : this->_internal_test_empty_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x0000000fu) {
-    // optional .event_rule_item rule = 6;
-    if (cached_has_bits & 0x00000001u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rule_);
-    }
-
-    // optional .event_rule_item specify_field = 7;
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.specify_field_);
-    }
-
-    // optional uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
-    if (cached_has_bits & 0x00000004u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-    // optional uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
-    if (cached_has_bits & 0x00000008u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_process());
-    }
-
-  }
-  switch (reward_case()) {
-    // .event_reward_item item = 11 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\351\201\223\345\205\267"];
-    case kItem: {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.reward_.item_);
-      break;
-    }
-    // int64 user_exp = 12 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\347\273\217\351\252\214"];
-    case kUserExp: {
-      total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
-          this->_internal_user_exp());
-      break;
-    }
-    // string note = 13 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
-    case kNote: {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_note());
-      break;
-    }
-    // .cost_type enum_type = 14 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
-    case kEnumType: {
-      total_size += 1 +
-                    ::_pbi::WireFormatLite::EnumSize(this->_internal_enum_type());
-      break;
-    }
-    case REWARD_NOT_SET: {
-      break;
-    }
-  }
-  switch (unlock_type_case()) {
-    // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
-    case kUserLevel: {
-      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
-                                      this->_internal_user_level());
-      break;
-    }
-    case UNLOCK_TYPE_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
-
-void event_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
-  auto* const _this = static_cast(&to_msg);
-  auto& from = static_cast(from_msg);
-  ::google::protobuf::Arena* arena = _this->GetArena();
-  // @@protoc_insertion_point(class_specific_merge_from_start:event_cfg)
-  ABSL_DCHECK_NE(&from, _this);
-  ::uint32_t cached_has_bits = 0;
-  (void) cached_has_bits;
+void event_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+  auto* const _this = static_cast(&to_msg);
+  auto& from = static_cast(from_msg);
+  ::google::protobuf::Arena* arena = _this->GetArena();
+  // @@protoc_insertion_point(class_specific_merge_from_start:event_cfg)
+  ABSL_DCHECK_NE(&from, _this);
+  ::uint32_t cached_has_bits = 0;
+  (void) cached_has_bits;
 
   _this->_internal_mutable_test_arr()->MergeFrom(
       from._internal_test_arr());
@@ -4359,7 +4840,11 @@ void keep_or_strip_empty_list_cfg::clear_array_plain_msg() {
   _impl_.array_plain_msg_.Clear();
 }
 keep_or_strip_empty_list_cfg::keep_or_strip_empty_list_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:keep_or_strip_empty_list_cfg)
 }
@@ -4376,7 +4861,11 @@ inline PROTOBUF_NDEBUG_INLINE keep_or_strip_empty_list_cfg::Impl_::Impl_(
 keep_or_strip_empty_list_cfg::keep_or_strip_empty_list_cfg(
     ::google::protobuf::Arena* arena,
     const keep_or_strip_empty_list_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   keep_or_strip_empty_list_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -4409,25 +4898,33 @@ inline void keep_or_strip_empty_list_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-keep_or_strip_empty_list_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(keep_or_strip_empty_list_cfg, _impl_._cached_size_),
-              false,
-          },
-          &keep_or_strip_empty_list_cfg::MergeImpl,
-          &keep_or_strip_empty_list_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    keep_or_strip_empty_list_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_keep_or_strip_empty_list_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &keep_or_strip_empty_list_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &keep_or_strip_empty_list_cfg::ByteSizeLong,
+                &keep_or_strip_empty_list_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(keep_or_strip_empty_list_cfg, _impl_._cached_size_),
+            false,
+        },
+        &keep_or_strip_empty_list_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* keep_or_strip_empty_list_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> keep_or_strip_empty_list_cfg::_table_ = {
@@ -4441,7 +4938,7 @@ const ::_pbi::TcParseTable<3, 5, 2, 0, 2> keep_or_strip_empty_list_cfg::_table_
     5,  // num_field_entries
     2,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_keep_or_strip_empty_list_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -4507,115 +5004,137 @@ PROTOBUF_NOINLINE void keep_or_strip_empty_list_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* keep_or_strip_empty_list_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:keep_or_strip_empty_list_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  if (cached_has_bits & 0x00000001u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // repeated .dep2_cfg array_msg = 2;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_array_msg_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_array_msg().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            2, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated .dep2_cfg array_plain_msg = 3;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_array_plain_msg_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_array_plain_msg().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            3, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated int32 array_int32 = 4;
-  for (int i = 0, n = this->_internal_array_int32_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
-        4, this->_internal_array_int32().Get(i), target);
-  }
-
-  // repeated int64 array_int64 = 5;
-  for (int i = 0, n = this->_internal_array_int64_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteInt64ToArray(
-        5, this->_internal_array_int64().Get(i), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:keep_or_strip_empty_list_cfg)
-  return target;
-}
-
-::size_t keep_or_strip_empty_list_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:keep_or_strip_empty_list_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .dep2_cfg array_msg = 2;
-  total_size += 1UL * this->_internal_array_msg_size();
-  for (const auto& msg : this->_internal_array_msg()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated .dep2_cfg array_plain_msg = 3;
-  total_size += 1UL * this->_internal_array_plain_msg_size();
-  for (const auto& msg : this->_internal_array_plain_msg()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated int32 array_int32 = 4;
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_array_int32())
-    ;
-    std::size_t tag_size = std::size_t{1} *
-        ::_pbi::FromIntSize(this->_internal_array_int32_size());
-    ;
-    total_size += tag_size + data_size;
-  }
-  // repeated int64 array_int64 = 5;
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
-        this->_internal_array_int64())
-    ;
-    std::size_t tag_size = std::size_t{1} *
-        ::_pbi::FromIntSize(this->_internal_array_int64_size());
-    ;
-    total_size += tag_size + data_size;
-  }
-  // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* keep_or_strip_empty_list_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const keep_or_strip_empty_list_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* keep_or_strip_empty_list_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const keep_or_strip_empty_list_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:keep_or_strip_empty_list_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+          if (cached_has_bits & 0x00000001u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // repeated .dep2_cfg array_msg = 2;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_array_msg_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_array_msg().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    2, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated .dep2_cfg array_plain_msg = 3;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_array_plain_msg_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_array_plain_msg().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    3, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated int32 array_int32 = 4;
+          for (int i = 0, n = this_._internal_array_int32_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteInt32ToArray(
+                4, this_._internal_array_int32().Get(i), target);
+          }
+
+          // repeated int64 array_int64 = 5;
+          for (int i = 0, n = this_._internal_array_int64_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteInt64ToArray(
+                5, this_._internal_array_int64().Get(i), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:keep_or_strip_empty_list_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t keep_or_strip_empty_list_cfg::ByteSizeLong(const MessageLite& base) {
+          const keep_or_strip_empty_list_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t keep_or_strip_empty_list_cfg::ByteSizeLong() const {
+          const keep_or_strip_empty_list_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:keep_or_strip_empty_list_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .dep2_cfg array_msg = 2;
+             {
+              total_size += 1UL * this_._internal_array_msg_size();
+              for (const auto& msg : this_._internal_array_msg()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated .dep2_cfg array_plain_msg = 3;
+             {
+              total_size += 1UL * this_._internal_array_plain_msg_size();
+              for (const auto& msg : this_._internal_array_plain_msg()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated int32 array_int32 = 4;
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_array_int32())
+              ;
+              std::size_t tag_size = std::size_t{1} *
+                  ::_pbi::FromIntSize(this_._internal_array_int32_size());
+              ;
+              total_size += tag_size + data_size;
+            }
+            // repeated int64 array_int64 = 5;
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
+                  this_._internal_array_int64())
+              ;
+              std::size_t tag_size = std::size_t{1} *
+                  ::_pbi::FromIntSize(this_._internal_array_int64_size());
+              ;
+              total_size += tag_size + data_size;
+            }
+          }
+           {
+            // optional uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void keep_or_strip_empty_list_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -4672,7 +5191,11 @@ class combine_id::_Internal {
 };
 
 combine_id::combine_id(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:combine_id)
 }
@@ -4705,25 +5228,33 @@ inline void combine_id::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-combine_id::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(combine_id, _impl_._cached_size_),
-              false,
-          },
-          &combine_id::MergeImpl,
-          &combine_id::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    combine_id::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_combine_id_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &combine_id::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &combine_id::ByteSizeLong,
+                &combine_id::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(combine_id, _impl_._cached_size_),
+            false,
+        },
+        &combine_id::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* combine_id::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 2, 0, 0, 2> combine_id::_table_ = {
@@ -4737,7 +5268,7 @@ const ::_pbi::TcParseTable<1, 2, 0, 0, 2> combine_id::_table_ = {
     2,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_combine_id_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -4782,64 +5313,76 @@ PROTOBUF_NOINLINE void combine_id::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* combine_id::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:combine_id)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 prefix = 1;
-  if (cached_has_bits & 0x00000001u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_prefix(), target);
-  }
-
-  // optional uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_id(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:combine_id)
-  return target;
-}
-
-::size_t combine_id::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:combine_id)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional uint32 prefix = 1;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_prefix());
-    }
-
-    // optional uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* combine_id::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const combine_id& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* combine_id::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const combine_id& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:combine_id)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 prefix = 1;
+          if (cached_has_bits & 0x00000001u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_prefix(), target);
+          }
+
+          // optional uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_id(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:combine_id)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t combine_id::ByteSizeLong(const MessageLite& base) {
+          const combine_id& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t combine_id::ByteSizeLong() const {
+          const combine_id& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:combine_id)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional uint32 prefix = 1;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_prefix());
+            }
+            // optional uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void combine_id::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -4887,76 +5430,247 @@ ::google::protobuf::Metadata combine_id::GetMetadata() const {
 }
 // ===================================================================
 
-process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse() {}
-process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script_MapU32StringEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &process_by_script_MapU32StringEntry_DoNotUse::MergeImpl,
-          &process_by_script_MapU32StringEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse() : SuperType() {}
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  process_by_script_MapU32StringEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_process_by_script_MapU32StringEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &process_by_script_MapU32StringEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &process_by_script_MapU32StringEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* process_by_script_MapU32StringEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 49, 2> process_by_script_MapU32StringEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    0,  // num_aux_entries
+    offsetof(decltype(_table_), field_names),  // no aux_entries
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::process_by_script_MapU32StringEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // optional string value = 2;
+    {::_pbi::TcParser::FastSS1,
+     {18, 0, 0, PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.value_)}},
+    // optional uint32 key = 1;
+    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_), 1>(),
+     {8, 1, 0, PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // optional uint32 key = 1;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_), _Internal::kHasBitsOffset + 1, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kUInt32)},
+    // optional string value = 2;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
+  }},
+  // no aux_entries
+  {{
+    "\43\0\5\0\0\0\0\0"
+    "process_by_script.MapU32StringEntry"
+    "value"
+  }},
+};
+
 // ===================================================================
 
-process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse() {}
-process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script_TestMapIsEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &process_by_script_TestMapIsEntry_DoNotUse::MergeImpl,
-          &process_by_script_TestMapIsEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse() : SuperType() {}
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  process_by_script_TestMapIsEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_process_by_script_TestMapIsEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &process_by_script_TestMapIsEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &process_by_script_TestMapIsEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* process_by_script_TestMapIsEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 46, 2> process_by_script_TestMapIsEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    0,  // num_aux_entries
+    offsetof(decltype(_table_), field_names),  // no aux_entries
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::process_by_script_TestMapIsEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // optional string value = 2;
+    {::_pbi::TcParser::FastSS1,
+     {18, 0, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.value_)}},
+    // optional int32 key = 1;
+    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_), 1>(),
+     {8, 1, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // optional int32 key = 1;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_), _Internal::kHasBitsOffset + 1, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
+    // optional string value = 2;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
+  }},
+  // no aux_entries
+  {{
+    "\40\0\5\0\0\0\0\0"
+    "process_by_script.TestMapIsEntry"
+    "value"
+  }},
+};
+
 // ===================================================================
 
-process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse() {}
-process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script_TestMapSmEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &process_by_script_TestMapSmEntry_DoNotUse::MergeImpl,
-          &process_by_script_TestMapSmEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse() : SuperType() {}
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  process_by_script_TestMapSmEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_process_by_script_TestMapSmEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &process_by_script_TestMapSmEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &process_by_script_TestMapSmEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* process_by_script_TestMapSmEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 1, 44, 2> process_by_script_TestMapSmEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    1,  // num_aux_entries
+    offsetof(decltype(_table_), aux_entries),
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::process_by_script_TestMapSmEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // optional .dep2_cfg value = 2;
+    {::_pbi::TcParser::FastMtS1,
+     {18, 1, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.value_)}},
+    // optional string key = 1;
+    {::_pbi::TcParser::FastSS1,
+     {10, 0, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // optional string key = 1;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.key_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
+    // optional .dep2_cfg value = 2;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 1, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
+  }}, {{
+    {::_pbi::TcParser::GetTable<::dep2_cfg>()},
+  }}, {{
+    "\40\3\0\0\0\0\0\0"
+    "process_by_script.TestMapSmEntry"
+    "key"
+  }},
+};
+
 // ===================================================================
 
 class process_by_script::_Internal {
@@ -4972,7 +5686,11 @@ void process_by_script::clear_test_map_sm() {
   _impl_.test_map_sm_.Clear();
 }
 process_by_script::process_by_script(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:process_by_script)
 }
@@ -4988,7 +5706,11 @@ inline PROTOBUF_NDEBUG_INLINE process_by_script::Impl_::Impl_(
 process_by_script::process_by_script(
     ::google::protobuf::Arena* arena,
     const process_by_script& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   process_by_script* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -5030,25 +5752,33 @@ inline void process_by_script::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script, _impl_._cached_size_),
-              false,
-          },
-          &process_by_script::MergeImpl,
-          &process_by_script::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    process_by_script::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_process_by_script_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &process_by_script::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &process_by_script::ByteSizeLong,
+                &process_by_script::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(process_by_script, _impl_._cached_size_),
+            false,
+        },
+        &process_by_script::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* process_by_script::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<0, 5, 5, 62, 7> process_by_script::_table_ = {
@@ -5062,7 +5792,7 @@ const ::_pbi::TcParseTable<0, 5, 5, 62, 7> process_by_script::_table_ = {
     5,  // num_field_entries
     5,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_process_by_script_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -5136,165 +5866,189 @@ PROTOBUF_NOINLINE void process_by_script::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* process_by_script::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:process_by_script)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1;
-  if (cached_has_bits & 0x00000002u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // map map_u32_string = 2;
-  if (!_internal_map_u32_string().empty()) {
-    using MapType = ::google::protobuf::Map<::uint32_t, std::string>;
-    using WireHelper = _pbi::MapEntryFuncs<::uint32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_UINT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>;
-    const auto& field = _internal_map_u32_string();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
-        target = WireHelper::InternalSerialize(
-            2, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* process_by_script::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const process_by_script& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* process_by_script::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const process_by_script& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:process_by_script)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1;
+          if (cached_has_bits & 0x00000002u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // map map_u32_string = 2;
+          if (!this_._internal_map_u32_string().empty()) {
+            using MapType = ::google::protobuf::Map<::uint32_t, std::string>;
+            using WireHelper = _pbi::MapEntryFuncs<::uint32_t, std::string,
+                                           _pbi::WireFormatLite::TYPE_UINT32,
+                                           _pbi::WireFormatLite::TYPE_STRING>;
+            const auto& field = this_._internal_map_u32_string();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
+                target = WireHelper::InternalSerialize(
+                    2, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "process_by_script.map_u32_string");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            2, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
+                                            "process_by_script.map_u32_string");
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    2, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "process_by_script.map_u32_string");
-      }
-    }
-  }
-
-  // map test_map_is = 7;
-  if (!_internal_test_map_is().empty()) {
-    using MapType = ::google::protobuf::Map<::int32_t, std::string>;
-    using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>;
-    const auto& field = _internal_test_map_is();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
+                                            "process_by_script.map_u32_string");
+              }
+            }
+          }
+
+          // map test_map_is = 7;
+          if (!this_._internal_test_map_is().empty()) {
+            using MapType = ::google::protobuf::Map<::int32_t, std::string>;
+            using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
+                                           _pbi::WireFormatLite::TYPE_INT32,
+                                           _pbi::WireFormatLite::TYPE_STRING>;
+            const auto& field = this_._internal_test_map_is();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "process_by_script.test_map_is");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
+                                            "process_by_script.test_map_is");
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "process_by_script.test_map_is");
-      }
-    }
-  }
-
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  if (!_internal_test_map_sm().empty()) {
-    using MapType = ::google::protobuf::Map;
-    using WireHelper = _pbi::MapEntryFuncs;
-    const auto& field = _internal_test_map_sm();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
+                                            "process_by_script.test_map_is");
+              }
+            }
+          }
+
+          // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+          if (!this_._internal_test_map_sm().empty()) {
+            using MapType = ::google::protobuf::Map;
+            using WireHelper = _pbi::MapEntryFuncs;
+            const auto& field = this_._internal_test_map_sm();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "process_by_script.test_map_sm");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
+                                            "process_by_script.test_map_sm");
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                    "process_by_script.test_map_sm");
-      }
-    }
-  }
-
-  // optional .combine_id id_id = 1001;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        1001, *_impl_.id_id_, _impl_.id_id_->GetCachedSize(), target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:process_by_script)
-  return target;
-}
-
-::size_t process_by_script::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:process_by_script)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // map map_u32_string = 2;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_map_u32_string_size());
-  for (const auto& entry : _internal_map_u32_string()) {
-    total_size += _pbi::MapEntryFuncs<::uint32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_UINT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
-  }
-  // map test_map_is = 7;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_is_size());
-  for (const auto& entry : _internal_test_map_is()) {
-    total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
-  }
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_sm_size());
-  for (const auto& entry : _internal_test_map_sm()) {
-    total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // optional .combine_id id_id = 1001;
-    if (cached_has_bits & 0x00000001u) {
-      total_size +=
-          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.id_id_);
-    }
-
-    // optional uint32 id = 1;
-    if (cached_has_bits & 0x00000002u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+                                            "process_by_script.test_map_sm");
+              }
+            }
+          }
+
+          // optional .combine_id id_id = 1001;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                1001, *this_._impl_.id_id_, this_._impl_.id_id_->GetCachedSize(), target,
+                stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:process_by_script)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t process_by_script::ByteSizeLong(const MessageLite& base) {
+          const process_by_script& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t process_by_script::ByteSizeLong() const {
+          const process_by_script& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:process_by_script)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // map map_u32_string = 2;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_map_u32_string_size());
+              for (const auto& entry : this_._internal_map_u32_string()) {
+                total_size += _pbi::MapEntryFuncs<::uint32_t, std::string,
+                                               _pbi::WireFormatLite::TYPE_UINT32,
+                                               _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+            // map test_map_is = 7;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_is_size());
+              for (const auto& entry : this_._internal_test_map_is()) {
+                total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
+                                               _pbi::WireFormatLite::TYPE_INT32,
+                                               _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+            // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_sm_size());
+              for (const auto& entry : this_._internal_test_map_sm()) {
+                total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // optional .combine_id id_id = 1001;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 2 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.id_id_);
+            }
+            // optional uint32 id = 1;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void process_by_script::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -5364,7 +6118,11 @@ class large_file_test::_Internal {
 };
 
 large_file_test::large_file_test(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:large_file_test)
 }
@@ -5378,7 +6136,11 @@ inline PROTOBUF_NDEBUG_INLINE large_file_test::Impl_::Impl_(
 large_file_test::large_file_test(
     ::google::protobuf::Arena* arena,
     const large_file_test& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   large_file_test* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -5425,25 +6187,33 @@ inline void large_file_test::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-large_file_test::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(large_file_test, _impl_._cached_size_),
-              false,
-          },
-          &large_file_test::MergeImpl,
-          &large_file_test::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    large_file_test::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_large_file_test_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &large_file_test::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &large_file_test::ByteSizeLong,
+                &large_file_test::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(large_file_test, _impl_._cached_size_),
+            false,
+        },
+        &large_file_test::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* large_file_test::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 7, 1, 31, 2> large_file_test::_table_ = {
@@ -5457,7 +6227,7 @@ const ::_pbi::TcParseTable<3, 7, 1, 31, 2> large_file_test::_table_ = {
     7,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_large_file_test_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -5545,127 +6315,135 @@ PROTOBUF_NOINLINE void large_file_test::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* large_file_test::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:large_file_test)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional uint32 id = 1;
-  if (cached_has_bits & 0x00000004u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // optional int32 i32value = 2;
-  if (cached_has_bits & 0x00000008u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<2>(
-            stream, this->_internal_i32value(), target);
-  }
-
-  // optional uint64 u64value = 3;
-  if (cached_has_bits & 0x00000010u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
-        3, this->_internal_u64value(), target);
-  }
-
-  // optional double f64value = 4;
-  if (cached_has_bits & 0x00000020u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteDoubleToArray(
-        4, this->_internal_f64value(), target);
-  }
-
-  // optional float f32value = 5;
-  if (cached_has_bits & 0x00000040u) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteFloatToArray(
-        5, this->_internal_f32value(), target);
-  }
-
-  // optional string szvalue = 6;
-  if (cached_has_bits & 0x00000001u) {
-    const std::string& _s = this->_internal_szvalue();
-    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
-                                "large_file_test.szvalue");
-    target = stream->WriteStringMaybeAliased(6, _s, target);
-  }
-
-  // optional .combine_id id_id = 7;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        7, *_impl_.id_id_, _impl_.id_id_->GetCachedSize(), target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:large_file_test)
-  return target;
-}
-
-::size_t large_file_test::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:large_file_test)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x0000007fu) {
-    // optional string szvalue = 6;
-    if (cached_has_bits & 0x00000001u) {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_szvalue());
-    }
-
-    // optional .combine_id id_id = 7;
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.id_id_);
-    }
-
-    // optional uint32 id = 1;
-    if (cached_has_bits & 0x00000004u) {
-      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-          this->_internal_id());
-    }
-
-    // optional int32 i32value = 2;
-    if (cached_has_bits & 0x00000008u) {
-      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-          this->_internal_i32value());
-    }
-
-    // optional uint64 u64value = 3;
-    if (cached_has_bits & 0x00000010u) {
-      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
-          this->_internal_u64value());
-    }
-
-    // optional double f64value = 4;
-    if (cached_has_bits & 0x00000020u) {
-      total_size += 9;
-    }
-
-    // optional float f32value = 5;
-    if (cached_has_bits & 0x00000040u) {
-      total_size += 5;
-    }
-
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* large_file_test::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const large_file_test& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* large_file_test::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const large_file_test& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:large_file_test)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional uint32 id = 1;
+          if (cached_has_bits & 0x00000004u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // optional int32 i32value = 2;
+          if (cached_has_bits & 0x00000008u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<2>(
+                    stream, this_._internal_i32value(), target);
+          }
+
+          // optional uint64 u64value = 3;
+          if (cached_has_bits & 0x00000010u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
+                3, this_._internal_u64value(), target);
+          }
+
+          // optional double f64value = 4;
+          if (cached_has_bits & 0x00000020u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteDoubleToArray(
+                4, this_._internal_f64value(), target);
+          }
+
+          // optional float f32value = 5;
+          if (cached_has_bits & 0x00000040u) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteFloatToArray(
+                5, this_._internal_f32value(), target);
+          }
+
+          // optional string szvalue = 6;
+          if (cached_has_bits & 0x00000001u) {
+            const std::string& _s = this_._internal_szvalue();
+            ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(_s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormat::SERIALIZE,
+                                        "large_file_test.szvalue");
+            target = stream->WriteStringMaybeAliased(6, _s, target);
+          }
+
+          // optional .combine_id id_id = 7;
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                7, *this_._impl_.id_id_, this_._impl_.id_id_->GetCachedSize(), target,
+                stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:large_file_test)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t large_file_test::ByteSizeLong(const MessageLite& base) {
+          const large_file_test& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t large_file_test::ByteSizeLong() const {
+          const large_file_test& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:large_file_test)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x0000007fu) {
+            // optional string szvalue = 6;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_szvalue());
+            }
+            // optional .combine_id id_id = 7;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.id_id_);
+            }
+            // optional uint32 id = 1;
+            if (cached_has_bits & 0x00000004u) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // optional int32 i32value = 2;
+            if (cached_has_bits & 0x00000008u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_i32value());
+            }
+            // optional uint64 u64value = 3;
+            if (cached_has_bits & 0x00000010u) {
+              total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
+                  this_._internal_u64value());
+            }
+            // optional double f64value = 4;
+            if (cached_has_bits & 0x00000020u) {
+              total_size += 9;
+            }
+            // optional float f32value = 5;
+            if (cached_has_bits & 0x00000040u) {
+              total_size += 5;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void large_file_test::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -5747,7 +6525,11 @@ class inner_alias_message::_Internal {
 };
 
 inner_alias_message::inner_alias_message(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:inner_alias_message)
 }
@@ -5761,7 +6543,11 @@ inline PROTOBUF_NDEBUG_INLINE inner_alias_message::Impl_::Impl_(
 inner_alias_message::inner_alias_message(
     ::google::protobuf::Arena* arena,
     const inner_alias_message& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   inner_alias_message* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -5791,25 +6577,33 @@ inline void inner_alias_message::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-inner_alias_message::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(inner_alias_message, _impl_._cached_size_),
-              false,
-          },
-          &inner_alias_message::MergeImpl,
-          &inner_alias_message::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    inner_alias_message::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_inner_alias_message_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &inner_alias_message::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &inner_alias_message::ByteSizeLong,
+                &inner_alias_message::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(inner_alias_message, _impl_._cached_size_),
+            false,
+        },
+        &inner_alias_message::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* inner_alias_message::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 2, 0, 0, 2> inner_alias_message::_table_ = {
@@ -5823,7 +6617,7 @@ const ::_pbi::TcParseTable<1, 2, 0, 0, 2> inner_alias_message::_table_ = {
     2,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_inner_alias_message_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -5864,66 +6658,84 @@ PROTOBUF_NOINLINE void inner_alias_message::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* inner_alias_message::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:inner_alias_message)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<1>(
-            stream, this->_internal_itype(), target);
-  }
-
-  // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
-  for (int i = 0, n = this->_internal_paramlist_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteInt64ToArray(
-        2, this->_internal_paramlist().Get(i), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:inner_alias_message)
-  return target;
-}
-
-::size_t inner_alias_message::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:inner_alias_message)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
-        this->_internal_paramlist())
-    ;
-    std::size_t tag_size = std::size_t{1} *
-        ::_pbi::FromIntSize(this->_internal_paramlist_size());
-    ;
-    total_size += tag_size + data_size;
-  }
-  // optional int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_itype());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* inner_alias_message::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const inner_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* inner_alias_message::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const inner_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:inner_alias_message)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<1>(
+                    stream, this_._internal_itype(), target);
+          }
+
+          // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
+          for (int i = 0, n = this_._internal_paramlist_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteInt64ToArray(
+                2, this_._internal_paramlist().Get(i), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:inner_alias_message)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t inner_alias_message::ByteSizeLong(const MessageLite& base) {
+          const inner_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t inner_alias_message::ByteSizeLong() const {
+          const inner_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:inner_alias_message)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
+                  this_._internal_paramlist())
+              ;
+              std::size_t tag_size = std::size_t{1} *
+                  ::_pbi::FromIntSize(this_._internal_paramlist_size());
+              ;
+              total_size += tag_size + data_size;
+            }
+          }
+           {
+            // optional int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_itype());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void inner_alias_message::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -5972,7 +6784,11 @@ class outer_alias_message::_Internal {
 };
 
 outer_alias_message::outer_alias_message(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:outer_alias_message)
 }
@@ -5987,7 +6803,11 @@ inline PROTOBUF_NDEBUG_INLINE outer_alias_message::Impl_::Impl_(
 outer_alias_message::outer_alias_message(
     ::google::protobuf::Arena* arena,
     const outer_alias_message& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   outer_alias_message* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -6018,25 +6838,33 @@ inline void outer_alias_message::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-outer_alias_message::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(outer_alias_message, _impl_._cached_size_),
-              false,
-          },
-          &outer_alias_message::MergeImpl,
-          &outer_alias_message::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    outer_alias_message::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_outer_alias_message_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &outer_alias_message::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &outer_alias_message::ByteSizeLong,
+                &outer_alias_message::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(outer_alias_message, _impl_._cached_size_),
+            false,
+        },
+        &outer_alias_message::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* outer_alias_message::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> outer_alias_message::_table_ = {
@@ -6050,7 +6878,7 @@ const ::_pbi::TcParseTable<2, 3, 1, 0, 2> outer_alias_message::_table_ = {
     3,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_outer_alias_message_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -6099,82 +6927,102 @@ PROTOBUF_NOINLINE void outer_alias_message::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* outer_alias_message::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:outer_alias_message)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // optional int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<1>(
-            stream, this->_internal_iid(), target);
-  }
-
-  // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_inners_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_inners().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            2, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
-  for (int i = 0, n = this->_internal_nest_int_size(); i < n; ++i) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
-        3, this->_internal_nest_int().Get(i), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:outer_alias_message)
-  return target;
-}
-
-::size_t outer_alias_message::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:outer_alias_message)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
-  total_size += 1UL * this->_internal_inners_size();
-  for (const auto& msg : this->_internal_inners()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_nest_int())
-    ;
-    std::size_t tag_size = std::size_t{1} *
-        ::_pbi::FromIntSize(this->_internal_nest_int_size());
-    ;
-    total_size += tag_size + data_size;
-  }
-  // optional int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_iid());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* outer_alias_message::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const outer_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* outer_alias_message::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const outer_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:outer_alias_message)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // optional int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<1>(
+                    stream, this_._internal_iid(), target);
+          }
+
+          // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_inners_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_inners().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    2, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
+          for (int i = 0, n = this_._internal_nest_int_size(); i < n; ++i) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteInt32ToArray(
+                3, this_._internal_nest_int().Get(i), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:outer_alias_message)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t outer_alias_message::ByteSizeLong(const MessageLite& base) {
+          const outer_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t outer_alias_message::ByteSizeLong() const {
+          const outer_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:outer_alias_message)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
+             {
+              total_size += 1UL * this_._internal_inners_size();
+              for (const auto& msg : this_._internal_inners()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_nest_int())
+              ;
+              std::size_t tag_size = std::size_t{1} *
+                  ::_pbi::FromIntSize(this_._internal_nest_int_size());
+              ;
+              total_size += tag_size + data_size;
+            }
+          }
+           {
+            // optional int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_iid());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void outer_alias_message::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/sample/cxx/v2/kind.pb.h b/sample/cxx/v2/kind.pb.h
index a7868e11..96d4f9d9 100755
--- a/sample/cxx/v2/kind.pb.h
+++ b/sample/cxx/v2/kind.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: kind.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_kind_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_kind_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -130,7 +130,7 @@ class test_msg_verifier final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:test_msg_verifier) */ {
  public:
   inline test_msg_verifier() : test_msg_verifier(nullptr) {}
-  ~test_msg_verifier() override;
+  ~test_msg_verifier() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR test_msg_verifier(
       ::google::protobuf::internal::ConstantInitialized);
@@ -203,7 +203,7 @@ class test_msg_verifier final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  test_msg_verifier* New(::google::protobuf::Arena* arena = nullptr) const final {
+  test_msg_verifier* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -220,11 +220,27 @@ class test_msg_verifier final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -242,7 +258,8 @@ class test_msg_verifier final : public ::google::protobuf::Message
       : test_msg_verifier(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -265,7 +282,7 @@ class test_msg_verifier final : public ::google::protobuf::Message
   void _internal_set_test_id_1(::uint32_t value);
 
   public:
-  // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
+  // optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
   bool has_test_id_2() const;
   void clear_test_id_2() ;
   ::uint32_t test_id_2() const;
@@ -329,7 +346,7 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:role_upgrade_cfg) */ {
  public:
   inline role_upgrade_cfg() : role_upgrade_cfg(nullptr) {}
-  ~role_upgrade_cfg() override;
+  ~role_upgrade_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR role_upgrade_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -402,7 +419,7 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  role_upgrade_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  role_upgrade_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -419,11 +436,27 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -441,7 +474,8 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
       : role_upgrade_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -569,7 +603,17 @@ class process_by_script_TestMapIsEntry_DoNotUse final
     return reinterpret_cast(
         &_process_by_script_TestMapIsEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 0,
+      46, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -593,7 +637,17 @@ class process_by_script_MapU32StringEntry_DoNotUse final
     return reinterpret_cast(
         &_process_by_script_MapU32StringEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 0,
+      49, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -602,7 +656,7 @@ class inner_alias_message final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:inner_alias_message) */ {
  public:
   inline inner_alias_message() : inner_alias_message(nullptr) {}
-  ~inner_alias_message() override;
+  ~inner_alias_message() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR inner_alias_message(
       ::google::protobuf::internal::ConstantInitialized);
@@ -675,7 +729,7 @@ class inner_alias_message final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  inner_alias_message* New(::google::protobuf::Arena* arena = nullptr) const final {
+  inner_alias_message* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -692,11 +746,27 @@ class inner_alias_message final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -714,7 +784,8 @@ class inner_alias_message final : public ::google::protobuf::Message
       : inner_alias_message(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -795,7 +866,7 @@ class event_rule_item final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:event_rule_item) */ {
  public:
   inline event_rule_item() : event_rule_item(nullptr) {}
-  ~event_rule_item() override;
+  ~event_rule_item() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR event_rule_item(
       ::google::protobuf::internal::ConstantInitialized);
@@ -873,7 +944,7 @@ class event_rule_item final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  event_rule_item* New(::google::protobuf::Arena* arena = nullptr) const final {
+  event_rule_item* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -890,11 +961,27 @@ class event_rule_item final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -912,7 +999,8 @@ class event_rule_item final : public ::google::protobuf::Message
       : event_rule_item(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1029,7 +1117,7 @@ class event_reward_item final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:event_reward_item) */ {
  public:
   inline event_reward_item() : event_reward_item(nullptr) {}
-  ~event_reward_item() override;
+  ~event_reward_item() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR event_reward_item(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1107,7 +1195,7 @@ class event_reward_item final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  event_reward_item* New(::google::protobuf::Arena* arena = nullptr) const final {
+  event_reward_item* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1124,11 +1212,27 @@ class event_reward_item final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1146,7 +1250,8 @@ class event_reward_item final : public ::google::protobuf::Message
       : event_reward_item(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1263,7 +1368,7 @@ class combine_id final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:combine_id) */ {
  public:
   inline combine_id() : combine_id(nullptr) {}
-  ~combine_id() override;
+  ~combine_id() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR combine_id(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1336,7 +1441,7 @@ class combine_id final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  combine_id* New(::google::protobuf::Arena* arena = nullptr) const final {
+  combine_id* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1353,11 +1458,27 @@ class combine_id final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1375,7 +1496,8 @@ class combine_id final : public ::google::protobuf::Message
       : combine_id(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1464,7 +1586,17 @@ class arr_in_arr_cfg_TestMapIsEntry_DoNotUse final
     return reinterpret_cast(
         &_arr_in_arr_cfg_TestMapIsEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 0,
+      43, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -1473,7 +1605,7 @@ class arr_in_arr final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:arr_in_arr) */ {
  public:
   inline arr_in_arr() : arr_in_arr(nullptr) {}
-  ~arr_in_arr() override;
+  ~arr_in_arr() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR arr_in_arr(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1546,7 +1678,7 @@ class arr_in_arr final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  arr_in_arr* New(::google::protobuf::Arena* arena = nullptr) const final {
+  arr_in_arr* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1563,11 +1695,27 @@ class arr_in_arr final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1585,7 +1733,8 @@ class arr_in_arr final : public ::google::protobuf::Message
       : arr_in_arr(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1624,17 +1773,11 @@ class arr_in_arr final : public ::google::protobuf::Message
   void clear_str_arr() ;
   const std::string& str_arr(int index) const;
   std::string* mutable_str_arr(int index);
-  void set_str_arr(int index, const std::string& value);
-  void set_str_arr(int index, std::string&& value);
-  void set_str_arr(int index, const char* value);
-  void set_str_arr(int index, const char* value, std::size_t size);
-  void set_str_arr(int index, absl::string_view value);
+  template 
+  void set_str_arr(int index, Arg_&& value, Args_... args);
   std::string* add_str_arr();
-  void add_str_arr(const std::string& value);
-  void add_str_arr(std::string&& value);
-  void add_str_arr(const char* value);
-  void add_str_arr(const char* value, std::size_t size);
-  void add_str_arr(absl::string_view value);
+  template 
+  void add_str_arr(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& str_arr() const;
   ::google::protobuf::RepeatedPtrField* mutable_str_arr();
 
@@ -1718,7 +1861,17 @@ class process_by_script_TestMapSmEntry_DoNotUse final
     return reinterpret_cast(
         &_process_by_script_TestMapSmEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 1,
+      44, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -1727,7 +1880,7 @@ class outer_alias_message final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:outer_alias_message) */ {
  public:
   inline outer_alias_message() : outer_alias_message(nullptr) {}
-  ~outer_alias_message() override;
+  ~outer_alias_message() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR outer_alias_message(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1800,7 +1953,7 @@ class outer_alias_message final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  outer_alias_message* New(::google::protobuf::Arena* arena = nullptr) const final {
+  outer_alias_message* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1817,11 +1970,27 @@ class outer_alias_message final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1839,7 +2008,8 @@ class outer_alias_message final : public ::google::protobuf::Message
       : outer_alias_message(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1939,7 +2109,7 @@ class large_file_test final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:large_file_test) */ {
  public:
   inline large_file_test() : large_file_test(nullptr) {}
-  ~large_file_test() override;
+  ~large_file_test() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR large_file_test(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2012,7 +2182,7 @@ class large_file_test final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  large_file_test* New(::google::protobuf::Arena* arena = nullptr) const final {
+  large_file_test* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2029,11 +2199,27 @@ class large_file_test final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2051,7 +2237,8 @@ class large_file_test final : public ::google::protobuf::Message
       : large_file_test(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2200,7 +2387,7 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:keep_or_strip_empty_list_cfg) */ {
  public:
   inline keep_or_strip_empty_list_cfg() : keep_or_strip_empty_list_cfg(nullptr) {}
-  ~keep_or_strip_empty_list_cfg() override;
+  ~keep_or_strip_empty_list_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR keep_or_strip_empty_list_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2273,7 +2460,7 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  keep_or_strip_empty_list_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  keep_or_strip_empty_list_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2290,11 +2477,27 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2312,7 +2515,8 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
       : keep_or_strip_empty_list_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2451,7 +2655,7 @@ class event_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:event_cfg) */ {
  public:
   inline event_cfg() : event_cfg(nullptr) {}
-  ~event_cfg() override;
+  ~event_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR event_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2535,7 +2739,7 @@ class event_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  event_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  event_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2552,11 +2756,27 @@ class event_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2574,7 +2794,8 @@ class event_cfg final : public ::google::protobuf::Message
       : event_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2643,7 +2864,7 @@ class event_cfg final : public ::google::protobuf::Message
   ::event_rule_item* _internal_mutable_rule();
 
   public:
-  // optional .event_rule_item specify_field = 7;
+  // optional .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
   bool has_specify_field() const;
   void clear_specify_field() ;
   const ::event_rule_item& specify_field() const;
@@ -2836,7 +3057,17 @@ class arr_in_arr_cfg_TestMapSmEntry_DoNotUse final
     return reinterpret_cast(
         &_arr_in_arr_cfg_TestMapSmEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 1,
+      41, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -2845,7 +3076,7 @@ class role_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:role_cfg) */ {
  public:
   inline role_cfg() : role_cfg(nullptr) {}
-  ~role_cfg() override;
+  ~role_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR role_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2918,7 +3149,7 @@ class role_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  role_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  role_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2935,11 +3166,27 @@ class role_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2957,7 +3204,8 @@ class role_cfg final : public ::google::protobuf::Message
       : role_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2992,17 +3240,11 @@ class role_cfg final : public ::google::protobuf::Message
   void clear_test_array() ;
   const std::string& test_array(int index) const;
   std::string* mutable_test_array(int index);
-  void set_test_array(int index, const std::string& value);
-  void set_test_array(int index, std::string&& value);
-  void set_test_array(int index, const char* value);
-  void set_test_array(int index, const char* value, std::size_t size);
-  void set_test_array(int index, absl::string_view value);
+  template 
+  void set_test_array(int index, Arg_&& value, Args_... args);
   std::string* add_test_array();
-  void add_test_array(const std::string& value);
-  void add_test_array(std::string&& value);
-  void add_test_array(const char* value);
-  void add_test_array(const char* value, std::size_t size);
-  void add_test_array(absl::string_view value);
+  template 
+  void add_test_array(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& test_array() const;
   ::google::protobuf::RepeatedPtrField* mutable_test_array();
 
@@ -3056,17 +3298,11 @@ class role_cfg final : public ::google::protobuf::Message
   void clear_origin_timepoint_arr() ;
   const std::string& origin_timepoint_arr(int index) const;
   std::string* mutable_origin_timepoint_arr(int index);
-  void set_origin_timepoint_arr(int index, const std::string& value);
-  void set_origin_timepoint_arr(int index, std::string&& value);
-  void set_origin_timepoint_arr(int index, const char* value);
-  void set_origin_timepoint_arr(int index, const char* value, std::size_t size);
-  void set_origin_timepoint_arr(int index, absl::string_view value);
+  template 
+  void set_origin_timepoint_arr(int index, Arg_&& value, Args_... args);
   std::string* add_origin_timepoint_arr();
-  void add_origin_timepoint_arr(const std::string& value);
-  void add_origin_timepoint_arr(std::string&& value);
-  void add_origin_timepoint_arr(const char* value);
-  void add_origin_timepoint_arr(const char* value, std::size_t size);
-  void add_origin_timepoint_arr(absl::string_view value);
+  template 
+  void add_origin_timepoint_arr(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& origin_timepoint_arr() const;
   ::google::protobuf::RepeatedPtrField* mutable_origin_timepoint_arr();
 
@@ -3101,17 +3337,11 @@ class role_cfg final : public ::google::protobuf::Message
   void clear_origin_duration_arr() ;
   const std::string& origin_duration_arr(int index) const;
   std::string* mutable_origin_duration_arr(int index);
-  void set_origin_duration_arr(int index, const std::string& value);
-  void set_origin_duration_arr(int index, std::string&& value);
-  void set_origin_duration_arr(int index, const char* value);
-  void set_origin_duration_arr(int index, const char* value, std::size_t size);
-  void set_origin_duration_arr(int index, absl::string_view value);
+  template 
+  void set_origin_duration_arr(int index, Arg_&& value, Args_... args);
   std::string* add_origin_duration_arr();
-  void add_origin_duration_arr(const std::string& value);
-  void add_origin_duration_arr(std::string&& value);
-  void add_origin_duration_arr(const char* value);
-  void add_origin_duration_arr(const char* value, std::size_t size);
-  void add_origin_duration_arr(absl::string_view value);
+  template 
+  void add_origin_duration_arr(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& origin_duration_arr() const;
   ::google::protobuf::RepeatedPtrField* mutable_origin_duration_arr();
 
@@ -3333,7 +3563,7 @@ class process_by_script final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:process_by_script) */ {
  public:
   inline process_by_script() : process_by_script(nullptr) {}
-  ~process_by_script() override;
+  ~process_by_script() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR process_by_script(
       ::google::protobuf::internal::ConstantInitialized);
@@ -3406,7 +3636,7 @@ class process_by_script final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  process_by_script* New(::google::protobuf::Arena* arena = nullptr) const final {
+  process_by_script* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -3423,11 +3653,27 @@ class process_by_script final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -3445,7 +3691,8 @@ class process_by_script final : public ::google::protobuf::Message
       : process_by_script(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -3583,7 +3830,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:arr_in_arr_cfg) */ {
  public:
   inline arr_in_arr_cfg() : arr_in_arr_cfg(nullptr) {}
-  ~arr_in_arr_cfg() override;
+  ~arr_in_arr_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR arr_in_arr_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -3656,7 +3903,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  arr_in_arr_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  arr_in_arr_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -3673,11 +3920,27 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -3695,7 +3958,8 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
       : arr_in_arr_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -3712,7 +3976,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
     kTestPlainMsgFieldNumber = 5,
     kIdFieldNumber = 1,
   };
-  // repeated .arr_in_arr arr = 2;
+  // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
   int arr_size() const;
   private:
   int _internal_arr_size() const;
@@ -3729,7 +3993,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
   const ::arr_in_arr& arr(int index) const;
   ::arr_in_arr* add_arr();
   const ::google::protobuf::RepeatedPtrField<::arr_in_arr>& arr() const;
-  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
   int test_plain_int_arr_size() const;
   private:
   int _internal_test_plain_int_arr_size() const;
@@ -4188,8 +4452,7 @@ inline void role_cfg::clear_test_array() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.test_array_.Clear();
 }
-inline std::string* role_cfg::add_test_array()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* role_cfg::add_test_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_test_array()->Add();
   // @@protoc_insertion_point(field_add_mutable:role_cfg.test_array)
@@ -4205,58 +4468,21 @@ inline std::string* role_cfg::mutable_test_array(int index)
   // @@protoc_insertion_point(field_mutable:role_cfg.test_array)
   return _internal_mutable_test_array()->Mutable(index);
 }
-inline void role_cfg::set_test_array(int index, const std::string& value) {
-  _internal_mutable_test_array()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:role_cfg.test_array)
-}
-inline void role_cfg::set_test_array(int index, std::string&& value) {
-  _internal_mutable_test_array()->Mutable(index)->assign(std::move(value));
+template 
+inline void role_cfg::set_test_array(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_test_array()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:role_cfg.test_array)
 }
-inline void role_cfg::set_test_array(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_test_array()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:role_cfg.test_array)
-}
-inline void role_cfg::set_test_array(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_test_array()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:role_cfg.test_array)
-}
-inline void role_cfg::set_test_array(int index, absl::string_view value) {
-  _internal_mutable_test_array()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(std::string&& value) {
+template 
+inline void role_cfg::add_test_array(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_test_array(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:role_cfg.test_array)
 }
-inline void role_cfg::add_test_array(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:role_cfg.test_array)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 role_cfg::test_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:role_cfg.test_array)
@@ -4777,8 +5003,7 @@ inline void role_cfg::clear_origin_timepoint_arr() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.origin_timepoint_arr_.Clear();
 }
-inline std::string* role_cfg::add_origin_timepoint_arr()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* role_cfg::add_origin_timepoint_arr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_origin_timepoint_arr()->Add();
   // @@protoc_insertion_point(field_add_mutable:role_cfg.origin_timepoint_arr)
@@ -4794,58 +5019,21 @@ inline std::string* role_cfg::mutable_origin_timepoint_arr(int index)
   // @@protoc_insertion_point(field_mutable:role_cfg.origin_timepoint_arr)
   return _internal_mutable_origin_timepoint_arr()->Mutable(index);
 }
-inline void role_cfg::set_origin_timepoint_arr(int index, const std::string& value) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::set_origin_timepoint_arr(int index, std::string&& value) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(std::move(value));
+template 
+inline void role_cfg::set_origin_timepoint_arr(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_origin_timepoint_arr()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:role_cfg.origin_timepoint_arr)
 }
-inline void role_cfg::set_origin_timepoint_arr(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::set_origin_timepoint_arr(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::set_origin_timepoint_arr(int index, absl::string_view value) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(std::string&& value) {
+template 
+inline void role_cfg::add_origin_timepoint_arr(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_origin_timepoint_arr(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:role_cfg.origin_timepoint_arr)
 }
-inline void role_cfg::add_origin_timepoint_arr(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:role_cfg.origin_timepoint_arr)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 role_cfg::origin_timepoint_arr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:role_cfg.origin_timepoint_arr)
@@ -4924,8 +5112,7 @@ inline void role_cfg::clear_origin_duration_arr() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.origin_duration_arr_.Clear();
 }
-inline std::string* role_cfg::add_origin_duration_arr()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* role_cfg::add_origin_duration_arr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_origin_duration_arr()->Add();
   // @@protoc_insertion_point(field_add_mutable:role_cfg.origin_duration_arr)
@@ -4941,58 +5128,21 @@ inline std::string* role_cfg::mutable_origin_duration_arr(int index)
   // @@protoc_insertion_point(field_mutable:role_cfg.origin_duration_arr)
   return _internal_mutable_origin_duration_arr()->Mutable(index);
 }
-inline void role_cfg::set_origin_duration_arr(int index, const std::string& value) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::set_origin_duration_arr(int index, std::string&& value) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(std::move(value));
+template 
+inline void role_cfg::set_origin_duration_arr(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_origin_duration_arr()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:role_cfg.origin_duration_arr)
 }
-inline void role_cfg::set_origin_duration_arr(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::set_origin_duration_arr(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::set_origin_duration_arr(int index, absl::string_view value) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(std::string&& value) {
+template 
+inline void role_cfg::add_origin_duration_arr(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_origin_duration_arr(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:role_cfg.origin_duration_arr)
 }
-inline void role_cfg::add_origin_duration_arr(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:role_cfg.origin_duration_arr)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 role_cfg::origin_duration_arr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:role_cfg.origin_duration_arr)
@@ -5191,7 +5341,7 @@ inline void test_msg_verifier::_internal_set_test_id_1(::uint32_t value) {
   _impl_.test_id_1_ = value;
 }
 
-// optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
+// optional uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
 inline bool test_msg_verifier::has_test_id_2() const {
   bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
   return value;
@@ -5378,8 +5528,7 @@ inline void arr_in_arr::clear_str_arr() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.str_arr_.Clear();
 }
-inline std::string* arr_in_arr::add_str_arr()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* arr_in_arr::add_str_arr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_str_arr()->Add();
   // @@protoc_insertion_point(field_add_mutable:arr_in_arr.str_arr)
@@ -5395,58 +5544,21 @@ inline std::string* arr_in_arr::mutable_str_arr(int index)
   // @@protoc_insertion_point(field_mutable:arr_in_arr.str_arr)
   return _internal_mutable_str_arr()->Mutable(index);
 }
-inline void arr_in_arr::set_str_arr(int index, const std::string& value) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::set_str_arr(int index, std::string&& value) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(std::move(value));
+template 
+inline void arr_in_arr::set_str_arr(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_str_arr()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:arr_in_arr.str_arr)
 }
-inline void arr_in_arr::set_str_arr(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_str_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::set_str_arr(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::set_str_arr(int index, absl::string_view value) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(std::string&& value) {
+template 
+inline void arr_in_arr::add_str_arr(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_str_arr(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:arr_in_arr.str_arr)
 }
-inline void arr_in_arr::add_str_arr(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:arr_in_arr.str_arr)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 arr_in_arr::str_arr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:arr_in_arr.str_arr)
@@ -5505,7 +5617,7 @@ inline void arr_in_arr_cfg::_internal_set_id(::uint32_t value) {
   _impl_.id_ = value;
 }
 
-// repeated .arr_in_arr arr = 2;
+// repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
 inline int arr_in_arr_cfg::_internal_arr_size() const {
   return _internal_arr().size();
 }
@@ -5554,7 +5666,7 @@ arr_in_arr_cfg::_internal_mutable_arr() {
   return &_impl_.arr_;
 }
 
-// repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+// repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
 inline int arr_in_arr_cfg::_internal_test_plain_int_arr_size() const {
   return _internal_test_plain_int_arr().size();
 }
@@ -6375,7 +6487,7 @@ inline void event_cfg::set_allocated_rule(::event_rule_item* value) {
   // @@protoc_insertion_point(field_set_allocated:event_cfg.rule)
 }
 
-// optional .event_rule_item specify_field = 7;
+// optional .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
 inline bool event_cfg::has_specify_field() const {
   bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
   PROTOBUF_ASSUME(!value || _impl_.specify_field_ != nullptr);
diff --git a/sample/cxx/v3/dep_level2.pb.cc b/sample/cxx/v3/dep_level2.pb.cc
index b4e1f4c8..dca254af 100755
--- a/sample/cxx/v3/dep_level2.pb.cc
+++ b/sample/cxx/v3/dep_level2.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dep_level2.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "dep_level2.pb.h"
 
@@ -34,7 +34,13 @@ inline constexpr dep2_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR dep2_cfg::dep2_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct dep2_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR dep2_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~dep2_cfgDefaultTypeInternal() {}
@@ -100,7 +106,11 @@ class dep2_cfg::_Internal {
 };
 
 dep2_cfg::dep2_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:dep2_cfg)
 }
@@ -113,7 +123,11 @@ inline PROTOBUF_NDEBUG_INLINE dep2_cfg::Impl_::Impl_(
 dep2_cfg::dep2_cfg(
     ::google::protobuf::Arena* arena,
     const dep2_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   dep2_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -144,25 +158,33 @@ inline void dep2_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-dep2_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(dep2_cfg, _impl_._cached_size_),
-              false,
-          },
-          &dep2_cfg::MergeImpl,
-          &dep2_cfg::kDescriptorMethods,
-          &descriptor_table_dep_5flevel2_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    dep2_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_dep2_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &dep2_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &dep2_cfg::ByteSizeLong,
+                &dep2_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(dep2_cfg, _impl_._cached_size_),
+            false,
+        },
+        &dep2_cfg::kDescriptorMethods,
+        &descriptor_table_dep_5flevel2_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* dep2_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 2, 0, 22, 2> dep2_cfg::_table_ = {
@@ -176,7 +198,7 @@ const ::_pbi::TcParseTable<1, 2, 0, 22, 2> dep2_cfg::_table_ = {
     2,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_dep2_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -219,61 +241,75 @@ PROTOBUF_NOINLINE void dep2_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* dep2_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:dep2_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // string level = 2;
-  if (!this->_internal_level().empty()) {
-    const std::string& _s = this->_internal_level();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "dep2_cfg.level");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:dep2_cfg)
-  return target;
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* dep2_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const dep2_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* dep2_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const dep2_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:dep2_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
 
-::size_t dep2_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:dep2_cfg)
-  ::size_t total_size = 0;
+          // uint32 id = 1;
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
 
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
+          // string level = 2;
+          if (!this_._internal_level().empty()) {
+            const std::string& _s = this_._internal_level();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "dep2_cfg.level");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
 
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // string level = 2;
-  if (!this->_internal_level().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_level());
-  }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:dep2_cfg)
+          return target;
+        }
 
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t dep2_cfg::ByteSizeLong(const MessageLite& base) {
+          const dep2_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t dep2_cfg::ByteSizeLong() const {
+          const dep2_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:dep2_cfg)
+          ::size_t total_size = 0;
 
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
 
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // string level = 2;
+            if (!this_._internal_level().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_level());
+            }
+            // uint32 id = 1;
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void dep2_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/sample/cxx/v3/dep_level2.pb.h b/sample/cxx/v3/dep_level2.pb.h
index 45614d36..316c0fa7 100755
--- a/sample/cxx/v3/dep_level2.pb.h
+++ b/sample/cxx/v3/dep_level2.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dep_level2.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_dep_5flevel2_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_dep_5flevel2_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -67,7 +67,7 @@ class dep2_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:dep2_cfg) */ {
  public:
   inline dep2_cfg() : dep2_cfg(nullptr) {}
-  ~dep2_cfg() override;
+  ~dep2_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR dep2_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -140,7 +140,7 @@ class dep2_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  dep2_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  dep2_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -157,11 +157,27 @@ class dep2_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -179,7 +195,8 @@ class dep2_cfg final : public ::google::protobuf::Message
       : dep2_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
diff --git a/sample/cxx/v3/dependency.pb.cc b/sample/cxx/v3/dependency.pb.cc
index df127ab8..b6cf6c03 100755
--- a/sample/cxx/v3/dependency.pb.cc
+++ b/sample/cxx/v3/dependency.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dependency.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "dependency.pb.h"
 
@@ -35,7 +35,13 @@ inline constexpr dep_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR dep_cfg::dep_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct dep_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR dep_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~dep_cfgDefaultTypeInternal() {}
@@ -148,7 +154,11 @@ void dep_cfg::clear_dep2() {
   _impl_._has_bits_[0] &= ~0x00000001u;
 }
 dep_cfg::dep_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:dep_cfg)
 }
@@ -162,7 +172,11 @@ inline PROTOBUF_NDEBUG_INLINE dep_cfg::Impl_::Impl_(
 dep_cfg::dep_cfg(
     ::google::protobuf::Arena* arena,
     const dep_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   dep_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -203,25 +217,33 @@ inline void dep_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-dep_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(dep_cfg, _impl_._cached_size_),
-              false,
-          },
-          &dep_cfg::MergeImpl,
-          &dep_cfg::kDescriptorMethods,
-          &descriptor_table_dependency_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    dep_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_dep_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &dep_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &dep_cfg::ByteSizeLong,
+                &dep_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(dep_cfg, _impl_._cached_size_),
+            false,
+        },
+        &dep_cfg::kDescriptorMethods,
+        &descriptor_table_dependency_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* dep_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 1, 20, 2> dep_cfg::_table_ = {
@@ -235,7 +257,7 @@ const ::_pbi::TcParseTable<2, 3, 1, 20, 2> dep_cfg::_table_ = {
     3,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_dep_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -291,75 +313,94 @@ PROTOBUF_NOINLINE void dep_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* dep_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:dep_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // string name = 2;
-  if (!this->_internal_name().empty()) {
-    const std::string& _s = this->_internal_name();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "dep_cfg.name");
-    target = stream->WriteStringMaybeAliased(2, _s, target);
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .dep2_cfg dep2 = 3;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        3, *_impl_.dep2_, _impl_.dep2_->GetCachedSize(), target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:dep_cfg)
-  return target;
-}
-
-::size_t dep_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:dep_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // string name = 2;
-  if (!this->_internal_name().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_name());
-  }
-
-  // .dep2_cfg dep2 = 3;
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size +=
-        1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.dep2_);
-  }
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* dep_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const dep_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* dep_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const dep_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:dep_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1;
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // string name = 2;
+          if (!this_._internal_name().empty()) {
+            const std::string& _s = this_._internal_name();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "dep_cfg.name");
+            target = stream->WriteStringMaybeAliased(2, _s, target);
+          }
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .dep2_cfg dep2 = 3;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                3, *this_._impl_.dep2_, this_._impl_.dep2_->GetCachedSize(), target,
+                stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:dep_cfg)
+          return target;
+        }
+
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t dep_cfg::ByteSizeLong(const MessageLite& base) {
+          const dep_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t dep_cfg::ByteSizeLong() const {
+          const dep_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:dep_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // string name = 2;
+            if (!this_._internal_name().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_name());
+            }
+          }
+           {
+            // .dep2_cfg dep2 = 3;
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dep2_);
+            }
+          }
+           {
+            // uint32 id = 1;
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void dep_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/sample/cxx/v3/dependency.pb.h b/sample/cxx/v3/dependency.pb.h
index 81c1ce1d..8c7c21d9 100755
--- a/sample/cxx/v3/dependency.pb.h
+++ b/sample/cxx/v3/dependency.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: dependency.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_dependency_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_dependency_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -134,7 +134,7 @@ class dep_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:dep_cfg) */ {
  public:
   inline dep_cfg() : dep_cfg(nullptr) {}
-  ~dep_cfg() override;
+  ~dep_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR dep_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -207,7 +207,7 @@ class dep_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  dep_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  dep_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -224,11 +224,27 @@ class dep_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -246,7 +262,8 @@ class dep_cfg final : public ::google::protobuf::Message
       : dep_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
diff --git a/sample/cxx/v3/kind.pb.cc b/sample/cxx/v3/kind.pb.cc
index 85716d15..e4639080 100755
--- a/sample/cxx/v3/kind.pb.cc
+++ b/sample/cxx/v3/kind.pb.cc
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: kind.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #include "kind.pb.h"
 
@@ -33,7 +33,13 @@ inline constexpr test_msg_verifier::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR test_msg_verifier::test_msg_verifier(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct test_msg_verifierDefaultTypeInternal {
   PROTOBUF_CONSTEXPR test_msg_verifierDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~test_msg_verifierDefaultTypeInternal() {}
@@ -56,7 +62,13 @@ inline constexpr role_upgrade_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR role_upgrade_cfg::role_upgrade_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct role_upgrade_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR role_upgrade_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~role_upgrade_cfgDefaultTypeInternal() {}
@@ -67,8 +79,14 @@ struct role_upgrade_cfgDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 role_upgrade_cfgDefaultTypeInternal _role_upgrade_cfg_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : process_by_script_TestMapIsEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : process_by_script_TestMapIsEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal() {}
@@ -79,8 +97,14 @@ struct process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 process_by_script_TestMapIsEntry_DoNotUseDefaultTypeInternal _process_by_script_TestMapIsEntry_DoNotUse_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : process_by_script_MapU32StringEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : process_by_script_MapU32StringEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct process_by_script_MapU32StringEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_script_MapU32StringEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_script_MapU32StringEntry_DoNotUseDefaultTypeInternal() {}
@@ -101,7 +125,13 @@ inline constexpr inner_alias_message::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR inner_alias_message::inner_alias_message(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct inner_alias_messageDefaultTypeInternal {
   PROTOBUF_CONSTEXPR inner_alias_messageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~inner_alias_messageDefaultTypeInternal() {}
@@ -123,7 +153,13 @@ inline constexpr event_rule_item::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR event_rule_item::event_rule_item(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct event_rule_itemDefaultTypeInternal {
   PROTOBUF_CONSTEXPR event_rule_itemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~event_rule_itemDefaultTypeInternal() {}
@@ -145,7 +181,13 @@ inline constexpr event_reward_item::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR event_reward_item::event_reward_item(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct event_reward_itemDefaultTypeInternal {
   PROTOBUF_CONSTEXPR event_reward_itemDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~event_reward_itemDefaultTypeInternal() {}
@@ -165,7 +207,13 @@ inline constexpr combine_id::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR combine_id::combine_id(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct combine_idDefaultTypeInternal {
   PROTOBUF_CONSTEXPR combine_idDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~combine_idDefaultTypeInternal() {}
@@ -176,8 +224,14 @@ struct combine_idDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 combine_idDefaultTypeInternal _combine_id_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal() {}
@@ -188,8 +242,14 @@ struct arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 arr_in_arr_cfg_TestMapIsEntry_DoNotUseDefaultTypeInternal _arr_in_arr_cfg_TestMapIsEntry_DoNotUse_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : process_by_script_TestMapSmEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : process_by_script_TestMapSmEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct process_by_script_TestMapSmEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_script_TestMapSmEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_script_TestMapSmEntry_DoNotUseDefaultTypeInternal() {}
@@ -211,7 +271,13 @@ inline constexpr outer_alias_message::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR outer_alias_message::outer_alias_message(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct outer_alias_messageDefaultTypeInternal {
   PROTOBUF_CONSTEXPR outer_alias_messageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~outer_alias_messageDefaultTypeInternal() {}
@@ -238,7 +304,13 @@ inline constexpr large_file_test::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR large_file_test::large_file_test(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct large_file_testDefaultTypeInternal {
   PROTOBUF_CONSTEXPR large_file_testDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~large_file_testDefaultTypeInternal() {}
@@ -263,7 +335,13 @@ inline constexpr keep_or_strip_empty_list_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR keep_or_strip_empty_list_cfg::keep_or_strip_empty_list_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct keep_or_strip_empty_list_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR keep_or_strip_empty_list_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~keep_or_strip_empty_list_cfgDefaultTypeInternal() {}
@@ -290,7 +368,13 @@ inline constexpr event_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR event_cfg::event_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct event_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR event_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~event_cfgDefaultTypeInternal() {}
@@ -301,8 +385,14 @@ struct event_cfgDefaultTypeInternal {
 
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
     PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 event_cfgDefaultTypeInternal _event_cfg_default_instance_;
-      template 
-PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized) {}
+              template 
+PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::_pbi::ConstantInitialized)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MapEntry(_class_data_.base()){}
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MapEntry() {
+}
+#endif  // PROTOBUF_CUSTOM_VTABLE
 struct arr_in_arr_cfg_TestMapSmEntry_DoNotUseDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_cfg_TestMapSmEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_cfg_TestMapSmEntry_DoNotUseDefaultTypeInternal() {}
@@ -346,7 +436,13 @@ inline constexpr role_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR role_cfg::role_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct role_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR role_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~role_cfgDefaultTypeInternal() {}
@@ -373,7 +469,13 @@ inline constexpr process_by_script::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR process_by_script::process_by_script(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct process_by_scriptDefaultTypeInternal {
   PROTOBUF_CONSTEXPR process_by_scriptDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~process_by_scriptDefaultTypeInternal() {}
@@ -393,7 +495,13 @@ inline constexpr arr_in_arr_test_nested_message::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR arr_in_arr_test_nested_message::arr_in_arr_test_nested_message(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct arr_in_arr_test_nested_messageDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_test_nested_messageDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_test_nested_messageDefaultTypeInternal() {}
@@ -419,7 +527,13 @@ inline constexpr arr_in_arr::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR arr_in_arr::arr_in_arr(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct arr_in_arrDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arrDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arrDefaultTypeInternal() {}
@@ -447,7 +561,13 @@ inline constexpr arr_in_arr_cfg::Impl_::Impl_(
 
 template 
 PROTOBUF_CONSTEXPR arr_in_arr_cfg::arr_in_arr_cfg(::_pbi::ConstantInitialized)
-    : _impl_(::_pbi::ConstantInitialized()) {}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(_class_data_.base()),
+#else   // PROTOBUF_CUSTOM_VTABLE
+    : ::google::protobuf::Message(),
+#endif  // PROTOBUF_CUSTOM_VTABLE
+      _impl_(::_pbi::ConstantInitialized()) {
+}
 struct arr_in_arr_cfgDefaultTypeInternal {
   PROTOBUF_CONSTEXPR arr_in_arr_cfgDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
   ~arr_in_arr_cfgDefaultTypeInternal() {}
@@ -555,7 +675,7 @@ const ::uint32_t
         PROTOBUF_FIELD_OFFSET(::test_msg_verifier, _impl_.test_id_1_),
         PROTOBUF_FIELD_OFFSET(::test_msg_verifier, _impl_.test_id_2_),
         PROTOBUF_FIELD_OFFSET(::test_msg_verifier, _impl_.test_id_3_),
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -563,11 +683,11 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.value_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -575,8 +695,8 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.value_),
         0,
         1,
         PROTOBUF_FIELD_OFFSET(::arr_in_arr_cfg, _impl_._has_bits_),
@@ -684,7 +804,7 @@ const ::uint32_t
         ~0u,  // no sizeof(Split)
         PROTOBUF_FIELD_OFFSET(::combine_id, _impl_.prefix_),
         PROTOBUF_FIELD_OFFSET(::combine_id, _impl_.id_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -692,11 +812,11 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_MapU32StringEntry_DoNotUse, _impl_.value_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -704,11 +824,11 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapIsEntry_DoNotUse, _impl_.value_),
         0,
         1,
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _has_bits_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
         PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _internal_metadata_),
         ~0u,  // no _extensions_
         ~0u,  // no _oneof_case_
@@ -716,8 +836,8 @@ const ::uint32_t
         ~0u,  // no _inlined_string_donated_
         ~0u,  // no _split_
         ~0u,  // no sizeof(Split)
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, key_),
-        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, value_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _impl_.key_),
+        PROTOBUF_FIELD_OFFSET(::process_by_script_TestMapSmEntry_DoNotUse, _impl_.value_),
         0,
         1,
         PROTOBUF_FIELD_OFFSET(::process_by_script, _impl_._has_bits_),
@@ -875,71 +995,73 @@ const char descriptor_table_protodef_kind_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIA
     "est_nested_enum\022\035\n\031EN_TEST_NESTED_ENUM_V"
     "AL_1\020\000\022\035\n\031EN_TEST_NESTED_ENUM_VAL_2\020{:*\352"
     "D\006helper\360D\001\202E\033Engine/CompositeDataTable."
-    "hB\013\n\ttest_onof\"o\n\021test_msg_verifier\022\022\n\tt"
-    "est_id_1\030\221N \001(\r\022&\n\ttest_id_2\030\222N \001(\rB\022\242\?\017"
-    "\346\265\213\350\257\225ID\345\210\253\345\220\2152\022\027\n\ttest_id_3\030\223N \001(\rB\003\310\?\001"
-    ":\005\242\?\002-^\"\374\003\n\016arr_in_arr_cfg\022\037\n\002id\030\001 \001(\rB\023"
-    "\232\?\rThis is a Key\350D\001\022\030\n\003arr\030\002 \003(\0132\013.arr_i"
-    "n_arr\022$\n\022test_plain_int_arr\030\003 \003(\005B\010\332\?\0011\342"
-    "\?\0013\022\'\n\023test_plain_enum_arr\030\004 \003(\0162\n.cost_"
-    "type\0220\n\016test_plain_msg\030\005 \001(\0132\022.test_msg_"
-    "verifierB\004\262\?\001&\022.\n\022test_plain_msg_arr\030\006 \003"
-    "(\0132\022.test_msg_verifier\0223\n\013test_map_is\030\007 "
-    "\003(\0132\036.arr_in_arr_cfg.TestMapIsEntry\0229\n\013t"
-    "est_map_sm\030\010 \003(\0132\036.arr_in_arr_cfg.TestMa"
-    "pSmEntryB\004\262\?\001|\0320\n\016TestMapIsEntry\022\013\n\003key\030"
-    "\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\032;\n\016TestMapSmEnt"
-    "ry\022\013\n\003key\030\001 \001(\t\022\030\n\005value\030\002 \001(\0132\t.dep2_cf"
-    "g:\0028\001:\037\312>\023Test arr_in_arr_cfg\352D\006helper\"\243"
-    "\001\n\021event_reward_item\022\017\n\007item_id\030\001 \001(\r\022\022\n"
-    "\nitem_count\030\002 \001(\r\022&\n\013nested_note\030\013 \001(\tB\017"
-    "\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0227\n\020nested_enum_type\030\014 "
-    "\001(\0162\n.cost_typeB\017\242\?\014\350\264\247\345\270\201\347\261\273\345\236\213H\000B\010\n\006ne"
-    "sted\"\241\001\n\017event_rule_item\022\017\n\007rule_id\030\001 \001("
-    "\r\022\022\n\nrule_param\030\002 \001(\r\022&\n\013nested_note\030\013 \001"
+    "hB\013\n\ttest_onof\"}\n\021test_msg_verifier\022\022\n\tt"
+    "est_id_1\030\221N \001(\r\0224\n\ttest_id_2\030\222N \001(\rB \242\?\017"
+    "\346\265\213\350\257\225ID\345\210\253\345\220\2152\362\?\013server_only\022\027\n\ttest_id"
+    "_3\030\223N \001(\rB\003\310\?\001:\005\242\?\002-^\"\232\004\n\016arr_in_arr_cfg"
+    "\022\037\n\002id\030\001 \001(\rB\023\232\?\rThis is a Key\350D\001\022(\n\003arr"
+    "\030\002 \003(\0132\013.arr_in_arrB\016\362\?\013server_only\0222\n\022t"
+    "est_plain_int_arr\030\003 \003(\005B\026\332\?\0011\342\?\0013\362\?\013serv"
+    "er_only\022\'\n\023test_plain_enum_arr\030\004 \003(\0162\n.c"
+    "ost_type\0220\n\016test_plain_msg\030\005 \001(\0132\022.test_"
+    "msg_verifierB\004\262\?\001&\022.\n\022test_plain_msg_arr"
+    "\030\006 \003(\0132\022.test_msg_verifier\0223\n\013test_map_i"
+    "s\030\007 \003(\0132\036.arr_in_arr_cfg.TestMapIsEntry\022"
+    "9\n\013test_map_sm\030\010 \003(\0132\036.arr_in_arr_cfg.Te"
+    "stMapSmEntryB\004\262\?\001|\0320\n\016TestMapIsEntry\022\013\n\003"
+    "key\030\001 \001(\005\022\r\n\005value\030\002 \001(\t:\0028\001\032;\n\016TestMapS"
+    "mEntry\022\013\n\003key\030\001 \001(\t\022\030\n\005value\030\002 \001(\0132\t.dep"
+    "2_cfg:\0028\001:\037\312>\023Test arr_in_arr_cfg\352D\006help"
+    "er\"\243\001\n\021event_reward_item\022\017\n\007item_id\030\001 \001("
+    "\r\022\022\n\nitem_count\030\002 \001(\r\022&\n\013nested_note\030\013 \001"
     "(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0227\n\020nested_enum_typ"
     "e\030\014 \001(\0162\n.cost_typeB\017\242\?\014\350\264\247\345\270\201\347\261\273\345\236\213H\000B\010"
-    "\n\006nested\"\244\004\n\tevent_cfg\022.\n\002id\030\001 \001(\rB\"\312>\014c"
-    "ustom_rule4\322>\nunique_tag\330>\001\350Dd\022$\n\007proces"
-    "s\030\002 \001(\rB\023\322>\nunique_tag\330>\001\350D\001\022\036\n\004rule\030\006 \001"
-    "(\0132\020.event_rule_item\022\'\n\rspecify_field\030\007 "
-    "\001(\0132\020.event_rule_item\0223\n\004item\030\013 \001(\0132\022.ev"
-    "ent_reward_itemB\017\242\?\014\345\245\226\345\212\261\351\201\223\345\205\267H\000\022#\n\010us"
-    "er_exp\030\014 \001(\003B\017\242\?\014\345\245\226\345\212\261\347\273\217\351\252\214H\000\022\037\n\004note\030"
-    "\r \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0220\n\tenum_type\030\016 "
-    "\001(\0162\n.cost_typeB\017\242\?\014\350\264\247\345\270\201\347\261\273\345\236\213H\000\022%\n\nus"
-    "er_level\0303 \001(\rB\017\242\?\014\347\216\251\345\256\266\347\255\211\347\272\247H\001\022(\n\010tes"
-    "t_arr\030[ \003(\0132\020.event_rule_itemB\004\262\?\001;\022.\n\016t"
-    "est_empty_arr\030\\ \003(\0132\020.event_rule_itemB\004\262"
-    "\?\001;:,\312> Test event_cfg with oneof fields"
-    "\352D\006helperB\r\n\006reward\022\003\330>\001B\r\n\013unlock_type\""
-    "\266\001\n\034keep_or_strip_empty_list_cfg\022\037\n\002id\030\001"
-    " \001(\rB\023\232\?\rThis is a Key\350D\001\022\034\n\tarray_msg\030\002"
-    " \003(\0132\t.dep2_cfg\022\"\n\017array_plain_msg\030\003 \003(\013"
-    "2\t.dep2_cfg\022\023\n\013array_int32\030\004 \003(\005\022\023\n\013arra"
-    "y_int64\030\005 \003(\003:\t\352D\006helper\"4\n\ncombine_id\022\016"
-    "\n\006prefix\030\001 \001(\r\022\026\n\002id\030\002 \001(\rB\n\312>\0070-99999\"\333"
-    "\003\n\021process_by_script\022\n\n\002id\030\001 \001(\r\022<\n\016map_"
-    "u32_string\030\002 \003(\0132$.process_by_script.Map"
-    "U32StringEntry\022\033\n\023human_readable_date\030\003 "
-    "\001(\t\022(\n\004date\030\004 \001(\0132\032.google.protobuf.Time"
-    "stamp\0226\n\013test_map_is\030\007 \003(\0132!.process_by_"
-    "script.TestMapIsEntry\022<\n\013test_map_sm\030\010 \003"
-    "(\0132!.process_by_script.TestMapSmEntryB\004\262"
-    "\?\001|\022\033\n\005id_id\030\351\007 \001(\0132\013.combine_id\0323\n\021MapU"
-    "32StringEntry\022\013\n\003key\030\001 \001(\r\022\r\n\005value\030\002 \001("
-    "\t:\0028\001\0320\n\016TestMapIsEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005"
-    "value\030\002 \001(\t:\0028\001\032;\n\016TestMapSmEntry\022\013\n\003key"
-    "\030\001 \001(\t\022\030\n\005value\030\002 \001(\0132\t.dep2_cfg:\0028\001\"\222\001\n"
-    "\017large_file_test\022\n\n\002id\030\001 \001(\r\022\020\n\010i32value"
-    "\030\002 \001(\005\022\020\n\010u64value\030\003 \001(\004\022\020\n\010f64value\030\004 \001"
-    "(\001\022\020\n\010f32value\030\005 \001(\002\022\017\n\007szvalue\030\006 \001(\t\022\032\n"
-    "\005id_id\030\007 \001(\0132\013.combine_id\"N\n\023inner_alias"
-    "_message\022\026\n\005iType\030\001 \001(\005B\007\242\?\004Type\022\037\n\tpara"
-    "mList\030\002 \003(\003B\014\242\?\005Param\332\?\0012\"|\n\023outer_alias"
-    "_message\022\022\n\003iId\030\001 \001(\005B\005\242\?\002ID\0222\n\006inners\030\002"
-    " \003(\0132\024.inner_alias_messageB\014\242\?\tCondition"
-    "\022\035\n\010nest_int\030\003 \003(\005B\013\242\?\004Nest\332\?\0012b\006proto3"
+    "\n\006nested\"\241\001\n\017event_rule_item\022\017\n\007rule_id\030"
+    "\001 \001(\r\022\022\n\nrule_param\030\002 \001(\r\022&\n\013nested_note"
+    "\030\013 \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346\234\254H\000\0227\n\020nested_enum"
+    "_type\030\014 \001(\0162\n.cost_typeB\017\242\?\014\350\264\247\345\270\201\347\261\273\345\236\213"
+    "H\000B\010\n\006nested\"\302\004\n\tevent_cfg\022.\n\002id\030\001 \001(\rB\""
+    "\312>\014custom_rule4\322>\nunique_tag\330>\001\350Dd\022$\n\007pr"
+    "ocess\030\002 \001(\rB\023\322>\nunique_tag\330>\001\350D\001\022\036\n\004rule"
+    "\030\006 \001(\0132\020.event_rule_item\0227\n\rspecify_fiel"
+    "d\030\007 \001(\0132\020.event_rule_itemB\016\362\?\013server_onl"
+    "y\0223\n\004item\030\013 \001(\0132\022.event_reward_itemB\017\242\?\014"
+    "\345\245\226\345\212\261\351\201\223\345\205\267H\000\022#\n\010user_exp\030\014 \001(\003B\017\242\?\014\345\245\226"
+    "\345\212\261\347\273\217\351\252\214H\000\022\037\n\004note\030\r \001(\tB\017\242\?\014\346\217\217\350\277\260\346\226\207\346"
+    "\234\254H\000\0220\n\tenum_type\030\016 \001(\0162\n.cost_typeB\017\242\?\014"
+    "\350\264\247\345\270\201\347\261\273\345\236\213H\000\022%\n\nuser_level\0303 \001(\rB\017\242\?\014\347"
+    "\216\251\345\256\266\347\255\211\347\272\247H\001\022(\n\010test_arr\030[ \003(\0132\020.event_"
+    "rule_itemB\004\262\?\001;\022.\n\016test_empty_arr\030\\ \003(\0132"
+    "\020.event_rule_itemB\004\262\?\001;:,\312> Test event_c"
+    "fg with oneof fields\352D\006helperB\033\n\006reward\022"
+    "\021\330>\001\352>\013server_onlyB\r\n\013unlock_type\"\266\001\n\034ke"
+    "ep_or_strip_empty_list_cfg\022\037\n\002id\030\001 \001(\rB\023"
+    "\232\?\rThis is a Key\350D\001\022\034\n\tarray_msg\030\002 \003(\0132\t"
+    ".dep2_cfg\022\"\n\017array_plain_msg\030\003 \003(\0132\t.dep"
+    "2_cfg\022\023\n\013array_int32\030\004 \003(\005\022\023\n\013array_int6"
+    "4\030\005 \003(\003:\t\352D\006helper\"4\n\ncombine_id\022\016\n\006pref"
+    "ix\030\001 \001(\r\022\026\n\002id\030\002 \001(\rB\n\312>\0070-99999\"\333\003\n\021pro"
+    "cess_by_script\022\n\n\002id\030\001 \001(\r\022<\n\016map_u32_st"
+    "ring\030\002 \003(\0132$.process_by_script.MapU32Str"
+    "ingEntry\022\033\n\023human_readable_date\030\003 \001(\t\022(\n"
+    "\004date\030\004 \001(\0132\032.google.protobuf.Timestamp\022"
+    "6\n\013test_map_is\030\007 \003(\0132!.process_by_script"
+    ".TestMapIsEntry\022<\n\013test_map_sm\030\010 \003(\0132!.p"
+    "rocess_by_script.TestMapSmEntryB\004\262\?\001|\022\033\n"
+    "\005id_id\030\351\007 \001(\0132\013.combine_id\0323\n\021MapU32Stri"
+    "ngEntry\022\013\n\003key\030\001 \001(\r\022\r\n\005value\030\002 \001(\t:\0028\001\032"
+    "0\n\016TestMapIsEntry\022\013\n\003key\030\001 \001(\005\022\r\n\005value\030"
+    "\002 \001(\t:\0028\001\032;\n\016TestMapSmEntry\022\013\n\003key\030\001 \001(\t"
+    "\022\030\n\005value\030\002 \001(\0132\t.dep2_cfg:\0028\001\"\222\001\n\017large"
+    "_file_test\022\n\n\002id\030\001 \001(\r\022\020\n\010i32value\030\002 \001(\005"
+    "\022\020\n\010u64value\030\003 \001(\004\022\020\n\010f64value\030\004 \001(\001\022\020\n\010"
+    "f32value\030\005 \001(\002\022\017\n\007szvalue\030\006 \001(\t\022\032\n\005id_id"
+    "\030\007 \001(\0132\013.combine_id\"N\n\023inner_alias_messa"
+    "ge\022\026\n\005iType\030\001 \001(\005B\007\242\?\004Type\022\037\n\tparamList\030"
+    "\002 \003(\003B\014\242\?\005Param\332\?\0012\"|\n\023outer_alias_messa"
+    "ge\022\022\n\003iId\030\001 \001(\005B\005\242\?\002ID\0222\n\006inners\030\002 \003(\0132\024"
+    ".inner_alias_messageB\014\242\?\tCondition\022\035\n\010ne"
+    "st_int\030\003 \003(\005B\013\242\?\004Nest\332\?\0012b\006proto3"
 };
 static const ::_pbi::DescriptorTable* const descriptor_table_kind_2eproto_deps[6] =
     {
@@ -954,7 +1076,7 @@ static ::absl::once_flag descriptor_table_kind_2eproto_once;
 PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_kind_2eproto = {
     false,
     false,
-    4239,
+    4313,
     descriptor_table_protodef_kind_2eproto,
     "kind.proto",
     &descriptor_table_kind_2eproto_once,
@@ -1041,7 +1163,11 @@ void role_cfg::clear_convert_duration_arr() {
   _impl_.convert_duration_arr_.Clear();
 }
 role_cfg::role_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:role_cfg)
 }
@@ -1065,7 +1191,11 @@ inline PROTOBUF_NDEBUG_INLINE role_cfg::Impl_::Impl_(
 role_cfg::role_cfg(
     ::google::protobuf::Arena* arena,
     const role_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   role_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -1133,25 +1263,33 @@ inline void role_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-role_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(role_cfg, _impl_._cached_size_),
-              false,
-          },
-          &role_cfg::MergeImpl,
-          &role_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    role_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_role_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &role_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &role_cfg::ByteSizeLong,
+                &role_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(role_cfg, _impl_._cached_size_),
+            false,
+        },
+        &role_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* role_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<5, 17, 5, 138, 2> role_cfg::_table_ = {
@@ -1165,7 +1303,7 @@ const ::_pbi::TcParseTable<5, 17, 5, 138, 2> role_cfg::_table_ = {
     17,  // num_field_entries
     5,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_role_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -1350,282 +1488,308 @@ PROTOBUF_NOINLINE void role_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* role_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:role_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // uint32 unlock_level = 2;
-  if (this->_internal_unlock_level() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_unlock_level(), target);
-  }
-
-  // int32 cost_type = 3;
-  if (this->_internal_cost_type() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<3>(
-            stream, this->_internal_cost_type(), target);
-  }
-
-  // int32 cost_value = 4;
-  if (this->_internal_cost_value() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<4>(
-            stream, this->_internal_cost_value(), target);
-  }
-
-  // string name = 5;
-  if (!this->_internal_name().empty()) {
-    const std::string& _s = this->_internal_name();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.name");
-    target = stream->WriteStringMaybeAliased(5, _s, target);
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .dep_cfg dep_test = 10;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        10, *_impl_.dep_test_, _impl_.dep_test_->GetCachedSize(), target, stream);
-  }
-
-  // repeated string test_array = 11;
-  for (int i = 0, n = this->_internal_test_array_size(); i < n; ++i) {
-    const auto& s = this->_internal_test_array().Get(i);
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.test_array");
-    target = stream->WriteString(11, s, target);
-  }
-
-  // string int_as_string = 12;
-  if (!this->_internal_int_as_string().empty()) {
-    const std::string& _s = this->_internal_int_as_string();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.int_as_string");
-    target = stream->WriteStringMaybeAliased(12, _s, target);
-  }
-
-  // repeated .cost_type test_plain_enum_array = 13;
-  {
-    std::size_t byte_size = _impl_._test_plain_enum_array_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteEnumPacked(13, _internal_test_plain_enum_array(),
-                                       byte_size, target);
-    }
-  }
-
-  // .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        21, *_impl_.convert_timepoint_one_, _impl_.convert_timepoint_one_->GetCachedSize(), target, stream);
-  }
-
-  // string origin_timepoint_one = 22;
-  if (!this->_internal_origin_timepoint_one().empty()) {
-    const std::string& _s = this->_internal_origin_timepoint_one();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_timepoint_one");
-    target = stream->WriteStringMaybeAliased(22, _s, target);
-  }
-
-  // .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
-  if (cached_has_bits & 0x00000004u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        23, *_impl_.convert_duration_one_, _impl_.convert_duration_one_->GetCachedSize(), target, stream);
-  }
-
-  // string origin_duration_one = 24;
-  if (!this->_internal_origin_duration_one().empty()) {
-    const std::string& _s = this->_internal_origin_duration_one();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_duration_one");
-    target = stream->WriteStringMaybeAliased(24, _s, target);
-  }
-
-  // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_convert_timepoint_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_convert_timepoint_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            25, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated string origin_timepoint_arr = 26;
-  for (int i = 0, n = this->_internal_origin_timepoint_arr_size(); i < n; ++i) {
-    const auto& s = this->_internal_origin_timepoint_arr().Get(i);
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_timepoint_arr");
-    target = stream->WriteString(26, s, target);
-  }
-
-  // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_convert_duration_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_convert_duration_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            27, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated string origin_duration_arr = 28;
-  for (int i = 0, n = this->_internal_origin_duration_arr_size(); i < n; ++i) {
-    const auto& s = this->_internal_origin_duration_arr().Get(i);
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_duration_arr");
-    target = stream->WriteString(28, s, target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:role_cfg)
-  return target;
-}
-
-::size_t role_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:role_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated string test_array = 11;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_array().size());
-  for (int i = 0, n = _internal_test_array().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_test_array().Get(i));
-  }
-  // repeated .cost_type test_plain_enum_array = 13;
-  {
-    std::size_t data_size = 0;
-    auto count = static_cast(this->_internal_test_plain_enum_array_size());
-
-    for (std::size_t i = 0; i < count; ++i) {
-      data_size += ::_pbi::WireFormatLite::EnumSize(
-          this->_internal_test_plain_enum_array().Get(static_cast(i)));
-    }
-    total_size += data_size;
-    if (data_size > 0) {
-      total_size += 1;
-      total_size += ::_pbi::WireFormatLite::Int32Size(
-          static_cast(data_size));
-    }
-    _impl_._test_plain_enum_array_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-  }
-  // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
-  total_size += 2UL * this->_internal_convert_timepoint_arr_size();
-  for (const auto& msg : this->_internal_convert_timepoint_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated string origin_timepoint_arr = 26;
-  total_size += 2 * ::google::protobuf::internal::FromIntSize(_internal_origin_timepoint_arr().size());
-  for (int i = 0, n = _internal_origin_timepoint_arr().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_origin_timepoint_arr().Get(i));
-  }
-  // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
-  total_size += 2UL * this->_internal_convert_duration_arr_size();
-  for (const auto& msg : this->_internal_convert_duration_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated string origin_duration_arr = 28;
-  total_size += 2 * ::google::protobuf::internal::FromIntSize(_internal_origin_duration_arr().size());
-  for (int i = 0, n = _internal_origin_duration_arr().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_origin_duration_arr().Get(i));
-  }
-  // string name = 5;
-  if (!this->_internal_name().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_name());
-  }
-
-  // string int_as_string = 12;
-  if (!this->_internal_int_as_string().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_int_as_string());
-  }
-
-  // string origin_timepoint_one = 22;
-  if (!this->_internal_origin_timepoint_one().empty()) {
-    total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_origin_timepoint_one());
-  }
-
-  // string origin_duration_one = 24;
-  if (!this->_internal_origin_duration_one().empty()) {
-    total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_origin_duration_one());
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000007u) {
-    // .dep_cfg dep_test = 10;
-    if (cached_has_bits & 0x00000001u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.dep_test_);
-    }
-
-    // .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.convert_timepoint_one_);
-    }
-
-    // .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
-    if (cached_has_bits & 0x00000004u) {
-      total_size +=
-          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.convert_duration_one_);
-    }
-
-  }
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  // uint32 unlock_level = 2;
-  if (this->_internal_unlock_level() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_unlock_level());
-  }
-
-  // int32 cost_type = 3;
-  if (this->_internal_cost_type() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_cost_type());
-  }
-
-  // int32 cost_value = 4;
-  if (this->_internal_cost_value() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_cost_value());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* role_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const role_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* role_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const role_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:role_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1;
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // uint32 unlock_level = 2;
+          if (this_._internal_unlock_level() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_unlock_level(), target);
+          }
+
+          // int32 cost_type = 3;
+          if (this_._internal_cost_type() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<3>(
+                    stream, this_._internal_cost_type(), target);
+          }
+
+          // int32 cost_value = 4;
+          if (this_._internal_cost_value() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<4>(
+                    stream, this_._internal_cost_value(), target);
+          }
+
+          // string name = 5;
+          if (!this_._internal_name().empty()) {
+            const std::string& _s = this_._internal_name();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.name");
+            target = stream->WriteStringMaybeAliased(5, _s, target);
+          }
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .dep_cfg dep_test = 10;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                10, *this_._impl_.dep_test_, this_._impl_.dep_test_->GetCachedSize(), target,
+                stream);
+          }
+
+          // repeated string test_array = 11;
+          for (int i = 0, n = this_._internal_test_array_size(); i < n; ++i) {
+            const auto& s = this_._internal_test_array().Get(i);
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.test_array");
+            target = stream->WriteString(11, s, target);
+          }
+
+          // string int_as_string = 12;
+          if (!this_._internal_int_as_string().empty()) {
+            const std::string& _s = this_._internal_int_as_string();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.int_as_string");
+            target = stream->WriteStringMaybeAliased(12, _s, target);
+          }
+
+          // repeated .cost_type test_plain_enum_array = 13;
+          {
+            std::size_t byte_size =
+                                              this_._impl_._test_plain_enum_array_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteEnumPacked(
+                  13, this_._internal_test_plain_enum_array(), byte_size, target);
+            }
+          }
+
+          // .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                21, *this_._impl_.convert_timepoint_one_, this_._impl_.convert_timepoint_one_->GetCachedSize(), target,
+                stream);
+          }
+
+          // string origin_timepoint_one = 22;
+          if (!this_._internal_origin_timepoint_one().empty()) {
+            const std::string& _s = this_._internal_origin_timepoint_one();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_timepoint_one");
+            target = stream->WriteStringMaybeAliased(22, _s, target);
+          }
+
+          // .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
+          if (cached_has_bits & 0x00000004u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                23, *this_._impl_.convert_duration_one_, this_._impl_.convert_duration_one_->GetCachedSize(), target,
+                stream);
+          }
+
+          // string origin_duration_one = 24;
+          if (!this_._internal_origin_duration_one().empty()) {
+            const std::string& _s = this_._internal_origin_duration_one();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_duration_one");
+            target = stream->WriteStringMaybeAliased(24, _s, target);
+          }
+
+          // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_convert_timepoint_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_convert_timepoint_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    25, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated string origin_timepoint_arr = 26;
+          for (int i = 0, n = this_._internal_origin_timepoint_arr_size(); i < n; ++i) {
+            const auto& s = this_._internal_origin_timepoint_arr().Get(i);
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_timepoint_arr");
+            target = stream->WriteString(26, s, target);
+          }
+
+          // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_convert_duration_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_convert_duration_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    27, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated string origin_duration_arr = 28;
+          for (int i = 0, n = this_._internal_origin_duration_arr_size(); i < n; ++i) {
+            const auto& s = this_._internal_origin_duration_arr().Get(i);
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "role_cfg.origin_duration_arr");
+            target = stream->WriteString(28, s, target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:role_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t role_cfg::ByteSizeLong(const MessageLite& base) {
+          const role_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t role_cfg::ByteSizeLong() const {
+          const role_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:role_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated string test_array = 11;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_array().size());
+              for (int i = 0, n = this_._internal_test_array().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_test_array().Get(i));
+              }
+            }
+            // repeated .cost_type test_plain_enum_array = 13;
+             {
+              std::size_t data_size = 0;
+              auto count = static_cast(this_._internal_test_plain_enum_array_size());
+
+              for (std::size_t i = 0; i < count; ++i) {
+                data_size += ::_pbi::WireFormatLite::EnumSize(
+                    this_._internal_test_plain_enum_array().Get(static_cast(i)));
+              }
+              total_size += data_size;
+              if (data_size > 0) {
+                total_size += 1;
+                total_size += ::_pbi::WireFormatLite::Int32Size(
+                    static_cast(data_size));
+              }
+              this_._impl_._test_plain_enum_array_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
+            }
+            // repeated .google.protobuf.Timestamp convert_timepoint_arr = 25 [(.org.xresloader.field_origin_value) = "origin_timepoint_arr"];
+             {
+              total_size += 2UL * this_._internal_convert_timepoint_arr_size();
+              for (const auto& msg : this_._internal_convert_timepoint_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated string origin_timepoint_arr = 26;
+             {
+              total_size +=
+                  2 * ::google::protobuf::internal::FromIntSize(this_._internal_origin_timepoint_arr().size());
+              for (int i = 0, n = this_._internal_origin_timepoint_arr().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_origin_timepoint_arr().Get(i));
+              }
+            }
+            // repeated .google.protobuf.Duration convert_duration_arr = 27 [(.org.xresloader.field_origin_value) = "origin_duration_arr"];
+             {
+              total_size += 2UL * this_._internal_convert_duration_arr_size();
+              for (const auto& msg : this_._internal_convert_duration_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated string origin_duration_arr = 28;
+             {
+              total_size +=
+                  2 * ::google::protobuf::internal::FromIntSize(this_._internal_origin_duration_arr().size());
+              for (int i = 0, n = this_._internal_origin_duration_arr().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_origin_duration_arr().Get(i));
+              }
+            }
+          }
+           {
+            // string name = 5;
+            if (!this_._internal_name().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_name());
+            }
+            // string int_as_string = 12;
+            if (!this_._internal_int_as_string().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_int_as_string());
+            }
+            // string origin_timepoint_one = 22;
+            if (!this_._internal_origin_timepoint_one().empty()) {
+              total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_origin_timepoint_one());
+            }
+            // string origin_duration_one = 24;
+            if (!this_._internal_origin_duration_one().empty()) {
+              total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_origin_duration_one());
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000007u) {
+            // .dep_cfg dep_test = 10;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.dep_test_);
+            }
+            // .google.protobuf.Timestamp convert_timepoint_one = 21 [(.org.xresloader.field_origin_value) = "origin_timepoint_one"];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 2 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.convert_timepoint_one_);
+            }
+            // .google.protobuf.Duration convert_duration_one = 23 [(.org.xresloader.field_origin_value) = "origin_duration_one"];
+            if (cached_has_bits & 0x00000004u) {
+              total_size += 2 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.convert_duration_one_);
+            }
+          }
+           {
+            // uint32 id = 1;
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // uint32 unlock_level = 2;
+            if (this_._internal_unlock_level() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_unlock_level());
+            }
+            // int32 cost_type = 3;
+            if (this_._internal_cost_type() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_cost_type());
+            }
+            // int32 cost_value = 4;
+            if (this_._internal_cost_value() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_cost_value());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void role_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -1744,7 +1908,11 @@ class role_upgrade_cfg::_Internal {
 };
 
 role_upgrade_cfg::role_upgrade_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:role_upgrade_cfg)
 }
@@ -1777,25 +1945,33 @@ inline void role_upgrade_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-role_upgrade_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(role_upgrade_cfg, _impl_._cached_size_),
-              false,
-          },
-          &role_upgrade_cfg::MergeImpl,
-          &role_upgrade_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    role_upgrade_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_role_upgrade_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &role_upgrade_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &role_upgrade_cfg::ByteSizeLong,
+                &role_upgrade_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(role_upgrade_cfg, _impl_._cached_size_),
+            false,
+        },
+        &role_upgrade_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* role_upgrade_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 5, 0, 0, 2> role_upgrade_cfg::_table_ = {
@@ -1809,7 +1985,7 @@ const ::_pbi::TcParseTable<3, 5, 0, 0, 2> role_upgrade_cfg::_table_ = {
     5,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_role_upgrade_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -1871,99 +2047,110 @@ PROTOBUF_NOINLINE void role_upgrade_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* role_upgrade_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:role_upgrade_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_level() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_level(), target);
-  }
-
-  // int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
-  if (this->_internal_costtype() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<3>(
-            stream, this->_internal_costtype(), target);
-  }
-
-  // int64 CostValue = 4;
-  if (this->_internal_costvalue() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt64ToArrayWithField<4>(
-            stream, this->_internal_costvalue(), target);
-  }
-
-  // int32 ScoreAdd = 5;
-  if (this->_internal_scoreadd() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<5>(
-            stream, this->_internal_scoreadd(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:role_upgrade_cfg)
-  return target;
-}
-
-::size_t role_upgrade_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:role_upgrade_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  // uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_level() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_level());
-  }
-
-  // int64 CostValue = 4;
-  if (this->_internal_costvalue() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
-        this->_internal_costvalue());
-  }
-
-  // int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
-  if (this->_internal_costtype() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_costtype());
-  }
-
-  // int32 ScoreAdd = 5;
-  if (this->_internal_scoreadd() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_scoreadd());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* role_upgrade_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const role_upgrade_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* role_upgrade_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const role_upgrade_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:role_upgrade_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
+          if (this_._internal_level() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_level(), target);
+          }
+
+          // int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
+          if (this_._internal_costtype() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<3>(
+                    stream, this_._internal_costtype(), target);
+          }
+
+          // int64 CostValue = 4;
+          if (this_._internal_costvalue() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt64ToArrayWithField<4>(
+                    stream, this_._internal_costvalue(), target);
+          }
+
+          // int32 ScoreAdd = 5;
+          if (this_._internal_scoreadd() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<5>(
+                    stream, this_._internal_scoreadd(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:role_upgrade_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t role_upgrade_cfg::ByteSizeLong(const MessageLite& base) {
+          const role_upgrade_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t role_upgrade_cfg::ByteSizeLong() const {
+          const role_upgrade_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:role_upgrade_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // uint32 Id = 1 [(.org.xresloader.validator) = "custom_rule3", (.org.xresloader.ue.key_tag) = 1000];
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // uint32 Level = 2 [(.org.xresloader.ue.key_tag) = 1];
+            if (this_._internal_level() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_level());
+            }
+            // int64 CostValue = 4;
+            if (this_._internal_costvalue() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
+                  this_._internal_costvalue());
+            }
+            // int32 CostType = 3 [(.org.xresloader.validator) = "custom_rule1", (.org.xresloader.field_description) = "Refer to cost_type"];
+            if (this_._internal_costtype() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_costtype());
+            }
+            // int32 ScoreAdd = 5;
+            if (this_._internal_scoreadd() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_scoreadd());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void role_upgrade_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -2048,7 +2235,11 @@ void arr_in_arr_test_nested_message::set_allocated_test_nested_message_role_upgr
   // @@protoc_insertion_point(field_set_allocated:arr_in_arr.test_nested_message.test_nested_message_role_upgrade_cfg)
 }
 arr_in_arr_test_nested_message::arr_in_arr_test_nested_message(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:arr_in_arr.test_nested_message)
 }
@@ -2062,7 +2253,11 @@ inline PROTOBUF_NDEBUG_INLINE arr_in_arr_test_nested_message::Impl_::Impl_(
 arr_in_arr_test_nested_message::arr_in_arr_test_nested_message(
     ::google::protobuf::Arena* arena,
     const arr_in_arr_test_nested_message& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   arr_in_arr_test_nested_message* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -2132,25 +2327,33 @@ void arr_in_arr_test_nested_message::clear_test_onof() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_test_nested_message::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_test_nested_message, _impl_._cached_size_),
-              false,
-          },
-          &arr_in_arr_test_nested_message::MergeImpl,
-          &arr_in_arr_test_nested_message::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    arr_in_arr_test_nested_message::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_arr_in_arr_test_nested_message_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &arr_in_arr_test_nested_message::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &arr_in_arr_test_nested_message::ByteSizeLong,
+                &arr_in_arr_test_nested_message::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(arr_in_arr_test_nested_message, _impl_._cached_size_),
+            false,
+        },
+        &arr_in_arr_test_nested_message::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* arr_in_arr_test_nested_message::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<0, 2, 2, 0, 2> arr_in_arr_test_nested_message::_table_ = {
@@ -2164,7 +2367,7 @@ const ::_pbi::TcParseTable<0, 2, 2, 0, 2> arr_in_arr_test_nested_message::_table
     2,  // num_field_entries
     2,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_arr_in_arr_test_nested_message_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -2199,64 +2402,80 @@ PROTOBUF_NOINLINE void arr_in_arr_test_nested_message::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* arr_in_arr_test_nested_message::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr.test_nested_message)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  switch (test_onof_case()) {
-    case kTestNestedMessageInfoRole: {
-      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-          11, *_impl_.test_onof_.test_nested_message_info_role_, _impl_.test_onof_.test_nested_message_info_role_->GetCachedSize(), target, stream);
-      break;
-    }
-    case kTestNestedMessageRoleUpgradeCfg: {
-      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-          12, *_impl_.test_onof_.test_nested_message_role_upgrade_cfg_, _impl_.test_onof_.test_nested_message_role_upgrade_cfg_->GetCachedSize(), target, stream);
-      break;
-    }
-    default:
-      break;
-  }
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr.test_nested_message)
-  return target;
-}
-
-::size_t arr_in_arr_test_nested_message::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:arr_in_arr.test_nested_message)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  switch (test_onof_case()) {
-    // .role_cfg test_nested_message_info_role = 11;
-    case kTestNestedMessageInfoRole: {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.test_onof_.test_nested_message_info_role_);
-      break;
-    }
-    // .role_upgrade_cfg test_nested_message_role_upgrade_cfg = 12;
-    case kTestNestedMessageRoleUpgradeCfg: {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.test_onof_.test_nested_message_role_upgrade_cfg_);
-      break;
-    }
-    case TEST_ONOF_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* arr_in_arr_test_nested_message::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const arr_in_arr_test_nested_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* arr_in_arr_test_nested_message::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const arr_in_arr_test_nested_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr.test_nested_message)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          switch (this_.test_onof_case()) {
+            case kTestNestedMessageInfoRole: {
+              target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                  11, *this_._impl_.test_onof_.test_nested_message_info_role_, this_._impl_.test_onof_.test_nested_message_info_role_->GetCachedSize(), target,
+                  stream);
+              break;
+            }
+            case kTestNestedMessageRoleUpgradeCfg: {
+              target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                  12, *this_._impl_.test_onof_.test_nested_message_role_upgrade_cfg_, this_._impl_.test_onof_.test_nested_message_role_upgrade_cfg_->GetCachedSize(), target,
+                  stream);
+              break;
+            }
+            default:
+              break;
+          }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr.test_nested_message)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t arr_in_arr_test_nested_message::ByteSizeLong(const MessageLite& base) {
+          const arr_in_arr_test_nested_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t arr_in_arr_test_nested_message::ByteSizeLong() const {
+          const arr_in_arr_test_nested_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:arr_in_arr.test_nested_message)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          switch (this_.test_onof_case()) {
+            // .role_cfg test_nested_message_info_role = 11;
+            case kTestNestedMessageInfoRole: {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.test_onof_.test_nested_message_info_role_);
+              break;
+            }
+            // .role_upgrade_cfg test_nested_message_role_upgrade_cfg = 12;
+            case kTestNestedMessageRoleUpgradeCfg: {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.test_onof_.test_nested_message_role_upgrade_cfg_);
+              break;
+            }
+            case TEST_ONOF_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void arr_in_arr_test_nested_message::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -2356,7 +2575,11 @@ void arr_in_arr::set_allocated_test_role_upgrade_cfg(::role_upgrade_cfg* test_ro
   // @@protoc_insertion_point(field_set_allocated:arr_in_arr.test_role_upgrade_cfg)
 }
 arr_in_arr::arr_in_arr(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:arr_in_arr)
 }
@@ -2374,7 +2597,11 @@ inline PROTOBUF_NDEBUG_INLINE arr_in_arr::Impl_::Impl_(
 arr_in_arr::arr_in_arr(
     ::google::protobuf::Arena* arena,
     const arr_in_arr& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   arr_in_arr* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -2449,25 +2676,33 @@ void arr_in_arr::clear_test_onof() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr, _impl_._cached_size_),
-              false,
-          },
-          &arr_in_arr::MergeImpl,
-          &arr_in_arr::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    arr_in_arr::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_arr_in_arr_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &arr_in_arr::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &arr_in_arr::ByteSizeLong,
+                &arr_in_arr::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(arr_in_arr, _impl_._cached_size_),
+            false,
+        },
+        &arr_in_arr::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* arr_in_arr::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 5, 2, 30, 2> arr_in_arr::_table_ = {
@@ -2481,7 +2716,7 @@ const ::_pbi::TcParseTable<2, 5, 2, 30, 2> arr_in_arr::_table_ = {
     5,  // num_field_entries
     2,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_arr_in_arr_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -2541,115 +2776,138 @@ PROTOBUF_NOINLINE void arr_in_arr::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* arr_in_arr::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
-  if (!this->_internal_name().empty()) {
-    const std::string& _s = this->_internal_name();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr.name");
-    target = stream->WriteStringMaybeAliased(1, _s, target);
-  }
-
-  // repeated int32 int_arr = 2 [(.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    int byte_size = _impl_._int_arr_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt32Packed(
-          2, _internal_int_arr(), byte_size, target);
-    }
-  }
-
-  // repeated string str_arr = 3;
-  for (int i = 0, n = this->_internal_str_arr_size(); i < n; ++i) {
-    const auto& s = this->_internal_str_arr().Get(i);
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr.str_arr");
-    target = stream->WriteString(3, s, target);
-  }
-
-  switch (test_onof_case()) {
-    case kTestInfoRole: {
-      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-          11, *_impl_.test_onof_.test_info_role_, _impl_.test_onof_.test_info_role_->GetCachedSize(), target, stream);
-      break;
-    }
-    case kTestRoleUpgradeCfg: {
-      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-          12, *_impl_.test_onof_.test_role_upgrade_cfg_, _impl_.test_onof_.test_role_upgrade_cfg_->GetCachedSize(), target, stream);
-      break;
-    }
-    default:
-      break;
-  }
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr)
-  return target;
-}
-
-::size_t arr_in_arr::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:arr_in_arr)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated int32 int_arr = 2 [(.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_int_arr())
-    ;
-    _impl_._int_arr_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // repeated string str_arr = 3;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_str_arr().size());
-  for (int i = 0, n = _internal_str_arr().size(); i < n; ++i) {
-    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
-        _internal_str_arr().Get(i));
-  }
-  // string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
-  if (!this->_internal_name().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_name());
-  }
-
-  switch (test_onof_case()) {
-    // .role_cfg test_info_role = 11;
-    case kTestInfoRole: {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.test_onof_.test_info_role_);
-      break;
-    }
-    // .role_upgrade_cfg test_role_upgrade_cfg = 12;
-    case kTestRoleUpgradeCfg: {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.test_onof_.test_role_upgrade_cfg_);
-      break;
-    }
-    case TEST_ONOF_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* arr_in_arr::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const arr_in_arr& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* arr_in_arr::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const arr_in_arr& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
+          if (!this_._internal_name().empty()) {
+            const std::string& _s = this_._internal_name();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr.name");
+            target = stream->WriteStringMaybeAliased(1, _s, target);
+          }
+
+          // repeated int32 int_arr = 2 [(.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
+          {
+            int byte_size = this_._impl_._int_arr_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt32Packed(
+                  2, this_._internal_int_arr(), byte_size, target);
+            }
+          }
+
+          // repeated string str_arr = 3;
+          for (int i = 0, n = this_._internal_str_arr_size(); i < n; ++i) {
+            const auto& s = this_._internal_str_arr().Get(i);
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                s.data(), static_cast(s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr.str_arr");
+            target = stream->WriteString(3, s, target);
+          }
+
+          switch (this_.test_onof_case()) {
+            case kTestInfoRole: {
+              target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                  11, *this_._impl_.test_onof_.test_info_role_, this_._impl_.test_onof_.test_info_role_->GetCachedSize(), target,
+                  stream);
+              break;
+            }
+            case kTestRoleUpgradeCfg: {
+              target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                  12, *this_._impl_.test_onof_.test_role_upgrade_cfg_, this_._impl_.test_onof_.test_role_upgrade_cfg_->GetCachedSize(), target,
+                  stream);
+              break;
+            }
+            default:
+              break;
+          }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t arr_in_arr::ByteSizeLong(const MessageLite& base) {
+          const arr_in_arr& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t arr_in_arr::ByteSizeLong() const {
+          const arr_in_arr& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:arr_in_arr)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated int32 int_arr = 2 [(.org.xresloader.field_list_strip_option) = LIST_STRIP_NOTHING, (.org.xresloader.field_list_min_size) = "game_const_config.EN_GCC_UNKNOWN", (.org.xresloader.field_list_max_size) = "3"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_int_arr())
+              ;
+              this_._impl_._int_arr_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+            // repeated string str_arr = 3;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_str_arr().size());
+              for (int i = 0, n = this_._internal_str_arr().size(); i < n; ++i) {
+                total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
+                    this_._internal_str_arr().Get(i));
+              }
+            }
+          }
+           {
+            // string name = 1 [(.org.xresloader.field_description) = "This is a test name in array"];
+            if (!this_._internal_name().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_name());
+            }
+          }
+          switch (this_.test_onof_case()) {
+            // .role_cfg test_info_role = 11;
+            case kTestInfoRole: {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.test_onof_.test_info_role_);
+              break;
+            }
+            // .role_upgrade_cfg test_role_upgrade_cfg = 12;
+            case kTestRoleUpgradeCfg: {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.test_onof_.test_role_upgrade_cfg_);
+              break;
+            }
+            case TEST_ONOF_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void arr_in_arr::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -2731,7 +2989,11 @@ class test_msg_verifier::_Internal {
 };
 
 test_msg_verifier::test_msg_verifier(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:test_msg_verifier)
 }
@@ -2764,25 +3026,33 @@ inline void test_msg_verifier::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-test_msg_verifier::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_._cached_size_),
-              false,
-          },
-          &test_msg_verifier::MergeImpl,
-          &test_msg_verifier::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    test_msg_verifier::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_test_msg_verifier_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &test_msg_verifier::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &test_msg_verifier::ByteSizeLong,
+                &test_msg_verifier::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_._cached_size_),
+            false,
+        },
+        &test_msg_verifier::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* test_msg_verifier::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<0, 3, 0, 0, 7> test_msg_verifier::_table_ = {
@@ -2796,7 +3066,7 @@ const ::_pbi::TcParseTable<0, 3, 0, 0, 7> test_msg_verifier::_table_ = {
     3,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_test_msg_verifier_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -2812,7 +3082,7 @@ const ::_pbi::TcParseTable<0, 3, 0, 0, 7> test_msg_verifier::_table_ = {
     // uint32 test_id_1 = 10001;
     {PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_.test_id_1_), 0, 0,
     (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
-    // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
+    // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(test_msg_verifier, _impl_.test_id_2_), 0, 0,
     (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
     // uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
@@ -2837,92 +3107,105 @@ PROTOBUF_NOINLINE void test_msg_verifier::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* test_msg_verifier::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:test_msg_verifier)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* test_msg_verifier::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const test_msg_verifier& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* test_msg_verifier::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const test_msg_verifier& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:test_msg_verifier)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 test_id_1 = 10001;
+          if (this_._internal_test_id_1() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                10001, this_._internal_test_id_1(), target);
+          }
+
+          // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
+          if (this_._internal_test_id_2() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                10002, this_._internal_test_id_2(), target);
+          }
+
+          // uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
+          if (this_._internal_test_id_3() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                10003, this_._internal_test_id_3(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:test_msg_verifier)
+          return target;
+        }
 
-  // uint32 test_id_1 = 10001;
-  if (this->_internal_test_id_1() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        10001, this->_internal_test_id_1(), target);
-  }
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t test_msg_verifier::ByteSizeLong(const MessageLite& base) {
+          const test_msg_verifier& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t test_msg_verifier::ByteSizeLong() const {
+          const test_msg_verifier& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:test_msg_verifier)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // uint32 test_id_1 = 10001;
+            if (this_._internal_test_id_1() != 0) {
+              total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_test_id_1());
+            }
+            // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
+            if (this_._internal_test_id_2() != 0) {
+              total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_test_id_2());
+            }
+            // uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
+            if (this_._internal_test_id_3() != 0) {
+              total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_test_id_3());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
-  // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
-  if (this->_internal_test_id_2() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        10002, this->_internal_test_id_2(), target);
-  }
+void test_msg_verifier::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
+  auto* const _this = static_cast(&to_msg);
+  auto& from = static_cast(from_msg);
+  // @@protoc_insertion_point(class_specific_merge_from_start:test_msg_verifier)
+  ABSL_DCHECK_NE(&from, _this);
+  ::uint32_t cached_has_bits = 0;
+  (void) cached_has_bits;
 
-  // uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
-  if (this->_internal_test_id_3() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        10003, this->_internal_test_id_3(), target);
+  if (from._internal_test_id_1() != 0) {
+    _this->_impl_.test_id_1_ = from._impl_.test_id_1_;
   }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+  if (from._internal_test_id_2() != 0) {
+    _this->_impl_.test_id_2_ = from._impl_.test_id_2_;
+  }
+  if (from._internal_test_id_3() != 0) {
+    _this->_impl_.test_id_3_ = from._impl_.test_id_3_;
   }
-  // @@protoc_insertion_point(serialize_to_array_end:test_msg_verifier)
-  return target;
-}
-
-::size_t test_msg_verifier::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:test_msg_verifier)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // uint32 test_id_1 = 10001;
-  if (this->_internal_test_id_1() != 0) {
-    total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
-                                    this->_internal_test_id_1());
-  }
-
-  // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
-  if (this->_internal_test_id_2() != 0) {
-    total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
-                                    this->_internal_test_id_2());
-  }
-
-  // uint32 test_id_3 = 10003 [(.org.xresloader.field_allow_missing_in_plain_mode) = true];
-  if (this->_internal_test_id_3() != 0) {
-    total_size += 3 + ::_pbi::WireFormatLite::UInt32Size(
-                                    this->_internal_test_id_3());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
-
-
-void test_msg_verifier::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
-  auto* const _this = static_cast(&to_msg);
-  auto& from = static_cast(from_msg);
-  // @@protoc_insertion_point(class_specific_merge_from_start:test_msg_verifier)
-  ABSL_DCHECK_NE(&from, _this);
-  ::uint32_t cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  if (from._internal_test_id_1() != 0) {
-    _this->_impl_.test_id_1_ = from._impl_.test_id_1_;
-  }
-  if (from._internal_test_id_2() != 0) {
-    _this->_impl_.test_id_2_ = from._impl_.test_id_2_;
-  }
-  if (from._internal_test_id_3() != 0) {
-    _this->_impl_.test_id_3_ = from._impl_.test_id_3_;
-  }
-  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
+  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 }
 
 void test_msg_verifier::CopyFrom(const test_msg_verifier& from) {
@@ -2949,52 +3232,166 @@ ::google::protobuf::Metadata test_msg_verifier::GetMetadata() const {
 }
 // ===================================================================
 
-arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse() {}
-arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_cfg_TestMapIsEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MergeImpl,
-          &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse() : SuperType() {}
+              arr_in_arr_cfg_TestMapIsEntry_DoNotUse::arr_in_arr_cfg_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  arr_in_arr_cfg_TestMapIsEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_arr_in_arr_cfg_TestMapIsEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &arr_in_arr_cfg_TestMapIsEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* arr_in_arr_cfg_TestMapIsEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 43, 2> arr_in_arr_cfg_TestMapIsEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    0,  // num_aux_entries
+    offsetof(decltype(_table_), field_names),  // no aux_entries
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::arr_in_arr_cfg_TestMapIsEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // string value = 2;
+    {::_pbi::TcParser::FastUS1,
+     {18, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.value_)}},
+    // int32 key = 1;
+    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_), 63>(),
+     {8, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // int32 key = 1;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.key_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+    // string value = 2;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapIsEntry_DoNotUse, _impl_.value_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+  }},
+  // no aux_entries
+  {{
+    "\35\0\5\0\0\0\0\0"
+    "arr_in_arr_cfg.TestMapIsEntry"
+    "value"
+  }},
+};
+
 // ===================================================================
 
-arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse() {}
-arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_cfg_TestMapSmEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MergeImpl,
-          &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse() : SuperType() {}
+              arr_in_arr_cfg_TestMapSmEntry_DoNotUse::arr_in_arr_cfg_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  arr_in_arr_cfg_TestMapSmEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_arr_in_arr_cfg_TestMapSmEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &arr_in_arr_cfg_TestMapSmEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* arr_in_arr_cfg_TestMapSmEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 1, 41, 2> arr_in_arr_cfg_TestMapSmEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    1,  // num_aux_entries
+    offsetof(decltype(_table_), aux_entries),
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::arr_in_arr_cfg_TestMapSmEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // .dep2_cfg value = 2;
+    {::_pbi::TcParser::FastMtS1,
+     {18, 0, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.value_)}},
+    // string key = 1;
+    {::_pbi::TcParser::FastUS1,
+     {10, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // string key = 1;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.key_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+    // .dep2_cfg value = 2;
+    {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg_TestMapSmEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
+  }}, {{
+    {::_pbi::TcParser::GetTable<::dep2_cfg>()},
+  }}, {{
+    "\35\3\0\0\0\0\0\0"
+    "arr_in_arr_cfg.TestMapSmEntry"
+    "key"
+  }},
+};
+
 // ===================================================================
 
 class arr_in_arr_cfg::_Internal {
@@ -3010,7 +3407,11 @@ void arr_in_arr_cfg::clear_test_map_sm() {
   _impl_.test_map_sm_.Clear();
 }
 arr_in_arr_cfg::arr_in_arr_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:arr_in_arr_cfg)
 }
@@ -3031,7 +3432,11 @@ inline PROTOBUF_NDEBUG_INLINE arr_in_arr_cfg::Impl_::Impl_(
 arr_in_arr_cfg::arr_in_arr_cfg(
     ::google::protobuf::Arena* arena,
     const arr_in_arr_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   arr_in_arr_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -3078,25 +3483,33 @@ inline void arr_in_arr_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-arr_in_arr_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_._cached_size_),
-              false,
-          },
-          &arr_in_arr_cfg::MergeImpl,
-          &arr_in_arr_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    arr_in_arr_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_arr_in_arr_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &arr_in_arr_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &arr_in_arr_cfg::ByteSizeLong,
+                &arr_in_arr_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_._cached_size_),
+            false,
+        },
+        &arr_in_arr_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* arr_in_arr_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 8, 6, 53, 2> arr_in_arr_cfg::_table_ = {
@@ -3110,7 +3523,7 @@ const ::_pbi::TcParseTable<3, 8, 6, 53, 2> arr_in_arr_cfg::_table_ = {
     8,  // num_field_entries
     6,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_arr_in_arr_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -3121,10 +3534,10 @@ const ::_pbi::TcParseTable<3, 8, 6, 53, 2> arr_in_arr_cfg::_table_ = {
     // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
     {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(arr_in_arr_cfg, _impl_.id_), 63>(),
      {8, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.id_)}},
-    // repeated .arr_in_arr arr = 2;
+    // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
     {::_pbi::TcParser::FastMtR1,
      {18, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.arr_)}},
-    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
     {::_pbi::TcParser::FastV32P1,
      {26, 63, 0, PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.test_plain_int_arr_)}},
     // repeated .cost_type test_plain_enum_arr = 4;
@@ -3143,10 +3556,10 @@ const ::_pbi::TcParseTable<3, 8, 6, 53, 2> arr_in_arr_cfg::_table_ = {
     // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
     {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.id_), -1, 0,
     (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
-    // repeated .arr_in_arr arr = 2;
+    // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.arr_), -1, 0,
     (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
-    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+    // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(arr_in_arr_cfg, _impl_.test_plain_int_arr_), -1, 0,
     (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
     // repeated .cost_type test_plain_enum_arr = 4;
@@ -3208,209 +3621,241 @@ PROTOBUF_NOINLINE void arr_in_arr_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* arr_in_arr_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // repeated .arr_in_arr arr = 2;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            2, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    int byte_size = _impl_._test_plain_int_arr_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt32Packed(
-          3, _internal_test_plain_int_arr(), byte_size, target);
-    }
-  }
-
-  // repeated .cost_type test_plain_enum_arr = 4;
-  {
-    std::size_t byte_size = _impl_._test_plain_enum_arr_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteEnumPacked(4, _internal_test_plain_enum_arr(),
-                                       byte_size, target);
-    }
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        5, *_impl_.test_plain_msg_, _impl_.test_plain_msg_->GetCachedSize(), target, stream);
-  }
-
-  // repeated .test_msg_verifier test_plain_msg_arr = 6;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_test_plain_msg_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_test_plain_msg_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            6, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // map test_map_is = 7;
-  if (!_internal_test_map_is().empty()) {
-    using MapType = ::google::protobuf::Map<::int32_t, std::string>;
-    using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>;
-    const auto& field = _internal_test_map_is();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.second.data(), static_cast(entry.second.length()),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* arr_in_arr_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const arr_in_arr_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* arr_in_arr_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const arr_in_arr_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:arr_in_arr_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    2, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
+          {
+            int byte_size = this_._impl_._test_plain_int_arr_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt32Packed(
+                  3, this_._internal_test_plain_int_arr(), byte_size, target);
+            }
+          }
+
+          // repeated .cost_type test_plain_enum_arr = 4;
+          {
+            std::size_t byte_size =
+                                              this_._impl_._test_plain_enum_arr_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteEnumPacked(
+                  4, this_._internal_test_plain_enum_arr(), byte_size, target);
+            }
+          }
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                5, *this_._impl_.test_plain_msg_, this_._impl_.test_plain_msg_->GetCachedSize(), target,
+                stream);
+          }
+
+          // repeated .test_msg_verifier test_plain_msg_arr = 6;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_test_plain_msg_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_test_plain_msg_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    6, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // map test_map_is = 7;
+          if (!this_._internal_test_map_is().empty()) {
+            using MapType = ::google::protobuf::Map<::int32_t, std::string>;
+            using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
+                                           _pbi::WireFormatLite::TYPE_INT32,
+                                           _pbi::WireFormatLite::TYPE_STRING>;
+            const auto& field = this_._internal_test_map_is();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr_cfg.test_map_is");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.second.data(), static_cast(entry.second.length()),
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr_cfg.test_map_is");
-      }
-    }
-  }
-
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  if (!_internal_test_map_sm().empty()) {
-    using MapType = ::google::protobuf::Map;
-    using WireHelper = _pbi::MapEntryFuncs;
-    const auto& field = _internal_test_map_sm();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.first.data(), static_cast(entry.first.length()),
+              }
+            }
+          }
+
+          // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+          if (!this_._internal_test_map_sm().empty()) {
+            using MapType = ::google::protobuf::Map;
+            using WireHelper = _pbi::MapEntryFuncs;
+            const auto& field = this_._internal_test_map_sm();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr_cfg.test_map_sm");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.first.data(), static_cast(entry.first.length()),
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "arr_in_arr_cfg.test_map_sm");
-      }
-    }
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr_cfg)
-  return target;
-}
-
-::size_t arr_in_arr_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:arr_in_arr_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .arr_in_arr arr = 2;
-  total_size += 1UL * this->_internal_arr_size();
-  for (const auto& msg : this->_internal_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_test_plain_int_arr())
-    ;
-    _impl_._test_plain_int_arr_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // repeated .cost_type test_plain_enum_arr = 4;
-  {
-    std::size_t data_size = 0;
-    auto count = static_cast(this->_internal_test_plain_enum_arr_size());
-
-    for (std::size_t i = 0; i < count; ++i) {
-      data_size += ::_pbi::WireFormatLite::EnumSize(
-          this->_internal_test_plain_enum_arr().Get(static_cast(i)));
-    }
-    total_size += data_size;
-    if (data_size > 0) {
-      total_size += 1;
-      total_size += ::_pbi::WireFormatLite::Int32Size(
-          static_cast(data_size));
-    }
-    _impl_._test_plain_enum_arr_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-  }
-  // repeated .test_msg_verifier test_plain_msg_arr = 6;
-  total_size += 1UL * this->_internal_test_plain_msg_arr_size();
-  for (const auto& msg : this->_internal_test_plain_msg_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // map test_map_is = 7;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_is_size());
-  for (const auto& entry : _internal_test_map_is()) {
-    total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
-  }
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_sm_size());
-  for (const auto& entry : _internal_test_map_sm()) {
-    total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
-  }
-  // .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size +=
-        1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.test_plain_msg_);
-  }
-
-  // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+              }
+            }
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:arr_in_arr_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t arr_in_arr_cfg::ByteSizeLong(const MessageLite& base) {
+          const arr_in_arr_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t arr_in_arr_cfg::ByteSizeLong() const {
+          const arr_in_arr_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:arr_in_arr_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
+             {
+              total_size += 1UL * this_._internal_arr_size();
+              for (const auto& msg : this_._internal_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_test_plain_int_arr())
+              ;
+              this_._impl_._test_plain_int_arr_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+            // repeated .cost_type test_plain_enum_arr = 4;
+             {
+              std::size_t data_size = 0;
+              auto count = static_cast(this_._internal_test_plain_enum_arr_size());
+
+              for (std::size_t i = 0; i < count; ++i) {
+                data_size += ::_pbi::WireFormatLite::EnumSize(
+                    this_._internal_test_plain_enum_arr().Get(static_cast(i)));
+              }
+              total_size += data_size;
+              if (data_size > 0) {
+                total_size += 1;
+                total_size += ::_pbi::WireFormatLite::Int32Size(
+                    static_cast(data_size));
+              }
+              this_._impl_._test_plain_enum_arr_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
+            }
+            // repeated .test_msg_verifier test_plain_msg_arr = 6;
+             {
+              total_size += 1UL * this_._internal_test_plain_msg_arr_size();
+              for (const auto& msg : this_._internal_test_plain_msg_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // map test_map_is = 7;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_is_size());
+              for (const auto& entry : this_._internal_test_map_is()) {
+                total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
+                                               _pbi::WireFormatLite::TYPE_INT32,
+                                               _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+            // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_sm_size());
+              for (const auto& entry : this_._internal_test_map_sm()) {
+                total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+          }
+           {
+            // .test_msg_verifier test_plain_msg = 5 [(.org.xresloader.field_separator) = "&"];
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.test_plain_msg_);
+            }
+          }
+           {
+            // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void arr_in_arr_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -3484,7 +3929,11 @@ class event_reward_item::_Internal {
 };
 
 event_reward_item::event_reward_item(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:event_reward_item)
 }
@@ -3498,7 +3947,11 @@ inline PROTOBUF_NDEBUG_INLINE event_reward_item::Impl_::Impl_(
 event_reward_item::event_reward_item(
     ::google::protobuf::Arena* arena,
     const event_reward_item& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   event_reward_item* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -3573,25 +4026,33 @@ void event_reward_item::clear_nested() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-event_reward_item::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(event_reward_item, _impl_._cached_size_),
-              false,
-          },
-          &event_reward_item::MergeImpl,
-          &event_reward_item::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    event_reward_item::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_event_reward_item_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &event_reward_item::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &event_reward_item::ByteSizeLong,
+                &event_reward_item::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(event_reward_item, _impl_._cached_size_),
+            false,
+        },
+        &event_reward_item::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* event_reward_item::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 4, 0, 37, 2> event_reward_item::_table_ = {
@@ -3605,7 +4066,7 @@ const ::_pbi::TcParseTable<1, 4, 0, 37, 2> event_reward_item::_table_ = {
     4,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_event_reward_item_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -3656,94 +4117,108 @@ PROTOBUF_NOINLINE void event_reward_item::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* event_reward_item::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:event_reward_item)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 item_id = 1;
-  if (this->_internal_item_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_item_id(), target);
-  }
-
-  // uint32 item_count = 2;
-  if (this->_internal_item_count() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_item_count(), target);
-  }
-
-  switch (nested_case()) {
-    case kNestedNote: {
-      const std::string& _s = this->_internal_nested_note();
-      ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-          _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "event_reward_item.nested_note");
-      target = stream->WriteStringMaybeAliased(11, _s, target);
-      break;
-    }
-    case kNestedEnumType: {
-      target = stream->EnsureSpace(target);
-      target = ::_pbi::WireFormatLite::WriteEnumToArray(
-          12, this->_internal_nested_enum_type(), target);
-      break;
-    }
-    default:
-      break;
-  }
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:event_reward_item)
-  return target;
-}
-
-::size_t event_reward_item::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:event_reward_item)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // uint32 item_id = 1;
-  if (this->_internal_item_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_item_id());
-  }
-
-  // uint32 item_count = 2;
-  if (this->_internal_item_count() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_item_count());
-  }
-
-  switch (nested_case()) {
-    // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
-    case kNestedNote: {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_nested_note());
-      break;
-    }
-    // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
-    case kNestedEnumType: {
-      total_size += 1 +
-                    ::_pbi::WireFormatLite::EnumSize(this->_internal_nested_enum_type());
-      break;
-    }
-    case NESTED_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* event_reward_item::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const event_reward_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* event_reward_item::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const event_reward_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:event_reward_item)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 item_id = 1;
+          if (this_._internal_item_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_item_id(), target);
+          }
+
+          // uint32 item_count = 2;
+          if (this_._internal_item_count() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_item_count(), target);
+          }
+
+          switch (this_.nested_case()) {
+            case kNestedNote: {
+              const std::string& _s = this_._internal_nested_note();
+              ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                  _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "event_reward_item.nested_note");
+              target = stream->WriteStringMaybeAliased(11, _s, target);
+              break;
+            }
+            case kNestedEnumType: {
+              target = stream->EnsureSpace(target);
+              target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                  12, this_._internal_nested_enum_type(), target);
+              break;
+            }
+            default:
+              break;
+          }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:event_reward_item)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t event_reward_item::ByteSizeLong(const MessageLite& base) {
+          const event_reward_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t event_reward_item::ByteSizeLong() const {
+          const event_reward_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:event_reward_item)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // uint32 item_id = 1;
+            if (this_._internal_item_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_item_id());
+            }
+            // uint32 item_count = 2;
+            if (this_._internal_item_count() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_item_count());
+            }
+          }
+          switch (this_.nested_case()) {
+            // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
+            case kNestedNote: {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_nested_note());
+              break;
+            }
+            // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
+            case kNestedEnumType: {
+              total_size += 1 +
+                            ::_pbi::WireFormatLite::EnumSize(this_._internal_nested_enum_type());
+              break;
+            }
+            case NESTED_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void event_reward_item::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -3822,7 +4297,11 @@ class event_rule_item::_Internal {
 };
 
 event_rule_item::event_rule_item(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:event_rule_item)
 }
@@ -3836,7 +4315,11 @@ inline PROTOBUF_NDEBUG_INLINE event_rule_item::Impl_::Impl_(
 event_rule_item::event_rule_item(
     ::google::protobuf::Arena* arena,
     const event_rule_item& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   event_rule_item* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -3911,25 +4394,33 @@ void event_rule_item::clear_nested() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-event_rule_item::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(event_rule_item, _impl_._cached_size_),
-              false,
-          },
-          &event_rule_item::MergeImpl,
-          &event_rule_item::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    event_rule_item::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_event_rule_item_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &event_rule_item::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &event_rule_item::ByteSizeLong,
+                &event_rule_item::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(event_rule_item, _impl_._cached_size_),
+            false,
+        },
+        &event_rule_item::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* event_rule_item::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 4, 0, 35, 2> event_rule_item::_table_ = {
@@ -3943,7 +4434,7 @@ const ::_pbi::TcParseTable<1, 4, 0, 35, 2> event_rule_item::_table_ = {
     4,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_event_rule_item_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -3994,94 +4485,108 @@ PROTOBUF_NOINLINE void event_rule_item::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* event_rule_item::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:event_rule_item)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 rule_id = 1;
-  if (this->_internal_rule_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_rule_id(), target);
-  }
-
-  // uint32 rule_param = 2;
-  if (this->_internal_rule_param() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_rule_param(), target);
-  }
-
-  switch (nested_case()) {
-    case kNestedNote: {
-      const std::string& _s = this->_internal_nested_note();
-      ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-          _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "event_rule_item.nested_note");
-      target = stream->WriteStringMaybeAliased(11, _s, target);
-      break;
-    }
-    case kNestedEnumType: {
-      target = stream->EnsureSpace(target);
-      target = ::_pbi::WireFormatLite::WriteEnumToArray(
-          12, this->_internal_nested_enum_type(), target);
-      break;
-    }
-    default:
-      break;
-  }
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:event_rule_item)
-  return target;
-}
-
-::size_t event_rule_item::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:event_rule_item)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // uint32 rule_id = 1;
-  if (this->_internal_rule_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_rule_id());
-  }
-
-  // uint32 rule_param = 2;
-  if (this->_internal_rule_param() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_rule_param());
-  }
-
-  switch (nested_case()) {
-    // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
-    case kNestedNote: {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_nested_note());
-      break;
-    }
-    // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
-    case kNestedEnumType: {
-      total_size += 1 +
-                    ::_pbi::WireFormatLite::EnumSize(this->_internal_nested_enum_type());
-      break;
-    }
-    case NESTED_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* event_rule_item::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const event_rule_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* event_rule_item::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const event_rule_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:event_rule_item)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 rule_id = 1;
+          if (this_._internal_rule_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_rule_id(), target);
+          }
+
+          // uint32 rule_param = 2;
+          if (this_._internal_rule_param() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_rule_param(), target);
+          }
+
+          switch (this_.nested_case()) {
+            case kNestedNote: {
+              const std::string& _s = this_._internal_nested_note();
+              ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                  _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "event_rule_item.nested_note");
+              target = stream->WriteStringMaybeAliased(11, _s, target);
+              break;
+            }
+            case kNestedEnumType: {
+              target = stream->EnsureSpace(target);
+              target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                  12, this_._internal_nested_enum_type(), target);
+              break;
+            }
+            default:
+              break;
+          }
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:event_rule_item)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t event_rule_item::ByteSizeLong(const MessageLite& base) {
+          const event_rule_item& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t event_rule_item::ByteSizeLong() const {
+          const event_rule_item& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:event_rule_item)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // uint32 rule_id = 1;
+            if (this_._internal_rule_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_rule_id());
+            }
+            // uint32 rule_param = 2;
+            if (this_._internal_rule_param() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_rule_param());
+            }
+          }
+          switch (this_.nested_case()) {
+            // string nested_note = 11 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
+            case kNestedNote: {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_nested_note());
+              break;
+            }
+            // .cost_type nested_enum_type = 12 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
+            case kNestedEnumType: {
+              total_size += 1 +
+                            ::_pbi::WireFormatLite::EnumSize(this_._internal_nested_enum_type());
+              break;
+            }
+            case NESTED_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void event_rule_item::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -4177,7 +4682,11 @@ void event_cfg::set_allocated_item(::event_reward_item* item) {
   // @@protoc_insertion_point(field_set_allocated:event_cfg.item)
 }
 event_cfg::event_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:event_cfg)
 }
@@ -4195,7 +4704,11 @@ inline PROTOBUF_NDEBUG_INLINE event_cfg::Impl_::Impl_(
 event_cfg::event_cfg(
     ::google::protobuf::Arena* arena,
     const event_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   event_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -4325,25 +4838,33 @@ void event_cfg::clear_unlock_type() {
 }
 
 
-const ::google::protobuf::MessageLite::ClassData*
-event_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(event_cfg, _impl_._cached_size_),
-              false,
-          },
-          &event_cfg::MergeImpl,
-          &event_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    event_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_event_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &event_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &event_cfg::ByteSizeLong,
+                &event_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(event_cfg, _impl_._cached_size_),
+            false,
+        },
+        &event_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* event_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 11, 5, 30, 11> event_cfg::_table_ = {
@@ -4357,7 +4878,7 @@ const ::_pbi::TcParseTable<3, 11, 5, 30, 11> event_cfg::_table_ = {
     11,  // num_field_entries
     5,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_event_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -4381,7 +4902,7 @@ const ::_pbi::TcParseTable<3, 11, 5, 30, 11> event_cfg::_table_ = {
     // .event_rule_item rule = 6;
     {::_pbi::TcParser::FastMtS1,
      {50, 0, 0, PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.rule_)}},
-    // .event_rule_item specify_field = 7;
+    // .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
     {::_pbi::TcParser::FastMtS1,
      {58, 1, 1, PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.specify_field_)}},
   }}, {{
@@ -4398,7 +4919,7 @@ const ::_pbi::TcParseTable<3, 11, 5, 30, 11> event_cfg::_table_ = {
     // .event_rule_item rule = 6;
     {PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.rule_), _Internal::kHasBitsOffset + 0, 0,
     (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
-    // .event_rule_item specify_field = 7;
+    // .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
     {PROTOBUF_FIELD_OFFSET(event_cfg, _impl_.specify_field_), _Internal::kHasBitsOffset + 1, 1,
     (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
     // .event_reward_item item = 11 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\351\201\223\345\205\267"];
@@ -4464,195 +4985,216 @@ PROTOBUF_NOINLINE void event_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* event_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:event_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_process() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_process(), target);
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .event_rule_item rule = 6;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        6, *_impl_.rule_, _impl_.rule_->GetCachedSize(), target, stream);
-  }
-
-  // .event_rule_item specify_field = 7;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        7, *_impl_.specify_field_, _impl_.specify_field_->GetCachedSize(), target, stream);
-  }
-
-  switch (reward_case()) {
-    case kItem: {
-      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-          11, *_impl_.reward_.item_, _impl_.reward_.item_->GetCachedSize(), target, stream);
-      break;
-    }
-    case kUserExp: {
-      target = ::google::protobuf::internal::WireFormatLite::
-          WriteInt64ToArrayWithField<12>(
-              stream, this->_internal_user_exp(), target);
-      break;
-    }
-    case kNote: {
-      const std::string& _s = this->_internal_note();
-      ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-          _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "event_cfg.note");
-      target = stream->WriteStringMaybeAliased(13, _s, target);
-      break;
-    }
-    case kEnumType: {
-      target = stream->EnsureSpace(target);
-      target = ::_pbi::WireFormatLite::WriteEnumToArray(
-          14, this->_internal_enum_type(), target);
-      break;
-    }
-    default:
-      break;
-  }
-  // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
-  if (unlock_type_case() == kUserLevel) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        51, this->_internal_user_level(), target);
-  }
-
-  // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_test_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_test_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            91, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_test_empty_arr_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_test_empty_arr().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            92, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:event_cfg)
-  return target;
-}
-
-::size_t event_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:event_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
-  total_size += 2UL * this->_internal_test_arr_size();
-  for (const auto& msg : this->_internal_test_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
-  total_size += 2UL * this->_internal_test_empty_arr_size();
-  for (const auto& msg : this->_internal_test_empty_arr()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // .event_rule_item rule = 6;
-    if (cached_has_bits & 0x00000001u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.rule_);
-    }
-
-    // .event_rule_item specify_field = 7;
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.specify_field_);
-    }
-
-  }
-  // uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  // uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_process() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_process());
-  }
-
-  switch (reward_case()) {
-    // .event_reward_item item = 11 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\351\201\223\345\205\267"];
-    case kItem: {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.reward_.item_);
-      break;
-    }
-    // int64 user_exp = 12 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\347\273\217\351\252\214"];
-    case kUserExp: {
-      total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
-          this->_internal_user_exp());
-      break;
-    }
-    // string note = 13 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
-    case kNote: {
-      total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                      this->_internal_note());
-      break;
-    }
-    // .cost_type enum_type = 14 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
-    case kEnumType: {
-      total_size += 1 +
-                    ::_pbi::WireFormatLite::EnumSize(this->_internal_enum_type());
-      break;
-    }
-    case REWARD_NOT_SET: {
-      break;
-    }
-  }
-  switch (unlock_type_case()) {
-    // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
-    case kUserLevel: {
-      total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
-                                      this->_internal_user_level());
-      break;
-    }
-    case UNLOCK_TYPE_NOT_SET: {
-      break;
-    }
-  }
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* event_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const event_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* event_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const event_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:event_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
+          if (this_._internal_process() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_process(), target);
+          }
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .event_rule_item rule = 6;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                6, *this_._impl_.rule_, this_._impl_.rule_->GetCachedSize(), target,
+                stream);
+          }
+
+          // .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                7, *this_._impl_.specify_field_, this_._impl_.specify_field_->GetCachedSize(), target,
+                stream);
+          }
+
+          switch (this_.reward_case()) {
+            case kItem: {
+              target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                  11, *this_._impl_.reward_.item_, this_._impl_.reward_.item_->GetCachedSize(), target,
+                  stream);
+              break;
+            }
+            case kUserExp: {
+              target = ::google::protobuf::internal::WireFormatLite::
+                  WriteInt64ToArrayWithField<12>(
+                      stream, this_._internal_user_exp(), target);
+              break;
+            }
+            case kNote: {
+              const std::string& _s = this_._internal_note();
+              ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                  _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "event_cfg.note");
+              target = stream->WriteStringMaybeAliased(13, _s, target);
+              break;
+            }
+            case kEnumType: {
+              target = stream->EnsureSpace(target);
+              target = ::_pbi::WireFormatLite::WriteEnumToArray(
+                  14, this_._internal_enum_type(), target);
+              break;
+            }
+            default:
+              break;
+          }
+          // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
+          if (this_.unlock_type_case() == kUserLevel) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                51, this_._internal_user_level(), target);
+          }
+
+          // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_test_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_test_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    91, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_test_empty_arr_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_test_empty_arr().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    92, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:event_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t event_cfg::ByteSizeLong(const MessageLite& base) {
+          const event_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t event_cfg::ByteSizeLong() const {
+          const event_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:event_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .event_rule_item test_arr = 91 [(.org.xresloader.field_separator) = ";"];
+             {
+              total_size += 2UL * this_._internal_test_arr_size();
+              for (const auto& msg : this_._internal_test_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated .event_rule_item test_empty_arr = 92 [(.org.xresloader.field_separator) = ";"];
+             {
+              total_size += 2UL * this_._internal_test_empty_arr_size();
+              for (const auto& msg : this_._internal_test_empty_arr()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // .event_rule_item rule = 6;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.rule_);
+            }
+            // .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.specify_field_);
+            }
+          }
+           {
+            // uint32 id = 1 [(.org.xresloader.validator) = "custom_rule4", (.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 100];
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // uint32 process = 2 [(.org.xresloader.field_unique_tag) = "unique_tag", (.org.xresloader.field_not_null) = true, (.org.xresloader.ue.key_tag) = 1];
+            if (this_._internal_process() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_process());
+            }
+          }
+          switch (this_.reward_case()) {
+            // .event_reward_item item = 11 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\351\201\223\345\205\267"];
+            case kItem: {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.reward_.item_);
+              break;
+            }
+            // int64 user_exp = 12 [(.org.xresloader.field_alias) = "\345\245\226\345\212\261\347\273\217\351\252\214"];
+            case kUserExp: {
+              total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
+                  this_._internal_user_exp());
+              break;
+            }
+            // string note = 13 [(.org.xresloader.field_alias) = "\346\217\217\350\277\260\346\226\207\346\234\254"];
+            case kNote: {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_note());
+              break;
+            }
+            // .cost_type enum_type = 14 [(.org.xresloader.field_alias) = "\350\264\247\345\270\201\347\261\273\345\236\213"];
+            case kEnumType: {
+              total_size += 1 +
+                            ::_pbi::WireFormatLite::EnumSize(this_._internal_enum_type());
+              break;
+            }
+            case REWARD_NOT_SET: {
+              break;
+            }
+          }
+          switch (this_.unlock_type_case()) {
+            // uint32 user_level = 51 [(.org.xresloader.field_alias) = "\347\216\251\345\256\266\347\255\211\347\272\247"];
+            case kUserLevel: {
+              total_size += 2 + ::_pbi::WireFormatLite::UInt32Size(
+                                              this_._internal_user_level());
+              break;
+            }
+            case UNLOCK_TYPE_NOT_SET: {
+              break;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void event_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -4800,7 +5342,11 @@ void keep_or_strip_empty_list_cfg::clear_array_plain_msg() {
   _impl_.array_plain_msg_.Clear();
 }
 keep_or_strip_empty_list_cfg::keep_or_strip_empty_list_cfg(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:keep_or_strip_empty_list_cfg)
 }
@@ -4818,7 +5364,11 @@ inline PROTOBUF_NDEBUG_INLINE keep_or_strip_empty_list_cfg::Impl_::Impl_(
 keep_or_strip_empty_list_cfg::keep_or_strip_empty_list_cfg(
     ::google::protobuf::Arena* arena,
     const keep_or_strip_empty_list_cfg& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   keep_or_strip_empty_list_cfg* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -4853,25 +5403,33 @@ inline void keep_or_strip_empty_list_cfg::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-keep_or_strip_empty_list_cfg::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(keep_or_strip_empty_list_cfg, _impl_._cached_size_),
-              false,
-          },
-          &keep_or_strip_empty_list_cfg::MergeImpl,
-          &keep_or_strip_empty_list_cfg::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    keep_or_strip_empty_list_cfg::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_keep_or_strip_empty_list_cfg_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &keep_or_strip_empty_list_cfg::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &keep_or_strip_empty_list_cfg::ByteSizeLong,
+                &keep_or_strip_empty_list_cfg::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(keep_or_strip_empty_list_cfg, _impl_._cached_size_),
+            false,
+        },
+        &keep_or_strip_empty_list_cfg::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* keep_or_strip_empty_list_cfg::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 5, 2, 0, 2> keep_or_strip_empty_list_cfg::_table_ = {
@@ -4885,7 +5443,7 @@ const ::_pbi::TcParseTable<3, 5, 2, 0, 2> keep_or_strip_empty_list_cfg::_table_
     5,  // num_field_entries
     2,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_keep_or_strip_empty_list_cfg_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -4950,123 +5508,146 @@ PROTOBUF_NOINLINE void keep_or_strip_empty_list_cfg::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* keep_or_strip_empty_list_cfg::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:keep_or_strip_empty_list_cfg)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // repeated .dep2_cfg array_msg = 2;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_array_msg_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_array_msg().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            2, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated .dep2_cfg array_plain_msg = 3;
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_array_plain_msg_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_array_plain_msg().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            3, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated int32 array_int32 = 4;
-  {
-    int byte_size = _impl_._array_int32_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt32Packed(
-          4, _internal_array_int32(), byte_size, target);
-    }
-  }
-
-  // repeated int64 array_int64 = 5;
-  {
-    int byte_size = _impl_._array_int64_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt64Packed(
-          5, _internal_array_int64(), byte_size, target);
-    }
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:keep_or_strip_empty_list_cfg)
-  return target;
-}
-
-::size_t keep_or_strip_empty_list_cfg::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:keep_or_strip_empty_list_cfg)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .dep2_cfg array_msg = 2;
-  total_size += 1UL * this->_internal_array_msg_size();
-  for (const auto& msg : this->_internal_array_msg()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated .dep2_cfg array_plain_msg = 3;
-  total_size += 1UL * this->_internal_array_plain_msg_size();
-  for (const auto& msg : this->_internal_array_plain_msg()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated int32 array_int32 = 4;
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_array_int32())
-    ;
-    _impl_._array_int32_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // repeated int64 array_int64 = 5;
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
-        this->_internal_array_int64())
-    ;
-    _impl_._array_int64_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* keep_or_strip_empty_list_cfg::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const keep_or_strip_empty_list_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* keep_or_strip_empty_list_cfg::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const keep_or_strip_empty_list_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:keep_or_strip_empty_list_cfg)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // repeated .dep2_cfg array_msg = 2;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_array_msg_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_array_msg().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    2, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated .dep2_cfg array_plain_msg = 3;
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_array_plain_msg_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_array_plain_msg().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    3, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated int32 array_int32 = 4;
+          {
+            int byte_size = this_._impl_._array_int32_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt32Packed(
+                  4, this_._internal_array_int32(), byte_size, target);
+            }
+          }
+
+          // repeated int64 array_int64 = 5;
+          {
+            int byte_size = this_._impl_._array_int64_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt64Packed(
+                  5, this_._internal_array_int64(), byte_size, target);
+            }
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:keep_or_strip_empty_list_cfg)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t keep_or_strip_empty_list_cfg::ByteSizeLong(const MessageLite& base) {
+          const keep_or_strip_empty_list_cfg& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t keep_or_strip_empty_list_cfg::ByteSizeLong() const {
+          const keep_or_strip_empty_list_cfg& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:keep_or_strip_empty_list_cfg)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .dep2_cfg array_msg = 2;
+             {
+              total_size += 1UL * this_._internal_array_msg_size();
+              for (const auto& msg : this_._internal_array_msg()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated .dep2_cfg array_plain_msg = 3;
+             {
+              total_size += 1UL * this_._internal_array_plain_msg_size();
+              for (const auto& msg : this_._internal_array_plain_msg()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated int32 array_int32 = 4;
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_array_int32())
+              ;
+              this_._impl_._array_int32_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+            // repeated int64 array_int64 = 5;
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
+                  this_._internal_array_int64())
+              ;
+              this_._impl_._array_int64_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+          }
+           {
+            // uint32 id = 1 [(.org.xresloader.field_description) = "This is a Key", (.org.xresloader.ue.key_tag) = 1];
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void keep_or_strip_empty_list_cfg::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -5116,7 +5697,11 @@ class combine_id::_Internal {
 };
 
 combine_id::combine_id(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:combine_id)
 }
@@ -5149,25 +5734,33 @@ inline void combine_id::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-combine_id::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(combine_id, _impl_._cached_size_),
-              false,
-          },
-          &combine_id::MergeImpl,
-          &combine_id::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    combine_id::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_combine_id_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &combine_id::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &combine_id::ByteSizeLong,
+                &combine_id::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(combine_id, _impl_._cached_size_),
+            false,
+        },
+        &combine_id::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* combine_id::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 2, 0, 0, 2> combine_id::_table_ = {
@@ -5181,7 +5774,7 @@ const ::_pbi::TcParseTable<1, 2, 0, 0, 2> combine_id::_table_ = {
     2,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_combine_id_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -5222,60 +5815,74 @@ PROTOBUF_NOINLINE void combine_id::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* combine_id::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:combine_id)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 prefix = 1;
-  if (this->_internal_prefix() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_prefix(), target);
-  }
-
-  // uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        2, this->_internal_id(), target);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:combine_id)
-  return target;
-}
-
-::size_t combine_id::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:combine_id)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // uint32 prefix = 1;
-  if (this->_internal_prefix() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_prefix());
-  }
-
-  // uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* combine_id::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const combine_id& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* combine_id::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const combine_id& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:combine_id)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 prefix = 1;
+          if (this_._internal_prefix() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_prefix(), target);
+          }
+
+          // uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                2, this_._internal_id(), target);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:combine_id)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t combine_id::ByteSizeLong(const MessageLite& base) {
+          const combine_id& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t combine_id::ByteSizeLong() const {
+          const combine_id& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:combine_id)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // uint32 prefix = 1;
+            if (this_._internal_prefix() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_prefix());
+            }
+            // uint32 id = 2 [(.org.xresloader.validator) = "0-99999"];
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void combine_id::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -5318,76 +5925,247 @@ ::google::protobuf::Metadata combine_id::GetMetadata() const {
 }
 // ===================================================================
 
-process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse() {}
-process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script_MapU32StringEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &process_by_script_MapU32StringEntry_DoNotUse::MergeImpl,
-          &process_by_script_MapU32StringEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse() : SuperType() {}
+              process_by_script_MapU32StringEntry_DoNotUse::process_by_script_MapU32StringEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  process_by_script_MapU32StringEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_process_by_script_MapU32StringEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &process_by_script_MapU32StringEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &process_by_script_MapU32StringEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* process_by_script_MapU32StringEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 49, 2> process_by_script_MapU32StringEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    0,  // num_aux_entries
+    offsetof(decltype(_table_), field_names),  // no aux_entries
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::process_by_script_MapU32StringEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // string value = 2;
+    {::_pbi::TcParser::FastUS1,
+     {18, 63, 0, PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.value_)}},
+    // uint32 key = 1;
+    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_), 63>(),
+     {8, 63, 0, PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // uint32 key = 1;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.key_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
+    // string value = 2;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_MapU32StringEntry_DoNotUse, _impl_.value_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+  }},
+  // no aux_entries
+  {{
+    "\43\0\5\0\0\0\0\0"
+    "process_by_script.MapU32StringEntry"
+    "value"
+  }},
+};
+
 // ===================================================================
 
-process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse() {}
-process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script_TestMapIsEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &process_by_script_TestMapIsEntry_DoNotUse::MergeImpl,
-          &process_by_script_TestMapIsEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse() : SuperType() {}
+              process_by_script_TestMapIsEntry_DoNotUse::process_by_script_TestMapIsEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  process_by_script_TestMapIsEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_process_by_script_TestMapIsEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &process_by_script_TestMapIsEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &process_by_script_TestMapIsEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* process_by_script_TestMapIsEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 0, 46, 2> process_by_script_TestMapIsEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    0,  // num_aux_entries
+    offsetof(decltype(_table_), field_names),  // no aux_entries
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::process_by_script_TestMapIsEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // string value = 2;
+    {::_pbi::TcParser::FastUS1,
+     {18, 63, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.value_)}},
+    // int32 key = 1;
+    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_), 63>(),
+     {8, 63, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // int32 key = 1;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.key_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kInt32)},
+    // string value = 2;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapIsEntry_DoNotUse, _impl_.value_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+  }},
+  // no aux_entries
+  {{
+    "\40\0\5\0\0\0\0\0"
+    "process_by_script.TestMapIsEntry"
+    "value"
+  }},
+};
+
 // ===================================================================
 
-process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse() {}
-process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script_TestMapSmEntry_DoNotUse::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              nullptr,  // tc_table
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _cached_size_),
-              false,
-          },
-          &process_by_script_TestMapSmEntry_DoNotUse::MergeImpl,
-          &process_by_script_TestMapSmEntry_DoNotUse::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse() : SuperType(_class_data_.base()) {}
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena)
+                  : SuperType(arena, _class_data_.base()) {}
+#else   // PROTOBUF_CUSTOM_VTABLE
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse() : SuperType() {}
+              process_by_script_TestMapSmEntry_DoNotUse::process_by_script_TestMapSmEntry_DoNotUse(::google::protobuf::Arena* arena) : SuperType(arena) {}
+#endif  // PROTOBUF_CUSTOM_VTABLE
+              PROTOBUF_CONSTINIT
+              PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+              const ::google::protobuf::MessageLite::ClassDataFull
+                  process_by_script_TestMapSmEntry_DoNotUse::_class_data_ = {
+                      ::google::protobuf::Message::ClassData{
+                          &_process_by_script_TestMapSmEntry_DoNotUse_default_instance_._instance,
+                          &_table_.header,
+                          nullptr,  // OnDemandRegisterArenaDtor
+                          nullptr,  // IsInitialized
+                          &process_by_script_TestMapSmEntry_DoNotUse::MergeImpl,
+              #if defined(PROTOBUF_CUSTOM_VTABLE)
+                          ::google::protobuf::Message::GetDeleteImpl(),
+                          ::google::protobuf::Message::GetNewImpl(),
+                          ::google::protobuf::Message::ClearImpl, ::google::protobuf::Message::ByteSizeLongImpl,
+                              ::google::protobuf::Message::_InternalSerializeImpl,
+              #endif  // PROTOBUF_CUSTOM_VTABLE
+                          PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_._cached_size_),
+                          false,
+                      },
+                      &process_by_script_TestMapSmEntry_DoNotUse::kDescriptorMethods,
+                      &descriptor_table_kind_2eproto,
+                      nullptr,  // tracker
+              };
+              const ::google::protobuf::MessageLite::ClassData* process_by_script_TestMapSmEntry_DoNotUse::GetClassData() const {
+                ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+                ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+                return _class_data_.base();
+              }
+PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::_pbi::TcParseTable<1, 2, 1, 44, 2> process_by_script_TestMapSmEntry_DoNotUse::_table_ = {
+  {
+    PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_._has_bits_),
+    0, // no _extensions_
+    2, 8,  // max_field_number, fast_idx_mask
+    offsetof(decltype(_table_), field_lookup_table),
+    4294967292,  // skipmap
+    offsetof(decltype(_table_), field_entries),
+    2,  // num_field_entries
+    1,  // num_aux_entries
+    offsetof(decltype(_table_), aux_entries),
+    _class_data_.base(),
+    nullptr,  // post_loop_handler
+    ::_pbi::TcParser::DiscardEverythingFallback,  // fallback
+    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
+    ::_pbi::TcParser::GetTable<::process_by_script_TestMapSmEntry_DoNotUse>(),  // to_prefetch
+    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
+  }, {{
+    // .dep2_cfg value = 2;
+    {::_pbi::TcParser::FastMtS1,
+     {18, 0, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.value_)}},
+    // string key = 1;
+    {::_pbi::TcParser::FastUS1,
+     {10, 63, 0, PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.key_)}},
+  }}, {{
+    65535, 65535
+  }}, {{
+    // string key = 1;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.key_), -1, 0,
+    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
+    // .dep2_cfg value = 2;
+    {PROTOBUF_FIELD_OFFSET(process_by_script_TestMapSmEntry_DoNotUse, _impl_.value_), _Internal::kHasBitsOffset + 0, 0,
+    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
+  }}, {{
+    {::_pbi::TcParser::GetTable<::dep2_cfg>()},
+  }}, {{
+    "\40\3\0\0\0\0\0\0"
+    "process_by_script.TestMapSmEntry"
+    "key"
+  }},
+};
+
 // ===================================================================
 
 class process_by_script::_Internal {
@@ -5408,7 +6186,11 @@ void process_by_script::clear_test_map_sm() {
   _impl_.test_map_sm_.Clear();
 }
 process_by_script::process_by_script(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:process_by_script)
 }
@@ -5425,7 +6207,11 @@ inline PROTOBUF_NDEBUG_INLINE process_by_script::Impl_::Impl_(
 process_by_script::process_by_script(
     ::google::protobuf::Arena* arena,
     const process_by_script& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   process_by_script* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -5473,25 +6259,33 @@ inline void process_by_script::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-process_by_script::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(process_by_script, _impl_._cached_size_),
-              false,
-          },
-          &process_by_script::MergeImpl,
-          &process_by_script::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    process_by_script::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_process_by_script_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &process_by_script::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &process_by_script::ByteSizeLong,
+                &process_by_script::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(process_by_script, _impl_._cached_size_),
+            false,
+        },
+        &process_by_script::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* process_by_script::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 7, 6, 81, 7> process_by_script::_table_ = {
@@ -5505,7 +6299,7 @@ const ::_pbi::TcParseTable<2, 7, 6, 81, 7> process_by_script::_table_ = {
     7,  // num_field_entries
     6,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_process_by_script_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -5601,191 +6395,218 @@ PROTOBUF_NOINLINE void process_by_script::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* process_by_script::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:process_by_script)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // map map_u32_string = 2;
-  if (!_internal_map_u32_string().empty()) {
-    using MapType = ::google::protobuf::Map<::uint32_t, std::string>;
-    using WireHelper = _pbi::MapEntryFuncs<::uint32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_UINT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>;
-    const auto& field = _internal_map_u32_string();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
-        target = WireHelper::InternalSerialize(
-            2, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.second.data(), static_cast(entry.second.length()),
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* process_by_script::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const process_by_script& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* process_by_script::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const process_by_script& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:process_by_script)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1;
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // map map_u32_string = 2;
+          if (!this_._internal_map_u32_string().empty()) {
+            using MapType = ::google::protobuf::Map<::uint32_t, std::string>;
+            using WireHelper = _pbi::MapEntryFuncs<::uint32_t, std::string,
+                                           _pbi::WireFormatLite::TYPE_UINT32,
+                                           _pbi::WireFormatLite::TYPE_STRING>;
+            const auto& field = this_._internal_map_u32_string();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
+                target = WireHelper::InternalSerialize(
+                    2, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.map_u32_string");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            2, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.second.data(), static_cast(entry.second.length()),
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    2, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.map_u32_string");
-      }
-    }
-  }
-
-  // string human_readable_date = 3;
-  if (!this->_internal_human_readable_date().empty()) {
-    const std::string& _s = this->_internal_human_readable_date();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.human_readable_date");
-    target = stream->WriteStringMaybeAliased(3, _s, target);
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .google.protobuf.Timestamp date = 4;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        4, *_impl_.date_, _impl_.date_->GetCachedSize(), target, stream);
-  }
-
-  // map test_map_is = 7;
-  if (!_internal_test_map_is().empty()) {
-    using MapType = ::google::protobuf::Map<::int32_t, std::string>;
-    using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>;
-    const auto& field = _internal_test_map_is();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.second.data(), static_cast(entry.second.length()),
+              }
+            }
+          }
+
+          // string human_readable_date = 3;
+          if (!this_._internal_human_readable_date().empty()) {
+            const std::string& _s = this_._internal_human_readable_date();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.human_readable_date");
+            target = stream->WriteStringMaybeAliased(3, _s, target);
+          }
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .google.protobuf.Timestamp date = 4;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                4, *this_._impl_.date_, this_._impl_.date_->GetCachedSize(), target,
+                stream);
+          }
+
+          // map test_map_is = 7;
+          if (!this_._internal_test_map_is().empty()) {
+            using MapType = ::google::protobuf::Map<::int32_t, std::string>;
+            using WireHelper = _pbi::MapEntryFuncs<::int32_t, std::string,
+                                           _pbi::WireFormatLite::TYPE_INT32,
+                                           _pbi::WireFormatLite::TYPE_STRING>;
+            const auto& field = this_._internal_test_map_is();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterFlat(field)) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.test_map_is");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            7, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.second.data(), static_cast(entry.second.length()),
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    7, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.second.data(), static_cast(entry.second.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.test_map_is");
-      }
-    }
-  }
-
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  if (!_internal_test_map_sm().empty()) {
-    using MapType = ::google::protobuf::Map;
-    using WireHelper = _pbi::MapEntryFuncs;
-    const auto& field = _internal_test_map_sm();
-
-    if (stream->IsSerializationDeterministic() && field.size() > 1) {
-      for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.first.data(), static_cast(entry.first.length()),
+              }
+            }
+          }
+
+          // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+          if (!this_._internal_test_map_sm().empty()) {
+            using MapType = ::google::protobuf::Map;
+            using WireHelper = _pbi::MapEntryFuncs;
+            const auto& field = this_._internal_test_map_sm();
+
+            if (stream->IsSerializationDeterministic() && field.size() > 1) {
+              for (const auto& entry : ::google::protobuf::internal::MapSorterPtr(field)) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.test_map_sm");
-      }
-    } else {
-      for (const auto& entry : field) {
-        target = WireHelper::InternalSerialize(
-            8, entry.first, entry.second, target, stream);
-        ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-            entry.first.data(), static_cast(entry.first.length()),
+              }
+            } else {
+              for (const auto& entry : field) {
+                target = WireHelper::InternalSerialize(
+                    8, entry.first, entry.second, target, stream);
+                ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                    entry.first.data(), static_cast(entry.first.length()),
  ::google::protobuf::internal::WireFormatLite::SERIALIZE, "process_by_script.test_map_sm");
-      }
-    }
-  }
-
-  // .combine_id id_id = 1001;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        1001, *_impl_.id_id_, _impl_.id_id_->GetCachedSize(), target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:process_by_script)
-  return target;
-}
-
-::size_t process_by_script::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:process_by_script)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // map map_u32_string = 2;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_map_u32_string_size());
-  for (const auto& entry : _internal_map_u32_string()) {
-    total_size += _pbi::MapEntryFuncs<::uint32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_UINT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
-  }
-  // map test_map_is = 7;
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_is_size());
-  for (const auto& entry : _internal_test_map_is()) {
-    total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
-                                   _pbi::WireFormatLite::TYPE_INT32,
-                                   _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
-  }
-  // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
-  total_size += 1 * ::google::protobuf::internal::FromIntSize(_internal_test_map_sm_size());
-  for (const auto& entry : _internal_test_map_sm()) {
-    total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
-  }
-  // string human_readable_date = 3;
-  if (!this->_internal_human_readable_date().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_human_readable_date());
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000003u) {
-    // .google.protobuf.Timestamp date = 4;
-    if (cached_has_bits & 0x00000001u) {
-      total_size +=
-          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.date_);
-    }
-
-    // .combine_id id_id = 1001;
-    if (cached_has_bits & 0x00000002u) {
-      total_size +=
-          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.id_id_);
-    }
-
-  }
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+              }
+            }
+          }
+
+          // .combine_id id_id = 1001;
+          if (cached_has_bits & 0x00000002u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                1001, *this_._impl_.id_id_, this_._impl_.id_id_->GetCachedSize(), target,
+                stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:process_by_script)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t process_by_script::ByteSizeLong(const MessageLite& base) {
+          const process_by_script& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t process_by_script::ByteSizeLong() const {
+          const process_by_script& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:process_by_script)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // map map_u32_string = 2;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_map_u32_string_size());
+              for (const auto& entry : this_._internal_map_u32_string()) {
+                total_size += _pbi::MapEntryFuncs<::uint32_t, std::string,
+                                               _pbi::WireFormatLite::TYPE_UINT32,
+                                               _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+            // map test_map_is = 7;
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_is_size());
+              for (const auto& entry : this_._internal_test_map_is()) {
+                total_size += _pbi::MapEntryFuncs<::int32_t, std::string,
+                                               _pbi::WireFormatLite::TYPE_INT32,
+                                               _pbi::WireFormatLite::TYPE_STRING>::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+            // map test_map_sm = 8 [(.org.xresloader.field_separator) = "|"];
+             {
+              total_size +=
+                  1 * ::google::protobuf::internal::FromIntSize(this_._internal_test_map_sm_size());
+              for (const auto& entry : this_._internal_test_map_sm()) {
+                total_size += _pbi::MapEntryFuncs::ByteSizeLong(entry.first, entry.second);
+              }
+            }
+          }
+           {
+            // string human_readable_date = 3;
+            if (!this_._internal_human_readable_date().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_human_readable_date());
+            }
+          }
+          cached_has_bits = this_._impl_._has_bits_[0];
+          if (cached_has_bits & 0x00000003u) {
+            // .google.protobuf.Timestamp date = 4;
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.date_);
+            }
+            // .combine_id id_id = 1001;
+            if (cached_has_bits & 0x00000002u) {
+              total_size += 2 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.id_id_);
+            }
+          }
+           {
+            // uint32 id = 1;
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void process_by_script::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -5870,7 +6691,11 @@ class large_file_test::_Internal {
 };
 
 large_file_test::large_file_test(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:large_file_test)
 }
@@ -5884,7 +6709,11 @@ inline PROTOBUF_NDEBUG_INLINE large_file_test::Impl_::Impl_(
 large_file_test::large_file_test(
     ::google::protobuf::Arena* arena,
     const large_file_test& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   large_file_test* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -5931,25 +6760,33 @@ inline void large_file_test::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-large_file_test::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(large_file_test, _impl_._cached_size_),
-              false,
-          },
-          &large_file_test::MergeImpl,
-          &large_file_test::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    large_file_test::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_large_file_test_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &large_file_test::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &large_file_test::ByteSizeLong,
+                &large_file_test::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(large_file_test, _impl_._cached_size_),
+            false,
+        },
+        &large_file_test::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* large_file_test::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<3, 7, 1, 31, 2> large_file_test::_table_ = {
@@ -5963,7 +6800,7 @@ const ::_pbi::TcParseTable<3, 7, 1, 31, 2> large_file_test::_table_ = {
     7,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_large_file_test_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -6045,145 +6882,140 @@ PROTOBUF_NOINLINE void large_file_test::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* large_file_test::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:large_file_test)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
-        1, this->_internal_id(), target);
-  }
-
-  // int32 i32value = 2;
-  if (this->_internal_i32value() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<2>(
-            stream, this->_internal_i32value(), target);
-  }
-
-  // uint64 u64value = 3;
-  if (this->_internal_u64value() != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
-        3, this->_internal_u64value(), target);
-  }
-
-  // double f64value = 4;
-  static_assert(sizeof(::uint64_t) == sizeof(double),
-                "Code assumes ::uint64_t and double are the same size.");
-  double tmp_f64value = this->_internal_f64value();
-  ::uint64_t raw_f64value;
-  memcpy(&raw_f64value, &tmp_f64value, sizeof(tmp_f64value));
-  if (raw_f64value != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteDoubleToArray(
-        4, this->_internal_f64value(), target);
-  }
-
-  // float f32value = 5;
-  static_assert(sizeof(::uint32_t) == sizeof(float),
-                "Code assumes ::uint32_t and float are the same size.");
-  float tmp_f32value = this->_internal_f32value();
-  ::uint32_t raw_f32value;
-  memcpy(&raw_f32value, &tmp_f32value, sizeof(tmp_f32value));
-  if (raw_f32value != 0) {
-    target = stream->EnsureSpace(target);
-    target = ::_pbi::WireFormatLite::WriteFloatToArray(
-        5, this->_internal_f32value(), target);
-  }
-
-  // string szvalue = 6;
-  if (!this->_internal_szvalue().empty()) {
-    const std::string& _s = this->_internal_szvalue();
-    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
-        _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "large_file_test.szvalue");
-    target = stream->WriteStringMaybeAliased(6, _s, target);
-  }
-
-  cached_has_bits = _impl_._has_bits_[0];
-  // .combine_id id_id = 7;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-        7, *_impl_.id_id_, _impl_.id_id_->GetCachedSize(), target, stream);
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:large_file_test)
-  return target;
-}
-
-::size_t large_file_test::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:large_file_test)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // string szvalue = 6;
-  if (!this->_internal_szvalue().empty()) {
-    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
-                                    this->_internal_szvalue());
-  }
-
-  // .combine_id id_id = 7;
-  cached_has_bits = _impl_._has_bits_[0];
-  if (cached_has_bits & 0x00000001u) {
-    total_size +=
-        1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.id_id_);
-  }
-
-  // uint32 id = 1;
-  if (this->_internal_id() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
-        this->_internal_id());
-  }
-
-  // int32 i32value = 2;
-  if (this->_internal_i32value() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_i32value());
-  }
-
-  // uint64 u64value = 3;
-  if (this->_internal_u64value() != 0) {
-    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
-        this->_internal_u64value());
-  }
-
-  // double f64value = 4;
-  static_assert(sizeof(::uint64_t) == sizeof(double),
-                "Code assumes ::uint64_t and double are the same size.");
-  double tmp_f64value = this->_internal_f64value();
-  ::uint64_t raw_f64value;
-  memcpy(&raw_f64value, &tmp_f64value, sizeof(tmp_f64value));
-  if (raw_f64value != 0) {
-    total_size += 9;
-  }
-
-  // float f32value = 5;
-  static_assert(sizeof(::uint32_t) == sizeof(float),
-                "Code assumes ::uint32_t and float are the same size.");
-  float tmp_f32value = this->_internal_f32value();
-  ::uint32_t raw_f32value;
-  memcpy(&raw_f32value, &tmp_f32value, sizeof(tmp_f32value));
-  if (raw_f32value != 0) {
-    total_size += 5;
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* large_file_test::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const large_file_test& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* large_file_test::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const large_file_test& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:large_file_test)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // uint32 id = 1;
+          if (this_._internal_id() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
+                1, this_._internal_id(), target);
+          }
+
+          // int32 i32value = 2;
+          if (this_._internal_i32value() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<2>(
+                    stream, this_._internal_i32value(), target);
+          }
+
+          // uint64 u64value = 3;
+          if (this_._internal_u64value() != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
+                3, this_._internal_u64value(), target);
+          }
+
+          // double f64value = 4;
+          if (::absl::bit_cast<::uint64_t>(this_._internal_f64value()) != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteDoubleToArray(
+                4, this_._internal_f64value(), target);
+          }
+
+          // float f32value = 5;
+          if (::absl::bit_cast<::uint32_t>(this_._internal_f32value()) != 0) {
+            target = stream->EnsureSpace(target);
+            target = ::_pbi::WireFormatLite::WriteFloatToArray(
+                5, this_._internal_f32value(), target);
+          }
+
+          // string szvalue = 6;
+          if (!this_._internal_szvalue().empty()) {
+            const std::string& _s = this_._internal_szvalue();
+            ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+                _s.data(), static_cast(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "large_file_test.szvalue");
+            target = stream->WriteStringMaybeAliased(6, _s, target);
+          }
+
+          cached_has_bits = this_._impl_._has_bits_[0];
+          // .combine_id id_id = 7;
+          if (cached_has_bits & 0x00000001u) {
+            target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                7, *this_._impl_.id_id_, this_._impl_.id_id_->GetCachedSize(), target,
+                stream);
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:large_file_test)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t large_file_test::ByteSizeLong(const MessageLite& base) {
+          const large_file_test& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t large_file_test::ByteSizeLong() const {
+          const large_file_test& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:large_file_test)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // string szvalue = 6;
+            if (!this_._internal_szvalue().empty()) {
+              total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
+                                              this_._internal_szvalue());
+            }
+          }
+           {
+            // .combine_id id_id = 7;
+            cached_has_bits =
+                this_._impl_._has_bits_[0];
+            if (cached_has_bits & 0x00000001u) {
+              total_size += 1 +
+                            ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.id_id_);
+            }
+          }
+           {
+            // uint32 id = 1;
+            if (this_._internal_id() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
+                  this_._internal_id());
+            }
+            // int32 i32value = 2;
+            if (this_._internal_i32value() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_i32value());
+            }
+            // uint64 u64value = 3;
+            if (this_._internal_u64value() != 0) {
+              total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
+                  this_._internal_u64value());
+            }
+            // double f64value = 4;
+            if (::absl::bit_cast<::uint64_t>(this_._internal_f64value()) != 0) {
+              total_size += 9;
+            }
+            // float f32value = 5;
+            if (::absl::bit_cast<::uint32_t>(this_._internal_f32value()) != 0) {
+              total_size += 5;
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void large_file_test::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -6216,20 +7048,10 @@ void large_file_test::MergeImpl(::google::protobuf::MessageLite& to_msg, const :
   if (from._internal_u64value() != 0) {
     _this->_impl_.u64value_ = from._impl_.u64value_;
   }
-  static_assert(sizeof(::uint64_t) == sizeof(double),
-                "Code assumes ::uint64_t and double are the same size.");
-  double tmp_f64value = from._internal_f64value();
-  ::uint64_t raw_f64value;
-  memcpy(&raw_f64value, &tmp_f64value, sizeof(tmp_f64value));
-  if (raw_f64value != 0) {
+  if (::absl::bit_cast<::uint64_t>(from._internal_f64value()) != 0) {
     _this->_impl_.f64value_ = from._impl_.f64value_;
   }
-  static_assert(sizeof(::uint32_t) == sizeof(float),
-                "Code assumes ::uint32_t and float are the same size.");
-  float tmp_f32value = from._internal_f32value();
-  ::uint32_t raw_f32value;
-  memcpy(&raw_f32value, &tmp_f32value, sizeof(tmp_f32value));
-  if (raw_f32value != 0) {
+  if (::absl::bit_cast<::uint32_t>(from._internal_f32value()) != 0) {
     _this->_impl_.f32value_ = from._impl_.f32value_;
   }
   _this->_impl_._has_bits_[0] |= cached_has_bits;
@@ -6269,7 +7091,11 @@ class inner_alias_message::_Internal {
 };
 
 inner_alias_message::inner_alias_message(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:inner_alias_message)
 }
@@ -6283,7 +7109,11 @@ inline PROTOBUF_NDEBUG_INLINE inner_alias_message::Impl_::Impl_(
 inner_alias_message::inner_alias_message(
     ::google::protobuf::Arena* arena,
     const inner_alias_message& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   inner_alias_message* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -6314,25 +7144,33 @@ inline void inner_alias_message::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-inner_alias_message::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(inner_alias_message, _impl_._cached_size_),
-              false,
-          },
-          &inner_alias_message::MergeImpl,
-          &inner_alias_message::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    inner_alias_message::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_inner_alias_message_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &inner_alias_message::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &inner_alias_message::ByteSizeLong,
+                &inner_alias_message::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(inner_alias_message, _impl_._cached_size_),
+            false,
+        },
+        &inner_alias_message::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* inner_alias_message::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<1, 2, 0, 0, 2> inner_alias_message::_table_ = {
@@ -6346,7 +7184,7 @@ const ::_pbi::TcParseTable<1, 2, 0, 0, 2> inner_alias_message::_table_ = {
     2,  // num_field_entries
     0,  // num_aux_entries
     offsetof(decltype(_table_), field_names),  // no aux_entries
-    &_inner_alias_message_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -6386,69 +7224,87 @@ PROTOBUF_NOINLINE void inner_alias_message::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* inner_alias_message::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:inner_alias_message)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
-  if (this->_internal_itype() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<1>(
-            stream, this->_internal_itype(), target);
-  }
-
-  // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
-  {
-    int byte_size = _impl_._paramlist_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt64Packed(
-          2, _internal_paramlist(), byte_size, target);
-    }
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:inner_alias_message)
-  return target;
-}
-
-::size_t inner_alias_message::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:inner_alias_message)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
-        this->_internal_paramlist())
-    ;
-    _impl_._paramlist_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
-  if (this->_internal_itype() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_itype());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* inner_alias_message::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const inner_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* inner_alias_message::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const inner_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:inner_alias_message)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
+          if (this_._internal_itype() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<1>(
+                    stream, this_._internal_itype(), target);
+          }
+
+          // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
+          {
+            int byte_size = this_._impl_._paramlist_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt64Packed(
+                  2, this_._internal_paramlist(), byte_size, target);
+            }
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:inner_alias_message)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t inner_alias_message::ByteSizeLong(const MessageLite& base) {
+          const inner_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t inner_alias_message::ByteSizeLong() const {
+          const inner_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:inner_alias_message)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated int64 paramList = 2 [(.org.xresloader.field_alias) = "Param", (.org.xresloader.field_list_min_size) = "2"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
+                  this_._internal_paramlist())
+              ;
+              this_._impl_._paramlist_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+          }
+           {
+            // int32 iType = 1 [(.org.xresloader.field_alias) = "Type"];
+            if (this_._internal_itype() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_itype());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void inner_alias_message::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
@@ -6490,7 +7346,11 @@ class outer_alias_message::_Internal {
 };
 
 outer_alias_message::outer_alias_message(::google::protobuf::Arena* arena)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   SharedCtor(arena);
   // @@protoc_insertion_point(arena_constructor:outer_alias_message)
 }
@@ -6505,7 +7365,11 @@ inline PROTOBUF_NDEBUG_INLINE outer_alias_message::Impl_::Impl_(
 outer_alias_message::outer_alias_message(
     ::google::protobuf::Arena* arena,
     const outer_alias_message& from)
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+    : ::google::protobuf::Message(arena, _class_data_.base()) {
+#else   // PROTOBUF_CUSTOM_VTABLE
     : ::google::protobuf::Message(arena) {
+#endif  // PROTOBUF_CUSTOM_VTABLE
   outer_alias_message* const _this = this;
   (void)_this;
   _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
@@ -6537,25 +7401,33 @@ inline void outer_alias_message::SharedDtor() {
   _impl_.~Impl_();
 }
 
-const ::google::protobuf::MessageLite::ClassData*
-outer_alias_message::GetClassData() const {
-  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
-      ClassDataFull _data_ = {
-          {
-              &_table_.header,
-              nullptr,  // OnDemandRegisterArenaDtor
-              nullptr,  // IsInitialized
-              PROTOBUF_FIELD_OFFSET(outer_alias_message, _impl_._cached_size_),
-              false,
-          },
-          &outer_alias_message::MergeImpl,
-          &outer_alias_message::kDescriptorMethods,
-          &descriptor_table_kind_2eproto,
-          nullptr,  // tracker
-      };
-  ::google::protobuf::internal::PrefetchToLocalCache(&_data_);
-  ::google::protobuf::internal::PrefetchToLocalCache(_data_.tc_table);
-  return _data_.base();
+PROTOBUF_CONSTINIT
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
+const ::google::protobuf::MessageLite::ClassDataFull
+    outer_alias_message::_class_data_ = {
+        ::google::protobuf::Message::ClassData{
+            &_outer_alias_message_default_instance_._instance,
+            &_table_.header,
+            nullptr,  // OnDemandRegisterArenaDtor
+            nullptr,  // IsInitialized
+            &outer_alias_message::MergeImpl,
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+            ::google::protobuf::Message::GetDeleteImpl(),
+            ::google::protobuf::Message::GetNewImpl(),
+            ::google::protobuf::Message::GetClearImpl(), &outer_alias_message::ByteSizeLong,
+                &outer_alias_message::_InternalSerialize,
+#endif  // PROTOBUF_CUSTOM_VTABLE
+            PROTOBUF_FIELD_OFFSET(outer_alias_message, _impl_._cached_size_),
+            false,
+        },
+        &outer_alias_message::kDescriptorMethods,
+        &descriptor_table_kind_2eproto,
+        nullptr,  // tracker
+};
+const ::google::protobuf::MessageLite::ClassData* outer_alias_message::GetClassData() const {
+  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
+  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
+  return _class_data_.base();
 }
 PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
 const ::_pbi::TcParseTable<2, 3, 1, 0, 2> outer_alias_message::_table_ = {
@@ -6569,7 +7441,7 @@ const ::_pbi::TcParseTable<2, 3, 1, 0, 2> outer_alias_message::_table_ = {
     3,  // num_field_entries
     1,  // num_aux_entries
     offsetof(decltype(_table_), aux_entries),
-    &_outer_alias_message_default_instance_._instance,
+    _class_data_.base(),
     nullptr,  // post_loop_handler
     ::_pbi::TcParser::GenericFallback,  // fallback
     #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
@@ -6617,85 +7489,105 @@ PROTOBUF_NOINLINE void outer_alias_message::Clear() {
   _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 }
 
-::uint8_t* outer_alias_message::_InternalSerialize(
-    ::uint8_t* target,
-    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:outer_alias_message)
-  ::uint32_t cached_has_bits = 0;
-  (void)cached_has_bits;
-
-  // int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
-  if (this->_internal_iid() != 0) {
-    target = ::google::protobuf::internal::WireFormatLite::
-        WriteInt32ToArrayWithField<1>(
-            stream, this->_internal_iid(), target);
-  }
-
-  // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
-  for (unsigned i = 0, n = static_cast(
-                           this->_internal_inners_size());
-       i < n; i++) {
-    const auto& repfield = this->_internal_inners().Get(i);
-    target =
-        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
-            2, repfield, repfield.GetCachedSize(),
-            target, stream);
-  }
-
-  // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
-  {
-    int byte_size = _impl_._nest_int_cached_byte_size_.Get();
-    if (byte_size > 0) {
-      target = stream->WriteInt32Packed(
-          3, _internal_nest_int(), byte_size, target);
-    }
-  }
-
-  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
-    target =
-        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
-            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:outer_alias_message)
-  return target;
-}
-
-::size_t outer_alias_message::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:outer_alias_message)
-  ::size_t total_size = 0;
-
-  ::uint32_t cached_has_bits = 0;
-  // Prevent compiler warnings about cached_has_bits being unused
-  (void) cached_has_bits;
-
-  ::_pbi::Prefetch5LinesFrom7Lines(reinterpret_cast(this));
-  // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
-  total_size += 1UL * this->_internal_inners_size();
-  for (const auto& msg : this->_internal_inners()) {
-    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
-  }
-  // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
-  {
-    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
-        this->_internal_nest_int())
-    ;
-    _impl_._nest_int_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
-    std::size_t tag_size = data_size == 0
-        ? 0
-        : 1 + ::_pbi::WireFormatLite::Int32Size(
-                            static_cast(data_size))
-    ;
-    total_size += tag_size + data_size;
-  }
-  // int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
-  if (this->_internal_iid() != 0) {
-    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
-        this->_internal_iid());
-  }
-
-  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
-}
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::uint8_t* outer_alias_message::_InternalSerialize(
+            const MessageLite& base, ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) {
+          const outer_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::uint8_t* outer_alias_message::_InternalSerialize(
+            ::uint8_t* target,
+            ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+          const outer_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(serialize_to_array_start:outer_alias_message)
+          ::uint32_t cached_has_bits = 0;
+          (void)cached_has_bits;
+
+          // int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
+          if (this_._internal_iid() != 0) {
+            target = ::google::protobuf::internal::WireFormatLite::
+                WriteInt32ToArrayWithField<1>(
+                    stream, this_._internal_iid(), target);
+          }
+
+          // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
+          for (unsigned i = 0, n = static_cast(
+                                   this_._internal_inners_size());
+               i < n; i++) {
+            const auto& repfield = this_._internal_inners().Get(i);
+            target =
+                ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
+                    2, repfield, repfield.GetCachedSize(),
+                    target, stream);
+          }
+
+          // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
+          {
+            int byte_size = this_._impl_._nest_int_cached_byte_size_.Get();
+            if (byte_size > 0) {
+              target = stream->WriteInt32Packed(
+                  3, this_._internal_nest_int(), byte_size, target);
+            }
+          }
+
+          if (PROTOBUF_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
+            target =
+                ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+                    this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
+          }
+          // @@protoc_insertion_point(serialize_to_array_end:outer_alias_message)
+          return target;
+        }
 
+#if defined(PROTOBUF_CUSTOM_VTABLE)
+        ::size_t outer_alias_message::ByteSizeLong(const MessageLite& base) {
+          const outer_alias_message& this_ = static_cast(base);
+#else   // PROTOBUF_CUSTOM_VTABLE
+        ::size_t outer_alias_message::ByteSizeLong() const {
+          const outer_alias_message& this_ = *this;
+#endif  // PROTOBUF_CUSTOM_VTABLE
+          // @@protoc_insertion_point(message_byte_size_start:outer_alias_message)
+          ::size_t total_size = 0;
+
+          ::uint32_t cached_has_bits = 0;
+          // Prevent compiler warnings about cached_has_bits being unused
+          (void)cached_has_bits;
+
+          ::_pbi::Prefetch5LinesFrom7Lines(&this_);
+           {
+            // repeated .inner_alias_message inners = 2 [(.org.xresloader.field_alias) = "Condition"];
+             {
+              total_size += 1UL * this_._internal_inners_size();
+              for (const auto& msg : this_._internal_inners()) {
+                total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
+              }
+            }
+            // repeated int32 nest_int = 3 [(.org.xresloader.field_alias) = "Nest", (.org.xresloader.field_list_min_size) = "2"];
+             {
+              std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
+                  this_._internal_nest_int())
+              ;
+              this_._impl_._nest_int_cached_byte_size_.Set(
+                  ::_pbi::ToCachedSize(data_size));
+              std::size_t tag_size = data_size == 0
+                  ? 0
+                  : 1 + ::_pbi::WireFormatLite::Int32Size(
+                                      static_cast(data_size))
+              ;
+              total_size += tag_size + data_size;
+            }
+          }
+           {
+            // int32 iId = 1 [(.org.xresloader.field_alias) = "ID"];
+            if (this_._internal_iid() != 0) {
+              total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
+                  this_._internal_iid());
+            }
+          }
+          return this_.MaybeComputeUnknownFieldsSize(total_size,
+                                                     &this_._impl_._cached_size_);
+        }
 
 void outer_alias_message::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
   auto* const _this = static_cast(&to_msg);
diff --git a/sample/cxx/v3/kind.pb.h b/sample/cxx/v3/kind.pb.h
index 9e9b2057..d1504b0c 100755
--- a/sample/cxx/v3/kind.pb.h
+++ b/sample/cxx/v3/kind.pb.h
@@ -1,7 +1,7 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // NO CHECKED-IN PROTOBUF GENCODE
 // source: kind.proto
-// Protobuf C++ Version: 5.27.0
+// Protobuf C++ Version: 5.28.0
 
 #ifndef GOOGLE_PROTOBUF_INCLUDED_kind_2eproto_2epb_2eh
 #define GOOGLE_PROTOBUF_INCLUDED_kind_2eproto_2epb_2eh
@@ -12,7 +12,7 @@
 #include 
 
 #include "google/protobuf/runtime_version.h"
-#if PROTOBUF_VERSION != 5027000
+#if PROTOBUF_VERSION != 5028000
 #error "Protobuf C++ gencode is built with an incompatible version of"
 #error "Protobuf C++ headers/runtime. See"
 #error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
@@ -188,7 +188,7 @@ class test_msg_verifier final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:test_msg_verifier) */ {
  public:
   inline test_msg_verifier() : test_msg_verifier(nullptr) {}
-  ~test_msg_verifier() override;
+  ~test_msg_verifier() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR test_msg_verifier(
       ::google::protobuf::internal::ConstantInitialized);
@@ -261,7 +261,7 @@ class test_msg_verifier final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  test_msg_verifier* New(::google::protobuf::Arena* arena = nullptr) const final {
+  test_msg_verifier* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -278,11 +278,27 @@ class test_msg_verifier final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -300,7 +316,8 @@ class test_msg_verifier final : public ::google::protobuf::Message
       : test_msg_verifier(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -322,7 +339,7 @@ class test_msg_verifier final : public ::google::protobuf::Message
   void _internal_set_test_id_1(::uint32_t value);
 
   public:
-  // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
+  // uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
   void clear_test_id_2() ;
   ::uint32_t test_id_2() const;
   void set_test_id_2(::uint32_t value);
@@ -383,7 +400,7 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:role_upgrade_cfg) */ {
  public:
   inline role_upgrade_cfg() : role_upgrade_cfg(nullptr) {}
-  ~role_upgrade_cfg() override;
+  ~role_upgrade_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR role_upgrade_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -456,7 +473,7 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  role_upgrade_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  role_upgrade_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -473,11 +490,27 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -495,7 +528,8 @@ class role_upgrade_cfg final : public ::google::protobuf::Message
       : role_upgrade_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -617,7 +651,17 @@ class process_by_script_TestMapIsEntry_DoNotUse final
     return reinterpret_cast(
         &_process_by_script_TestMapIsEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 0,
+      46, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -641,7 +685,17 @@ class process_by_script_MapU32StringEntry_DoNotUse final
     return reinterpret_cast(
         &_process_by_script_MapU32StringEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 0,
+      49, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -650,7 +704,7 @@ class inner_alias_message final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:inner_alias_message) */ {
  public:
   inline inner_alias_message() : inner_alias_message(nullptr) {}
-  ~inner_alias_message() override;
+  ~inner_alias_message() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR inner_alias_message(
       ::google::protobuf::internal::ConstantInitialized);
@@ -723,7 +777,7 @@ class inner_alias_message final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  inner_alias_message* New(::google::protobuf::Arena* arena = nullptr) const final {
+  inner_alias_message* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -740,11 +794,27 @@ class inner_alias_message final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -762,7 +832,8 @@ class inner_alias_message final : public ::google::protobuf::Message
       : inner_alias_message(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -842,7 +913,7 @@ class event_rule_item final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:event_rule_item) */ {
  public:
   inline event_rule_item() : event_rule_item(nullptr) {}
-  ~event_rule_item() override;
+  ~event_rule_item() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR event_rule_item(
       ::google::protobuf::internal::ConstantInitialized);
@@ -920,7 +991,7 @@ class event_rule_item final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  event_rule_item* New(::google::protobuf::Arena* arena = nullptr) const final {
+  event_rule_item* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -937,11 +1008,27 @@ class event_rule_item final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -959,7 +1046,8 @@ class event_rule_item final : public ::google::protobuf::Message
       : event_rule_item(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1073,7 +1161,7 @@ class event_reward_item final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:event_reward_item) */ {
  public:
   inline event_reward_item() : event_reward_item(nullptr) {}
-  ~event_reward_item() override;
+  ~event_reward_item() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR event_reward_item(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1151,7 +1239,7 @@ class event_reward_item final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  event_reward_item* New(::google::protobuf::Arena* arena = nullptr) const final {
+  event_reward_item* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1168,11 +1256,27 @@ class event_reward_item final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1190,7 +1294,8 @@ class event_reward_item final : public ::google::protobuf::Message
       : event_reward_item(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1304,7 +1409,7 @@ class combine_id final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:combine_id) */ {
  public:
   inline combine_id() : combine_id(nullptr) {}
-  ~combine_id() override;
+  ~combine_id() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR combine_id(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1377,7 +1482,7 @@ class combine_id final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  combine_id* New(::google::protobuf::Arena* arena = nullptr) const final {
+  combine_id* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1394,11 +1499,27 @@ class combine_id final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1416,7 +1537,8 @@ class combine_id final : public ::google::protobuf::Message
       : combine_id(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1502,7 +1624,17 @@ class arr_in_arr_cfg_TestMapIsEntry_DoNotUse final
     return reinterpret_cast(
         &_arr_in_arr_cfg_TestMapIsEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 0,
+      43, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -1526,7 +1658,17 @@ class process_by_script_TestMapSmEntry_DoNotUse final
     return reinterpret_cast(
         &_process_by_script_TestMapSmEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 1,
+      44, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -1535,7 +1677,7 @@ class outer_alias_message final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:outer_alias_message) */ {
  public:
   inline outer_alias_message() : outer_alias_message(nullptr) {}
-  ~outer_alias_message() override;
+  ~outer_alias_message() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR outer_alias_message(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1608,7 +1750,7 @@ class outer_alias_message final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  outer_alias_message* New(::google::protobuf::Arena* arena = nullptr) const final {
+  outer_alias_message* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1625,11 +1767,27 @@ class outer_alias_message final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1647,7 +1805,8 @@ class outer_alias_message final : public ::google::protobuf::Message
       : outer_alias_message(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -1746,7 +1905,7 @@ class large_file_test final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:large_file_test) */ {
  public:
   inline large_file_test() : large_file_test(nullptr) {}
-  ~large_file_test() override;
+  ~large_file_test() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR large_file_test(
       ::google::protobuf::internal::ConstantInitialized);
@@ -1819,7 +1978,7 @@ class large_file_test final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  large_file_test* New(::google::protobuf::Arena* arena = nullptr) const final {
+  large_file_test* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -1836,11 +1995,27 @@ class large_file_test final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -1858,7 +2033,8 @@ class large_file_test final : public ::google::protobuf::Message
       : large_file_test(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2001,7 +2177,7 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:keep_or_strip_empty_list_cfg) */ {
  public:
   inline keep_or_strip_empty_list_cfg() : keep_or_strip_empty_list_cfg(nullptr) {}
-  ~keep_or_strip_empty_list_cfg() override;
+  ~keep_or_strip_empty_list_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR keep_or_strip_empty_list_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2074,7 +2250,7 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  keep_or_strip_empty_list_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  keep_or_strip_empty_list_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2091,11 +2267,27 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2113,7 +2305,8 @@ class keep_or_strip_empty_list_cfg final : public ::google::protobuf::Message
       : keep_or_strip_empty_list_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2252,7 +2445,7 @@ class event_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:event_cfg) */ {
  public:
   inline event_cfg() : event_cfg(nullptr) {}
-  ~event_cfg() override;
+  ~event_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR event_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2336,7 +2529,7 @@ class event_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  event_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  event_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2353,11 +2546,27 @@ class event_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2375,7 +2584,8 @@ class event_cfg final : public ::google::protobuf::Message
       : event_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2444,7 +2654,7 @@ class event_cfg final : public ::google::protobuf::Message
   ::event_rule_item* _internal_mutable_rule();
 
   public:
-  // .event_rule_item specify_field = 7;
+  // .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
   bool has_specify_field() const;
   void clear_specify_field() ;
   const ::event_rule_item& specify_field() const;
@@ -2635,7 +2845,17 @@ class arr_in_arr_cfg_TestMapSmEntry_DoNotUse final
     return reinterpret_cast(
         &_arr_in_arr_cfg_TestMapSmEntry_DoNotUse_default_instance_);
   }
-const ::google::protobuf::Message::ClassData* GetClassData() const final;
+
+
+ private:
+  friend class ::google::protobuf::internal::TcParser;
+  static const ::google::protobuf::internal::TcParseTable<
+      1, 2, 1,
+      41, 2>
+      _table_;
+
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
   friend struct ::TableStruct_kind_2eproto;
 };
 // -------------------------------------------------------------------
@@ -2644,7 +2864,7 @@ class role_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:role_cfg) */ {
  public:
   inline role_cfg() : role_cfg(nullptr) {}
-  ~role_cfg() override;
+  ~role_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR role_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -2717,7 +2937,7 @@ class role_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  role_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  role_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -2734,11 +2954,27 @@ class role_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -2756,7 +2992,8 @@ class role_cfg final : public ::google::protobuf::Message
       : role_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -2791,17 +3028,11 @@ class role_cfg final : public ::google::protobuf::Message
   void clear_test_array() ;
   const std::string& test_array(int index) const;
   std::string* mutable_test_array(int index);
-  void set_test_array(int index, const std::string& value);
-  void set_test_array(int index, std::string&& value);
-  void set_test_array(int index, const char* value);
-  void set_test_array(int index, const char* value, std::size_t size);
-  void set_test_array(int index, absl::string_view value);
+  template 
+  void set_test_array(int index, Arg_&& value, Args_... args);
   std::string* add_test_array();
-  void add_test_array(const std::string& value);
-  void add_test_array(std::string&& value);
-  void add_test_array(const char* value);
-  void add_test_array(const char* value, std::size_t size);
-  void add_test_array(absl::string_view value);
+  template 
+  void add_test_array(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& test_array() const;
   ::google::protobuf::RepeatedPtrField* mutable_test_array();
 
@@ -2855,17 +3086,11 @@ class role_cfg final : public ::google::protobuf::Message
   void clear_origin_timepoint_arr() ;
   const std::string& origin_timepoint_arr(int index) const;
   std::string* mutable_origin_timepoint_arr(int index);
-  void set_origin_timepoint_arr(int index, const std::string& value);
-  void set_origin_timepoint_arr(int index, std::string&& value);
-  void set_origin_timepoint_arr(int index, const char* value);
-  void set_origin_timepoint_arr(int index, const char* value, std::size_t size);
-  void set_origin_timepoint_arr(int index, absl::string_view value);
+  template 
+  void set_origin_timepoint_arr(int index, Arg_&& value, Args_... args);
   std::string* add_origin_timepoint_arr();
-  void add_origin_timepoint_arr(const std::string& value);
-  void add_origin_timepoint_arr(std::string&& value);
-  void add_origin_timepoint_arr(const char* value);
-  void add_origin_timepoint_arr(const char* value, std::size_t size);
-  void add_origin_timepoint_arr(absl::string_view value);
+  template 
+  void add_origin_timepoint_arr(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& origin_timepoint_arr() const;
   ::google::protobuf::RepeatedPtrField* mutable_origin_timepoint_arr();
 
@@ -2900,17 +3125,11 @@ class role_cfg final : public ::google::protobuf::Message
   void clear_origin_duration_arr() ;
   const std::string& origin_duration_arr(int index) const;
   std::string* mutable_origin_duration_arr(int index);
-  void set_origin_duration_arr(int index, const std::string& value);
-  void set_origin_duration_arr(int index, std::string&& value);
-  void set_origin_duration_arr(int index, const char* value);
-  void set_origin_duration_arr(int index, const char* value, std::size_t size);
-  void set_origin_duration_arr(int index, absl::string_view value);
+  template 
+  void set_origin_duration_arr(int index, Arg_&& value, Args_... args);
   std::string* add_origin_duration_arr();
-  void add_origin_duration_arr(const std::string& value);
-  void add_origin_duration_arr(std::string&& value);
-  void add_origin_duration_arr(const char* value);
-  void add_origin_duration_arr(const char* value, std::size_t size);
-  void add_origin_duration_arr(absl::string_view value);
+  template 
+  void add_origin_duration_arr(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& origin_duration_arr() const;
   ::google::protobuf::RepeatedPtrField* mutable_origin_duration_arr();
 
@@ -3125,7 +3344,7 @@ class process_by_script final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:process_by_script) */ {
  public:
   inline process_by_script() : process_by_script(nullptr) {}
-  ~process_by_script() override;
+  ~process_by_script() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR process_by_script(
       ::google::protobuf::internal::ConstantInitialized);
@@ -3198,7 +3417,7 @@ class process_by_script final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  process_by_script* New(::google::protobuf::Arena* arena = nullptr) const final {
+  process_by_script* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -3215,11 +3434,27 @@ class process_by_script final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -3237,7 +3472,8 @@ class process_by_script final : public ::google::protobuf::Message
       : process_by_script(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -3409,7 +3645,7 @@ class arr_in_arr_test_nested_message final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:arr_in_arr.test_nested_message) */ {
  public:
   inline arr_in_arr_test_nested_message() : arr_in_arr_test_nested_message(nullptr) {}
-  ~arr_in_arr_test_nested_message() override;
+  ~arr_in_arr_test_nested_message() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR arr_in_arr_test_nested_message(
       ::google::protobuf::internal::ConstantInitialized);
@@ -3487,7 +3723,7 @@ class arr_in_arr_test_nested_message final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  arr_in_arr_test_nested_message* New(::google::protobuf::Arena* arena = nullptr) const final {
+  arr_in_arr_test_nested_message* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -3504,11 +3740,27 @@ class arr_in_arr_test_nested_message final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -3526,7 +3778,8 @@ class arr_in_arr_test_nested_message final : public ::google::protobuf::Message
       : arr_in_arr_test_nested_message(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -3645,7 +3898,7 @@ class arr_in_arr final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:arr_in_arr) */ {
  public:
   inline arr_in_arr() : arr_in_arr(nullptr) {}
-  ~arr_in_arr() override;
+  ~arr_in_arr() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR arr_in_arr(
       ::google::protobuf::internal::ConstantInitialized);
@@ -3723,7 +3976,7 @@ class arr_in_arr final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  arr_in_arr* New(::google::protobuf::Arena* arena = nullptr) const final {
+  arr_in_arr* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -3740,11 +3993,27 @@ class arr_in_arr final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -3762,7 +4031,8 @@ class arr_in_arr final : public ::google::protobuf::Message
       : arr_in_arr(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -3823,17 +4093,11 @@ class arr_in_arr final : public ::google::protobuf::Message
   void clear_str_arr() ;
   const std::string& str_arr(int index) const;
   std::string* mutable_str_arr(int index);
-  void set_str_arr(int index, const std::string& value);
-  void set_str_arr(int index, std::string&& value);
-  void set_str_arr(int index, const char* value);
-  void set_str_arr(int index, const char* value, std::size_t size);
-  void set_str_arr(int index, absl::string_view value);
+  template 
+  void set_str_arr(int index, Arg_&& value, Args_... args);
   std::string* add_str_arr();
-  void add_str_arr(const std::string& value);
-  void add_str_arr(std::string&& value);
-  void add_str_arr(const char* value);
-  void add_str_arr(const char* value, std::size_t size);
-  void add_str_arr(absl::string_view value);
+  template 
+  void add_str_arr(Arg_&& value, Args_... args);
   const ::google::protobuf::RepeatedPtrField& str_arr() const;
   ::google::protobuf::RepeatedPtrField* mutable_str_arr();
 
@@ -3951,7 +4215,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
 /* @@protoc_insertion_point(class_definition:arr_in_arr_cfg) */ {
  public:
   inline arr_in_arr_cfg() : arr_in_arr_cfg(nullptr) {}
-  ~arr_in_arr_cfg() override;
+  ~arr_in_arr_cfg() PROTOBUF_FINAL;
   template 
   explicit PROTOBUF_CONSTEXPR arr_in_arr_cfg(
       ::google::protobuf::internal::ConstantInitialized);
@@ -4024,7 +4288,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
 
   // implements Message ----------------------------------------------
 
-  arr_in_arr_cfg* New(::google::protobuf::Arena* arena = nullptr) const final {
+  arr_in_arr_cfg* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
     return ::google::protobuf::Message::DefaultConstruct(arena);
   }
   using ::google::protobuf::Message::CopyFrom;
@@ -4041,11 +4305,27 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
   bool IsInitialized() const {
     return true;
   }
-  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
+  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
+  #if defined(PROTOBUF_CUSTOM_VTABLE)
+  private:
+  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
+  static ::uint8_t* _InternalSerialize(
+      const MessageLite& msg, ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream);
+
+  public:
+  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
+  ::uint8_t* _InternalSerialize(
+      ::uint8_t* target,
+      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
+    return _InternalSerialize(*this, target, stream);
+  }
+  #else   // PROTOBUF_CUSTOM_VTABLE
   ::size_t ByteSizeLong() const final;
   ::uint8_t* _InternalSerialize(
       ::uint8_t* target,
       ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
+  #endif  // PROTOBUF_CUSTOM_VTABLE
   int GetCachedSize() const { return _impl_._cached_size_.Get(); }
 
   private:
@@ -4063,7 +4343,8 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
       : arr_in_arr_cfg(arena) {
     *this = ::std::move(from);
   }
-  const ::google::protobuf::Message::ClassData* GetClassData() const final;
+  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
+  static const ::google::protobuf::Message::ClassDataFull _class_data_;
 
  public:
   ::google::protobuf::Metadata GetMetadata() const;
@@ -4080,7 +4361,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
     kTestPlainMsgFieldNumber = 5,
     kIdFieldNumber = 1,
   };
-  // repeated .arr_in_arr arr = 2;
+  // repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
   int arr_size() const;
   private:
   int _internal_arr_size() const;
@@ -4097,7 +4378,7 @@ class arr_in_arr_cfg final : public ::google::protobuf::Message
   const ::arr_in_arr& arr(int index) const;
   ::arr_in_arr* add_arr();
   const ::google::protobuf::RepeatedPtrField<::arr_in_arr>& arr() const;
-  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+  // repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
   int test_plain_int_arr_size() const;
   private:
   int _internal_test_plain_int_arr_size() const;
@@ -4512,8 +4793,7 @@ inline void role_cfg::clear_test_array() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.test_array_.Clear();
 }
-inline std::string* role_cfg::add_test_array()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* role_cfg::add_test_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_test_array()->Add();
   // @@protoc_insertion_point(field_add_mutable:role_cfg.test_array)
@@ -4529,58 +4809,21 @@ inline std::string* role_cfg::mutable_test_array(int index)
   // @@protoc_insertion_point(field_mutable:role_cfg.test_array)
   return _internal_mutable_test_array()->Mutable(index);
 }
-inline void role_cfg::set_test_array(int index, const std::string& value) {
-  _internal_mutable_test_array()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:role_cfg.test_array)
-}
-inline void role_cfg::set_test_array(int index, std::string&& value) {
-  _internal_mutable_test_array()->Mutable(index)->assign(std::move(value));
+template 
+inline void role_cfg::set_test_array(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_test_array()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:role_cfg.test_array)
 }
-inline void role_cfg::set_test_array(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_test_array()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:role_cfg.test_array)
-}
-inline void role_cfg::set_test_array(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_test_array()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:role_cfg.test_array)
-}
-inline void role_cfg::set_test_array(int index, absl::string_view value) {
-  _internal_mutable_test_array()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(std::string&& value) {
+template 
+inline void role_cfg::add_test_array(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_test_array(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:role_cfg.test_array)
 }
-inline void role_cfg::add_test_array(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:role_cfg.test_array)
-}
-inline void role_cfg::add_test_array(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_test_array()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:role_cfg.test_array)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 role_cfg::test_array() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:role_cfg.test_array)
@@ -5036,8 +5279,7 @@ inline void role_cfg::clear_origin_timepoint_arr() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.origin_timepoint_arr_.Clear();
 }
-inline std::string* role_cfg::add_origin_timepoint_arr()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* role_cfg::add_origin_timepoint_arr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_origin_timepoint_arr()->Add();
   // @@protoc_insertion_point(field_add_mutable:role_cfg.origin_timepoint_arr)
@@ -5053,58 +5295,21 @@ inline std::string* role_cfg::mutable_origin_timepoint_arr(int index)
   // @@protoc_insertion_point(field_mutable:role_cfg.origin_timepoint_arr)
   return _internal_mutable_origin_timepoint_arr()->Mutable(index);
 }
-inline void role_cfg::set_origin_timepoint_arr(int index, const std::string& value) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::set_origin_timepoint_arr(int index, std::string&& value) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(std::move(value));
+template 
+inline void role_cfg::set_origin_timepoint_arr(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_origin_timepoint_arr()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:role_cfg.origin_timepoint_arr)
 }
-inline void role_cfg::set_origin_timepoint_arr(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::set_origin_timepoint_arr(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::set_origin_timepoint_arr(int index, absl::string_view value) {
-  _internal_mutable_origin_timepoint_arr()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(std::string&& value) {
+template 
+inline void role_cfg::add_origin_timepoint_arr(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_origin_timepoint_arr(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:role_cfg.origin_timepoint_arr)
 }
-inline void role_cfg::add_origin_timepoint_arr(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:role_cfg.origin_timepoint_arr)
-}
-inline void role_cfg::add_origin_timepoint_arr(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_timepoint_arr()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:role_cfg.origin_timepoint_arr)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 role_cfg::origin_timepoint_arr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:role_cfg.origin_timepoint_arr)
@@ -5183,8 +5388,7 @@ inline void role_cfg::clear_origin_duration_arr() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.origin_duration_arr_.Clear();
 }
-inline std::string* role_cfg::add_origin_duration_arr()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* role_cfg::add_origin_duration_arr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_origin_duration_arr()->Add();
   // @@protoc_insertion_point(field_add_mutable:role_cfg.origin_duration_arr)
@@ -5200,58 +5404,21 @@ inline std::string* role_cfg::mutable_origin_duration_arr(int index)
   // @@protoc_insertion_point(field_mutable:role_cfg.origin_duration_arr)
   return _internal_mutable_origin_duration_arr()->Mutable(index);
 }
-inline void role_cfg::set_origin_duration_arr(int index, const std::string& value) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::set_origin_duration_arr(int index, std::string&& value) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(std::move(value));
+template 
+inline void role_cfg::set_origin_duration_arr(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_origin_duration_arr()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:role_cfg.origin_duration_arr)
 }
-inline void role_cfg::set_origin_duration_arr(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::set_origin_duration_arr(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::set_origin_duration_arr(int index, absl::string_view value) {
-  _internal_mutable_origin_duration_arr()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(std::string&& value) {
+template 
+inline void role_cfg::add_origin_duration_arr(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_origin_duration_arr(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:role_cfg.origin_duration_arr)
 }
-inline void role_cfg::add_origin_duration_arr(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:role_cfg.origin_duration_arr)
-}
-inline void role_cfg::add_origin_duration_arr(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_origin_duration_arr()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:role_cfg.origin_duration_arr)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 role_cfg::origin_duration_arr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:role_cfg.origin_duration_arr)
@@ -5669,8 +5836,7 @@ inline void arr_in_arr::clear_str_arr() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.str_arr_.Clear();
 }
-inline std::string* arr_in_arr::add_str_arr()
-    ABSL_ATTRIBUTE_LIFETIME_BOUND {
+inline std::string* arr_in_arr::add_str_arr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   std::string* _s = _internal_mutable_str_arr()->Add();
   // @@protoc_insertion_point(field_add_mutable:arr_in_arr.str_arr)
@@ -5686,58 +5852,21 @@ inline std::string* arr_in_arr::mutable_str_arr(int index)
   // @@protoc_insertion_point(field_mutable:arr_in_arr.str_arr)
   return _internal_mutable_str_arr()->Mutable(index);
 }
-inline void arr_in_arr::set_str_arr(int index, const std::string& value) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::set_str_arr(int index, std::string&& value) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(std::move(value));
+template 
+inline void arr_in_arr::set_str_arr(int index, Arg_&& value, Args_... args) {
+  ::google::protobuf::internal::AssignToString(
+      *_internal_mutable_str_arr()->Mutable(index),
+      std::forward(value), args... );
   // @@protoc_insertion_point(field_set:arr_in_arr.str_arr)
 }
-inline void arr_in_arr::set_str_arr(int index, const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  _internal_mutable_str_arr()->Mutable(index)->assign(value);
-  // @@protoc_insertion_point(field_set_char:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::set_str_arr(int index, const char* value,
-                              std::size_t size) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_set_pointer:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::set_str_arr(int index, absl::string_view value) {
-  _internal_mutable_str_arr()->Mutable(index)->assign(
-      value.data(), value.size());
-  // @@protoc_insertion_point(field_set_string_piece:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(const std::string& value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(std::string&& value) {
+template 
+inline void arr_in_arr::add_str_arr(Arg_&& value, Args_... args) {
   ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add(std::move(value));
+  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_str_arr(),
+                               std::forward(value),
+                               args... );
   // @@protoc_insertion_point(field_add:arr_in_arr.str_arr)
 }
-inline void arr_in_arr::add_str_arr(const char* value) {
-  ABSL_DCHECK(value != nullptr);
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(value);
-  // @@protoc_insertion_point(field_add_char:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(const char* value, std::size_t size) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(
-      reinterpret_cast(value), size);
-  // @@protoc_insertion_point(field_add_pointer:arr_in_arr.str_arr)
-}
-inline void arr_in_arr::add_str_arr(absl::string_view value) {
-  ::google::protobuf::internal::TSanWrite(&_impl_);
-  _internal_mutable_str_arr()->Add()->assign(value.data(),
-                                                     value.size());
-  // @@protoc_insertion_point(field_add_string_piece:arr_in_arr.str_arr)
-}
 inline const ::google::protobuf::RepeatedPtrField&
 arr_in_arr::str_arr() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
   // @@protoc_insertion_point(field_list:arr_in_arr.str_arr)
@@ -5953,7 +6082,7 @@ inline void test_msg_verifier::_internal_set_test_id_1(::uint32_t value) {
   _impl_.test_id_1_ = value;
 }
 
-// uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152"];
+// uint32 test_id_2 = 10002 [(.org.xresloader.field_alias) = "\346\265\213\350\257\225ID\345\210\253\345\220\2152", (.org.xresloader.field_tag) = "server_only"];
 inline void test_msg_verifier::clear_test_id_2() {
   ::google::protobuf::internal::TSanWrite(&_impl_);
   _impl_.test_id_2_ = 0u;
@@ -6027,7 +6156,7 @@ inline void arr_in_arr_cfg::_internal_set_id(::uint32_t value) {
   _impl_.id_ = value;
 }
 
-// repeated .arr_in_arr arr = 2;
+// repeated .arr_in_arr arr = 2 [(.org.xresloader.field_tag) = "server_only"];
 inline int arr_in_arr_cfg::_internal_arr_size() const {
   return _internal_arr().size();
 }
@@ -6076,7 +6205,7 @@ arr_in_arr_cfg::_internal_mutable_arr() {
   return &_impl_.arr_;
 }
 
-// repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3"];
+// repeated int32 test_plain_int_arr = 3 [(.org.xresloader.field_list_min_size) = "1", (.org.xresloader.field_list_max_size) = "3", (.org.xresloader.field_tag) = "server_only"];
 inline int arr_in_arr_cfg::_internal_test_plain_int_arr_size() const {
   return _internal_test_plain_int_arr().size();
 }
@@ -6857,7 +6986,7 @@ inline void event_cfg::set_allocated_rule(::event_rule_item* value) {
   // @@protoc_insertion_point(field_set_allocated:event_cfg.rule)
 }
 
-// .event_rule_item specify_field = 7;
+// .event_rule_item specify_field = 7 [(.org.xresloader.field_tag) = "server_only"];
 inline bool event_cfg::has_specify_field() const {
   bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
   PROTOBUF_ASSUME(!value || _impl_.specify_field_ != nullptr);
diff --git a/sample/gen_sample_output.ps1 b/sample/gen_sample_output.ps1
index 36560a21..3a877652 100755
--- a/sample/gen_sample_output.ps1
+++ b/sample/gen_sample_output.ps1
@@ -43,6 +43,8 @@ foreach ($proto_dir in "proto_v2", "proto_v3") {
         "-t lua -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|arr_in_arr|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.lua -m KeyRow=2",
         "-t bin -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|arr_in_arr|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.bin -m KeyRow=2",
         "-t xml -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|arr_in_arr|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.xml -m KeyRow=2",
+        "-t lua -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|arr_in_arr|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.hidden.lua --ignore-field-tags server_only -m KeyRow=2",
+        "-t bin -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|arr_in_arr|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.hidden.bin --ignore-field-tags server_only -m KeyRow=2",
         "-t bin -p protobuf -o '$proto_dir'    -f '$proto_dir/kind.pb' -s '$XLSX_FILE' --validator-rules custom_validator.yaml -m scheme_upgrade --disable-excel-formular",
         "-t json -p protobuf -o '$proto_dir'    -f '$proto_dir/kind.pb' -s '$XLSX_FILE' --validator-rules custom_validator.yaml -m scheme_upgrade -n '/(?i)\.bin$/\.json/' --pretty 2 --disable-excel-formular",
         "-t lua -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' -s '$XLSX_FILE' --validator-rules custom_validator.yaml -m scheme_upgrade -n '/(?i)\.bin$/\.lua/' --pretty 2 --disable-excel-formular",
@@ -51,6 +53,8 @@ foreach ($proto_dir in "proto_v2", "proto_v3") {
         "-t js -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 -i kind_option.js --javascript-export nodejs",
         "-t bin -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|test_oneof|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=event_cfg -m OutputFile=event_cfg.bin -m KeyRow=2",
         "-t lua -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|test_oneof|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=event_cfg -m OutputFile=event_cfg.lua -m KeyRow=2",
+        "-t bin -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|test_oneof|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=event_cfg -m OutputFile=event_cfg.hidden.bin --ignore-field-tags server_only -m KeyRow=2",
+        "-t lua -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|test_oneof|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=event_cfg -m OutputFile=event_cfg.hidden.lua --ignore-field-tags server_only -m KeyRow=2",
         "-t ue-json -o '$proto_dir/json' -f '$proto_dir/kind.pb' -c KindConst.json",
         "-t ue-json -o '$proto_dir/json' -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|arr_in_arr|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=arr_in_arr_cfg -m OutputFile=ArrInArrCfg.json -m KeyRow=2 -m UeCfg-CodeOutput=|Public/ConfigRec|Private/ConfigRec",
         "-t ue-json -o '$proto_dir/json' -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m 'DataSource=$XLSX_FILE|upgrade_10001|3,1' -m 'DataSource=$XLSX_FILE|upgrade_10002|3,1' -m 'MacroSource=$XLSX_FILE|macro|2,1' -m ProtoName=role_upgrade_cfg -m OutputFile=RoleUpgradeCfg.json -m KeyRow=2 -m UeCfg-CodeOutput=|Public/ConfigRec|Private/ConfigRec",
diff --git a/sample/gen_sample_output.sh b/sample/gen_sample_output.sh
index 840adfde..9088d2c1 100755
--- a/sample/gen_sample_output.sh
+++ b/sample/gen_sample_output.sh
@@ -37,6 +37,8 @@ for proto_dir in proto_v2 proto_v3; do
         -t lua -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml --pretty 2 -m DataSource='$XLSX_FILE'|arr_in_arr|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.lua -m KeyRow=2
         -t bin -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|arr_in_arr|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.bin -m KeyRow=2
         -t xml -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml --pretty 2 -m DataSource='$XLSX_FILE'|arr_in_arr|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.xml -m KeyRow=2
+        -t lua -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml --pretty 2 -m DataSource='$XLSX_FILE'|arr_in_arr|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.hidden.lua --ignore-field-tags server_only -m KeyRow=2
+        -t bin -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|arr_in_arr|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=arr_in_arr_cfg -m OutputFile=arr_in_arr_cfg.hidden.bin --ignore-field-tags server_only -m KeyRow=2
         -t bin -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' -s '$XLSX_FILE' --validator-rules custom_validator.yaml -m scheme_upgrade  --disable-excel-formular
         -t json -p protobuf -o '$proto_dir'    -f '$proto_dir/kind.pb' -s '$XLSX_FILE' --validator-rules custom_validator.yaml -m scheme_upgrade -n "/(?i)\.bin$/\.json/" --pretty 2 --disable-excel-formular
         -t lua -p protobuf -o '$proto_dir'     -f '$proto_dir/kind.pb' -s '$XLSX_FILE' --validator-rules custom_validator.yaml -m scheme_upgrade -n "/(?i)\.bin$/\.lua/" --pretty 2 --disable-excel-formular
@@ -45,6 +47,8 @@ for proto_dir in proto_v2 proto_v3; do
         -t js -o '$proto_dir'      -f '$proto_dir/kind.pb' --pretty 2 -i kind_option.js --javascript-export nodejs
         -t bin -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|test_oneof|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=event_cfg -m OutputFile=event_cfg.bin -m KeyRow=2
         -t lua -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|test_oneof|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=event_cfg -m OutputFile=event_cfg.lua -m KeyRow=2
+        -t bin -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|test_oneof|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=event_cfg -m OutputFile=event_cfg.hidden.bin --ignore-field-tags server_only -m KeyRow=2
+        -t lua -p protobuf -o '$proto_dir' -f '$proto_dir/kind.pb' --pretty 2 --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|test_oneof|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=event_cfg -m OutputFile=event_cfg.hidden.lua --ignore-field-tags server_only -m KeyRow=2
         -t ue-json -o '$proto_dir/json' -f '$proto_dir/kind.pb' -c KindConst.json
         -t ue-json -o '$proto_dir/json' -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|arr_in_arr|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=arr_in_arr_cfg -m OutputFile=ArrInArrCfg.json -m KeyRow=2 -m UeCfg-CodeOutput=|Public/ConfigRec|Private/ConfigRec
         -t ue-json -o '$proto_dir/json' -f '$proto_dir/kind.pb' --validator-rules custom_validator.yaml -m DataSource='$XLSX_FILE'|upgrade_10001|3,1 -m DataSource='$XLSX_FILE'|upgrade_10002|3,1 -m MacroSource='$XLSX_FILE'|macro|2,1 -m ProtoName=role_upgrade_cfg -m OutputFile=RoleUpgradeCfg.json -m KeyRow=2 -m UeCfg-CodeOutput=|Public/ConfigRec|Private/ConfigRec
diff --git a/sample/proto_v2/arr_in_arr_cfg.bin b/sample/proto_v2/arr_in_arr_cfg.bin
index 55fa7ac3..4bcd3a5a 100755
Binary files a/sample/proto_v2/arr_in_arr_cfg.bin and b/sample/proto_v2/arr_in_arr_cfg.bin differ
diff --git a/sample/proto_v2/arr_in_arr_cfg.hidden.bin b/sample/proto_v2/arr_in_arr_cfg.hidden.bin
new file mode 100644
index 00000000..9ab72be2
--- /dev/null
+++ b/sample/proto_v2/arr_in_arr_cfg.hidden.bin
@@ -0,0 +1,12 @@
+
+
+2.19.01.0.0.0"Gsha256:960ff46566e477db8f731488949271a1c499ec9015122ce90bca4496872ac61a*Test arr_in_arr_cfgZ'
+资源转换示例.xlsx
+arr_in_arrN N N N*222:
+Map嵌套模式[0].value:Map嵌套模式[1].valueB
+aao112B
+
特殊:字符y122N N N N*22	:Map嵌套模式[0].value:Map嵌套模式[1].valueB
+ba212B
+
特殊.字符222tN N N N*2:Map嵌套模式[0].value:Map嵌套模式[1].valueB
+ca312B
+cb322arr_in_arr_cfg
\ No newline at end of file
diff --git a/sample/proto_v2/arr_in_arr_cfg.hidden.lua b/sample/proto_v2/arr_in_arr_cfg.hidden.lua
new file mode 100644
index 00000000..77a6c9fd
--- /dev/null
+++ b/sample/proto_v2/arr_in_arr_cfg.hidden.lua
@@ -0,0 +1,127 @@
+-- this file is generated by xresloader, please don't edit it.
+
+return {
+  [1] = {
+    count = 3,
+    data_source = {
+      {
+        count = 3,
+        file = "资源转换示例.xlsx",
+        sheet = "arr_in_arr",
+      },
+    },
+    data_ver = "1.0.0.0",
+    description = "Test arr_in_arr_cfg",
+    hash_code = "sha256:b4d268d9a7b1a8cf6fc18489dd67c4a298408e7bffbde43c91d6ac2f47836601",
+    xres_ver = "2.19.0",
+  },
+  [2] = "arr_in_arr_cfg",
+  arr_in_arr_cfg = {
+    {
+      arr = {
+      },
+      id = 10001,
+      test_map_is = {
+        [10] = "Map嵌套模式[0].value",
+        [11] = "Map嵌套模式[1].value",
+      },
+      test_map_sm = {
+        ["aa"] = {
+          id = 111,
+          level = "112",
+        },
+        ["特殊:字符"] = {
+          id = 121,
+          level = "122",
+        },
+      },
+      test_plain_enum_arr = {
+        10001,
+        10001,
+        10001,
+      },
+      test_plain_msg = {
+        test_id_1 = 1,
+      },
+      test_plain_msg_arr = {
+        {
+          test_id_1 = 1,
+        },
+        {
+          test_id_1 = 3,
+        },
+        {
+          test_id_1 = 5,
+        },
+      },
+    },
+    {
+      arr = {
+      },
+      id = 10002,
+      test_map_is = {
+        [20] = "Map嵌套模式[0].value",
+        [21] = "Map嵌套模式[1].value",
+      },
+      test_map_sm = {
+        ["ba"] = {
+          id = 211,
+          level = "212",
+        },
+        ["特殊.字符"] = {
+          id = 221,
+          level = "222",
+        },
+      },
+      test_plain_enum_arr = {
+        10101,
+        10101,
+        10101,
+      },
+      test_plain_msg = {
+        test_id_1 = 3,
+        test_id_3 = 5,
+      },
+      test_plain_msg_arr = {
+        {
+          test_id_1 = 7,
+        },
+        {
+          test_id_1 = 9,
+        },
+      },
+    },
+    {
+      arr = {
+      },
+      id = 10003,
+      test_map_is = {
+        [30] = "Map嵌套模式[0].value",
+        [31] = "Map嵌套模式[1].value",
+      },
+      test_map_sm = {
+        ["ca"] = {
+          id = 311,
+          level = "312",
+        },
+        ["cb"] = {
+          id = 321,
+          level = "322",
+        },
+      },
+      test_plain_enum_arr = {
+        10001,
+        10001,
+        10001,
+      },
+      test_plain_msg = {
+        test_id_1 = 6,
+      },
+      test_plain_msg_arr = {
+        {
+          test_id_1 = 11,
+        },
+      },
+    },
+  },
+}
\ No newline at end of file
diff --git a/sample/proto_v2/arr_in_arr_cfg.lua b/sample/proto_v2/arr_in_arr_cfg.lua
index e15d77c6..16eedc0b 100755
--- a/sample/proto_v2/arr_in_arr_cfg.lua
+++ b/sample/proto_v2/arr_in_arr_cfg.lua
@@ -13,7 +13,7 @@ return {
     data_ver = "1.0.0.0",
     description = "Test arr_in_arr_cfg",
     hash_code = "sha256:dd55e67e5c1312ca507fedd631c54b8c1266ab82859ed36bd535db90ac36a95f",
-    xres_ver = "2.18.2",
+    xres_ver = "2.19.0",
   },
   [2] = "arr_in_arr_cfg",
   arr_in_arr_cfg = {
diff --git a/sample/proto_v2/arr_in_arr_cfg.xml b/sample/proto_v2/arr_in_arr_cfg.xml
index cd5f5445..4e2984a1 100644
--- a/sample/proto_v2/arr_in_arr_cfg.xml
+++ b/sample/proto_v2/arr_in_arr_cfg.xml
@@ -12,7 +12,7 @@
     1.0.0.0
     Test arr_in_arr_cfg
     sha256:dd55e67e5c1312ca507fedd631c54b8c1266ab82859ed36bd535db90ac36a95f
-    2.18.2
+    2.19.0
   
   
     
diff --git a/sample/proto_v2/csv/Private/ConfigRec/ArrInArr.cpp b/sample/proto_v2/csv/Private/ConfigRec/ArrInArr.cpp
index 0f9964d3..5da94982 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/ArrInArr.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/ArrInArr.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/ArrInArrCfg.cpp b/sample/proto_v2/csv/Private/ConfigRec/ArrInArrCfg.cpp
index c44bfb43..0c301ed1 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/ArrInArrCfg.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/ArrInArrCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/Dep2Cfg.cpp b/sample/proto_v2/csv/Private/ConfigRec/Dep2Cfg.cpp
index d1b950ca..83c7e4df 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/Dep2Cfg.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/Dep2Cfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/EventCfg.cpp b/sample/proto_v2/csv/Private/ConfigRec/EventCfg.cpp
index 3a1c9b94..75e2b834 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/EventCfg.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/EventCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/EventRewardItem.cpp b/sample/proto_v2/csv/Private/ConfigRec/EventRewardItem.cpp
index 1944ad41..6c6f91a8 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/EventRewardItem.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/EventRewardItem.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/EventRuleItem.cpp b/sample/proto_v2/csv/Private/ConfigRec/EventRuleItem.cpp
index b2f740ae..22e90836 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/EventRuleItem.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/EventRuleItem.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp b/sample/proto_v2/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp
index 4f3e9b93..e0cd2a7e 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/RoleUpgradeCfg.cpp b/sample/proto_v2/csv/Private/ConfigRec/RoleUpgradeCfg.cpp
index dc8d6211..860337ac 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/RoleUpgradeCfg.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/RoleUpgradeCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Private/ConfigRec/TestMsgVerifier.cpp b/sample/proto_v2/csv/Private/ConfigRec/TestMsgVerifier.cpp
index 9b09f4cd..b01f834f 100644
--- a/sample/proto_v2/csv/Private/ConfigRec/TestMsgVerifier.cpp
+++ b/sample/proto_v2/csv/Private/ConfigRec/TestMsgVerifier.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/ArrInArr.h b/sample/proto_v2/csv/Public/ConfigRec/ArrInArr.h
index e262991a..102d9857 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/ArrInArr.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/ArrInArr.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/ArrInArrCfg.h b/sample/proto_v2/csv/Public/ConfigRec/ArrInArrCfg.h
index 1cdbd05a..9ba99aa6 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/ArrInArrCfg.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/ArrInArrCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/Dep2Cfg.h b/sample/proto_v2/csv/Public/ConfigRec/Dep2Cfg.h
index 300f3194..83a97ad4 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/Dep2Cfg.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/Dep2Cfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/EventCfg.h b/sample/proto_v2/csv/Public/ConfigRec/EventCfg.h
index 7b909000..0f09441b 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/EventCfg.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/EventCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/EventRewardItem.h b/sample/proto_v2/csv/Public/ConfigRec/EventRewardItem.h
index a862d6fd..1e9ef05b 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/EventRewardItem.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/EventRewardItem.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/EventRuleItem.h b/sample/proto_v2/csv/Public/ConfigRec/EventRuleItem.h
index 9aa1b7c6..95859f3a 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/EventRuleItem.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/EventRuleItem.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h b/sample/proto_v2/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h
index 4f0db46a..db3949a1 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/RoleUpgradeCfg.h b/sample/proto_v2/csv/Public/ConfigRec/RoleUpgradeCfg.h
index 52e20a94..399aae72 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/RoleUpgradeCfg.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/RoleUpgradeCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/csv/Public/ConfigRec/TestMsgVerifier.h b/sample/proto_v2/csv/Public/ConfigRec/TestMsgVerifier.h
index 8030d8cc..4420f4d1 100644
--- a/sample/proto_v2/csv/Public/ConfigRec/TestMsgVerifier.h
+++ b/sample/proto_v2/csv/Public/ConfigRec/TestMsgVerifier.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/event_cfg.bin b/sample/proto_v2/event_cfg.bin
index b4f9a751..1e76ac61 100644
Binary files a/sample/proto_v2/event_cfg.bin and b/sample/proto_v2/event_cfg.bin differ
diff --git a/sample/proto_v2/event_cfg.hidden.bin b/sample/proto_v2/event_cfg.hidden.bin
new file mode 100644
index 00000000..db52e5d5
Binary files /dev/null and b/sample/proto_v2/event_cfg.hidden.bin differ
diff --git a/sample/proto_v2/event_cfg.hidden.lua b/sample/proto_v2/event_cfg.hidden.lua
new file mode 100644
index 00000000..f2c02b37
--- /dev/null
+++ b/sample/proto_v2/event_cfg.hidden.lua
@@ -0,0 +1,90 @@
+-- this file is generated by xresloader, please don't edit it.
+
+return {
+  [1] = {
+    count = 5,
+    data_source = {
+      {
+        count = 5,
+        file = "资源转换示例.xlsx",
+        sheet = "test_oneof",
+      },
+    },
+    data_ver = "1.0.0.0",
+    description = "Test event_cfg with oneof fields",
+    hash_code = "sha256:1ee8cc927336f8c693fbc5c5ca1f78d0e28d0f614de15d7dbe42cdd51b56f5f2",
+    xres_ver = "2.19.0",
+  },
+  [2] = "event_cfg",
+  event_cfg = {
+    {
+      id = 50001,
+      process = 1,
+      rule = {
+        nested_note = "内嵌one of文本",
+        rule_id = 511,
+        rule_param = 512,
+      },
+      test_arr = {
+        {
+          nested_note = "内嵌one of文本",
+          rule_id = 711,
+          rule_param = 712,
+        },
+      },
+    },
+    {
+      id = 50002,
+      process = 2,
+      rule = {
+        nested_enum_type = 10001,
+        rule_id = 521,
+        rule_param = 522,
+      },
+      test_arr = {
+        {
+          nested_enum_type = 10001,
+          rule_id = 721,
+          rule_param = 722,
+        },
+        {
+          nested_enum_type = 10101,
+          rule_id = 821,
+          rule_param = 822,
+        },
+        {
+          nested_note = "数组嵌套one of",
+          rule_id = 921,
+          rule_param = 822,
+        },
+      },
+    },
+    {
+      id = 50003,
+      process = 3,
+      rule = {
+        nested_enum_type = 10101,
+        rule_id = 531,
+        rule_param = 532,
+      },
+    },
+    {
+      id = 50004,
+      note = "",
+      process = 4,
+      rule = {
+        rule_id = 541,
+        rule_param = 542,
+      },
+    },
+    {
+      id = 50004,
+      note = "",
+      process = 6,
+      rule = {
+        rule_id = 561,
+        rule_param = 562,
+      },
+    },
+  },
+}
\ No newline at end of file
diff --git a/sample/proto_v2/event_cfg.lua b/sample/proto_v2/event_cfg.lua
index a7805daf..7b3c88fc 100644
--- a/sample/proto_v2/event_cfg.lua
+++ b/sample/proto_v2/event_cfg.lua
@@ -13,7 +13,7 @@ return {
     data_ver = "1.0.0.0",
     description = "Test event_cfg with oneof fields",
     hash_code = "sha256:f54ea4a17140ed6e75a9136bff6c0053251bb5a4cd3954d905cf5bac8fcce998",
-    xres_ver = "2.18.2",
+    xres_ver = "2.19.0",
   },
   [2] = "event_cfg",
   event_cfg = {
diff --git a/sample/proto_v2/json/KindConst.cpp b/sample/proto_v2/json/KindConst.cpp
index bf26ee5e..7bf9c60a 100644
--- a/sample/proto_v2/json/KindConst.cpp
+++ b/sample/proto_v2/json/KindConst.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/KindConst.h b/sample/proto_v2/json/KindConst.h
index 920ac45c..364822f4 100644
--- a/sample/proto_v2/json/KindConst.h
+++ b/sample/proto_v2/json/KindConst.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/ArrInArr.cpp b/sample/proto_v2/json/Private/ConfigRec/ArrInArr.cpp
index 9576cfa4..7e80e9bc 100644
--- a/sample/proto_v2/json/Private/ConfigRec/ArrInArr.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/ArrInArr.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/ArrInArrCfg.cpp b/sample/proto_v2/json/Private/ConfigRec/ArrInArrCfg.cpp
index 83b1be6b..dbf1515f 100644
--- a/sample/proto_v2/json/Private/ConfigRec/ArrInArrCfg.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/ArrInArrCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/Dep2Cfg.cpp b/sample/proto_v2/json/Private/ConfigRec/Dep2Cfg.cpp
index b5e3cc66..07f7809f 100644
--- a/sample/proto_v2/json/Private/ConfigRec/Dep2Cfg.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/Dep2Cfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/EventCfg.cpp b/sample/proto_v2/json/Private/ConfigRec/EventCfg.cpp
index 6b918cca..dd09e759 100644
--- a/sample/proto_v2/json/Private/ConfigRec/EventCfg.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/EventCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/EventRewardItem.cpp b/sample/proto_v2/json/Private/ConfigRec/EventRewardItem.cpp
index 01b79dcf..d47fe92b 100644
--- a/sample/proto_v2/json/Private/ConfigRec/EventRewardItem.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/EventRewardItem.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/EventRuleItem.cpp b/sample/proto_v2/json/Private/ConfigRec/EventRuleItem.cpp
index f8c75ff2..46900c8f 100644
--- a/sample/proto_v2/json/Private/ConfigRec/EventRuleItem.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/EventRuleItem.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp b/sample/proto_v2/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp
index 4f3e9b93..e0cd2a7e 100644
--- a/sample/proto_v2/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/RoleUpgradeCfg.cpp b/sample/proto_v2/json/Private/ConfigRec/RoleUpgradeCfg.cpp
index 486318df..dcb55521 100644
--- a/sample/proto_v2/json/Private/ConfigRec/RoleUpgradeCfg.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/RoleUpgradeCfg.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Private/ConfigRec/TestMsgVerifier.cpp b/sample/proto_v2/json/Private/ConfigRec/TestMsgVerifier.cpp
index f301e7e3..b99bc222 100644
--- a/sample/proto_v2/json/Private/ConfigRec/TestMsgVerifier.cpp
+++ b/sample/proto_v2/json/Private/ConfigRec/TestMsgVerifier.cpp
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/ArrInArr.h b/sample/proto_v2/json/Public/ConfigRec/ArrInArr.h
index c1f8e92b..505b069b 100644
--- a/sample/proto_v2/json/Public/ConfigRec/ArrInArr.h
+++ b/sample/proto_v2/json/Public/ConfigRec/ArrInArr.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/ArrInArrCfg.h b/sample/proto_v2/json/Public/ConfigRec/ArrInArrCfg.h
index b527b95e..0619163a 100644
--- a/sample/proto_v2/json/Public/ConfigRec/ArrInArrCfg.h
+++ b/sample/proto_v2/json/Public/ConfigRec/ArrInArrCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/Dep2Cfg.h b/sample/proto_v2/json/Public/ConfigRec/Dep2Cfg.h
index 372b5073..051696e7 100644
--- a/sample/proto_v2/json/Public/ConfigRec/Dep2Cfg.h
+++ b/sample/proto_v2/json/Public/ConfigRec/Dep2Cfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/EventCfg.h b/sample/proto_v2/json/Public/ConfigRec/EventCfg.h
index d3b71444..b88b383f 100644
--- a/sample/proto_v2/json/Public/ConfigRec/EventCfg.h
+++ b/sample/proto_v2/json/Public/ConfigRec/EventCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/EventRewardItem.h b/sample/proto_v2/json/Public/ConfigRec/EventRewardItem.h
index 0a7a29e5..6008b1d7 100644
--- a/sample/proto_v2/json/Public/ConfigRec/EventRewardItem.h
+++ b/sample/proto_v2/json/Public/ConfigRec/EventRewardItem.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/EventRuleItem.h b/sample/proto_v2/json/Public/ConfigRec/EventRuleItem.h
index 0579a512..b98226ac 100644
--- a/sample/proto_v2/json/Public/ConfigRec/EventRuleItem.h
+++ b/sample/proto_v2/json/Public/ConfigRec/EventRuleItem.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h b/sample/proto_v2/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h
index 4f0db46a..db3949a1 100644
--- a/sample/proto_v2/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h
+++ b/sample/proto_v2/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/RoleUpgradeCfg.h b/sample/proto_v2/json/Public/ConfigRec/RoleUpgradeCfg.h
index 691d9b6e..e1361580 100644
--- a/sample/proto_v2/json/Public/ConfigRec/RoleUpgradeCfg.h
+++ b/sample/proto_v2/json/Public/ConfigRec/RoleUpgradeCfg.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/json/Public/ConfigRec/TestMsgVerifier.h b/sample/proto_v2/json/Public/ConfigRec/TestMsgVerifier.h
index d3ff8663..572078b5 100644
--- a/sample/proto_v2/json/Public/ConfigRec/TestMsgVerifier.h
+++ b/sample/proto_v2/json/Public/ConfigRec/TestMsgVerifier.h
@@ -1,5 +1,5 @@
 /**
- * This file is generated by xresloader 2.18.2, please don't edit it.
+ * This file is generated by xresloader 2.19.0, please don't edit it.
  * You can find more information about this xresloader on https://xresloader.atframe.work/ .
  * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues .
  */
diff --git a/sample/proto_v2/keep_empty_list_cfg.bin b/sample/proto_v2/keep_empty_list_cfg.bin
index 2cbf362a..bacd30fc 100644
Binary files a/sample/proto_v2/keep_empty_list_cfg.bin and b/sample/proto_v2/keep_empty_list_cfg.bin differ
diff --git a/sample/proto_v2/keep_empty_list_cfg.lua b/sample/proto_v2/keep_empty_list_cfg.lua
index 4b55ca6d..da32a895 100644
--- a/sample/proto_v2/keep_empty_list_cfg.lua
+++ b/sample/proto_v2/keep_empty_list_cfg.lua
@@ -12,7 +12,7 @@ return {
     },
     data_ver = "1.0.0.0",
     hash_code = "sha256:e192b1278aea13633eb67e367edc99aa2bb8b487e32f3e8a0f9c5b975230304e",
-    xres_ver = "2.18.2",
+    xres_ver = "2.19.0",
   },
   [2] = "keep_or_strip_empty_list_cfg",
   keep_or_strip_empty_list_cfg = {
diff --git a/sample/proto_v2/kind.desc.json b/sample/proto_v2/kind.desc.json
index 57c889bc..7678e7f7 100644
--- a/sample/proto_v2/kind.desc.json
+++ b/sample/proto_v2/kind.desc.json
@@ -190,6 +190,7 @@
           "arr": {
             "name": "arr",
             "number": 2,
+            "options": {"field_tag": ["server_only"]},
             "type_name": "MESSAGE"
           },
           "id": {
@@ -222,7 +223,8 @@
             "number": 3,
             "options": {
               "field_list_max_size": "3",
-              "field_list_min_size": "1"
+              "field_list_min_size": "1",
+              "field_tag": ["server_only"]
             },
             "type_name": "INT32"
           },
@@ -309,6 +311,7 @@
           "specify_field": {
             "name": "specify_field",
             "number": 7,
+            "options": {"field_tag": ["server_only"]},
             "type_name": "MESSAGE"
           },
           "test_arr": {
@@ -340,7 +343,10 @@
         "oneof_decl": {
           "reward": {
             "name": "reward",
-            "options": {"oneof_not_null": true}
+            "options": {
+              "oneof_not_null": true,
+              "oneof_tag": ["server_only"]
+            }
           },
           "unlock_type": {"name": "unlock_type"}
         },
@@ -754,7 +760,10 @@
           "test_id_2": {
             "name": "test_id_2",
             "number": 10002,
-            "options": {"field_alias": ["测试ID别名2"]},
+            "options": {
+              "field_alias": ["测试ID别名2"],
+              "field_tag": ["server_only"]
+            },
             "type_name": "UINT32"
           },
           "test_id_3": {
diff --git a/sample/proto_v2/kind.desc.lua b/sample/proto_v2/kind.desc.lua
index bb2d7789..9708c36c 100644
--- a/sample/proto_v2/kind.desc.lua
+++ b/sample/proto_v2/kind.desc.lua
@@ -87,6 +87,16 @@ local const_res = {
             },
           },
           field = {
+            arr = {
+              name = "arr",
+              number = 2,
+              options = {
+                field_tag = {
+                  "server_only",
+                },
+              },
+              type_name = "MESSAGE",
+            },
             id = {
               name = "id",
               number = 1,
@@ -110,6 +120,9 @@ local const_res = {
               options = {
                 field_list_max_size = "3",
                 field_list_min_size = "1",
+                field_tag = {
+                  "server_only",
+                },
               },
               type_name = "INT32",
             },
@@ -198,6 +211,16 @@ local const_res = {
               },
               type_name = "UINT32",
             },
+            specify_field = {
+              name = "specify_field",
+              number = 7,
+              options = {
+                field_tag = {
+                  "server_only",
+                },
+              },
+              type_name = "MESSAGE",
+            },
             test_arr = {
               name = "test_arr",
               number = 91,
@@ -241,6 +264,9 @@ local const_res = {
               name = "reward",
               options = {
                 oneof_not_null = true,
+                oneof_tag = {
+                  "server_only",
+                },
               },
             },
           },
@@ -492,6 +518,9 @@ local const_res = {
                 field_alias = {
                   "测试ID别名2",
                 },
+                field_tag = {
+                  "server_only",
+                },
               },
               type_name = "UINT32",
             },
diff --git a/sample/proto_v2/kind.pb b/sample/proto_v2/kind.pb
index 7e847fc3..cb5667eb 100755
Binary files a/sample/proto_v2/kind.pb and b/sample/proto_v2/kind.pb differ
diff --git a/sample/proto_v2/kind.proto b/sample/proto_v2/kind.proto
index 8d3d04f5..8497e442 100755
--- a/sample/proto_v2/kind.proto
+++ b/sample/proto_v2/kind.proto
@@ -46,7 +46,7 @@ message test_msg_verifier {
     option (org.xresloader.msg_separator) = "-^";
 
     optional uint32 test_id_1 = 10001;
-    optional uint32 test_id_2 = 10002 [ (org.xresloader.field_alias) = "测试ID别名2" ];
+    optional uint32 test_id_2 = 10002 [ (org.xresloader.field_alias) = "测试ID别名2", (org.xresloader.field_tag) = "server_only" ];
     optional uint32 test_id_3 = 10003 [ (org.xresloader.field_allow_missing_in_plain_mode) = true ];
 }
 
@@ -64,9 +64,9 @@ message arr_in_arr_cfg {
     option (org.xresloader.msg_description) = "Test arr_in_arr_cfg";
 
     optional uint32     id  = 1 [ (org.xresloader.ue.key_tag) = 1, (org.xresloader.field_description) = "This is a Key" ];
-    repeated arr_in_arr arr = 2;
+    repeated arr_in_arr arr = 2 [ (org.xresloader.field_tag) = "server_only" ];
 
-    repeated int32             test_plain_int_arr  = 3 [ (org.xresloader.field_list_min_size) = "1", (org.xresloader.field_list_max_size) = "3" ];
+    repeated int32             test_plain_int_arr  = 3 [ (org.xresloader.field_list_min_size) = "1", (org.xresloader.field_list_max_size) = "3", (org.xresloader.field_tag) = "server_only" ];
     repeated cost_type         test_plain_enum_arr = 4;
     optional test_msg_verifier test_plain_msg      = 5 [ (org.xresloader.field_separator) = "&" ];
     repeated test_msg_verifier test_plain_msg_arr  = 6;
@@ -103,10 +103,11 @@ message event_cfg {
     optional uint32 process = 2 [ (org.xresloader.ue.key_tag) = 1, (org.xresloader.field_not_null) = true, (org.xresloader.field_unique_tag) = "unique_tag" ];
 
     optional event_rule_item rule          = 6;
-    optional event_rule_item specify_field = 7;
+    optional event_rule_item specify_field = 7 [ (org.xresloader.field_tag) = "server_only" ];
 
     oneof reward {
         option (org.xresloader.oneof_not_null) = true;
+        option (org.xresloader.oneof_tag)      = "server_only";
 
         event_reward_item item      = 11 [ (org.xresloader.field_alias) = "奖励道具" ];
         int64             user_exp  = 12 [ (org.xresloader.field_alias) = "奖励经验" ];
diff --git a/sample/proto_v2/kind_option.js b/sample/proto_v2/kind_option.js
index 33193ec1..4c89ada7 100644
--- a/sample/proto_v2/kind_option.js
+++ b/sample/proto_v2/kind_option.js
@@ -86,6 +86,16 @@ exports.files = [
           }
         },
         field : {
+          arr : {
+            name : "arr",
+            number : 2,
+            options : {
+              field_tag : [
+                "server_only"
+              ]
+            },
+            type_name : "MESSAGE"
+          },
           id : {
             name : "id",
             number : 1,
@@ -108,7 +118,10 @@ exports.files = [
             number : 3,
             options : {
               field_list_max_size : "3",
-              field_list_min_size : "1"
+              field_list_min_size : "1",
+              field_tag : [
+                "server_only"
+              ]
             },
             type_name : "INT32"
           },
@@ -197,6 +210,16 @@ exports.files = [
             },
             type_name : "UINT32"
           },
+          specify_field : {
+            name : "specify_field",
+            number : 7,
+            options : {
+              field_tag : [
+                "server_only"
+              ]
+            },
+            type_name : "MESSAGE"
+          },
           test_arr : {
             name : "test_arr",
             number : 91,
@@ -239,7 +262,10 @@ exports.files = [
           reward : {
             name : "reward",
             options : {
-              oneof_not_null : true
+              oneof_not_null : true,
+              oneof_tag : [
+                "server_only"
+              ]
             }
           }
         },
@@ -490,6 +516,9 @@ exports.files = [
             options : {
               field_alias : [
                 "测试ID别名2"
+              ],
+              field_tag : [
+                "server_only"
               ]
             },
             type_name : "UINT32"
diff --git a/sample/proto_v2/kind_option.lua b/sample/proto_v2/kind_option.lua
index 44ce8887..86bcb2b3 100644
--- a/sample/proto_v2/kind_option.lua
+++ b/sample/proto_v2/kind_option.lua
@@ -87,6 +87,16 @@ local const_res = {
             },
           },
           field = {
+            arr = {
+              name = "arr",
+              number = 2,
+              options = {
+                field_tag = {
+                  "server_only",
+                },
+              },
+              type_name = "MESSAGE",
+            },
             id = {
               name = "id",
               number = 1,
@@ -110,6 +120,9 @@ local const_res = {
               options = {
                 field_list_max_size = "3",
                 field_list_min_size = "1",
+                field_tag = {
+                  "server_only",
+                },
               },
               type_name = "INT32",
             },
@@ -198,6 +211,16 @@ local const_res = {
               },
               type_name = "UINT32",
             },
+            specify_field = {
+              name = "specify_field",
+              number = 7,
+              options = {
+                field_tag = {
+                  "server_only",
+                },
+              },
+              type_name = "MESSAGE",
+            },
             test_arr = {
               name = "test_arr",
               number = 91,
@@ -241,6 +264,9 @@ local const_res = {
               name = "reward",
               options = {
                 oneof_not_null = true,
+                oneof_tag = {
+                  "server_only",
+                },
               },
             },
           },
@@ -492,6 +518,9 @@ local const_res = {
                 field_alias = {
                   "测试ID别名2",
                 },
+                field_tag = {
+                  "server_only",
+                },
               },
               type_name = "UINT32",
             },
diff --git a/sample/proto_v2/kind_option.mod.lua b/sample/proto_v2/kind_option.mod.lua
index bb4193e6..d1f20440 100644
--- a/sample/proto_v2/kind_option.mod.lua
+++ b/sample/proto_v2/kind_option.mod.lua
@@ -88,6 +88,16 @@ local const_res = {
             },
           },
           field = {
+            arr = {
+              name = "arr",
+              number = 2,
+              options = {
+                field_tag = {
+                  "server_only",
+                },
+              },
+              type_name = "MESSAGE",
+            },
             id = {
               name = "id",
               number = 1,
@@ -111,6 +121,9 @@ local const_res = {
               options = {
                 field_list_max_size = "3",
                 field_list_min_size = "1",
+                field_tag = {
+                  "server_only",
+                },
               },
               type_name = "INT32",
             },
@@ -199,6 +212,16 @@ local const_res = {
               },
               type_name = "UINT32",
             },
+            specify_field = {
+              name = "specify_field",
+              number = 7,
+              options = {
+                field_tag = {
+                  "server_only",
+                },
+              },
+              type_name = "MESSAGE",
+            },
             test_arr = {
               name = "test_arr",
               number = 91,
@@ -242,6 +265,9 @@ local const_res = {
               name = "reward",
               options = {
                 oneof_not_null = true,
+                oneof_tag = {
+                  "server_only",
+                },
               },
             },
           },
@@ -493,6 +519,9 @@ local const_res = {
                 field_alias = {
                   "测试ID别名2",
                 },
+                field_tag = {
+                  "server_only",
+                },
               },
               type_name = "UINT32",
             },
diff --git a/sample/proto_v2/next_alias.bin b/sample/proto_v2/next_alias.bin
index e79229e6..0570057d 100644
Binary files a/sample/proto_v2/next_alias.bin and b/sample/proto_v2/next_alias.bin differ
diff --git a/sample/proto_v2/next_alias.lua b/sample/proto_v2/next_alias.lua
index 4ded3aaa..0ead78f4 100644
--- a/sample/proto_v2/next_alias.lua
+++ b/sample/proto_v2/next_alias.lua
@@ -12,7 +12,7 @@ return {
     },
     data_ver = "1.0.0.0",
     hash_code = "sha256:e99feb6b80a35127a916429bb5f48c7e15bd16e198bad71422598eb47765aa67",
-    xres_ver = "2.18.2",
+    xres_ver = "2.19.0",
   },
   [2] = "outer_alias_message",
   outer_alias_message = {
diff --git a/sample/proto_v2/process_by_script.bin b/sample/proto_v2/process_by_script.bin
index 71f7c34b..088c0617 100644
--- a/sample/proto_v2/process_by_script.bin
+++ b/sample/proto_v2/process_by_script.bin
@@ -1,6 +1,6 @@
 
 
-2.18.21.0.0.0"Gsha256:61e311d737fbee8763ecc058018322b9dc17f25f809f407d62b96afaba6bb9c9Z/
+2.19.01.0.0.0"Gsha256:61e311d737fbee8763ecc058018322b9dc17f25f809f407d62b96afaba6bb9c9Z/
 资源转换示例.xlsxprocess_by_script1
 Z/
 资源转换示例.xlsxprocess_by_script2
diff --git a/sample/proto_v2/process_by_script.json b/sample/proto_v2/process_by_script.json
index 72d52369..daa50b45 100644
--- a/sample/proto_v2/process_by_script.json
+++ b/sample/proto_v2/process_by_script.json
@@ -15,7 +15,7 @@
     ],
     "data_ver": "1.0.0.0",
     "hash_code": "sha256:9cefa62f0e07599754aed162aee8ac41e55ec4a86523ff8574aefa2f214f2c7d",
-    "xres_ver": "2.18.2"
+    "xres_ver": "2.19.0"
   },
   {"process_by_script": [
     {
diff --git a/sample/proto_v2/process_by_script.lua b/sample/proto_v2/process_by_script.lua
index 05996828..fb72f17f 100644
--- a/sample/proto_v2/process_by_script.lua
+++ b/sample/proto_v2/process_by_script.lua
@@ -17,7 +17,7 @@ return {
     },
     data_ver = "1.0.0.0",
     hash_code = "sha256:9cefa62f0e07599754aed162aee8ac41e55ec4a86523ff8574aefa2f214f2c7d",
-    xres_ver = "2.18.2",
+    xres_ver = "2.19.0",
   },
   [2] = "process_by_script",
   process_by_script = {
diff --git a/sample/proto_v2/role_cfg.amd.js b/sample/proto_v2/role_cfg.amd.js
index 716fcc7f..a05c6194 100755
--- a/sample/proto_v2/role_cfg.amd.js
+++ b/sample/proto_v2/role_cfg.amd.js
@@ -13,7 +13,7 @@ define({
     ],
     data_ver : "1.0.0.0",
     hash_code : "sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f",
-    xres_ver : "2.18.2"
+    xres_ver : "2.19.0"
   },
   "role_cfg": [
     {
diff --git a/sample/proto_v2/role_cfg.bin b/sample/proto_v2/role_cfg.bin
index 36883649..794e1993 100755
Binary files a/sample/proto_v2/role_cfg.bin and b/sample/proto_v2/role_cfg.bin differ
diff --git a/sample/proto_v2/role_cfg.js b/sample/proto_v2/role_cfg.js
index d739ffb3..c7e3ae00 100755
--- a/sample/proto_v2/role_cfg.js
+++ b/sample/proto_v2/role_cfg.js
@@ -366,7 +366,7 @@
         ],
         data_ver : "1.0.0.0",
         hash_code : "sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f",
-        xres_ver : "2.18.2"
+        xres_ver : "2.19.0"
       }
     }
   };
diff --git a/sample/proto_v2/role_cfg.json b/sample/proto_v2/role_cfg.json
index 84ee649d..bc5f2610 100755
--- a/sample/proto_v2/role_cfg.json
+++ b/sample/proto_v2/role_cfg.json
@@ -1 +1 @@
-[{"count":7,"data_source":[{"count":7,"file":"资源转换示例.xlsx","sheet":"kind"}],"data_ver":"1.0.0.0","hash_code":"sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f","xres_ver":"2.18.2"},{"role_cfg":[{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666627200},{"nanos":0,"seconds":1669305600}],"convert_timepoint_one":{"nanos":0,"seconds":1666627200},"cost_value":1,"dep_test":{"dep2":{"id":101,"level":"2014/10/13"},"id":51,"name":"123"},"id":10001,"int_as_string":"0","name":"欧若拉","origin_duration_arr":["12:45:15","13:45:15"],"origin_duration_one":"12:45:15","origin_timepoint_arr":["2022-10-25","2022-11-25"],"origin_timepoint_one":"2022-10-25","test_array":["lalal","欧若拉","小魔女"],"test_plain_enum_array":[10001]},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":2,"dep_test":{"dep2":{"id":201,"level":"2014/10/14"},"id":61,"name":"654"},"id":10002,"int_as_string":"1","name":"杰克","origin_duration_arr":["45915","49515"],"origin_duration_one":"45915","origin_timepoint_arr":["2022-10-25 12:45:15","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15","test_array":["blebleble","杰克","海盗王子"],"test_plain_enum_array":[10001,10101],"unlock_level":39},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445559},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":4,"dep_test":{"dep2":{"id":301,"level":"2014/10/15"},"id":71,"name":"sdadasd"},"id":10003,"int_as_string":"2","name":"库拉","origin_duration_arr":["45915","13:45:15"],"origin_duration_one":"123:45:59","origin_timepoint_arr":["1666673115","1669351515"],"origin_timepoint_one":"1666673115","test_array":["hahaha","库拉","喵少年"],"test_plain_enum_array":[10001,10001,10101],"unlock_level":85},{"convert_duration_arr":[{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445520},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666701915},"cost_value":8,"dep_test":{"dep2":{"id":401,"level":"19:10:50"},"id":81,"name":"ffff"},"id":10004,"int_as_string":"3","name":"莫瑞茨","origin_duration_arr":["","13:45:15"],"origin_duration_one":"123:45:20Z","origin_timepoint_arr":["1666673115","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15Z","test_array":["angel","莫瑞茨"],"unlock_level":122},{"convert_duration_arr":[{"nanos":0,"seconds":445559}],"convert_duration_one":{"nanos":123000000,"seconds":416720},"convert_timepoint_arr":[{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"dep_test":{"id":12},"int_as_string":"4","origin_duration_arr":["","123:45:59"],"origin_duration_one":"123:45:20.123+08:00","origin_timepoint_arr":["","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15.123+08:00"},{"convert_duration_one":{"nanos":123000000,"seconds":445520},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10001,"cost_value":99999,"dep_test":{"dep2":{"id":501,"level":"9:10:50 上午"},"id":91,"name":"gggg"},"id":10005,"int_as_string":"5","name":"爱丽丝","origin_duration_one":"123:45:20.123","origin_timepoint_one":"2022-10-25 12:45:15.123","test_array":["laopo","爱丽丝"],"unlock_level":183},{"convert_duration_one":{"nanos":123000000,"seconds":45915},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10101,"cost_value":999,"dep_test":{"dep2":{"id":601,"level":"2014-10-20 19:50:50"},"id":101,"name":"hhhhh"},"id":10006,"int_as_string":"6","name":"都玛西亚","origin_duration_one":"45915.123","origin_timepoint_one":"1666673115.123","test_array":["keai","都玛西亚"],"unlock_level":274}]},"role_cfg"]
\ No newline at end of file
+[{"count":7,"data_source":[{"count":7,"file":"资源转换示例.xlsx","sheet":"kind"}],"data_ver":"1.0.0.0","hash_code":"sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f","xres_ver":"2.19.0"},{"role_cfg":[{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666627200},{"nanos":0,"seconds":1669305600}],"convert_timepoint_one":{"nanos":0,"seconds":1666627200},"cost_value":1,"dep_test":{"dep2":{"id":101,"level":"2014/10/13"},"id":51,"name":"123"},"id":10001,"int_as_string":"0","name":"欧若拉","origin_duration_arr":["12:45:15","13:45:15"],"origin_duration_one":"12:45:15","origin_timepoint_arr":["2022-10-25","2022-11-25"],"origin_timepoint_one":"2022-10-25","test_array":["lalal","欧若拉","小魔女"],"test_plain_enum_array":[10001]},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":2,"dep_test":{"dep2":{"id":201,"level":"2014/10/14"},"id":61,"name":"654"},"id":10002,"int_as_string":"1","name":"杰克","origin_duration_arr":["45915","49515"],"origin_duration_one":"45915","origin_timepoint_arr":["2022-10-25 12:45:15","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15","test_array":["blebleble","杰克","海盗王子"],"test_plain_enum_array":[10001,10101],"unlock_level":39},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445559},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":4,"dep_test":{"dep2":{"id":301,"level":"2014/10/15"},"id":71,"name":"sdadasd"},"id":10003,"int_as_string":"2","name":"库拉","origin_duration_arr":["45915","13:45:15"],"origin_duration_one":"123:45:59","origin_timepoint_arr":["1666673115","1669351515"],"origin_timepoint_one":"1666673115","test_array":["hahaha","库拉","喵少年"],"test_plain_enum_array":[10001,10001,10101],"unlock_level":85},{"convert_duration_arr":[{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445520},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666701915},"cost_value":8,"dep_test":{"dep2":{"id":401,"level":"19:10:50"},"id":81,"name":"ffff"},"id":10004,"int_as_string":"3","name":"莫瑞茨","origin_duration_arr":["","13:45:15"],"origin_duration_one":"123:45:20Z","origin_timepoint_arr":["1666673115","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15Z","test_array":["angel","莫瑞茨"],"unlock_level":122},{"convert_duration_arr":[{"nanos":0,"seconds":445559}],"convert_duration_one":{"nanos":123000000,"seconds":416720},"convert_timepoint_arr":[{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"dep_test":{"id":12},"int_as_string":"4","origin_duration_arr":["","123:45:59"],"origin_duration_one":"123:45:20.123+08:00","origin_timepoint_arr":["","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15.123+08:00"},{"convert_duration_one":{"nanos":123000000,"seconds":445520},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10001,"cost_value":99999,"dep_test":{"dep2":{"id":501,"level":"9:10:50 上午"},"id":91,"name":"gggg"},"id":10005,"int_as_string":"5","name":"爱丽丝","origin_duration_one":"123:45:20.123","origin_timepoint_one":"2022-10-25 12:45:15.123","test_array":["laopo","爱丽丝"],"unlock_level":183},{"convert_duration_one":{"nanos":123000000,"seconds":45915},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10101,"cost_value":999,"dep_test":{"dep2":{"id":601,"level":"2014-10-20 19:50:50"},"id":101,"name":"hhhhh"},"id":10006,"int_as_string":"6","name":"都玛西亚","origin_duration_one":"45915.123","origin_timepoint_one":"1666673115.123","test_array":["keai","都玛西亚"],"unlock_level":274}]},"role_cfg"]
\ No newline at end of file
diff --git a/sample/proto_v2/role_cfg.lua b/sample/proto_v2/role_cfg.lua
index bae6cfa0..823d4bb6 100755
--- a/sample/proto_v2/role_cfg.lua
+++ b/sample/proto_v2/role_cfg.lua
@@ -12,7 +12,7 @@ return {
         },
         data_ver = "1.0.0.0",
         hash_code = "sha256:f83885dbe713ab6b423cf917a202d67da647d58a4636dbad41575d5479a6e87a",
-        xres_ver = "2.18.2",
+        xres_ver = "2.19.0",
     },
     [2] = "role_cfg",
     role_cfg = {
diff --git a/sample/proto_v2/role_cfg.msgpack.bin b/sample/proto_v2/role_cfg.msgpack.bin
index ab7c2ca6..f6d33187 100755
Binary files a/sample/proto_v2/role_cfg.msgpack.bin and b/sample/proto_v2/role_cfg.msgpack.bin differ
diff --git a/sample/proto_v2/role_cfg.n.js b/sample/proto_v2/role_cfg.n.js
index f931e1f6..e6d240a5 100755
--- a/sample/proto_v2/role_cfg.n.js
+++ b/sample/proto_v2/role_cfg.n.js
@@ -12,7 +12,7 @@ exports.role_cfg_header = {
   ],
   data_ver : "1.0.0.0",
   hash_code : "sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f",
-  xres_ver : "2.18.2"
+  xres_ver : "2.19.0"
 };
 exports.role_cfg = [
   {
diff --git a/sample/proto_v2/role_cfg.xml b/sample/proto_v2/role_cfg.xml
index 22cba822..830ba6cd 100755
--- a/sample/proto_v2/role_cfg.xml
+++ b/sample/proto_v2/role_cfg.xml
@@ -1,2 +1,2 @@
 
-
77资源转换示例.xlsxkind1.0.0.0sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f2.18.2
04591504951504591501666627200016693056000166662720011012014/10/1351123100010欧若拉12:45:1513:45:1512:45:152022-10-252022-11-252022-10-25lalal欧若拉小魔女1000104591504951504591501666673115016693515150166667311522012014/10/1461654100021杰克4591549515459152022-10-25 12:45:152022-11-25 12:45:152022-10-25 12:45:15blebleble杰克海盗王子100011010139045915049515044555901666673115016693515150166667311543012014/10/1571sdadasd100032库拉4591513:45:15123:45:59166667311516693515151666673115hahaha库拉喵少年100011000110101850495150445520016666731150166935151501666701915840119:10:5081ffff100043莫瑞茨13:45:15123:45:20Z16666731152022-11-25 12:45:152022-10-25 12:45:15Zangel莫瑞茨1220445559123000000416720016693515151230000001666673115124123:45:59123:45:20.123+08:002022-11-25 12:45:152022-10-25 12:45:15.123+08:001230000004455201230000001666673115999995019:10:50 上午91gggg100055爱丽丝123:45:20.1232022-10-25 12:45:15.12318310001laopo爱丽丝1230000004591512300000016666731159996012014-10-20 19:50:50101hhhhh100066都玛西亚45915.1231666673115.12327410101keai都玛西亚role_cfg
\ No newline at end of file +
77资源转换示例.xlsxkind1.0.0.0sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f2.19.0
04591504951504591501666627200016693056000166662720011012014/10/1351123100010欧若拉12:45:1513:45:1512:45:152022-10-252022-11-252022-10-25lalal欧若拉小魔女1000104591504951504591501666673115016693515150166667311522012014/10/1461654100021杰克4591549515459152022-10-25 12:45:152022-11-25 12:45:152022-10-25 12:45:15blebleble杰克海盗王子100011010139045915049515044555901666673115016693515150166667311543012014/10/1571sdadasd100032库拉4591513:45:15123:45:59166667311516693515151666673115hahaha库拉喵少年100011000110101850495150445520016666731150166935151501666701915840119:10:5081ffff100043莫瑞茨13:45:15123:45:20Z16666731152022-11-25 12:45:152022-10-25 12:45:15Zangel莫瑞茨1220445559123000000416720016693515151230000001666673115124123:45:59123:45:20.123+08:002022-11-25 12:45:152022-10-25 12:45:15.123+08:001230000004455201230000001666673115999995019:10:50 上午91gggg100055爱丽丝123:45:20.1232022-10-25 12:45:15.12318310001laopo爱丽丝1230000004591512300000016666731159996012014-10-20 19:50:50101hhhhh100066都玛西亚45915.1231666673115.12327410101keai都玛西亚role_cfg
\ No newline at end of file diff --git a/sample/proto_v2/role_cfg_module.lua b/sample/proto_v2/role_cfg_module.lua index 27731660..4381ecee 100755 --- a/sample/proto_v2/role_cfg_module.lua +++ b/sample/proto_v2/role_cfg_module.lua @@ -1,5 +1,5 @@ module("ProtoData.Kind.role_cfg", package.seeall) -- this file is generated by xresloader, please don't edit it. - header = { count = 7, data_source = { { count = 7, file = "资源转换示例.xlsx", sheet = "kind", }, }, data_ver = "1.0.0.0", hash_code = "sha256:f83885dbe713ab6b423cf917a202d67da647d58a4636dbad41575d5479a6e87a", xres_ver = "2.18.2", } + header = { count = 7, data_source = { { count = 7, file = "资源转换示例.xlsx", sheet = "kind", }, }, data_ver = "1.0.0.0", hash_code = "sha256:f83885dbe713ab6b423cf917a202d67da647d58a4636dbad41575d5479a6e87a", xres_ver = "2.19.0", } data_message_type = "role_cfg" role_cfg = { { convert_duration_arr = { { nanos = 0, seconds = 45915, }, { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 45915, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666627200, }, { nanos = 0, seconds = 1669305600, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666627200, }, cost_value = 1, dep_test = { dep2 = { id = 101, level = "2014/10/13", }, id = 51, name = "123", }, id = 10001, int_as_string = "0", name = "欧若拉", origin_duration_arr = { "12:45:15", "13:45:15", }, origin_duration_one = "12:45:15", origin_timepoint_arr = { "2022-10-25", "2022-11-25", }, origin_timepoint_one = "2022-10-25", test_array = { "lalal", "欧若拉", "小魔女", }, test_plain_enum_array = { 10001, }, }, { convert_duration_arr = { { nanos = 0, seconds = 45915, }, { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 45915, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666673115, }, { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666673115, }, cost_value = 2, dep_test = { dep2 = { id = 201, level = "2014/10/14", }, id = 61, name = "654", }, id = 10002, int_as_string = "1", name = "杰克", origin_duration_arr = { "45915", "49515", }, origin_duration_one = "45915", origin_timepoint_arr = { "2022-10-25 12:45:15", "2022-11-25 12:45:15", }, origin_timepoint_one = "2022-10-25 12:45:15", test_array = { "blebleble", "杰克", "海盗王子", }, test_plain_enum_array = { 10001, 10101, }, unlock_level = 39, }, { convert_duration_arr = { { nanos = 0, seconds = 45915, }, { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 445559, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666673115, }, { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666673115, }, cost_value = 4, dep_test = { dep2 = { id = 301, level = "2014/10/15", }, id = 71, name = "sdadasd", }, id = 10003, int_as_string = "2", name = "库拉", origin_duration_arr = { "45915", "13:45:15", }, origin_duration_one = "123:45:59", origin_timepoint_arr = { "1666673115", "1669351515", }, origin_timepoint_one = "1666673115", test_array = { "hahaha", "库拉", "喵少年", }, test_plain_enum_array = { 10001, 10001, 10101, }, unlock_level = 85, }, { convert_duration_arr = { { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 445520, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666673115, }, { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666701915, }, cost_value = 8, dep_test = { dep2 = { id = 401, level = "19:10:50", }, id = 81, name = "ffff", }, id = 10004, int_as_string = "3", name = "莫瑞茨", origin_duration_arr = { "", "13:45:15", }, origin_duration_one = "123:45:20Z", origin_timepoint_arr = { "1666673115", "2022-11-25 12:45:15", }, origin_timepoint_one = "2022-10-25 12:45:15Z", test_array = { "angel", "莫瑞茨", }, unlock_level = 122, }, { convert_duration_arr = { { nanos = 0, seconds = 445559, }, }, convert_duration_one = { nanos = 123000000, seconds = 416720, }, convert_timepoint_arr = { { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 123000000, seconds = 1666673115, }, dep_test = { id = 12, }, int_as_string = "4", origin_duration_arr = { "", "123:45:59", }, origin_duration_one = "123:45:20.123+08:00", origin_timepoint_arr = { "", "2022-11-25 12:45:15", }, origin_timepoint_one = "2022-10-25 12:45:15.123+08:00", }, { convert_duration_one = { nanos = 123000000, seconds = 445520, }, convert_timepoint_one = { nanos = 123000000, seconds = 1666673115, }, cost_type = 10001, cost_value = 99999, dep_test = { dep2 = { id = 501, level = "9:10:50 上午", }, id = 91, name = "gggg", }, id = 10005, int_as_string = "5", name = "爱丽丝", origin_duration_one = "123:45:20.123", origin_timepoint_one = "2022-10-25 12:45:15.123", test_array = { "laopo", "爱丽丝", }, unlock_level = 183, }, { convert_duration_one = { nanos = 123000000, seconds = 45915, }, convert_timepoint_one = { nanos = 123000000, seconds = 1666673115, }, cost_type = 10101, cost_value = 999, dep_test = { dep2 = { id = 601, level = "2014-10-20 19:50:50", }, id = 101, name = "hhhhh", }, id = 10006, int_as_string = "6", name = "都玛西亚", origin_duration_one = "45915.123", origin_timepoint_one = "1666673115.123", test_array = { "keai", "都玛西亚", }, unlock_level = 274, }, } \ No newline at end of file diff --git a/sample/proto_v2/role_upgrade_cfg.bin b/sample/proto_v2/role_upgrade_cfg.bin index b7ac686c..717ed345 100644 Binary files a/sample/proto_v2/role_upgrade_cfg.bin and b/sample/proto_v2/role_upgrade_cfg.bin differ diff --git a/sample/proto_v2/role_upgrade_cfg.json b/sample/proto_v2/role_upgrade_cfg.json index e684307d..d0a8f7d0 100755 --- a/sample/proto_v2/role_upgrade_cfg.json +++ b/sample/proto_v2/role_upgrade_cfg.json @@ -16,7 +16,7 @@ "data_ver": "1.0.0.0", "description": "Test role_upgrade_cfg with multi keys\r\nTest role_upgrade_cfg with multi keys", "hash_code": "sha256:e356806bc55be9cc8a6c701d4295989e0fc3887b368681bb9457b0e51df8f445", - "xres_ver": "2.18.2" + "xres_ver": "2.19.0" }, {"role_upgrade_cfg": [ { diff --git a/sample/proto_v2/role_upgrade_cfg.lua b/sample/proto_v2/role_upgrade_cfg.lua index 3c4139c8..9041cecb 100755 --- a/sample/proto_v2/role_upgrade_cfg.lua +++ b/sample/proto_v2/role_upgrade_cfg.lua @@ -18,7 +18,7 @@ return { data_ver = "1.0.0.0", description = "Test role_upgrade_cfg with multi keys\r\nTest role_upgrade_cfg with multi keys", hash_code = "sha256:e356806bc55be9cc8a6c701d4295989e0fc3887b368681bb9457b0e51df8f445", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "role_upgrade_cfg", role_upgrade_cfg = { diff --git a/sample/proto_v2/strip_list_tail_cfg.bin b/sample/proto_v2/strip_list_tail_cfg.bin index 9655cf57..d8d529e6 100644 Binary files a/sample/proto_v2/strip_list_tail_cfg.bin and b/sample/proto_v2/strip_list_tail_cfg.bin differ diff --git a/sample/proto_v2/strip_list_tail_cfg.lua b/sample/proto_v2/strip_list_tail_cfg.lua index ea2cca80..8e4cfce1 100644 --- a/sample/proto_v2/strip_list_tail_cfg.lua +++ b/sample/proto_v2/strip_list_tail_cfg.lua @@ -12,7 +12,7 @@ return { }, data_ver = "1.0.0.0", hash_code = "sha256:bef5c76679b43b65aec7906f42010530fadae99f0e386d94e3a77e94a7d12e8e", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "keep_or_strip_empty_list_cfg", keep_or_strip_empty_list_cfg = { diff --git a/sample/proto_v3/arr_in_arr_cfg.bin b/sample/proto_v3/arr_in_arr_cfg.bin index 2b8b6869..6ed040c6 100755 Binary files a/sample/proto_v3/arr_in_arr_cfg.bin and b/sample/proto_v3/arr_in_arr_cfg.bin differ diff --git a/sample/proto_v3/arr_in_arr_cfg.hidden.bin b/sample/proto_v3/arr_in_arr_cfg.hidden.bin new file mode 100644 index 00000000..427fa8f3 --- /dev/null +++ b/sample/proto_v3/arr_in_arr_cfg.hidden.bin @@ -0,0 +1,12 @@ + + +2.19.01.0.0.0"Gsha256:bc5118693da3a47c87e3dfaa4c5942fb7a5ba6865b8184f4a5f106fd603733dc*Test arr_in_arr_cfgZ' +资源转换示例.xlsx +arr_in_arrN"NNN*222: +Map嵌套模式[0].value: Map嵌套模式[1].valueB +aao112B + 特殊:字符y122N"NNN*22 :Map嵌套模式[0].value:Map嵌套模式[1].valueB +ba212B + 特殊.字符222sN"NNN*2 :Map嵌套模式[0].value:Map嵌套模式[1].valueB +ca312B +cb322arr_in_arr_cfg \ No newline at end of file diff --git a/sample/proto_v3/arr_in_arr_cfg.hidden.lua b/sample/proto_v3/arr_in_arr_cfg.hidden.lua new file mode 100644 index 00000000..77a6c9fd --- /dev/null +++ b/sample/proto_v3/arr_in_arr_cfg.hidden.lua @@ -0,0 +1,127 @@ +-- this file is generated by xresloader, please don't edit it. + +return { + [1] = { + count = 3, + data_source = { + { + count = 3, + file = "资源转换示例.xlsx", + sheet = "arr_in_arr", + }, + }, + data_ver = "1.0.0.0", + description = "Test arr_in_arr_cfg", + hash_code = "sha256:b4d268d9a7b1a8cf6fc18489dd67c4a298408e7bffbde43c91d6ac2f47836601", + xres_ver = "2.19.0", + }, + [2] = "arr_in_arr_cfg", + arr_in_arr_cfg = { + { + arr = { + }, + id = 10001, + test_map_is = { + [10] = "Map嵌套模式[0].value", + [11] = "Map嵌套模式[1].value", + }, + test_map_sm = { + ["aa"] = { + id = 111, + level = "112", + }, + ["特殊:字符"] = { + id = 121, + level = "122", + }, + }, + test_plain_enum_arr = { + 10001, + 10001, + 10001, + }, + test_plain_msg = { + test_id_1 = 1, + }, + test_plain_msg_arr = { + { + test_id_1 = 1, + }, + { + test_id_1 = 3, + }, + { + test_id_1 = 5, + }, + }, + }, + { + arr = { + }, + id = 10002, + test_map_is = { + [20] = "Map嵌套模式[0].value", + [21] = "Map嵌套模式[1].value", + }, + test_map_sm = { + ["ba"] = { + id = 211, + level = "212", + }, + ["特殊.字符"] = { + id = 221, + level = "222", + }, + }, + test_plain_enum_arr = { + 10101, + 10101, + 10101, + }, + test_plain_msg = { + test_id_1 = 3, + test_id_3 = 5, + }, + test_plain_msg_arr = { + { + test_id_1 = 7, + }, + { + test_id_1 = 9, + }, + }, + }, + { + arr = { + }, + id = 10003, + test_map_is = { + [30] = "Map嵌套模式[0].value", + [31] = "Map嵌套模式[1].value", + }, + test_map_sm = { + ["ca"] = { + id = 311, + level = "312", + }, + ["cb"] = { + id = 321, + level = "322", + }, + }, + test_plain_enum_arr = { + 10001, + 10001, + 10001, + }, + test_plain_msg = { + test_id_1 = 6, + }, + test_plain_msg_arr = { + { + test_id_1 = 11, + }, + }, + }, + }, +} \ No newline at end of file diff --git a/sample/proto_v3/arr_in_arr_cfg.lua b/sample/proto_v3/arr_in_arr_cfg.lua index e15d77c6..16eedc0b 100755 --- a/sample/proto_v3/arr_in_arr_cfg.lua +++ b/sample/proto_v3/arr_in_arr_cfg.lua @@ -13,7 +13,7 @@ return { data_ver = "1.0.0.0", description = "Test arr_in_arr_cfg", hash_code = "sha256:dd55e67e5c1312ca507fedd631c54b8c1266ab82859ed36bd535db90ac36a95f", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "arr_in_arr_cfg", arr_in_arr_cfg = { diff --git a/sample/proto_v3/arr_in_arr_cfg.xml b/sample/proto_v3/arr_in_arr_cfg.xml index cd5f5445..4e2984a1 100644 --- a/sample/proto_v3/arr_in_arr_cfg.xml +++ b/sample/proto_v3/arr_in_arr_cfg.xml @@ -12,7 +12,7 @@ 1.0.0.0 Test arr_in_arr_cfg sha256:dd55e67e5c1312ca507fedd631c54b8c1266ab82859ed36bd535db90ac36a95f - 2.18.2 + 2.19.0 diff --git a/sample/proto_v3/csv/Private/ConfigRec/ArrInArr.cpp b/sample/proto_v3/csv/Private/ConfigRec/ArrInArr.cpp index 42609520..c83cfe8f 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/ArrInArr.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/ArrInArr.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/ArrInArrCfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/ArrInArrCfg.cpp index c44bfb43..0c301ed1 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/ArrInArrCfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/ArrInArrCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/Dep2Cfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/Dep2Cfg.cpp index d1b950ca..83c7e4df 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/Dep2Cfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/Dep2Cfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/DepCfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/DepCfg.cpp index aee88eec..ed543dce 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/DepCfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/DepCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/EventCfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/EventCfg.cpp index 3a1c9b94..75e2b834 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/EventCfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/EventCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/EventRewardItem.cpp b/sample/proto_v3/csv/Private/ConfigRec/EventRewardItem.cpp index 1944ad41..6c6f91a8 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/EventRewardItem.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/EventRewardItem.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/EventRuleItem.cpp b/sample/proto_v3/csv/Private/ConfigRec/EventRuleItem.cpp index b2f740ae..22e90836 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/EventRuleItem.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/EventRuleItem.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufDuration.cpp b/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufDuration.cpp index c21eb5e5..f73057d5 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufDuration.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufDuration.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufTimestamp.cpp b/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufTimestamp.cpp index 6e7234ee..7477a073 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufTimestamp.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/GoogleProtobufTimestamp.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp index 4f3e9b93..e0cd2a7e 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/RoleCfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/RoleCfg.cpp index 3aa7bce0..9a07d74d 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/RoleCfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/RoleCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/RoleUpgradeCfg.cpp b/sample/proto_v3/csv/Private/ConfigRec/RoleUpgradeCfg.cpp index 840bd560..92e43717 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/RoleUpgradeCfg.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/RoleUpgradeCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Private/ConfigRec/TestMsgVerifier.cpp b/sample/proto_v3/csv/Private/ConfigRec/TestMsgVerifier.cpp index 9b09f4cd..b01f834f 100644 --- a/sample/proto_v3/csv/Private/ConfigRec/TestMsgVerifier.cpp +++ b/sample/proto_v3/csv/Private/ConfigRec/TestMsgVerifier.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/ArrInArr.h b/sample/proto_v3/csv/Public/ConfigRec/ArrInArr.h index 1234afbd..67dded80 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/ArrInArr.h +++ b/sample/proto_v3/csv/Public/ConfigRec/ArrInArr.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/ArrInArrCfg.h b/sample/proto_v3/csv/Public/ConfigRec/ArrInArrCfg.h index 1cdbd05a..9ba99aa6 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/ArrInArrCfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/ArrInArrCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/Dep2Cfg.h b/sample/proto_v3/csv/Public/ConfigRec/Dep2Cfg.h index 300f3194..83a97ad4 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/Dep2Cfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/Dep2Cfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/DepCfg.h b/sample/proto_v3/csv/Public/ConfigRec/DepCfg.h index 991e8968..38f5b9c9 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/DepCfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/DepCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/EventCfg.h b/sample/proto_v3/csv/Public/ConfigRec/EventCfg.h index 7b909000..0f09441b 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/EventCfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/EventCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/EventRewardItem.h b/sample/proto_v3/csv/Public/ConfigRec/EventRewardItem.h index a862d6fd..1e9ef05b 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/EventRewardItem.h +++ b/sample/proto_v3/csv/Public/ConfigRec/EventRewardItem.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/EventRuleItem.h b/sample/proto_v3/csv/Public/ConfigRec/EventRuleItem.h index 9aa1b7c6..95859f3a 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/EventRuleItem.h +++ b/sample/proto_v3/csv/Public/ConfigRec/EventRuleItem.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufDuration.h b/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufDuration.h index 3a075781..9814fa37 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufDuration.h +++ b/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufDuration.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufTimestamp.h b/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufTimestamp.h index c8ec36c8..a7b95edb 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufTimestamp.h +++ b/sample/proto_v3/csv/Public/ConfigRec/GoogleProtobufTimestamp.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h b/sample/proto_v3/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h index 4f0db46a..db3949a1 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/KeepOrStripEmptyListCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/RoleCfg.h b/sample/proto_v3/csv/Public/ConfigRec/RoleCfg.h index 1d342a6a..d41702f5 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/RoleCfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/RoleCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/RoleUpgradeCfg.h b/sample/proto_v3/csv/Public/ConfigRec/RoleUpgradeCfg.h index 52e20a94..399aae72 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/RoleUpgradeCfg.h +++ b/sample/proto_v3/csv/Public/ConfigRec/RoleUpgradeCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/csv/Public/ConfigRec/TestMsgVerifier.h b/sample/proto_v3/csv/Public/ConfigRec/TestMsgVerifier.h index 8030d8cc..4420f4d1 100644 --- a/sample/proto_v3/csv/Public/ConfigRec/TestMsgVerifier.h +++ b/sample/proto_v3/csv/Public/ConfigRec/TestMsgVerifier.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/event_cfg.bin b/sample/proto_v3/event_cfg.bin index b4f9a751..1e76ac61 100644 Binary files a/sample/proto_v3/event_cfg.bin and b/sample/proto_v3/event_cfg.bin differ diff --git a/sample/proto_v3/event_cfg.hidden.bin b/sample/proto_v3/event_cfg.hidden.bin new file mode 100644 index 00000000..db52e5d5 Binary files /dev/null and b/sample/proto_v3/event_cfg.hidden.bin differ diff --git a/sample/proto_v3/event_cfg.hidden.lua b/sample/proto_v3/event_cfg.hidden.lua new file mode 100644 index 00000000..f2c02b37 --- /dev/null +++ b/sample/proto_v3/event_cfg.hidden.lua @@ -0,0 +1,90 @@ +-- this file is generated by xresloader, please don't edit it. + +return { + [1] = { + count = 5, + data_source = { + { + count = 5, + file = "资源转换示例.xlsx", + sheet = "test_oneof", + }, + }, + data_ver = "1.0.0.0", + description = "Test event_cfg with oneof fields", + hash_code = "sha256:1ee8cc927336f8c693fbc5c5ca1f78d0e28d0f614de15d7dbe42cdd51b56f5f2", + xres_ver = "2.19.0", + }, + [2] = "event_cfg", + event_cfg = { + { + id = 50001, + process = 1, + rule = { + nested_note = "内嵌one of文本", + rule_id = 511, + rule_param = 512, + }, + test_arr = { + { + nested_note = "内嵌one of文本", + rule_id = 711, + rule_param = 712, + }, + }, + }, + { + id = 50002, + process = 2, + rule = { + nested_enum_type = 10001, + rule_id = 521, + rule_param = 522, + }, + test_arr = { + { + nested_enum_type = 10001, + rule_id = 721, + rule_param = 722, + }, + { + nested_enum_type = 10101, + rule_id = 821, + rule_param = 822, + }, + { + nested_note = "数组嵌套one of", + rule_id = 921, + rule_param = 822, + }, + }, + }, + { + id = 50003, + process = 3, + rule = { + nested_enum_type = 10101, + rule_id = 531, + rule_param = 532, + }, + }, + { + id = 50004, + note = "", + process = 4, + rule = { + rule_id = 541, + rule_param = 542, + }, + }, + { + id = 50004, + note = "", + process = 6, + rule = { + rule_id = 561, + rule_param = 562, + }, + }, + }, +} \ No newline at end of file diff --git a/sample/proto_v3/event_cfg.lua b/sample/proto_v3/event_cfg.lua index a7805daf..7b3c88fc 100644 --- a/sample/proto_v3/event_cfg.lua +++ b/sample/proto_v3/event_cfg.lua @@ -13,7 +13,7 @@ return { data_ver = "1.0.0.0", description = "Test event_cfg with oneof fields", hash_code = "sha256:f54ea4a17140ed6e75a9136bff6c0053251bb5a4cd3954d905cf5bac8fcce998", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "event_cfg", event_cfg = { diff --git a/sample/proto_v3/json/KindConst.cpp b/sample/proto_v3/json/KindConst.cpp index bf26ee5e..7bf9c60a 100644 --- a/sample/proto_v3/json/KindConst.cpp +++ b/sample/proto_v3/json/KindConst.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/KindConst.h b/sample/proto_v3/json/KindConst.h index 920ac45c..364822f4 100644 --- a/sample/proto_v3/json/KindConst.h +++ b/sample/proto_v3/json/KindConst.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/ArrInArr.cpp b/sample/proto_v3/json/Private/ConfigRec/ArrInArr.cpp index 958e6f30..bde24238 100644 --- a/sample/proto_v3/json/Private/ConfigRec/ArrInArr.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/ArrInArr.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/ArrInArrCfg.cpp b/sample/proto_v3/json/Private/ConfigRec/ArrInArrCfg.cpp index 83b1be6b..dbf1515f 100644 --- a/sample/proto_v3/json/Private/ConfigRec/ArrInArrCfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/ArrInArrCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/Dep2Cfg.cpp b/sample/proto_v3/json/Private/ConfigRec/Dep2Cfg.cpp index b5e3cc66..07f7809f 100644 --- a/sample/proto_v3/json/Private/ConfigRec/Dep2Cfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/Dep2Cfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/DepCfg.cpp b/sample/proto_v3/json/Private/ConfigRec/DepCfg.cpp index 29f127ad..94a503a7 100644 --- a/sample/proto_v3/json/Private/ConfigRec/DepCfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/DepCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/EventCfg.cpp b/sample/proto_v3/json/Private/ConfigRec/EventCfg.cpp index 6b918cca..dd09e759 100644 --- a/sample/proto_v3/json/Private/ConfigRec/EventCfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/EventCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/EventRewardItem.cpp b/sample/proto_v3/json/Private/ConfigRec/EventRewardItem.cpp index 01b79dcf..d47fe92b 100644 --- a/sample/proto_v3/json/Private/ConfigRec/EventRewardItem.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/EventRewardItem.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/EventRuleItem.cpp b/sample/proto_v3/json/Private/ConfigRec/EventRuleItem.cpp index f8c75ff2..46900c8f 100644 --- a/sample/proto_v3/json/Private/ConfigRec/EventRuleItem.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/EventRuleItem.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufDuration.cpp b/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufDuration.cpp index c21eb5e5..f73057d5 100644 --- a/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufDuration.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufDuration.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufTimestamp.cpp b/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufTimestamp.cpp index 6e7234ee..7477a073 100644 --- a/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufTimestamp.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/GoogleProtobufTimestamp.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp b/sample/proto_v3/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp index 4f3e9b93..e0cd2a7e 100644 --- a/sample/proto_v3/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/KeepOrStripEmptyListCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/RoleCfg.cpp b/sample/proto_v3/json/Private/ConfigRec/RoleCfg.cpp index ba251216..89a8b39b 100644 --- a/sample/proto_v3/json/Private/ConfigRec/RoleCfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/RoleCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/RoleUpgradeCfg.cpp b/sample/proto_v3/json/Private/ConfigRec/RoleUpgradeCfg.cpp index c15a9ebe..621a9f33 100644 --- a/sample/proto_v3/json/Private/ConfigRec/RoleUpgradeCfg.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/RoleUpgradeCfg.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Private/ConfigRec/TestMsgVerifier.cpp b/sample/proto_v3/json/Private/ConfigRec/TestMsgVerifier.cpp index f301e7e3..b99bc222 100644 --- a/sample/proto_v3/json/Private/ConfigRec/TestMsgVerifier.cpp +++ b/sample/proto_v3/json/Private/ConfigRec/TestMsgVerifier.cpp @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/ArrInArr.h b/sample/proto_v3/json/Public/ConfigRec/ArrInArr.h index ace96c0d..fd996d1e 100644 --- a/sample/proto_v3/json/Public/ConfigRec/ArrInArr.h +++ b/sample/proto_v3/json/Public/ConfigRec/ArrInArr.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/ArrInArrCfg.h b/sample/proto_v3/json/Public/ConfigRec/ArrInArrCfg.h index b527b95e..0619163a 100644 --- a/sample/proto_v3/json/Public/ConfigRec/ArrInArrCfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/ArrInArrCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/Dep2Cfg.h b/sample/proto_v3/json/Public/ConfigRec/Dep2Cfg.h index 372b5073..051696e7 100644 --- a/sample/proto_v3/json/Public/ConfigRec/Dep2Cfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/Dep2Cfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/DepCfg.h b/sample/proto_v3/json/Public/ConfigRec/DepCfg.h index 6fa867d4..a54a3c3f 100644 --- a/sample/proto_v3/json/Public/ConfigRec/DepCfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/DepCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/EventCfg.h b/sample/proto_v3/json/Public/ConfigRec/EventCfg.h index d3b71444..b88b383f 100644 --- a/sample/proto_v3/json/Public/ConfigRec/EventCfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/EventCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/EventRewardItem.h b/sample/proto_v3/json/Public/ConfigRec/EventRewardItem.h index 0a7a29e5..6008b1d7 100644 --- a/sample/proto_v3/json/Public/ConfigRec/EventRewardItem.h +++ b/sample/proto_v3/json/Public/ConfigRec/EventRewardItem.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/EventRuleItem.h b/sample/proto_v3/json/Public/ConfigRec/EventRuleItem.h index 0579a512..b98226ac 100644 --- a/sample/proto_v3/json/Public/ConfigRec/EventRuleItem.h +++ b/sample/proto_v3/json/Public/ConfigRec/EventRuleItem.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufDuration.h b/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufDuration.h index 3a075781..9814fa37 100644 --- a/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufDuration.h +++ b/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufDuration.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufTimestamp.h b/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufTimestamp.h index c8ec36c8..a7b95edb 100644 --- a/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufTimestamp.h +++ b/sample/proto_v3/json/Public/ConfigRec/GoogleProtobufTimestamp.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h b/sample/proto_v3/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h index 4f0db46a..db3949a1 100644 --- a/sample/proto_v3/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/KeepOrStripEmptyListCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/RoleCfg.h b/sample/proto_v3/json/Public/ConfigRec/RoleCfg.h index 7ccb8618..fdcb1f84 100644 --- a/sample/proto_v3/json/Public/ConfigRec/RoleCfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/RoleCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/RoleUpgradeCfg.h b/sample/proto_v3/json/Public/ConfigRec/RoleUpgradeCfg.h index 691d9b6e..e1361580 100644 --- a/sample/proto_v3/json/Public/ConfigRec/RoleUpgradeCfg.h +++ b/sample/proto_v3/json/Public/ConfigRec/RoleUpgradeCfg.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/json/Public/ConfigRec/TestMsgVerifier.h b/sample/proto_v3/json/Public/ConfigRec/TestMsgVerifier.h index d3ff8663..572078b5 100644 --- a/sample/proto_v3/json/Public/ConfigRec/TestMsgVerifier.h +++ b/sample/proto_v3/json/Public/ConfigRec/TestMsgVerifier.h @@ -1,5 +1,5 @@ /** - * This file is generated by xresloader 2.18.2, please don't edit it. + * This file is generated by xresloader 2.19.0, please don't edit it. * You can find more information about this xresloader on https://xresloader.atframe.work/ . * If there is any problem, please find or report issues on https://github.com/xresloader/xresloader/issues . */ diff --git a/sample/proto_v3/keep_empty_list_cfg.bin b/sample/proto_v3/keep_empty_list_cfg.bin index 287c45c9..39f68cb0 100644 Binary files a/sample/proto_v3/keep_empty_list_cfg.bin and b/sample/proto_v3/keep_empty_list_cfg.bin differ diff --git a/sample/proto_v3/keep_empty_list_cfg.lua b/sample/proto_v3/keep_empty_list_cfg.lua index 4b55ca6d..da32a895 100644 --- a/sample/proto_v3/keep_empty_list_cfg.lua +++ b/sample/proto_v3/keep_empty_list_cfg.lua @@ -12,7 +12,7 @@ return { }, data_ver = "1.0.0.0", hash_code = "sha256:e192b1278aea13633eb67e367edc99aa2bb8b487e32f3e8a0f9c5b975230304e", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "keep_or_strip_empty_list_cfg", keep_or_strip_empty_list_cfg = { diff --git a/sample/proto_v3/kind.desc.json b/sample/proto_v3/kind.desc.json index b2db27b9..72a0ef53 100644 --- a/sample/proto_v3/kind.desc.json +++ b/sample/proto_v3/kind.desc.json @@ -243,6 +243,7 @@ "arr": { "name": "arr", "number": 2, + "options": {"field_tag": ["server_only"]}, "type_name": "MESSAGE" }, "id": { @@ -275,7 +276,8 @@ "number": 3, "options": { "field_list_max_size": "3", - "field_list_min_size": "1" + "field_list_min_size": "1", + "field_tag": ["server_only"] }, "type_name": "INT32" }, @@ -362,6 +364,7 @@ "specify_field": { "name": "specify_field", "number": 7, + "options": {"field_tag": ["server_only"]}, "type_name": "MESSAGE" }, "test_arr": { @@ -393,7 +396,10 @@ "oneof_decl": { "reward": { "name": "reward", - "options": {"oneof_not_null": true} + "options": { + "oneof_not_null": true, + "oneof_tag": ["server_only"] + } }, "unlock_type": {"name": "unlock_type"} }, @@ -817,7 +823,10 @@ "test_id_2": { "name": "test_id_2", "number": 10002, - "options": {"field_alias": ["测试ID别名2"]}, + "options": { + "field_alias": ["测试ID别名2"], + "field_tag": ["server_only"] + }, "type_name": "UINT32" }, "test_id_3": { diff --git a/sample/proto_v3/kind.desc.lua b/sample/proto_v3/kind.desc.lua index 912e1eb2..463fd6fd 100644 --- a/sample/proto_v3/kind.desc.lua +++ b/sample/proto_v3/kind.desc.lua @@ -89,6 +89,16 @@ local const_res = { }, }, field = { + arr = { + name = "arr", + number = 2, + options = { + field_tag = { + "server_only", + }, + }, + type_name = "MESSAGE", + }, id = { name = "id", number = 1, @@ -112,6 +122,9 @@ local const_res = { options = { field_list_max_size = "3", field_list_min_size = "1", + field_tag = { + "server_only", + }, }, type_name = "INT32", }, @@ -200,6 +213,16 @@ local const_res = { }, type_name = "UINT32", }, + specify_field = { + name = "specify_field", + number = 7, + options = { + field_tag = { + "server_only", + }, + }, + type_name = "MESSAGE", + }, test_arr = { name = "test_arr", number = 91, @@ -243,6 +266,9 @@ local const_res = { name = "reward", options = { oneof_not_null = true, + oneof_tag = { + "server_only", + }, }, }, }, @@ -494,6 +520,9 @@ local const_res = { field_alias = { "测试ID别名2", }, + field_tag = { + "server_only", + }, }, type_name = "UINT32", }, diff --git a/sample/proto_v3/kind.pb b/sample/proto_v3/kind.pb index 8465affb..75c72d7e 100755 Binary files a/sample/proto_v3/kind.pb and b/sample/proto_v3/kind.pb differ diff --git a/sample/proto_v3/kind.proto b/sample/proto_v3/kind.proto index a6c0fd77..2f9b42a8 100755 --- a/sample/proto_v3/kind.proto +++ b/sample/proto_v3/kind.proto @@ -78,7 +78,7 @@ message test_msg_verifier { option (org.xresloader.msg_separator) = "-^"; uint32 test_id_1 = 10001; - uint32 test_id_2 = 10002 [ (org.xresloader.field_alias) = "测试ID别名2" ]; + uint32 test_id_2 = 10002 [ (org.xresloader.field_alias) = "测试ID别名2", (org.xresloader.field_tag) = "server_only" ]; uint32 test_id_3 = 10003 [ (org.xresloader.field_allow_missing_in_plain_mode) = true ]; } @@ -87,9 +87,9 @@ message arr_in_arr_cfg { option (org.xresloader.msg_description) = "Test arr_in_arr_cfg"; uint32 id = 1 [ (org.xresloader.ue.key_tag) = 1, (org.xresloader.field_description) = "This is a Key" ]; - repeated arr_in_arr arr = 2; + repeated arr_in_arr arr = 2 [ (org.xresloader.field_tag) = "server_only" ]; - repeated int32 test_plain_int_arr = 3 [ (org.xresloader.field_list_min_size) = "1", (org.xresloader.field_list_max_size) = "3" ]; + repeated int32 test_plain_int_arr = 3 [ (org.xresloader.field_list_min_size) = "1", (org.xresloader.field_list_max_size) = "3", (org.xresloader.field_tag) = "server_only" ]; repeated cost_type test_plain_enum_arr = 4; test_msg_verifier test_plain_msg = 5 [ (org.xresloader.field_separator) = "&" ]; repeated test_msg_verifier test_plain_msg_arr = 6; @@ -126,10 +126,11 @@ message event_cfg { uint32 process = 2 [ (org.xresloader.ue.key_tag) = 1, (org.xresloader.field_not_null) = true, (org.xresloader.field_unique_tag) = "unique_tag" ]; event_rule_item rule = 6; - event_rule_item specify_field = 7; + event_rule_item specify_field = 7 [ (org.xresloader.field_tag) = "server_only" ]; oneof reward { option (org.xresloader.oneof_not_null) = true; + option (org.xresloader.oneof_tag) = "server_only"; event_reward_item item = 11 [ (org.xresloader.field_alias) = "奖励道具" ]; int64 user_exp = 12 [ (org.xresloader.field_alias) = "奖励经验" ]; diff --git a/sample/proto_v3/kind_option.js b/sample/proto_v3/kind_option.js index f015ca27..3638c947 100644 --- a/sample/proto_v3/kind_option.js +++ b/sample/proto_v3/kind_option.js @@ -88,6 +88,16 @@ exports.files = [ } }, field : { + arr : { + name : "arr", + number : 2, + options : { + field_tag : [ + "server_only" + ] + }, + type_name : "MESSAGE" + }, id : { name : "id", number : 1, @@ -110,7 +120,10 @@ exports.files = [ number : 3, options : { field_list_max_size : "3", - field_list_min_size : "1" + field_list_min_size : "1", + field_tag : [ + "server_only" + ] }, type_name : "INT32" }, @@ -199,6 +212,16 @@ exports.files = [ }, type_name : "UINT32" }, + specify_field : { + name : "specify_field", + number : 7, + options : { + field_tag : [ + "server_only" + ] + }, + type_name : "MESSAGE" + }, test_arr : { name : "test_arr", number : 91, @@ -241,7 +264,10 @@ exports.files = [ reward : { name : "reward", options : { - oneof_not_null : true + oneof_not_null : true, + oneof_tag : [ + "server_only" + ] } } }, @@ -492,6 +518,9 @@ exports.files = [ options : { field_alias : [ "测试ID别名2" + ], + field_tag : [ + "server_only" ] }, type_name : "UINT32" diff --git a/sample/proto_v3/kind_option.lua b/sample/proto_v3/kind_option.lua index 997699e8..7facb38e 100644 --- a/sample/proto_v3/kind_option.lua +++ b/sample/proto_v3/kind_option.lua @@ -89,6 +89,16 @@ local const_res = { }, }, field = { + arr = { + name = "arr", + number = 2, + options = { + field_tag = { + "server_only", + }, + }, + type_name = "MESSAGE", + }, id = { name = "id", number = 1, @@ -112,6 +122,9 @@ local const_res = { options = { field_list_max_size = "3", field_list_min_size = "1", + field_tag = { + "server_only", + }, }, type_name = "INT32", }, @@ -200,6 +213,16 @@ local const_res = { }, type_name = "UINT32", }, + specify_field = { + name = "specify_field", + number = 7, + options = { + field_tag = { + "server_only", + }, + }, + type_name = "MESSAGE", + }, test_arr = { name = "test_arr", number = 91, @@ -243,6 +266,9 @@ local const_res = { name = "reward", options = { oneof_not_null = true, + oneof_tag = { + "server_only", + }, }, }, }, @@ -494,6 +520,9 @@ local const_res = { field_alias = { "测试ID别名2", }, + field_tag = { + "server_only", + }, }, type_name = "UINT32", }, diff --git a/sample/proto_v3/kind_option.mod.lua b/sample/proto_v3/kind_option.mod.lua index cf2994d1..2696d6fe 100644 --- a/sample/proto_v3/kind_option.mod.lua +++ b/sample/proto_v3/kind_option.mod.lua @@ -90,6 +90,16 @@ local const_res = { }, }, field = { + arr = { + name = "arr", + number = 2, + options = { + field_tag = { + "server_only", + }, + }, + type_name = "MESSAGE", + }, id = { name = "id", number = 1, @@ -113,6 +123,9 @@ local const_res = { options = { field_list_max_size = "3", field_list_min_size = "1", + field_tag = { + "server_only", + }, }, type_name = "INT32", }, @@ -201,6 +214,16 @@ local const_res = { }, type_name = "UINT32", }, + specify_field = { + name = "specify_field", + number = 7, + options = { + field_tag = { + "server_only", + }, + }, + type_name = "MESSAGE", + }, test_arr = { name = "test_arr", number = 91, @@ -244,6 +267,9 @@ local const_res = { name = "reward", options = { oneof_not_null = true, + oneof_tag = { + "server_only", + }, }, }, }, @@ -495,6 +521,9 @@ local const_res = { field_alias = { "测试ID别名2", }, + field_tag = { + "server_only", + }, }, type_name = "UINT32", }, diff --git a/sample/proto_v3/next_alias.bin b/sample/proto_v3/next_alias.bin index 14fa4ce2..32491e74 100644 Binary files a/sample/proto_v3/next_alias.bin and b/sample/proto_v3/next_alias.bin differ diff --git a/sample/proto_v3/next_alias.lua b/sample/proto_v3/next_alias.lua index 4ded3aaa..0ead78f4 100644 --- a/sample/proto_v3/next_alias.lua +++ b/sample/proto_v3/next_alias.lua @@ -12,7 +12,7 @@ return { }, data_ver = "1.0.0.0", hash_code = "sha256:e99feb6b80a35127a916429bb5f48c7e15bd16e198bad71422598eb47765aa67", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "outer_alias_message", outer_alias_message = { diff --git a/sample/proto_v3/process_by_script.bin b/sample/proto_v3/process_by_script.bin index ae2b8164..d224d233 100644 --- a/sample/proto_v3/process_by_script.bin +++ b/sample/proto_v3/process_by_script.bin @@ -1,6 +1,6 @@  -2.18.21.0.0.0"Gsha256:e7e3d54a300a251f9b6a33886083711d5bcbff18988c9109db959d3d3e89a939Z/ +2.19.01.0.0.0"Gsha256:e7e3d54a300a251f9b6a33886083711d5bcbff18988c9109db959d3d3e89a939Z/ 资源转换示例.xlsxprocess_by_script1 Z/ 资源转换示例.xlsxprocess_by_script2 diff --git a/sample/proto_v3/process_by_script.json b/sample/proto_v3/process_by_script.json index 14fe39a5..2ed0a888 100644 --- a/sample/proto_v3/process_by_script.json +++ b/sample/proto_v3/process_by_script.json @@ -15,7 +15,7 @@ ], "data_ver": "1.0.0.0", "hash_code": "sha256:fcc0bde151e4556a4dbea40a41b8e6394c46cb77b2c59cdaa1e365c642f9f0e2", - "xres_ver": "2.18.2" + "xres_ver": "2.19.0" }, {"process_by_script": [ { diff --git a/sample/proto_v3/process_by_script.lua b/sample/proto_v3/process_by_script.lua index 72530c27..b1219332 100644 --- a/sample/proto_v3/process_by_script.lua +++ b/sample/proto_v3/process_by_script.lua @@ -17,7 +17,7 @@ return { }, data_ver = "1.0.0.0", hash_code = "sha256:fcc0bde151e4556a4dbea40a41b8e6394c46cb77b2c59cdaa1e365c642f9f0e2", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "process_by_script", process_by_script = { diff --git a/sample/proto_v3/role_cfg.amd.js b/sample/proto_v3/role_cfg.amd.js index 716fcc7f..a05c6194 100755 --- a/sample/proto_v3/role_cfg.amd.js +++ b/sample/proto_v3/role_cfg.amd.js @@ -13,7 +13,7 @@ define({ ], data_ver : "1.0.0.0", hash_code : "sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f", - xres_ver : "2.18.2" + xres_ver : "2.19.0" }, "role_cfg": [ { diff --git a/sample/proto_v3/role_cfg.bin b/sample/proto_v3/role_cfg.bin index bc63b358..8621a372 100755 Binary files a/sample/proto_v3/role_cfg.bin and b/sample/proto_v3/role_cfg.bin differ diff --git a/sample/proto_v3/role_cfg.js b/sample/proto_v3/role_cfg.js index d739ffb3..c7e3ae00 100755 --- a/sample/proto_v3/role_cfg.js +++ b/sample/proto_v3/role_cfg.js @@ -366,7 +366,7 @@ ], data_ver : "1.0.0.0", hash_code : "sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f", - xres_ver : "2.18.2" + xres_ver : "2.19.0" } } }; diff --git a/sample/proto_v3/role_cfg.json b/sample/proto_v3/role_cfg.json index 84ee649d..bc5f2610 100755 --- a/sample/proto_v3/role_cfg.json +++ b/sample/proto_v3/role_cfg.json @@ -1 +1 @@ -[{"count":7,"data_source":[{"count":7,"file":"资源转换示例.xlsx","sheet":"kind"}],"data_ver":"1.0.0.0","hash_code":"sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f","xres_ver":"2.18.2"},{"role_cfg":[{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666627200},{"nanos":0,"seconds":1669305600}],"convert_timepoint_one":{"nanos":0,"seconds":1666627200},"cost_value":1,"dep_test":{"dep2":{"id":101,"level":"2014/10/13"},"id":51,"name":"123"},"id":10001,"int_as_string":"0","name":"欧若拉","origin_duration_arr":["12:45:15","13:45:15"],"origin_duration_one":"12:45:15","origin_timepoint_arr":["2022-10-25","2022-11-25"],"origin_timepoint_one":"2022-10-25","test_array":["lalal","欧若拉","小魔女"],"test_plain_enum_array":[10001]},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":2,"dep_test":{"dep2":{"id":201,"level":"2014/10/14"},"id":61,"name":"654"},"id":10002,"int_as_string":"1","name":"杰克","origin_duration_arr":["45915","49515"],"origin_duration_one":"45915","origin_timepoint_arr":["2022-10-25 12:45:15","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15","test_array":["blebleble","杰克","海盗王子"],"test_plain_enum_array":[10001,10101],"unlock_level":39},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445559},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":4,"dep_test":{"dep2":{"id":301,"level":"2014/10/15"},"id":71,"name":"sdadasd"},"id":10003,"int_as_string":"2","name":"库拉","origin_duration_arr":["45915","13:45:15"],"origin_duration_one":"123:45:59","origin_timepoint_arr":["1666673115","1669351515"],"origin_timepoint_one":"1666673115","test_array":["hahaha","库拉","喵少年"],"test_plain_enum_array":[10001,10001,10101],"unlock_level":85},{"convert_duration_arr":[{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445520},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666701915},"cost_value":8,"dep_test":{"dep2":{"id":401,"level":"19:10:50"},"id":81,"name":"ffff"},"id":10004,"int_as_string":"3","name":"莫瑞茨","origin_duration_arr":["","13:45:15"],"origin_duration_one":"123:45:20Z","origin_timepoint_arr":["1666673115","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15Z","test_array":["angel","莫瑞茨"],"unlock_level":122},{"convert_duration_arr":[{"nanos":0,"seconds":445559}],"convert_duration_one":{"nanos":123000000,"seconds":416720},"convert_timepoint_arr":[{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"dep_test":{"id":12},"int_as_string":"4","origin_duration_arr":["","123:45:59"],"origin_duration_one":"123:45:20.123+08:00","origin_timepoint_arr":["","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15.123+08:00"},{"convert_duration_one":{"nanos":123000000,"seconds":445520},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10001,"cost_value":99999,"dep_test":{"dep2":{"id":501,"level":"9:10:50 上午"},"id":91,"name":"gggg"},"id":10005,"int_as_string":"5","name":"爱丽丝","origin_duration_one":"123:45:20.123","origin_timepoint_one":"2022-10-25 12:45:15.123","test_array":["laopo","爱丽丝"],"unlock_level":183},{"convert_duration_one":{"nanos":123000000,"seconds":45915},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10101,"cost_value":999,"dep_test":{"dep2":{"id":601,"level":"2014-10-20 19:50:50"},"id":101,"name":"hhhhh"},"id":10006,"int_as_string":"6","name":"都玛西亚","origin_duration_one":"45915.123","origin_timepoint_one":"1666673115.123","test_array":["keai","都玛西亚"],"unlock_level":274}]},"role_cfg"] \ No newline at end of file +[{"count":7,"data_source":[{"count":7,"file":"资源转换示例.xlsx","sheet":"kind"}],"data_ver":"1.0.0.0","hash_code":"sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f","xres_ver":"2.19.0"},{"role_cfg":[{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666627200},{"nanos":0,"seconds":1669305600}],"convert_timepoint_one":{"nanos":0,"seconds":1666627200},"cost_value":1,"dep_test":{"dep2":{"id":101,"level":"2014/10/13"},"id":51,"name":"123"},"id":10001,"int_as_string":"0","name":"欧若拉","origin_duration_arr":["12:45:15","13:45:15"],"origin_duration_one":"12:45:15","origin_timepoint_arr":["2022-10-25","2022-11-25"],"origin_timepoint_one":"2022-10-25","test_array":["lalal","欧若拉","小魔女"],"test_plain_enum_array":[10001]},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":45915},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":2,"dep_test":{"dep2":{"id":201,"level":"2014/10/14"},"id":61,"name":"654"},"id":10002,"int_as_string":"1","name":"杰克","origin_duration_arr":["45915","49515"],"origin_duration_one":"45915","origin_timepoint_arr":["2022-10-25 12:45:15","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15","test_array":["blebleble","杰克","海盗王子"],"test_plain_enum_array":[10001,10101],"unlock_level":39},{"convert_duration_arr":[{"nanos":0,"seconds":45915},{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445559},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666673115},"cost_value":4,"dep_test":{"dep2":{"id":301,"level":"2014/10/15"},"id":71,"name":"sdadasd"},"id":10003,"int_as_string":"2","name":"库拉","origin_duration_arr":["45915","13:45:15"],"origin_duration_one":"123:45:59","origin_timepoint_arr":["1666673115","1669351515"],"origin_timepoint_one":"1666673115","test_array":["hahaha","库拉","喵少年"],"test_plain_enum_array":[10001,10001,10101],"unlock_level":85},{"convert_duration_arr":[{"nanos":0,"seconds":49515}],"convert_duration_one":{"nanos":0,"seconds":445520},"convert_timepoint_arr":[{"nanos":0,"seconds":1666673115},{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":0,"seconds":1666701915},"cost_value":8,"dep_test":{"dep2":{"id":401,"level":"19:10:50"},"id":81,"name":"ffff"},"id":10004,"int_as_string":"3","name":"莫瑞茨","origin_duration_arr":["","13:45:15"],"origin_duration_one":"123:45:20Z","origin_timepoint_arr":["1666673115","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15Z","test_array":["angel","莫瑞茨"],"unlock_level":122},{"convert_duration_arr":[{"nanos":0,"seconds":445559}],"convert_duration_one":{"nanos":123000000,"seconds":416720},"convert_timepoint_arr":[{"nanos":0,"seconds":1669351515}],"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"dep_test":{"id":12},"int_as_string":"4","origin_duration_arr":["","123:45:59"],"origin_duration_one":"123:45:20.123+08:00","origin_timepoint_arr":["","2022-11-25 12:45:15"],"origin_timepoint_one":"2022-10-25 12:45:15.123+08:00"},{"convert_duration_one":{"nanos":123000000,"seconds":445520},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10001,"cost_value":99999,"dep_test":{"dep2":{"id":501,"level":"9:10:50 上午"},"id":91,"name":"gggg"},"id":10005,"int_as_string":"5","name":"爱丽丝","origin_duration_one":"123:45:20.123","origin_timepoint_one":"2022-10-25 12:45:15.123","test_array":["laopo","爱丽丝"],"unlock_level":183},{"convert_duration_one":{"nanos":123000000,"seconds":45915},"convert_timepoint_one":{"nanos":123000000,"seconds":1666673115},"cost_type":10101,"cost_value":999,"dep_test":{"dep2":{"id":601,"level":"2014-10-20 19:50:50"},"id":101,"name":"hhhhh"},"id":10006,"int_as_string":"6","name":"都玛西亚","origin_duration_one":"45915.123","origin_timepoint_one":"1666673115.123","test_array":["keai","都玛西亚"],"unlock_level":274}]},"role_cfg"] \ No newline at end of file diff --git a/sample/proto_v3/role_cfg.lua b/sample/proto_v3/role_cfg.lua index bae6cfa0..823d4bb6 100755 --- a/sample/proto_v3/role_cfg.lua +++ b/sample/proto_v3/role_cfg.lua @@ -12,7 +12,7 @@ return { }, data_ver = "1.0.0.0", hash_code = "sha256:f83885dbe713ab6b423cf917a202d67da647d58a4636dbad41575d5479a6e87a", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "role_cfg", role_cfg = { diff --git a/sample/proto_v3/role_cfg.msgpack.bin b/sample/proto_v3/role_cfg.msgpack.bin index ab7c2ca6..f6d33187 100755 Binary files a/sample/proto_v3/role_cfg.msgpack.bin and b/sample/proto_v3/role_cfg.msgpack.bin differ diff --git a/sample/proto_v3/role_cfg.n.js b/sample/proto_v3/role_cfg.n.js index f931e1f6..e6d240a5 100755 --- a/sample/proto_v3/role_cfg.n.js +++ b/sample/proto_v3/role_cfg.n.js @@ -12,7 +12,7 @@ exports.role_cfg_header = { ], data_ver : "1.0.0.0", hash_code : "sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f", - xres_ver : "2.18.2" + xres_ver : "2.19.0" }; exports.role_cfg = [ { diff --git a/sample/proto_v3/role_cfg.xml b/sample/proto_v3/role_cfg.xml index 22cba822..830ba6cd 100755 --- a/sample/proto_v3/role_cfg.xml +++ b/sample/proto_v3/role_cfg.xml @@ -1,2 +1,2 @@ -
77资源转换示例.xlsxkind1.0.0.0sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f2.18.2
04591504951504591501666627200016693056000166662720011012014/10/1351123100010欧若拉12:45:1513:45:1512:45:152022-10-252022-11-252022-10-25lalal欧若拉小魔女1000104591504951504591501666673115016693515150166667311522012014/10/1461654100021杰克4591549515459152022-10-25 12:45:152022-11-25 12:45:152022-10-25 12:45:15blebleble杰克海盗王子100011010139045915049515044555901666673115016693515150166667311543012014/10/1571sdadasd100032库拉4591513:45:15123:45:59166667311516693515151666673115hahaha库拉喵少年100011000110101850495150445520016666731150166935151501666701915840119:10:5081ffff100043莫瑞茨13:45:15123:45:20Z16666731152022-11-25 12:45:152022-10-25 12:45:15Zangel莫瑞茨1220445559123000000416720016693515151230000001666673115124123:45:59123:45:20.123+08:002022-11-25 12:45:152022-10-25 12:45:15.123+08:001230000004455201230000001666673115999995019:10:50 上午91gggg100055爱丽丝123:45:20.1232022-10-25 12:45:15.12318310001laopo爱丽丝1230000004591512300000016666731159996012014-10-20 19:50:50101hhhhh100066都玛西亚45915.1231666673115.12327410101keai都玛西亚role_cfg
\ No newline at end of file +
77资源转换示例.xlsxkind1.0.0.0sha256:eeaf27d61a221566a4129cce5f868e1d929d571f6ad2859de106242f0acc820f2.19.0
04591504951504591501666627200016693056000166662720011012014/10/1351123100010欧若拉12:45:1513:45:1512:45:152022-10-252022-11-252022-10-25lalal欧若拉小魔女1000104591504951504591501666673115016693515150166667311522012014/10/1461654100021杰克4591549515459152022-10-25 12:45:152022-11-25 12:45:152022-10-25 12:45:15blebleble杰克海盗王子100011010139045915049515044555901666673115016693515150166667311543012014/10/1571sdadasd100032库拉4591513:45:15123:45:59166667311516693515151666673115hahaha库拉喵少年100011000110101850495150445520016666731150166935151501666701915840119:10:5081ffff100043莫瑞茨13:45:15123:45:20Z16666731152022-11-25 12:45:152022-10-25 12:45:15Zangel莫瑞茨1220445559123000000416720016693515151230000001666673115124123:45:59123:45:20.123+08:002022-11-25 12:45:152022-10-25 12:45:15.123+08:001230000004455201230000001666673115999995019:10:50 上午91gggg100055爱丽丝123:45:20.1232022-10-25 12:45:15.12318310001laopo爱丽丝1230000004591512300000016666731159996012014-10-20 19:50:50101hhhhh100066都玛西亚45915.1231666673115.12327410101keai都玛西亚role_cfg
\ No newline at end of file diff --git a/sample/proto_v3/role_cfg_module.lua b/sample/proto_v3/role_cfg_module.lua index 27731660..4381ecee 100755 --- a/sample/proto_v3/role_cfg_module.lua +++ b/sample/proto_v3/role_cfg_module.lua @@ -1,5 +1,5 @@ module("ProtoData.Kind.role_cfg", package.seeall) -- this file is generated by xresloader, please don't edit it. - header = { count = 7, data_source = { { count = 7, file = "资源转换示例.xlsx", sheet = "kind", }, }, data_ver = "1.0.0.0", hash_code = "sha256:f83885dbe713ab6b423cf917a202d67da647d58a4636dbad41575d5479a6e87a", xres_ver = "2.18.2", } + header = { count = 7, data_source = { { count = 7, file = "资源转换示例.xlsx", sheet = "kind", }, }, data_ver = "1.0.0.0", hash_code = "sha256:f83885dbe713ab6b423cf917a202d67da647d58a4636dbad41575d5479a6e87a", xres_ver = "2.19.0", } data_message_type = "role_cfg" role_cfg = { { convert_duration_arr = { { nanos = 0, seconds = 45915, }, { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 45915, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666627200, }, { nanos = 0, seconds = 1669305600, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666627200, }, cost_value = 1, dep_test = { dep2 = { id = 101, level = "2014/10/13", }, id = 51, name = "123", }, id = 10001, int_as_string = "0", name = "欧若拉", origin_duration_arr = { "12:45:15", "13:45:15", }, origin_duration_one = "12:45:15", origin_timepoint_arr = { "2022-10-25", "2022-11-25", }, origin_timepoint_one = "2022-10-25", test_array = { "lalal", "欧若拉", "小魔女", }, test_plain_enum_array = { 10001, }, }, { convert_duration_arr = { { nanos = 0, seconds = 45915, }, { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 45915, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666673115, }, { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666673115, }, cost_value = 2, dep_test = { dep2 = { id = 201, level = "2014/10/14", }, id = 61, name = "654", }, id = 10002, int_as_string = "1", name = "杰克", origin_duration_arr = { "45915", "49515", }, origin_duration_one = "45915", origin_timepoint_arr = { "2022-10-25 12:45:15", "2022-11-25 12:45:15", }, origin_timepoint_one = "2022-10-25 12:45:15", test_array = { "blebleble", "杰克", "海盗王子", }, test_plain_enum_array = { 10001, 10101, }, unlock_level = 39, }, { convert_duration_arr = { { nanos = 0, seconds = 45915, }, { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 445559, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666673115, }, { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666673115, }, cost_value = 4, dep_test = { dep2 = { id = 301, level = "2014/10/15", }, id = 71, name = "sdadasd", }, id = 10003, int_as_string = "2", name = "库拉", origin_duration_arr = { "45915", "13:45:15", }, origin_duration_one = "123:45:59", origin_timepoint_arr = { "1666673115", "1669351515", }, origin_timepoint_one = "1666673115", test_array = { "hahaha", "库拉", "喵少年", }, test_plain_enum_array = { 10001, 10001, 10101, }, unlock_level = 85, }, { convert_duration_arr = { { nanos = 0, seconds = 49515, }, }, convert_duration_one = { nanos = 0, seconds = 445520, }, convert_timepoint_arr = { { nanos = 0, seconds = 1666673115, }, { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 0, seconds = 1666701915, }, cost_value = 8, dep_test = { dep2 = { id = 401, level = "19:10:50", }, id = 81, name = "ffff", }, id = 10004, int_as_string = "3", name = "莫瑞茨", origin_duration_arr = { "", "13:45:15", }, origin_duration_one = "123:45:20Z", origin_timepoint_arr = { "1666673115", "2022-11-25 12:45:15", }, origin_timepoint_one = "2022-10-25 12:45:15Z", test_array = { "angel", "莫瑞茨", }, unlock_level = 122, }, { convert_duration_arr = { { nanos = 0, seconds = 445559, }, }, convert_duration_one = { nanos = 123000000, seconds = 416720, }, convert_timepoint_arr = { { nanos = 0, seconds = 1669351515, }, }, convert_timepoint_one = { nanos = 123000000, seconds = 1666673115, }, dep_test = { id = 12, }, int_as_string = "4", origin_duration_arr = { "", "123:45:59", }, origin_duration_one = "123:45:20.123+08:00", origin_timepoint_arr = { "", "2022-11-25 12:45:15", }, origin_timepoint_one = "2022-10-25 12:45:15.123+08:00", }, { convert_duration_one = { nanos = 123000000, seconds = 445520, }, convert_timepoint_one = { nanos = 123000000, seconds = 1666673115, }, cost_type = 10001, cost_value = 99999, dep_test = { dep2 = { id = 501, level = "9:10:50 上午", }, id = 91, name = "gggg", }, id = 10005, int_as_string = "5", name = "爱丽丝", origin_duration_one = "123:45:20.123", origin_timepoint_one = "2022-10-25 12:45:15.123", test_array = { "laopo", "爱丽丝", }, unlock_level = 183, }, { convert_duration_one = { nanos = 123000000, seconds = 45915, }, convert_timepoint_one = { nanos = 123000000, seconds = 1666673115, }, cost_type = 10101, cost_value = 999, dep_test = { dep2 = { id = 601, level = "2014-10-20 19:50:50", }, id = 101, name = "hhhhh", }, id = 10006, int_as_string = "6", name = "都玛西亚", origin_duration_one = "45915.123", origin_timepoint_one = "1666673115.123", test_array = { "keai", "都玛西亚", }, unlock_level = 274, }, } \ No newline at end of file diff --git a/sample/proto_v3/role_upgrade_cfg.bin b/sample/proto_v3/role_upgrade_cfg.bin index 66008047..2ed3df83 100644 --- a/sample/proto_v3/role_upgrade_cfg.bin +++ b/sample/proto_v3/role_upgrade_cfg.bin @@ -1,6 +1,6 @@  -2.18.21.0.0.0f"Gsha256:bbf8dcdce30a89f9c7fbb31163c4821ab84d36954758b06c2969dd0217db951c*LTest role_upgrade_cfg with multi keys +2.19.01.0.0.0f"Gsha256:bbf8dcdce30a89f9c7fbb31163c4821ab84d36954758b06c2969dd0217db951c*LTest role_upgrade_cfg with multi keys Test role_upgrade_cfg with multi keysZ* 资源转换示例.xlsx upgrade_10001*Z* 资源转换示例.xlsx upgrade_10002<N diff --git a/sample/proto_v3/role_upgrade_cfg.json b/sample/proto_v3/role_upgrade_cfg.json index e684307d..d0a8f7d0 100755 --- a/sample/proto_v3/role_upgrade_cfg.json +++ b/sample/proto_v3/role_upgrade_cfg.json @@ -16,7 +16,7 @@ "data_ver": "1.0.0.0", "description": "Test role_upgrade_cfg with multi keys\r\nTest role_upgrade_cfg with multi keys", "hash_code": "sha256:e356806bc55be9cc8a6c701d4295989e0fc3887b368681bb9457b0e51df8f445", - "xres_ver": "2.18.2" + "xres_ver": "2.19.0" }, {"role_upgrade_cfg": [ { diff --git a/sample/proto_v3/role_upgrade_cfg.lua b/sample/proto_v3/role_upgrade_cfg.lua index 3c4139c8..9041cecb 100755 --- a/sample/proto_v3/role_upgrade_cfg.lua +++ b/sample/proto_v3/role_upgrade_cfg.lua @@ -18,7 +18,7 @@ return { data_ver = "1.0.0.0", description = "Test role_upgrade_cfg with multi keys\r\nTest role_upgrade_cfg with multi keys", hash_code = "sha256:e356806bc55be9cc8a6c701d4295989e0fc3887b368681bb9457b0e51df8f445", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "role_upgrade_cfg", role_upgrade_cfg = { diff --git a/sample/proto_v3/strip_list_tail_cfg.bin b/sample/proto_v3/strip_list_tail_cfg.bin index 9175b722..271e8803 100644 Binary files a/sample/proto_v3/strip_list_tail_cfg.bin and b/sample/proto_v3/strip_list_tail_cfg.bin differ diff --git a/sample/proto_v3/strip_list_tail_cfg.lua b/sample/proto_v3/strip_list_tail_cfg.lua index ea2cca80..8e4cfce1 100644 --- a/sample/proto_v3/strip_list_tail_cfg.lua +++ b/sample/proto_v3/strip_list_tail_cfg.lua @@ -12,7 +12,7 @@ return { }, data_ver = "1.0.0.0", hash_code = "sha256:bef5c76679b43b65aec7906f42010530fadae99f0e386d94e3a77e94a7d12e8e", - xres_ver = "2.18.2", + xres_ver = "2.19.0", }, [2] = "keep_or_strip_empty_list_cfg", keep_or_strip_empty_list_cfg = { diff --git a/src/org/xresloader/core/ProgramOptions.java b/src/org/xresloader/core/ProgramOptions.java index 073acdff..a726e028 100644 --- a/src/org/xresloader/core/ProgramOptions.java +++ b/src/org/xresloader/core/ProgramOptions.java @@ -58,6 +58,7 @@ public class RenameRule { public boolean enableStdin = false; public String[] customValidatorRules = null; public boolean enableDataValidator = true; + public String[] ignoreFieldTags = null; public String protoDumpFile = ""; public ProtoDumpType protoDumpType = ProtoDumpType.NONE; @@ -114,6 +115,8 @@ public void reset() { prettyIndent = 0; enableStdin = false; customValidatorRules = null; + enableDataValidator = true; + ignoreFieldTags = null; protoDumpFile = ""; protoDumpType = ProtoDumpType.NONE; @@ -235,6 +238,9 @@ private static synchronized Options get_options_group() { .desc("set file to load custom validator").hasArg().argName("FILE PATH").build()); options.addOption(null, "disable-data-validator", false, "disable data validator, so it will not show warnings when data checking failed."); + options.addOption(Option.builder().longOpt("ignore-field-tags") + .desc("ignore data and only dump the default value of specify field tags.").hasArg().argName("TAG") + .build()); options.addOption(Option.builder().longOpt("data-source-lru-cache-rows") .desc("set row number for LRU cache").hasArg().argName("NUMBER").build()); options.addOption(Option.builder().longOpt("tolerate-max-empty-rows") @@ -506,6 +512,9 @@ public int init(String[] args) { enableDataValidator = true; } + // ignore field tags + ignoreFieldTags = cmd.getOptionValues("ignore-field-tags"); + return 0; } diff --git a/src/org/xresloader/core/data/dst/DataDstJava.java b/src/org/xresloader/core/data/dst/DataDstJava.java index 7c336b08..9c2a60fa 100644 --- a/src/org/xresloader/core/data/dst/DataDstJava.java +++ b/src/org/xresloader/core/data/dst/DataDstJava.java @@ -319,7 +319,8 @@ private Object getDefault(DataDstWriterNode.DataDstTypeDescriptor container, .getTypeDescriptor(), sub_item.getValue(), 0); } else if (sub_item.getValue().isList() && sub_item.getValue().getListExtension() != null && sub_item.getValue().getListExtension().strictSize - && sub_item.getValue().getListExtension().minSize > 0) { + && sub_item.getValue().getListExtension().minSize > 0 + && !sub_item.getValue().containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags)) { this.logErrorMessage( "Field \"%s\" in \"%s\" has set field_list_min_size %d, which is not allowed to be auto filled with default value.", sub_item.getValue().getName(), field.getTypeDescriptor().getFullName(), @@ -489,7 +490,13 @@ private void dumpDefault(HashMap builder, DataDstWriterNode.Data old = new ArrayList(); builder.put(field.getName(), old); } - old.add(val); + + while (listIndex > old.size()) { + old.add(val); + } + if (listIndex == old.size()) { + old.add(val); + } } else { builder.put(field.getName(), val); } @@ -508,6 +515,7 @@ protected boolean dumpMessage(HashMap builder, DataDstWriterNode throws ConvException { boolean ret = false; for (Map.Entry c : node.getChildren().entrySet()) { + boolean ignoreFieldTags = c.getValue().containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags); if (c.getValue().isOneof()) { boolean fieldHasValue = false; @@ -574,7 +582,7 @@ protected boolean dumpMessage(HashMap builder, DataDstWriterNode if (childList != null && childList instanceof List) { listSize = ((List) childList).size(); } - if (listExt.minSize > 0 && listExt.minSize > listSize) { + if (listExt.minSize > 0 && listExt.minSize > listSize && !ignoreFieldTags) { throw new ConvException( String.format( "Try to convert %s failed, require at least %d element(s), real got %d element(s).", @@ -618,6 +626,11 @@ private boolean dumpStandardField(HashMap builder, } return false; + } else if (as_child.containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags)) { + if (as_child.isRequired() || as_child.isList()) { + dumpDefault(builder, container, as_child, -1); + } + return true; } if (as_child.innerFieldDesc.isMap()) { @@ -805,18 +818,23 @@ private boolean dumpPlainField(HashMap builder, DataDstWriterNod return false; } + boolean ignoreFieldTags = field.containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags); if (field.isList()) { Object val = builder.getOrDefault(field.getName(), null); boolean ret = true; if (field.isMap()) { if (val == null || !(val instanceof SpecialInnerHashMap)) { val = new SpecialInnerHashMap(); - builder.put(field.getName(), val); + if (!ignoreFieldTags) { + builder.put(field.getName(), val); + } } } else { if (val == null || !(val instanceof ArrayList)) { val = new ArrayList(); - builder.put(field.getName(), val); + if (!ignoreFieldTags) { + builder.put(field.getName(), val); + } } } @@ -980,7 +998,7 @@ private boolean dumpPlainField(HashMap builder, DataDstWriterNod DataDstWriterNode.DataDstFieldDescriptor referOriginField = field .getReferOriginField(); ArrayList referOrigin = null; - if (referOriginField != null) { + if (referOriginField != null && !ignoreFieldTags) { Object refer = builder.getOrDefault(referOriginField.getName(), null); if (refer != null && refer instanceof ArrayList) { referOrigin = (ArrayList) refer; @@ -998,7 +1016,9 @@ private boolean dumpPlainField(HashMap builder, DataDstWriterNod if (referOrigin == null) { referOrigin = new ArrayList(); referOrigin.ensureCapacity(groups.length); - builder.put(referOriginField.getName(), referOrigin); + if (!ignoreFieldTags) { + builder.put(referOriginField.getName(), referOrigin); + } } while (referOrigin.size() <= i) { referOrigin.add(""); @@ -1084,7 +1104,7 @@ private boolean dumpPlainField(HashMap builder, DataDstWriterNod if (childList != null && childList instanceof List) { listSize = ((List) childList).size(); } - if (listExt.minSize > 0 && listExt.minSize > listSize) { + if (listExt.minSize > 0 && listExt.minSize > listSize && !ignoreFieldTags) { throw new ConvException( String.format( "Try to convert %s failed, require at least %d element(s), real got %d element(s).", @@ -1167,7 +1187,7 @@ private boolean dumpPlainField(HashMap builder, DataDstWriterNod ParseResult res = parsePlainDataMessage(groups, ident, field, rowContext, fieldPath); if (res != null && res.value != null) { val = res.value; - if (res.origin != null && field.getReferOriginField() != null) { + if (res.origin != null && field.getReferOriginField() != null && !ignoreFieldTags) { builder.put(field.getReferOriginField().getName(), res.origin); } } else if (field.isRequired()) { @@ -1184,6 +1204,13 @@ private boolean dumpPlainField(HashMap builder, DataDstWriterNod return false; } + if (ignoreFieldTags) { + if (field.isRequired() || field.isList()) { + dumpDefault(builder, container, field, -1); + } + return true; + } + builder.put(field.getName(), val); if (null != field.getUniqueTags() && DataDstWriterNode.JAVA_TYPE.MESSAGE != field.getType()) { diff --git a/src/org/xresloader/core/data/dst/DataDstPb.java b/src/org/xresloader/core/data/dst/DataDstPb.java index 1b76e709..75390cb1 100644 --- a/src/org/xresloader/core/data/dst/DataDstPb.java +++ b/src/org/xresloader/core/data/dst/DataDstPb.java @@ -557,6 +557,14 @@ static private boolean setup_extension(DataDstTypeDescriptor parent_message, Dat } } + if (fd.getOptions().getExtensionCount(Xresloader.fieldTag) > 0) { + var ext = child_field.mutableExtension(); + ext.fieldTags = new HashSet<>(); + for (String tag : fd.getOptions().getExtension(Xresloader.fieldTag)) { + ext.fieldTags.add(tag); + } + } + // origin refer if (fd.getOptions().hasExtension(Xresloader.fieldOriginValue)) { String originValue = fd.getOptions().getExtension(Xresloader.fieldOriginValue); @@ -738,6 +746,14 @@ static private boolean setup_extension(DataDstTypeDescriptor parent_message, Dat .getExtension(Xresloader.oneofAllowMissingInPlainMode); } + if (fd.getOptions().getExtensionCount(Xresloader.oneofTag) > 0) { + var ext = child_field.mutableExtension(); + ext.fieldTags = new HashSet<>(); + for (String tag : fd.getOptions().getExtension(Xresloader.oneofTag)) { + ext.fieldTags.add(tag); + } + } + if (gen == null) { return true; } @@ -2007,7 +2023,8 @@ private Object getDefault(DynamicMessage.Builder builder, DataDstFieldDescriptor if (subField.isRequired()) { dumpDefault(subnode, subField, 0); } else if (subField.isList() && subField.getListExtension() != null - && subField.getListExtension().strictSize && subField.getListExtension().minSize > 0) { + && subField.getListExtension().strictSize && subField.getListExtension().minSize > 0 + && !subField.containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags)) { this.logErrorMessage( "Field \"%s\" in \"%s\" has set field_list_min_size %d, which is not allowed to be auto filled with default value.", subField.getName(), fd.getFullName(), @@ -2247,6 +2264,10 @@ private void dumpDefault(DynamicMessage.Builder builder, DataDstOneofDescriptor private void dumpDefault(DynamicMessage.Builder builder, DataDstFieldDescriptor field, int index) throws ConvException { + if (field.isList() && index < 0) { + return; + } + Object val = getDefault(builder, field, index); if (val != null) { dumpValue(builder, field, val, index, null, ""); @@ -2266,6 +2287,8 @@ private boolean dumpMessage(DynamicMessage.Builder builder, DataDstWriterNode no boolean ret = false; for (Map.Entry c : node.getChildren().entrySet()) { + boolean ignoreFieldTags = c.getValue().containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags); + if (c.getValue().isOneof()) { // dump oneof data boolean fieldHasValue = false; @@ -2335,7 +2358,8 @@ private boolean dumpMessage(DynamicMessage.Builder builder, DataDstWriterNode no if (listExt != null && c.getValue().innerFieldDesc != null) { Descriptors.FieldDescriptor fd = (Descriptors.FieldDescriptor) c.getValue().innerFieldDesc .getRawDescriptor(); - if (listExt.minSize > 0 && listExt.minSize > builder.getRepeatedFieldCount(fd)) { + if (listExt.minSize > 0 && listExt.minSize > builder.getRepeatedFieldCount(fd) + && !ignoreFieldTags) { throw new ConvException( String.format( "Try to convert %s failed, require at least %d element(s), real got %d element(s).", @@ -2378,6 +2402,11 @@ private boolean dumpStandardField(DynamicMessage.Builder builder, DataDstWriterN } return false; + } else if (field.containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags)) { + if (field.isRequired() || field.isList()) { + dumpDefault(builder, field, -1); + } + return true; } dumpValue(builder, field, val, desc.getListIndex(), rowContext, fieldPath); @@ -2497,6 +2526,8 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto field.getTypeDescriptor().getFullName(), field.getName()); return false; } + + boolean ignoreFieldTags = field.containsFieldTags(ProgramOptions.getInstance().ignoreFieldTags); if (field.isList()) { String[] groups; if (null != maybeFromNode && maybeFromNode.getListIndex() >= 0) { @@ -2650,7 +2681,7 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto subFieldPath); if (res != null && res.value != null) { tmp.add(res.value); - if (res.origin != null && referOriginField != null) { + if (res.origin != null && referOriginField != null && !ignoreFieldTags) { while (builder.getRepeatedFieldCount(referOriginFd) < i) { builder.addRepeatedField(referOriginFd, ""); } @@ -2687,19 +2718,24 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto DataDstWriterNode.ListStripRule stripListRule = field.getListStripRule(); if (stripListRule == DataDstWriterNode.ListStripRule.STRIP_NOTHING || stripListRule == DataDstWriterNode.ListStripRule.STRIP_TAIL) { - while (builder.getRepeatedFieldCount(fd) < index) { + while (builder.getRepeatedFieldCount(fd) < index && !ignoreFieldTags) { builder.addRepeatedField(fd, getDefault(builder, field, builder.getRepeatedFieldCount(fd))); } } - if (index >= 0 && builder.getRepeatedFieldCount(fd) > index) { - builder.setRepeatedField(fd, index, values.get(0)); - } else { - builder.addRepeatedField(fd, values.get(0)); + if (!ignoreFieldTags) { + if (index >= 0 && builder.getRepeatedFieldCount(fd) > index) { + builder.setRepeatedField(fd, index, values.get(0)); + } else { + builder.addRepeatedField(fd, values.get(0)); + } } } else { - for (int i = 0; i < values.size(); ++i) { - dumpValue(builder, field, values.get(i), i, rowContext, String.format("%s.%d", fieldPath, i)); + if (!ignoreFieldTags) { + for (int i = 0; i < values.size(); ++i) { + dumpValue(builder, field, values.get(i), i, rowContext, + String.format("%s.%d", fieldPath, i)); + } } } @@ -2723,7 +2759,7 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto } } } else if (field.getListStripRule() == DataDstWriterNode.ListStripRule.STRIP_NOTHING) { - if (null != maybeFromNode && maybeFromNode.getListIndex() >= 0) { + if (null != maybeFromNode && maybeFromNode.getListIndex() >= 0 && !ignoreFieldTags) { int index = maybeFromNode.getListIndex(); while (builder.getRepeatedFieldCount(fd) <= index) { builder.addRepeatedField(fd, getDefault(builder, field, builder.getRepeatedFieldCount(fd))); @@ -2737,7 +2773,8 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto { var listExt = field.getListExtension(); if (listExt != null) { - if (listExt.minSize > 0 && listExt.minSize > builder.getRepeatedFieldCount(fd)) { + if (listExt.minSize > 0 && listExt.minSize > builder.getRepeatedFieldCount(fd) + && !ignoreFieldTags) { throw new ConvException( String.format( "Try to convert %s failed, require at least %d element(s), real got %d element(s).", @@ -2821,7 +2858,7 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto ParseResult res = parsePlainDataMessage(groups, ident, field, rowContext, fieldPath); if (res != null && res.value != null) { val = res.value; - if (res.origin != null && field.getReferOriginField() != null) { + if (res.origin != null && field.getReferOriginField() != null && !ignoreFieldTags) { dumpValue(builder, field.getReferOriginField(), res.origin, 0, rowContext, fieldPath); @@ -2840,6 +2877,13 @@ private boolean dumpPlainField(DynamicMessage.Builder builder, IdentifyDescripto return false; } + if (ignoreFieldTags) { + if (field.isRequired() || field.isList()) { + dumpDefault(builder, field, -1); + } + return true; + } + if (fd.isRepeated() && val instanceof ArrayList) { ArrayList values = (ArrayList) val; for (int i = 0; i < values.size(); ++i) { diff --git a/src/org/xresloader/core/data/dst/DataDstWriterNode.java b/src/org/xresloader/core/data/dst/DataDstWriterNode.java index ea35a7bf..d9e71d33 100644 --- a/src/org/xresloader/core/data/dst/DataDstWriterNode.java +++ b/src/org/xresloader/core/data/dst/DataDstWriterNode.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; @@ -61,6 +62,9 @@ static public class DataDstFieldExt { public boolean notNull = false; public boolean allowMissingInPlainMode = false; public ArrayList uniqueTags = null; + public HashSet fieldTags = null; + private Boolean withIgnoredFieldTagsValueCache = null; + private String[] withIgnoredFieldTagsCheckCache = null; private DataDstFieldExtUE ue = null; private DataDstFieldExtList list = null; @@ -92,6 +96,9 @@ static public class DataDstOneofExt { public String plainSeparator = null; public boolean notNull = false; public boolean allowMissingInPlainMode = false; + public HashSet fieldTags = null; + private Boolean withIgnoredFieldTagsValueCache = null; + private String[] withIgnoredFieldTagsCheckCache = null; } static public class DataDstMessageExtUE { @@ -239,6 +246,54 @@ public ArrayList getUniqueTags() { return this.extension.uniqueTags; } + public HashSet getFieldTags() { + if (this.extension == null) { + return null; + } + + return this.extension.fieldTags; + } + + public boolean containsFieldTags(String[] tags) { + if (this.extension == null || tags == null) { + if (null != this.referOneofDescriptor) { + return this.referOneofDescriptor.containsFieldTags(tags); + } else { + return false; + } + } + + if (this.extension.fieldTags == null) { + if (null != this.referOneofDescriptor) { + return this.referOneofDescriptor.containsFieldTags(tags); + } else { + return false; + } + } + + if (this.extension.withIgnoredFieldTagsValueCache != null + && this.extension.withIgnoredFieldTagsCheckCache == tags) { + return this.extension.withIgnoredFieldTagsValueCache; + } + + this.extension.withIgnoredFieldTagsCheckCache = tags; + this.extension.withIgnoredFieldTagsValueCache = false; + for (var tag : tags) { + if (this.extension.fieldTags.contains(tag)) { + this.extension.withIgnoredFieldTagsValueCache = true; + break; + } + } + + if (null != this.referOneofDescriptor) { + if (this.referOneofDescriptor.containsFieldTags(tags)) { + this.extension.withIgnoredFieldTagsValueCache = true; + } + } + + return this.extension.withIgnoredFieldTagsValueCache; + } + public boolean isNotNull() { if (this.extension == null) { return false; @@ -445,6 +500,40 @@ public boolean allowMissingInPlainMode() { return this.extension.allowMissingInPlainMode; } + + public HashSet getFieldTags() { + if (this.extension == null) { + return null; + } + + return this.extension.fieldTags; + } + + public boolean containsFieldTags(String[] tags) { + if (this.extension == null || tags == null) { + return false; + } + + if (this.extension.fieldTags == null) { + return false; + } + + if (this.extension.withIgnoredFieldTagsValueCache != null + && this.extension.withIgnoredFieldTagsCheckCache == tags) { + return this.extension.withIgnoredFieldTagsValueCache; + } + + this.extension.withIgnoredFieldTagsCheckCache = tags; + this.extension.withIgnoredFieldTagsValueCache = false; + for (var tag : tags) { + if (this.extension.fieldTags.contains(tag)) { + this.extension.withIgnoredFieldTagsValueCache = true; + break; + } + } + + return this.extension.withIgnoredFieldTagsValueCache; + } } static public class DataDstTypeDescriptor { @@ -660,6 +749,30 @@ public ArrayList getUniqueTags() { return this.innerFieldDesc.getUniqueTags(); } + public HashSet getFieldTags() { + if (this.innerFieldDesc != null) { + return this.innerFieldDesc.getFieldTags(); + } + + if (this.innerOneofDesc != null) { + return this.innerOneofDesc.getFieldTags(); + } + + return null; + } + + public boolean containsFieldTags(String[] tags) { + if (this.innerFieldDesc != null) { + return this.innerFieldDesc.containsFieldTags(tags); + } + + if (this.innerOneofDesc != null) { + return this.innerOneofDesc.containsFieldTags(tags); + } + + return false; + } + public boolean isRequired() { return this.innerFieldDesc != null && this.innerFieldDesc.isRequired(); } diff --git a/third_party/xresloader-protocol b/third_party/xresloader-protocol index 6723388a..32cf569f 160000 --- a/third_party/xresloader-protocol +++ b/third_party/xresloader-protocol @@ -1 +1 @@ -Subproject commit 6723388ae7cb4ad4036512bb58a15e0f7ebc4d46 +Subproject commit 32cf569fbeddb69d76d90eba2a552130f201d4bd diff --git a/tools/extensions.pb b/tools/extensions.pb index f4dbfad4..abb8e1f1 100644 Binary files a/tools/extensions.pb and b/tools/extensions.pb differ diff --git a/tools/linux_x86_64/protoc b/tools/linux_x86_64/protoc index fb10da6d..8719e84f 100755 --- a/tools/linux_x86_64/protoc +++ b/tools/linux_x86_64/protoc @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8fc9139ee7602a8c1cbc3adba86cb699dbc0b1776be71883f6141b4ff84c385 -size 9402104 +oid sha256:6e7743bf9799614e64a81e1cc6a136d4a3a217f3330ba735f555ce790e5ec998 +size 9410360 diff --git a/tools/macos_x86_64/protoc b/tools/macos_x86_64/protoc index b11442c4..9d711091 100644 --- a/tools/macos_x86_64/protoc +++ b/tools/macos_x86_64/protoc @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3415fee69fb07c41a819a2f014f9f938ece881171b91889185cc04c84e968441 -size 8179392 +oid sha256:86cf2731dac1e81863cad1cc9b97938a5691d808c36ab40e68cc2252e900893b +size 16509616 diff --git a/tools/windows_x86_64/protoc.exe b/tools/windows_x86_64/protoc.exe index 40df024c..2ba04efc 100644 --- a/tools/windows_x86_64/protoc.exe +++ b/tools/windows_x86_64/protoc.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9293e811437237209a7c06cdde21e3bfaeeced5454993deb176b9dce16dbc252 -size 12086722 +oid sha256:8ca3b4e23cd541db147c81dc5cea8b82a0b0a8b4f5016e4d62148a704fdae7e7 +size 11748543